├── .gitattributes ├── .gitignore ├── CHANGELOG.md ├── Disclaimer ├── PFS_HDD_Manager.sln ├── PFS_HDD_Manager ├── File.cpp ├── File.h ├── ICONS │ ├── 1x │ │ ├── Disk.png │ │ ├── Disk_Dark.png │ │ ├── File.png │ │ ├── File_Dark.png │ │ ├── Folder.png │ │ ├── Folder_Dark.png │ │ ├── ISO_1.png │ │ ├── ISO_Dark.png │ │ ├── MC.png │ │ └── MC_Dark.png │ ├── Disk.png │ ├── Disk_Dark.png │ ├── ISO_1.png │ ├── ISO_Dark.png │ ├── MC.png │ ├── MC_Dark.png │ ├── assets │ │ └── Untitled-2.ai │ ├── file.png │ ├── file_Dark.png │ ├── folder.png │ └── folder_Dark.png ├── InputBox.cpp ├── InputBox.h ├── InputBox.resx ├── MainForm.cpp ├── MainForm.h ├── MainForm.resx ├── PFS_HDD_Manager.rc ├── PFS_HDD_Manager.vcxproj ├── PFS_HDD_Manager.vcxproj.filters ├── PS2HDD.cpp ├── PS2HDD.h ├── README.md ├── ScreenShot.png ├── filesystem.cpp ├── filesystem.h ├── resource.h └── shell │ ├── README │ ├── hdl_dump.exe │ ├── libapa.dll │ ├── libfakeps2sdk.dll │ ├── libiomanX.dll │ ├── libpfs.dll │ └── pfsshell.exe ├── README.md ├── pfsshell-0.2a.7z └── pfsshell-0.2a ├── README ├── libapa.dll ├── libfakeps2sdk.dll ├── libiomanX.dll ├── libpfs.dll ├── pfs.bat ├── pfsdir.bat └── pfsshell.exe /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | V0.29.16.13{ 2 | FIXED: 3 | Files and Folders on Subfolders would not be renamed 4 | If pasted a path on the left explorer and double clicked a folder nothing would happen 5 | Creating a new partition would always return a error 6 | } 7 | 8 | V0.29.16.10{ 9 | ADDED: 10 | Get Function working for files and folders 11 | Rename function working 12 | Left Go button working 13 | Reinitialize device working 14 | Iso images being identified with disc icon 15 | InputBox have option to start with default text in it 16 | 17 | FIXED: 18 | Issue where the right view was updating when right clicked 19 | 20 | TODO: 21 | Implement right Go button 22 | Install isos in the PS2 HDD 23 | } 24 | 25 | V0.23.16.14{ 26 | FIXED: 27 | Fatal error when deleting a Partition 28 | 29 | TODO: 30 | ProgressBar when putting files 31 | Implement Go button 32 | Implement re-initialize code 33 | Implement toolstrip Get Button 34 | Identify game ISO`s with the game icon 35 | Install isos in the PS2 HDD 36 | } 37 | 38 | V0.23.16.13{ 39 | FIXED: 40 | AutoRefresh not working when copying something to subfolder 41 | AutoRefresh not working when removing something from subfolder 42 | Fatal error when removing a newly created subfolder 43 | Function to update the view being called multiple times at once 44 | 45 | TODO: 46 | ProgressBar when putting files 47 | Implement Go button 48 | Implement re-initialize code 49 | Implement toolstrip Get Button 50 | Identify game ISO`s with the game icon 51 | Install isos in the PS2 HDD 52 | } 53 | 54 | V0.23.16.9{ 55 | ADDED: 56 | ScreenShot added 57 | Now the program can transfer files and folders. 58 | Now folders with subfolders and files can be removed 59 | MessageBox to identify Functions that needs implementation 60 | Conditions in PFS_Put function 61 | Functions to handle Multipla ways of usage to PUT command 62 | 63 | CHANGED: 64 | Reimplemented File explorer entirely 65 | 66 | FIXED: 67 | Some wrong codding in the "MKFile" function 68 | Missplaced code in RMDir function 69 | Missplaced code in RM function 70 | 71 | REMOVED: 72 | PFS_Puts function 73 | 74 | TODO: 75 | Implement Go button 76 | Implement re-initialize code 77 | Implement toolstrip Get Button 78 | Identify game ISO`s with the game icon 79 | Install isos in the PS2 HDD 80 | 81 | V0.19.15.7{ 82 | ADDED: 83 | 84 | CHANGED: 85 | 86 | FIXED: 87 | Bug where new folder would always be ceated in to the partition root 88 | 89 | REMOVED: 90 | 91 | TODO: 92 | Implement Go button 93 | Implement re-initialize code 94 | Implement toolstip Get Button 95 | Reimplement File explorer 96 | Identify game ISO`s with the game icon 97 | 98 | V0.19.15.6{ 99 | ADDED: 100 | Toolstrip Menu in PFSView 101 | Buttons to transfer files beetwen host and PS2Hdd 102 | Custom Made "InputBox" class to get input for folder and partition names 103 | 104 | CHANGED: 105 | Some function names in PS2HDD class 106 | Renamed Second Tab 107 | 108 | FIXED: 109 | if you created a partition or file wit "spaces" on its name, the program would freeze 110 | 111 | REMOVED: 112 | Debug Button and TextBox on the window 113 | last codes using "CurrentPartition" 114 | 115 | TODO: 116 | Implement Go button 117 | Implement re-initialize code 118 | Implement toolstip Get Button 119 | Reimplement File explorer 120 | Identify game ISO`s with the game icon 121 | 122 | V0.16.13.5{ 123 | ADDED: 124 | Right click menu in right explorer 125 | Remove Option: Delete the selected File - works only for files - not folders 126 | Specific function to populate the right explorer(PFS_View) 127 | history on PFS_View 128 | Function to use the back button on PFS_View 129 | Now the PFS path is shown in the text bar 130 | 131 | CHANGED: 132 | Every Query Function: 133 | Query() 134 | Query_Part() 135 | Query_File_Path 136 | Now they are using a folder structure, to make easier to manipulate the explorer 137 | Some object names - there are more to change 138 | now, everytime PFS_View is updated, the system rescan the device to make sure it's showing the current state of device 139 | 140 | FIXED: 141 | Bug in the file listing process 142 | Path being written in the wrong format 143 | 144 | 145 | REMOVED: 146 | "Files" atribute from partition struct 147 | 148 | TODO: 149 | Implement method to insert the desired path and click the button "go" 150 | Identify game ISO`s with the game icon 151 | 152 | 153 | V0.12.7.3{ 154 | ADDED: 155 | Now, when a device is selected in the right side of the GUI, in the case it is PFS formated, it lists the partitions in the device 156 | Implemented Game and Partition structs usage 157 | Function that lists the files in a given partition(Query_Part_Path) - maybe change the name in the future 158 | Aded Disc icon to identify game partitions 159 | Aded Memory Card Icon For Future Use 160 | Aded Dark Icon Counterparts 161 | 162 | CHANGED: 163 | File struct moved to PS2HDD class... Its usage will be more direct 164 | 165 | FIXED: 166 | Fixed some missdirected calls on the query sequence 167 | 168 | REMOVED: 169 | 170 | TODO: 171 | Implement the function that will list the folders after a partition is selected 172 | Identify game ISO`s with the game icon 173 | 174 | 175 | V0.6.6.2{ 176 | Added: 177 | Now, when a device is selected in the right side of the GUI, in the case that the device is not PFS ready, the user will be prompted to fomat it in the PFS system 178 | It will be anoyingly repeat asking if the user is sure about this, and then format the device using PFSShell functions 179 | Implemented almost every PFSShell and some HDLDump functions. (in a rudmentary way, but fully functional - no error handling yet) 180 | 181 | Changed: 182 | changed some structs on PS2HDD class 183 | -created a specific ISO struct, wich is gona be used to list the ISO`s on host device 184 | -Edited "Partition" struct to be an specific identifier to the PFS device partitions 185 | -Edited "Game" struct to be an specific identifier to the PFS device game partitions 186 | 187 | Fixed: 188 | 189 | 190 | Removed: 191 | Functions from mainform: 192 | HDLScanHdds(); 193 | SetProcesses(); 194 | 195 | Todo: 196 | Implement the usage of the "Partition" and "Game" structs 197 | Implement the view of the PFS Partitions and files in the right side of GUI 198 | 199 | V0.4.3.2{ 200 | Added: 201 | Filesystem libs 202 | classes: 203 | Tree: multiway tree that is gonna manage the folder structure 204 | File: the name is self explanatory - Are gonna have the files basic info 205 | Filesystem: concatenates Tree and File 206 | 207 | Changed: 208 | MainForm windows title 209 | Tabs names 210 | Debug button now call Filesystem functions and log them in the RichTextBox bellow 211 | README text detailed 212 | 213 | Fixed: 214 | 215 | 216 | Removed: 217 | Functions from mainform: 218 | HDLScanHdds(); 219 | SetProcesses(); 220 | 221 | Todo: 222 | read https://semver.org/spec/v2.0.0.html } 223 | 224 | V: 0.0.0.0{ 225 | Added: 226 | Added this Changelog file 227 | Added the README file 228 | Project`s PS2-HOME thread set-up 229 | Started PS2HDD library 230 | 231 | Changed: 232 | Changed PS2HDD variables to managed ones 233 | 234 | Fixed: 235 | Fixed drop-down button to choose Partition on host device 236 | 237 | Removed: 238 | Removed some debug code that is not usable 239 | 240 | Todo: 241 | read https://semver.org/spec/v2.0.0.html 242 | } 243 | 244 | defined versionning: 245 | V: X.Y.Z.W 246 | where: 247 | X = Major version 248 | Y = Function added 249 | Z = Function changed 250 | W = Bugs fixed 251 | -------------------------------------------------------------------------------- /Disclaimer: -------------------------------------------------------------------------------- 1 | I am looking for people to help revive this project. 2 | 3 | The way I designed it was awfull and i gave up. 4 | 5 | My ideal plan is to restart this project using an multiplatform gui system, and use the ps2 toolchain directly. 6 | 7 | the original project used a weir method of calling pfsshell and readding its output to organize the gui, and it is really unnefficient. 8 | 9 | If you want to help in any way, add a issue stating your intentions! 10 | -------------------------------------------------------------------------------- /PFS_HDD_Manager.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2027 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PFS_HDD_Manager", "PFS_HDD_Manager\PFS_HDD_Manager.vcxproj", "{DB41C0D2-60BE-423C-B660-1D0D2EA28704}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Debug|x64.ActiveCfg = Debug|x64 17 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Debug|x64.Build.0 = Debug|x64 18 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Debug|x86.ActiveCfg = Debug|Win32 19 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Debug|x86.Build.0 = Debug|Win32 20 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Release|x64.ActiveCfg = Release|x64 21 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Release|x64.Build.0 = Release|x64 22 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Release|x86.ActiveCfg = Release|Win32 23 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {3F4D6D33-C5CB-405C-98CC-66640D5CC47B} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/File.cpp: -------------------------------------------------------------------------------- 1 | #include "File.h" -------------------------------------------------------------------------------- /PFS_HDD_Manager/File.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | ref class File 3 | { 4 | public: 5 | //Files 6 | System::String^ Name, ^ Path; 7 | enum class Types { File, Folder, Device, Partition, PartitionNull, Game }Type; 8 | System::String^ Extension = ""; 9 | System::Int32 Size; 10 | File^ Parent = nullptr, ^ Root, ^PartRoot = nullptr; 11 | System::Collections::Generic::List ^ Childs = nullptr; 12 | 13 | //Creates a Device typed File (usable for Devices) 14 | File(System::String^ Name) { File::Name = Name; File::Type = Types::Device; File::Root = this; }; 15 | //Creates a File with given type and Parent - The root is reused from Parent(usable for Partitions And Folders) 16 | File(System::String^ Name, Types Type, File^ Parent) { File::Name = Name; File::Type = Type; File::Parent = Parent; File::Root = Parent->Root; }; 17 | //Creates a File with given type and Parent - The root is reused from Parent(usable for Partitions And Folders) 18 | //File(System::String^ Name, Types Type, File^ Parent, bool Root) { File::Name = Name; File::Type = Type; File::Parent = Parent; File::Root = Parent->Root; File::PartRoot = this; }; 19 | //Creates a File with given type and Parent and Root (usable for Partitions And Folders) 20 | File(System::String^ Name, Types Type, File^ Parent, File^ Root) { File::Name = Name; File::Type = Type; File::Parent = Parent, File::Root = Root;}; 21 | //Creates an actual File, With Name, Extension and Size - Root is given by its parent 22 | File(System::String^ Name, System::String^ Extension, System::Int32 Size, File^ Parent) { File::Name = Name; File::Extension = Extension; File::Size = Size; File::Parent = Parent; File::Root = File::Parent->Root; File::Type = File::Types::File; }; 23 | 24 | File^ GetChildName(System::String^ Name) { 25 | if (this->Childs == nullptr) return nullptr; 26 | for each (File^ child in this->Childs) 27 | { 28 | if (child->Name == Name) return child; 29 | } 30 | return nullptr; 31 | }; 32 | }; -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/Disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/Disk.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/Disk_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/Disk_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/File.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/File.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/File_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/File_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/Folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/Folder.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/Folder_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/Folder_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/ISO_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/ISO_1.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/ISO_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/ISO_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/MC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/MC.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/1x/MC_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/1x/MC_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/Disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/Disk.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/Disk_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/Disk_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/ISO_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/ISO_1.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/ISO_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/ISO_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/MC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/MC.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/MC_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/MC_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/assets/Untitled-2.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/assets/Untitled-2.ai -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/file.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/file_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/file_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/folder.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/ICONS/folder_Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ICONS/folder_Dark.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/InputBox.cpp: -------------------------------------------------------------------------------- 1 | #include "InputBox.h" 2 | 3 | System::Void PFSHDDManager::InputBox::BTN_OK_Click(System::Object^ sender, System::EventArgs^ e) 4 | { 5 | Text = TXTBX_Input->Text; 6 | this->DialogResult = System::Windows::Forms::DialogResult::OK; 7 | this->Close(); 8 | return System::Void(); 9 | } 10 | 11 | System::Void PFSHDDManager::InputBox::BTN_Cancel_Click(System::Object^ sender, System::EventArgs^ e) 12 | { 13 | this->DialogResult = System::Windows::Forms::DialogResult::Cancel; 14 | this->Close(); 15 | return System::Void(); 16 | } 17 | System::Void PFSHDDManager::InputBox::TXTBX_Input_TextChanged(System::Object^ sender, System::EventArgs^ e) 18 | { 19 | BTN_OK->Enabled = !String::IsNullOrEmpty(TXTBX_Input->Text->Trim()); 20 | return System::Void(); 21 | } 22 | System::Windows::Forms::DialogResult PFSHDDManager::InputBox::Show() 23 | { 24 | this->ShowDialog(); 25 | return this->DialogResult; 26 | } 27 | 28 | System::Windows::Forms::DialogResult PFSHDDManager::InputBox::Show(String^ text) 29 | { 30 | 31 | this->LBL_TXT->Text = text; 32 | this->TXTBX_Input->Location = System::Drawing::Point(this->LBL_TXT->Location.X + this->LBL_TXT->Size.Width, this->TXTBX_Input->Location.Y); 33 | 34 | this->BTN_Cancel->Location = System::Drawing::Point(this->TXTBX_Input->Location.X + this->TXTBX_Input->Size.Width - this->BTN_Cancel->Size.Width, 32); 35 | this->BTN_OK->Location = System::Drawing::Point(this->BTN_Cancel->Location.X - this->BTN_OK->Size.Width, this->BTN_Cancel->Location.Y); 36 | 37 | this->ShowDialog(); 38 | return this->DialogResult; 39 | } 40 | 41 | System::Windows::Forms::DialogResult PFSHDDManager::InputBox::Show(String^ text, String^ defaulttxt) 42 | { 43 | 44 | this->LBL_TXT->Text = text; 45 | this->TXTBX_Input->Location = System::Drawing::Point(this->LBL_TXT->Location.X + this->LBL_TXT->Size.Width, this->TXTBX_Input->Location.Y); 46 | 47 | this->BTN_Cancel->Location = System::Drawing::Point(this->TXTBX_Input->Location.X + this->TXTBX_Input->Size.Width - this->BTN_Cancel->Size.Width, 32); 48 | this->BTN_OK->Location = System::Drawing::Point(this->BTN_Cancel->Location.X - this->BTN_OK->Size.Width, this->BTN_Cancel->Location.Y); 49 | 50 | this->TXTBX_Input->Text = defaulttxt; 51 | 52 | this->ShowDialog(); 53 | return this->DialogResult; 54 | } -------------------------------------------------------------------------------- /PFS_HDD_Manager/InputBox.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/InputBox.h -------------------------------------------------------------------------------- /PFS_HDD_Manager/InputBox.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/MainForm.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/MainForm.cpp -------------------------------------------------------------------------------- /PFS_HDD_Manager/MainForm.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/MainForm.h -------------------------------------------------------------------------------- /PFS_HDD_Manager/MainForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 6, 10 122 | 123 | 124 | 125 | AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w 126 | LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 127 | ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAo 128 | XAAAAk1TRnQBSQFMAgEBBAEAAUABAQFAAQEBMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA 129 | AwABYAMAAQEBAAEgBgABIAEB/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 130 | /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 131 | /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 132 | /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 133 | /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 134 | /wD/AP8ApQADAwEEAwABAQMCAQMDAAEBAwIBAwMBAQIDAQECAwEBAgMBBAIBAwMAAQEDAwEEAwABAQMD 135 | AQQDAAEBAwMBBAMAAQEDAgEDAwABAQMCAQMDAQECAwEBAgMBAQIDAQQCAQMDAAEBAwMBBAMAAQEDAwEE 136 | AwABAQMDAQQDAAEBAwIBAwMAAQEDAgEDAwEBAgMBAQIDAQECAwEEAgEDAwABAQMDAQQDAAEBAwMBBAMA 137 | AQEDAwEEPAADAgEDAwYBCAMdASkDLgFIAzwBZgNEAXsDSgGNA08BnANQAaMDUgGmA1IBpgNQAZ8DTgGU 138 | A0gBhgNAAXADNQFWAyYBOQMSARgDBAEFTAADKAE8A0IBdgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNT 139 | AaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNT 140 | AaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA0sBkAM3 141 | AVsDFgEf0AADAgEDAwEBAgMEAQUDAgQDAQQDAgQDAQQDAwEEAwcBCQM2AVkDRQF+A0cBgwNGAYADRwGD 142 | A0YBgANHAYIDRgGBA0YBgQNHAYIDRgGBA0cBgwNGAYADRwGDA0YBgANHAYMDRgGAA0cBgwNGAYADRwGD 143 | A0YBgANHAYIDRgGBA0YBgQNHAYIDRgGBA0cBgwNGAYADRgGBAzQBVQMJAQwDAQECAwQBBgMAAQEDBAEG 144 | AwABAQMEAQYDAQECAwMBBCwAAwMBBAMIAQsDGwEmAyoBQAM3AVoDQgF0A0gBhwNMAZIDUAGaA1EBoQNS 145 | AagDUwGsA1MBrQNTAa0DUgGpA08BpQNQAZ4DTQGWA0oBjANGAYADPAFmAzABTAMjATMDEgEZAwUBB0AA 146 | AzcBWgNQAaMDWwHZA1cBvQNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGv 147 | A1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGv 148 | A1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1gBywNWAb4DSAGIAyABLtMAAQEDBAEGAwEBAgMEAQUDAgQD 149 | AQQDAwEEAxYBHwNaAdMDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 150 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 151 | Af8DAAH/AwAB/wMAAf8DWQHSAxgBIQMBAQIDBAEGAwEBAgMEAQYDAAEBAwQBBjAAAwgBCwMYASIDQQFy 152 | A1YBuANSAfQDXwHgA1YBvANIAYcDOQFfAykBPwMcASgDFQEdAxEBFwMRARcDGAEiAyMBNAMwAUwDQQFz 153 | A1EBoQNbAdYDWAHpA1oB1QNOAZkDLwFJAxABFkAAAzcBWgNKAYoDSwGPAycBOwMMARADDAEQAwwBEAMM 154 | ARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMM 155 | ARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAzsBZANK 156 | AY0DSAGIAyABLtAAAwIBAwMAAQEDBAEGAwEBAgMEAQUDAgEDAwQBBQNWAcEDWwHhAygBPAMEAQUDBAEF 157 | AwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMB 158 | AQIDBAEGAwABAQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwQEAQYDKAE8A1sB4QNYAcADBAEGAwEBAgME 159 | AQYDAAEBAwQBBgMAAQEDAwEEIwABAQMEAQUDKAE9A0MBdwNTAbADUAGjA0oBjAM+AWsDMwFTAykBPgMf 160 | AS0DFwEgAxABFQMKAQ0DBwEKAwYBCAMGBAgBCwMNAREDEgEZAxsBJgMkATUDLgFHAzkBXwNEAXwDUAGd 161 | A1IBqQNMAZMDNgFZAxgBIQMCAQM0AAM3AVoDSQGJA0oBigMiATIDBAEFAwQBBQMEAQUDBAEFAwQBBQME 162 | AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME 163 | AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQM4AV0DSgGKA0gBiAMg 164 | AS4UAAMEAQUDBwEJAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAEL 165 | AwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAEL 166 | AwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMEAQYDAQECKAADBAEGAwABAQMEAQYDAQECAwQBBQMd 167 | ASkDAAH/AzsBYwMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDBAEGAwABAQMEAQYDAQECAwQBBQMC 168 | BAMBBAMCBAMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEE 169 | AwIBAwM7AWMDAAH/AxwBKAMEAQUDAQECAwQBBgMAAQEDBAEGAwABARwAAwQBBQMVAR0DLgFHA0UBfgNR 170 | AaIDVgGzA0cBggMxAU4DEwEaAwcBCSwAAw4BEwMVAR0DFQEdAxYBHgMmATgDPQFqA08BmwNUAasDTgGZ 171 | AzoBYgMhATEDBQEHAwEBAiwAAzcBWgNIAYgDSAGIAyABLoAAAzcBWgNIAYgDSAGIAyABLhAAAyABLwMw 172 | AU0DOAFeAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5 173 | AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5 174 | AWADOQFgAzkBYAM5AWADOQFgAzkBYAM2AVkDKQE/AxABFgMFAQccAAMCAQMDAQECAwQBBgMAAQEDBAEG 175 | AwEBAgMtAUUDAAH/AysBQwMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAgMjATQDWAHAA1YBwQNYAcADWAHA 176 | A1YBwQNLAZADAgEDA0wBkQNMAZMDAwEEA0wBkQNXAb8DVgHBA1cBvwNWAcEDWAHAAyQBNgMAAQEDBAEG 177 | AwEBAgMEAQUDAgQDAQQDKwFCAwAB/wMsAUQDAgEDAwQBBQMBAQIDBAEGAwEBAgMDAQQcAAMLAQ8DMgFR 178 | A1cBxQNXAcIDSwGPAx8BLQMLAQ84AAMmATgDNAFVAzQBVQMaASUDBgEIBAADFgEfAzkBXwNXAcIDWQHD 179 | A0oBigMQARYDBQEHLAADNwFaA0gBiANIAYgDIAEugAADNwFaA0gBiANIAYgDIAEuEAADSgGNA1kB1wNA 180 | Af0DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 181 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 182 | Af8DAAH/AwAB/wMAAf8DAAH/A0gB9gNVAbcDKgFBAxABFiAAAwQBBgMAAQEDBAEGAwABAQMEAQYDKgFA 183 | AwAB/wMrAUMDAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDIgEyA1gBwANYAcADVgHBA1gBwANWAcEDTAGR 184 | AwQBBQNLAY8DTAGRAwMBBANMAZIDVwG/A1YBwQNYAcADVgHBA1gBwAMhATEDBAEGAwABAQMEAQYDAQEC 185 | AwQBBQMCAQMDLAFEAwAB/wMrAUIDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEUAAMHAQoDFQEdA0EBcwNR 186 | AaADUAGkAzsBYwMhATEDCwEPAwQBBTgAAyYBOQM/AW8DUQGiA1ABpANKAYwDNwFaAyABLwMcASgDLAFE 187 | A0gBhANRAaIDUAGeAy4BSAMOARMoAAM3AVoDSAGIA0gBiAMgAS6AAAM3AVoDSAGIA0gBiAMgAS4QAANb 188 | AdYDTAGTAzwBZwM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0 189 | AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0 190 | AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDRQF+A04BlANNAZUDIgEyHAADAgEDAwEBAgMEAQYDAAEB 191 | AwQBBgMAAQEDLQFFAwAB/wMrAUMDAgQDAQQDAgQDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDBAEG 192 | AwABAQMEAQYDAQECAwQBBQMCBAMBBAMCBAMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEB 193 | AwQBBgMBAQIDBAEFAyoBQQMAAf8DKwFDAwMBBAMDAQQDAgEDAwQBBQMBBAIBAxAAAwQBBQMcASgDPQFp 194 | A1EBoANQAZ4DOgFiAxkBIwMBAQJAAAMbASYDMwFSA0gBhQNRAaEDUgGmA04BlAM+AWsDKwFCAxIBGQMv 195 | AUoDRgGAA1YBvANIAYQDLgFIAwUBBwMBAQIgAAM3AVoDSAGIA0gBiAMgAS6AAAM3AVoDSAGIA0gBiAMg 196 | AS4QAAMrAfwDRwGDAyABL4gAAyABLgNCAXQDWwHQAzABTQMFAQcbAAEBAwQBBQMBAQIDBAEGAwEBAgME 197 | AQYDKgFAAwAB/wMrAUIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMBAQIDBAEG 198 | AwABAQMEAQYDAQECAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAgMEAQYDAQECAwQBBgMA 199 | AQEDBAEGAwEBAgMtAUUDAAH/AysBQwMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAhAAAwsBDwM3AVoDXQHi 200 | A00BlgMwAUtYAAMWAR4DNQFYA1QBrgNYAdEDUwGtAyoBQAMQARYDGwEmA0EBcgNWAbsDUAGdAxABFgMF 201 | AQcgAAM3AVoDSAGIA0gBiAMgAS6AAAM3AVoDSAGIA0gBiAMgAS4TAAH/A1EBpwMzAVKIAAMFAQcDNQFY 202 | A1kB8gM8AWYDEAEVGAADAgEDAwIBAwMEAQUDAQECAwQBBgMAAQEDLQFFAwAB/wMsAUQDAQECAwQBBQMC 203 | BAMBBAMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQD 204 | AQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEBAwQBBgMqAUADAAH/AysBQwMD 205 | AQQDAwEEAwMBBAMDAQQDAgEDAwIBAwsAAQEDAgEDAzgBXANOAZQDUwGtAzMBUwMSARlEAAMNARIDJQE3 206 | A0EBcwNFAX4DNgFZAyMBMwMcASgDJwE6Az4BbANNAZYDVQG1AzsBZAMjATQDGwEmA0YBgQNQAaMDSgGL 207 | AyIBMgMCAQMcAAM3AVoDSAGIA0gBiAMgAS4PAAEBAwQBBQMpAT4DOAFeAzwBZgM8AWYDPAFmAzwBZgM8 208 | AWYDPAFmAzwBZgM8AWYDPAFmAzwBZgM8AWYDPAFmAzwBZgM8AWYDPAFmAzwBZgM8AWYDOgFiAzcBWwMY 209 | ASEDAgEDEAADNwFaA0gBiANIAYgDIAEuEwAB/wNYAdEDRAF8iAADAQECAyoBQQNXAb0DRQF9AykBPhsA 210 | AQEDAwEEAwIBAwMEAQUDAQECAwQBBgMqAUEDAAH/AyoBQQMEAQYDAQECAwQBBQMCBAMBBAMCBAMBBAMD 211 | AQQDAgEDAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwIEAwEEAwMBBAMC 212 | AQMDBAEFAwEBAgMEAQYDAAEBAwQBBgMAAQEDLQFFAwAB/wMrAUMDAgQDAQQDAgQDAQQDAwEEAwEBAggA 213 | AwwBEAMhATEDSwGQA1EBoQM6AWIDGAEhSAADDQESAyUBNwNGAYEDUAGfA0sBjwNAAXADMAFMAxkBIwMi 214 | ATIDOgFiA1UBsgNOAZgDOwFkAxABFgMwAUsDSAGFA1kBxAM7AWMDGAEhHAADNwFaA0gBiANIAYgDIAEu 215 | DAADAQECAwQBBQM0AVUDRwGCA0oBjQNKAY0DSgGNA0oBjQNKAY0DSgGNA0oBjQNKAY0DSgGNA0oBjQNK 216 | AY0DSgGNA0oBjQNKAY0DSgGNA0oBjQNKAY0DSAGIA0UBfQMfAS0DAwEEEAADNwFaA0gBiANIAYgDIAEu 217 | EwAB/wNZAewDUAGdAw0BEgMEAQaEAAMfASwDRwGDA0wBkgM8AWcYAAMBAQIDAwEEAwMBBAMCAQMDBAEF 218 | AwEBAgMsAUQDAAH/Ay0BRQMAAQEDBAEGA0EBcgNYAcADVgHBA1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHB 219 | A1cBvwNWAcEDWAHAA1YBwQNYAcADWAHAA1YBwQNYAcADVgHBA1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHB 220 | A1cBvwNCAXYDAQECAwQBBgMqAUADAAH/AysBQgMEAQUDAgQDAQQDAwEEAwMBBAMBAQIIAAMfAS0DSAGI 221 | A1MBrQNGAYEDAwEEAwABAUsABAEBAgMfAS0DOwFjA1ABpANbAdYDWQHDAzwBZwMZASMDDgETAycBOgNW 222 | AbMDVgG2AyoBQAMSARkDLAFEA1cBwgNOAZkDNgFZHAADNwFaA0gBiANIAYgDIAEuDwAEAQECAy0BRgM/ 223 | AW0DQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeAND 224 | AXgDQwF4A0MBeANBAXMDPAFoAxoBJAMAAQEQAAM3AVoDSAGIA0gBiAMgAS4TAAH/Az4B+ANWAbYDJAE2 225 | Aw0BEoQAAxEBFwMtAUUDUQGnA0sBkBsAAQEDAwEEAwMBBAMDAQQDAgEDAwQBBQMrAUIDAAH/A0ABcAMW 226 | AR8DAAEBA1YBwQNYAe8DVgHBA1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHBA1gBwANWAcEDWAHAA1gBwANW 227 | AcEDWAHAA1YBwQNXAb8DVgHBA1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHBA1gB7wNXAb8DBAEGAxMBGgNC 228 | AXQDAAH/AywBRAMBAQIDBAEFAwIEAwEEAwMBBAMCAQMEAAMMARADNQFWA1kB0gNIAYQDKQE+AwABAUsA 229 | AQEDDgETAyQBNQMbASYDGwEmAyQBNgM5AV8DSgGKA1UBtwNEAXwDLQFFAw4BEwM6AWIDTQGWA1MBrQMr 230 | AUIDHAEnAzkBXwNTAaoDTAGSAxABFgMFAQcUAAM3AVoDSAGIA0gBiAMgAS4TAAEBAxEBFwMaASQDHAEo 231 | AxwBKAMcASgDHAEoAxwBKAMcASgDHAEoAxwBKAMcASgDHAEoAxwBKAMcASgDHAEoAxwBKAMcASgDHAEo 232 | AxwBKAMbASYDGQEjAwkBDBQAAzcBWgNIAYgDSAGIAyABLhMAAf8DWgHVA1EBpwNCAXUDHAEnhAADBgEI 233 | AxIBGANQAZ4DUQGiAxoBJAMJAQwQAAMBAQIDAwEEAwIEAwEEAwMBBAMCAQMDKAE8AwAB/wMAAf8DVgG4 234 | AwQBBgNXAb8DWAHAAwEBAgMEAQUDAgQDAQQDAgQDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDBAEG 235 | AwABAQMEAQYDAQECAwQBBQMCBAMBBAMCBAMBBAMDAQQDVgHBA1YBwQMBAQIDVgG5AwAB/wMAAf8DJgE5 236 | AwQBBgMBAQIDBAEFAwIEAwEEAwABAQQAAyMBMwNEAXsDWwHZAzgBXAMOARNMAAMDAQQDHQEqA0EBcwM6 237 | AWIDLwFKAx4BKwMcAScDMAFMA08BnANQAaQDRAF8AxkBIwMiATIDPgFsA1gB0QM+AWsDIAEvAxYBHwNQ 238 | AZoDUgGpAy8BSQMSARgUAAM3AVoDSAGIA0gBiAMgAS6AAAM3AVoDSAGIA0gBiAMgAS4TAAH/A1QBrgNO 239 | AZQDVQGxAygBPQMAAQGDAAEBAwABAQNIAYUDUQGhAzUBVgMVAR0QAAMBBAIEAwEEAwMBBAMDAQQDAwEE 240 | AwMBBAMoATwDWwHQA1YBwQMBAQIDWAHAA1gBwAMEAQYDAQECAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMC 241 | AQMDBAEFAwEBAgMEAQYDAQECAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAwEEAwMBBANXAb8DVwG/ 242 | AwQBBQNYAcADWAHRAyYBOQMFAQcDAAEBAwQBBgMBAQIDBAEFAwIBAwMCAQMEAAM8AWcDTwGcA1ABnQMk 243 | ATVQAAMFAQcDLQFFA1YBuwNfAeADWQHMA0YBgQMfAS0DBwEKAxIBGQNPAZwDVQG3AzwBZwMZASMDJgE5 244 | A1MBrQNOAZQDNwFaBAADPQFqA1ABngNOAZkDIwEzFAADNwFaA0gBiANIAYgDIAEugAADNwFaA0gBiANI 245 | AYgDIAEuEwAB/wNIAYUDRQF9A1kB6wMzAVIDAgEDiAADOAFcA0oBjQNOAZQDIgEyEwABAQMEAQUDAgQD 246 | AQQDAwEEAwMEBAEFAyYBOQNZAc8DVwG/AwQBBgNYAcADWAHAAwABAQMEAQYDAQECAwQBBQMCBAMBBAMD 247 | AQQDAwEEAwMBBAMCAQMDBAEFAwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAwEE 248 | A1YBwQNWAcEDAgEDA1cBvwNZAc8DKAE9AwEBAgMEAQYDAAEBAwQBBgMBAQIDBAEFAwABAQMHAQkDTAGS 249 | A1IBqQMxAU4DEwEaUAADAQECAxEBFwMpAT4DNwFbA0YBgQNTAbADSgGNAzQBVQMHAQoDMAFNA0oBigNZ 250 | AcMDMAFMAxwBKAM1AVgDUgGmA0oBiwMGAQgDJgE4A0QBfANaAdUDMAFMAwQBBRAAAzcBWgNIAYgDSAGI 251 | AyABLhQAAxcBIAMjATMDJwE7AycBOwMnATsDJwE7AycBOwMnATsDJwE7AycBOwMnATsDJwE7AycBOwMn 252 | ATsDJwE7AycBOwMnATsDJwE7AycBOwMlATcDIQEwAwwBEBQAAzcBWgNIAYgDSAGIAyABLhMAAf8DPgFs 253 | AzoBYQNXAd8DPwFvAxoBJIgAAyMBMwNDAXcDWQHPAy4BSAMBAQIMAAMCAQMDAQECAwQBBQMCBAMBBAMC 254 | AQMDKAE8AwAB/wMAAf8DVgG5AwEBAgNYAcADVwG/AwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAgQD 255 | AQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDBAEGAwABAQMEAQYDAQECAwQBBQMCBAMBBANXAb8DVwG/ 256 | AwMBBANWAbkDAAH/AwAB/wMpAT4DAAEBAwQBBgMAAQEDBAEGAwEBAgMDAQQDGwEmA1IBqANPAaUDEgEZ 257 | AwcBCT8AAQEDAwEEAwwEEAEWAxABFgMHAQoDAgEDBAADDQERAykBPgNIAYcDVAGrA0oBjQMfAS0DHAEn 258 | AzkBXwNbAdYDQAFwAyMBMwMWAR8DUQGhA1ABowMaASQDFgEeAzkBXwNYAekDPAFmAxIBGBAAAzcBWgNI 259 | AYgDSAGIAyABLg8AAQEDAgEDAy4BRwM/AW0DQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeAND 260 | AXgDQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQwF4A0MBeANBAXMDPAFoAxoBJQMBAQIQAAM3AVoDSAGI 261 | A0gBiAMgAS4TAAH/AzkBYAMvAUkDVgG5A0gBhwMvAUmIAAMPARQDOQFfA10B4gM5AWADDwEUDwABAQME 262 | AQYDAQECAwQBBQMCBAMBBAMrAUIDAAH/A0EBcgMUARwDBAEFA1gBwANWAcEDAQECAwQBBgMAAQEDBAEG 263 | AwEBAgMEAQUDAgQDAQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAwEBAgMEAQYDAAEBAwQBBgMB 264 | AQIDBAEFAwIBAwNWAcEDVgHBAwMBBAMVAR0DQQFyAwAB/wMqAUADBAEGAwEBAgMEAQYDAAEBAwQBBgQA 265 | AzUBWANTAaoDSwGORAADAwEEAwoBDQMhATADKgFBAyoBQQMWAR4DBwEJCAADAQECAwQBBgNIAYYDUwGw 266 | A0YBgQMeASsDJAE2A1ABpANLAY8DNgFZBAADSAGFA1EBogM0AVQDFAEcAy4BRwNbAdYDRgGAAyYBORAA 267 | AzcBWgNIAYgDSAGIAyABLgwAAwIBAwMHAQkDQQFzA1MBrQNWAbgDVgG4A1YBuANWAbgDVgG4A1YBuANW 268 | AbgDVgG4A1YBuANWAbgDVgG4A1YBuANWAbgDVgG4A1YBuANWAbgDVgG4A1YBswNSAagDKQE+AwQBBhAA 269 | AzcBWgNIAYgDSAGIAyABLhMAAf8DOQFgAyMBNANEAXsDTwGcA0EBc4wAAy0BRQNZAc8DRAF6AyQBNQwA 270 | AwIBAwMAAQEDBAEGAwEBAgMEAQUDAgEDAywBRAMAAf8DQAFwAxUBHQMCAQMDVwG/A1cBvwMEAQYDAAEB 271 | AwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAwABAQME 272 | AQYDAAEBAwQBBgMBAQIDBAEFA1cBvwNXAb8DAwEEAxQBHANBAXIDAAH/Ay0BRQMBAQIDBAEGAwABAQME 273 | AQYDAAEBAwMBBANIAYQDTQGWAz4Baz8AAQEDJAE1Az8BbQNRAacDUgGoA1IBqANSAagDUgGoA0oBigMx 274 | AU8DFAEbAwAEAQECAygBPQNGAYEDWQHMAy8BSgMbASYDOgFiA1ABngNFAX4EAAMzAVMDPwFvAzMBUwMU 275 | ARwDJAE2A1EBoQNKAYwDNQFXEAADNwFaA0gBiANIAYgDIAEuDwABAQMCAQMDGwQmATkDKAE9AygBPQMo 276 | AT0DKAE9AygBPQMoAT0DKAE9AygBPQMoAT0DKAE9AygBPQMoAT0DKAE9AygBPQMoAT0DKAE9AygBPQMn 277 | ATsDJgE4AxABFQMBAQIQAAM3AVoDSAGIA0gBiAMgAS4TAAH/AzkBYAMWAR8DKQE+A1IBqANOAZgDCAEL 278 | AwMBBIQAAyEBMANMAZEDSwGPAzkBXxAAAwQBBgMAAQEDBAEGAwEBAgMEAQUDJgE5AwAB/wMAAf8DVQG3 279 | AwMBBANWAcEDVgHBAwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAgQDAQQDAwEE 280 | AwIBAwMEAQUDAQECAwQBBgMAAQEDBAEGAwABAQMEAQYDAQECA1YBwQNWAcEDAwEEA1YBuAMAAf8DAAH/ 281 | AycBOgMEAQUDAQECAwQBBgMAAQEDBAEGAwABAQNTAaoDSAGEAzABTDgAAwoBDQMdASkDQgF0A1EBogNV 282 | AbIDTwGcA0wBkQNMAZEDUgGoA1MBqgNOAZkDMQFPAxQBGwQAAw0BEQM3AVsDXwHgAzoBYQMaASUDHwEs 283 | A0YBgANBAXIEAAMcAScDJgE4AyQBNgMOARMDGwEmA0EBcwNNAZYDQAFwEAADNwFaA0gBiANIAYgDIAEu 284 | gAADNwFaA0gBiANIAYgDIAEuEwAB/wM5AWADDQESAxABFQNQAZ8DUgGoAyABLgMMARCEAAMUARwDNAFU 285 | A1ABnwNIAYYDBAEGAwEBAgQAAwIBAwMBAQIDBAEGAwABAQMEAQYDAQECAwQBBgMmATkDWAHRA1YBwQMD 286 | AQQDVwG/A1cBvwMEAQUDAQECAwQBBgMBAQIDBAEGAwABAQMEAQYDAQECAwQBBQMCBAMBBAMDAQQDAwEE 287 | AwMBBAMCAQMDBAEFAwEBAgMEAQYDAQECAwQBBgMAAQEDBAEGA1cBvwNXAb8DAgEDA1YBwQNbAdADKAE8 288 | AwQBBQMCAQMDBAEFAwEBAgMEAQYDAQECAwMBBANaAcoDQgF1AyEBMTgAAxwBKANEAXkDVQG6A1ABowMh 289 | ATEDDAEQCAADGAEhAz0BagNaAdsDTgGZAzEBTwgAAykBPgNWAbsDQQFyAyMBNAMBAQIDJAE2AyQBNhQA 290 | AxIBGQMwAUwDUAGeA0gBhRAAAzcBWgNIAYgDSAGIAyABLoAAAzcBWgNIAYgDSAGIAyABLhMAAf8DOQFg 291 | AwgBCwQAA0YBgANRAaIDPAFnAxkBI4QAAwYBCAMSARgDVAGrA1IBqQMNAREDBAEGCAADBAEGAwABAQME 292 | AQYDAAEBAwQBBgMCAQMDKAE8A1kBzwNXAb8DAwEEA1YBwQNWAcEDAgEDAwQBBQMBAQIDBAEGAwABAQME 293 | AQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDBAEG 294 | AwABAQNWAcEDWAHAAwQBBQNXAb8DWQHPAygBPAMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDXwHg 295 | Az8BbQMYASI0AAMEAQYDLwFJA1gBywNKAYsDMAFMAwwBEAMEAQUIAAMIAQsDIAEvAz0BagNTAaoDSgGK 296 | AwcBCQMCAQMDEQEXAy0BRQMdASkDDQESAwABAQMNARIDDQESFAADDQESAyQBNQNPAaUDTgGUEAADNwFa 297 | A0gBiANIAYgDIAEuFAADBAEFAwcBCQMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMI 298 | AQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwcBCQMFAQcDAgEDFAADNwFaA0gBiANIAYgDIAEu 299 | EwAB/wM5AWADCAELBAADNQFWA0oBjQNPAaUDJgE4hAADAgEDAwYBCANKAYoDUQGhAzABSwMSARkEAAMC 300 | AQMDAQECAwQBBgMAAQEDBAEGAwABAQMoAT0DAAH/AwAB/wNWAbkDAwEEA1cBvwNXAb8DAwEEAwIBAwME 301 | AQUDAQECAwQBBgMAAQEDBAEGAwABAQMEAQYDAQECAwQBBQMCBAMBBAMCBAMBBAMDAQQDAgEDAwQBBQMB 302 | AQIDBAEGAwABAQMEAQYDVwG/A1gBwAMBAQIDVgG5AwAB/wMAAf8DKAE8AwMBBAMDAQQDAgEDAwQBBQMB 303 | BAIBAwNOAfADPAFnAxABFjQAAxABFQM7AWMDWQHsAzsBZQMQARYUAAMIAQsDGAEhA1IBqANRAacDFgEe 304 | AwcBCgMCAQMDBQEHAwIBAwMAAQEgAAMJAQwDGQEjA1MBqgNQAZ8QAAM3AVoDSAGIA0gBiAMgAS4PAAEB 305 | AwIBAwMmATkDNgFZAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFg 306 | AzkBYAM5AWADOQFgAzkBYAM5AWADOAFcAzQBVQMWAR8DAQECEAADNwFaA0gBiANIAYgDIAEuEwAB/wM5 307 | AWADCAELBAADIAEuA0IBdgNcAdQDMQFPAwYBCIgAAzsBZQNMAZIDSAGIAyABLgcAAQEDBAEFAwEBAgME 308 | AQYDAQECAwQBBgMqAUADAAH/A0ABcAMWAR4DAgEDA1YBwQNYAe8DVwG/A1YBwQNXAb8DVgHBA1cBvwNW 309 | AcEDWAHAA1YBwQNYAcADWAHAA1YBwQNYAcADVgHBA1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHBA1cBvwNW 310 | AcEDWAHAA04B8ANYAcADBAEGAxMBGgNCAXQDAAH/AysBQwMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAgNB 311 | AfkDOwFjAwsBDzQAAx8BLANCAXUDWgHbAy8BSiAAA0wBkQNSAagDKgFBAxABFjAAAwYBCAMSARgDUwGt 312 | A1IBphAAAzcBWgNIAYgDSAGIAyABLgwAAwIBAwMHAQkDTwGcA1QB7gMAAf8DAAH/AwAB/wMAAf8DAAH/ 313 | AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1EB9wNYAeYDMwFT 314 | AwQBBhAAAzcBWgNIAYgDSAGIAyABLhMAAf8DOQFgAwgBCwQAAwcBCQM3AVsDQgH1Az0BaQMRAReIAAMn 315 | ATsDRQF9A1gBxgMrAUMEAAMCAQMDAgEDAwQBBQMBAQIDBAEGAwABAQMtAUUDAAH/AywBRAMBAQIDBAEF 316 | A0ABcQNWAcEDVwG/A1YBwQNXAb8DVgHBA1gBwANWAcEDWAHAA1gBwANWAcEDWAHAA1YBwQNXAb8DVgHB 317 | A1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHBA1gBwANWAcEDWAHAA1gBwANCAXQDAAEBAwQBBgMqAUADAAH/ 318 | AysBQwMDAQQDAwEEAwMBBAMDAQQDAgEDAwIBAwNBAfkDOwFjAwsBDzQAAx8BLANCAXUDWgHbAy8BSiAA 319 | A0wBkQNSAagDKgFBAxABFjAAAwYBCAMSARgDUwGtA1IBphAAAzcBWgNIAYgDSAGIAyABLg8AAQEDAgED 320 | AyMBNAMxAU8DNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFVAzQBVQM0AVUDNAFV 321 | AzQBVQM0AVUDNAFVAzQBVQMzAVIDMAFMAxQBHAMBAQIQAAM3AVoDSAGIA0gBiAMgAS4TAAH/AzkBYAMI 322 | AQsEAAMCAQMDKwFDA1YBwQNGAYADKgFAiAADEgEYAzsBYwNYAeMDOAFcAwwBEAMAAQEDAwEEAwIBAwME 323 | AQUDAQECAwQBBgMqAUEDAAH/AyoBQQMEAQYDAQECAwQBBQMCBAMBBAMCBAMBBAMDAQQDAgEDAwQBBQMB 324 | AQIDBAEGAwABAQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwIEAwEEAwMBBAMCAQMDBAEFAwEBAgME 325 | AQYDAAEBAwQBBgMAAQEDLQFFAwAB/wMrAUMDAgQDAQQDAgQDAQQDAwEEAwEBAgNSAfQDOwFlAw0BEicA 326 | AQEDAgEDAwIBAwQAAxcBIAM+AWwDWAHjAzUBWAMIAQsUAAMEAQYDDQERA08BnANSAagDIQEwAwwBEDAA 327 | AwcBCgMVAR0DVAGrA1ABoxAAAzcBWgNIAYgDSAGIAyABLoAAAzcBWgNIAYgDSAGIAyABLhMAAf8DOQFg 328 | AwgBCwgAAx8BLQNIAYcDTQGWAz0BaYgAAwMBBAMwAUsDWgHVA0IBdQMfAS0DAQECAwMBBAMDAQQDAgED 329 | AwQBBQMBAQIDLAFEAwAB/wMtAUUDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwME 330 | AQUDAQECAwQBBgMBAQIDBAEGAwABAQMEAQYDAQECAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMCAQMDBAEF 331 | AwEBAgMEAQYDAQECAwQBBgMqAUADAAH/AysBQgMEAQUDAgQDAQQDAwEEAwMBBAMBAQIDWQHrAzwBaAMS 332 | ARkjAAQBAQIDBwEJAwYBCAQAAwcBCQM3AVoDUgH0A0EBcwMYASEUAAMNAREDIgEyA1YBswNRAacDCgEN 333 | AwMBBDAAAwoBDQMcASgDUgGoA08BnBAAAzcBWgNIAYgDSAGIAyABLoAAAzcBWgNIAYgDSAGIAyABLhMA 334 | Af8DOQFgAwgBCwgAAxIBGAMvAUkDUwGqA0wBkowAAyQBNQNQAZ8DSgGMAzUBVwMAAQEDAwEEAwMBBAMD 335 | AQQDAgEDAwQBBQMrAUIDAAH/AyoBQAMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDLAFE 336 | AyoBQQMtAUUDKgFAAy0BRQMqAUADLQFFAyoBQQMsAUQDKwFCAysBQwMrAUIDAwEEAwMBBAMDAQQDAwEE 337 | AwIBAwMEAQUDAQECAwQBBgMAAQEDLQFFAwAB/wMsAUQDAQECAwQBBQMCBAMBBAMDAQQDAgEDA1oB1QNA 338 | AXADHQEpFAADDQESAyUBNwMOARMDDQESAyQBNQM8AWcDNQFWBAADAgEDAyYBOQNQAaMDUQGiA0MBdwMY 339 | ASEDCAELCAADEAEWAzABTANQAaMDUQGiAz8BbQMDAQQDAAEBMAADEAEVAyoBQANRAaEDSgGNEAADNwFa 340 | A0gBiANIAYgDIAEugAADNwFaA0gBiANIAYgDIAEuEwAB/wM5AWADCAELCAADBwEJAxMBGgNQAZ8DUAGk 341 | AxsBJgMKAQ2EAAMXASADOQFgA1ABnwNGAYADAQECAwMBBAMCBAMBBAMDAQQDAgEDAysBQwMAAf8DLQFF 342 | AwABAQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwIBAwMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 343 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMCBAMBBAMCBAMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAyoBQQMA 344 | Af8DKgFBAwQBBgMBAQIDBAEFAwIEAwEEAwABAQNVAboDRAF8AykBPgQAAw0BEgMUARwDFQEdAwcBCgMd 345 | ASoDRQF/AycBOgMYASIDJgE4A08BmwNKAY0DCQEMAwMBBAMUARsDMgFRA04BlwNRAaIDQQFzAzUBVwMv 346 | AUoDLwFKAzsBZQNKAYsDVQG6A0EBcwMkATU4AAMWAR8DOQFfA1ABmgNEAXsQAAM3AVoDSAGIA0gBiAMg 347 | AS4PAAEBAwIBAwMfASwDKwFCAy0BRgMtAUYDLQFGAy0BRgMtAUYDLQFGAy0BRgMtAUYDLQFGAy0BRgMt 348 | AUYDLQFGAy0BRgMtAUYDLQFGAy0BRgMtAUYDLAFEAyoBQQMSARgDAQECEAADNwFaA0gBiANIAYgDIAEu 349 | EwAB/wM5AWADCAELCwAEAQECA0YBgQNPAaUDPQFpAysBQgMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMg 350 | AS4DIAEuAyABLgMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMg 351 | AS4DIAEuAyABLgMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMpAT8DOgFhA1UBsQNM 352 | AZEDAQQCBAMBBAMDAQQDAwEEAwMBBAMrAUMDAAH/AyoBQAMEAQYDAQECAwQBBgMAAQEDBAEGAwEBAgME 353 | AQUDAgQDAQQDKwFCAysBQwMrAUIDKwFCAysBQwMrAUIDLAFEAyoBQQMtAUUDKgFAAy0BRQMqAUADBAEF 354 | AwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDAQECAywBRAMAAf8DLQFFAwABAQMEAQYDAQECAwQBBQMC 355 | AQMDAgEDA08BmwNKAYwDNQFYBAADJQE3AzQBVAM1AVcDFQEdAy4BSANbAdkDQQFzAyABLwMKAQ0DTwGl 356 | A1QBrgMaASQDCQEMBwABAQMyAVEDUAGjA0IB9QNaAeQDWgHbA1oB2wNZAewDWQHMA0QBeQMdASkDAAEB 357 | OAADHwEsA0gBhgNMAZMDPAFmEAADNwFaA0gBiANIAYgDIAEuDAADAgEDAwcBCQNHAYMDVwHFA1sB0ANb 358 | AdADWwHQA1sB0ANbAdADWwHQA1sB0ANbAdADWwHQA1sB0ANbAdADWwHQA1sB0ANbAdADWwHQA1sB0ANb 359 | AdADWAHLA1gBwAMtAUYDBAEGEAADNwFaA0gBiANIAYgDIAEuEwAB/wM5AWADCAELEAADMgFRA04BlANb 360 | AcgDUAGeA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANI 361 | AYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANI 362 | AYgDSAGIA0gBiANIAYgDSAGIA0sBkANQAZ8DWAHAA0oBjAMAAQEDBAEFAwIEAwEEAwMBBAMDAQQDKwFD 363 | AwAB/wMtAUUDAQECAwQBBgMAAQEDBAEGAwABAQMEAQYDAQECAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMC 364 | AQMDBAEFAwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAwEEAwMBBAMDAQQDAgED 365 | AwQBBQMrAUIDAAH/AyoBQAMEAQYDAAEBAwQBBgMBAQIDBAEFAwABAQM/AW8DUQGhA0QBfAQAAyYBOQM/ 366 | AW8DUQGgAyQBNgMkATYDUQGiA0oBjAM1AVgDAwEEA0EBcgNRAaEDSwGQAyMBMwMCAQMEAAMUARsDJgE5 367 | AzcBWwM+AWwDQgF1A0IBdQM7AWMDLwFKAxwBKAMKAQ48AAMpAT4DVgG7A0gBhwMuAUgQAAM3AVoDSAGI 368 | A0gBiAMgAS4PAAEBAwIBAwMsAUQDPQFqA0IBdQNCAXUDQgF1A0IBdQNCAXUDQgF1A0IBdQNCAXUDQgF1 369 | A0IBdQNCAXUDQgF1A0IBdQNCAXUDQgF1A0IBdQNCAXUDQAFwAzsBZQMaASQDAQECEAADNwFaA0gBiANI 370 | AYgDIAEuEwAB/wM5AWADCAELEAADFAEbAy4ERwGCA0gBhgNIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANI 371 | AYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANI 372 | AYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA04BlwNTAawDWQHJA1ABngNJAYkDSgGLAz8BbQMp 373 | AT8DAgEDAwEBAgMEAQUDAgQDAQQDAgEDAysBQwMAAf8DKgFBAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEB 374 | AwQBBgMBAQIDBAEFAwIEAwEEAwIEAwEEAwMBBAMCAQMDBAEFAwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEG 375 | AwEBAgMEAQUDAgQDAQQDAgQDAQQDAwEEAwIBAwMrAUMDAAH/Ay0BRQMAAQEDBAEGAwABAQMEAQYDAQEC 376 | AwMBBAMpAT8DUwGqA04BmQMJAQwDIAEuA0ABcANaAdMDMgFQAx0BKgM6AWIDUAGdA0cBgwMNAREDKgFB 377 | A0QBfANXAcIDQAFwAyMBMwMJAQwDAwEEAwIBAwMHAQkDGAEhAx8BLAMfASwDEAEVAwQBBkAAAwcBCQMz 378 | AVMDXwHgA0IBdAMdASkQAAM3AVoDSAGIA0gBiAMgAS4UAAMSARkDHQEpAyEBMAMhATADIQEwAyEBMAMh 379 | ATADIQEwAyEBMAMhATADIQEwAyEBMAMhATADIQEwAyEBMAMhATADIQEwAyEBMAMhATADHwEsAxoBJQMK 380 | AQ0UAAM3AVoDSAGIA0gBiAMgAS4TAAH/AzkBYAMIAQsUAAMQARUDKQE/AzIBUQM3AVoDNwFaAzcBWgM3 381 | AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3 382 | AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaA0QBeQNPAaUDWwHhA0gBiAM2 383 | AVkDNQFWAx8BLQMNAREDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAysBQgMAAf8DLAFEAwIBAwMEAQUDAQEC 384 | AwQBBgMBAQIDBAEGAwABAQMEAQYDAQECAyQBNQNWAcEDVwG/A1YBwQNXAb8DVgHBA1cBvwNWAcEDVwG/ 385 | A1YBwQNYAcADJAE2AwABAQMEAQYDAQECAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMOARMDKwFDAw0BEgME 386 | AQYDAQECAwQBBgMAAQEDBAEGBAADCgENA1EBpwNTAbADGgElAxABFQM1AVgDTgHwAz8BbQMaASUDEwEa 387 | A1IBqANVAbEDIwEzAw8BFAMqAUADVgG5A1YBwQNLAZADGgEkAwkBDFwAAxMBGgM+AWsDUgH0AzcBWgMG 388 | AQgQAAM3AVoDSAGIA0gBiAMgAS6AAAM3AVoDSAGIA0gBiAMgAS4TAAH/AzkBYAMIAQuUAAMhATADQgF1 389 | A1sB0AMtAUYQAAMCAQMDAAEBAwQBBgMBAQIDBAEFAwIBAwMsAUQDAAH/AysBQgMDAQQDAgEDAwQBBQMB 390 | AQIDBAEGAwABAQMEAQYDAAEBAwQBBgMhATADVgHBA1cBvwNWAcEDVwG/A1YBwQNXAb8DVgHBA1gBwANW 391 | AcEDWAHAAyEBMQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDDwEUAyoBQQMQARUDAQEC 392 | AwQBBgMAAQEDBAEGAwABAQMDAQQDAwEEA0QBegNRAaEDQgF0Ax0BKgMnATsDVAGrA0sBjwM2AVkDBwEJ 393 | AzwBZwNPAZwDTwGlAysBQwMYASEDKgFAA0QBfANRAaEDVAGuA0oBjQM1AVYDBQEHAwIBA1AAAzEBTwNK 394 | AYwDVgG4AyoBQQMCAQMQAAM3AVoDSAGIA0gBiAMgAS6AAAM3AVoDSAGIA0gBiAMgAS4TAAH/AzkBYAMI 395 | AQuUAAMhATADQgF1A1sB0AMtAUYUAAMEAQYDAAEBAwQBBgMBAQIDBAEFAyoBQQMAAf8DKwFDAwMBBAMD 396 | AQQDAgEDAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwIEAwEEAwMBBAMC 397 | AQMDBAEFAwEBAgMEAQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDAgQDAQQDAgEDAysBQwMAAf8DKgFB 398 | AwQBBQMBAQIDBAEGAwABAQMEAQYDAAEBBAADLgRIAYYDVgG5Ay4BRwMdASkDOQFgA1ABnwNJAYkDFQEd 399 | AyYBOQNAAXADWQHDA0UBfgMrAUMDDwEUAyoEQQFyA08BpQNPAZsDPAFmAwYBCAMCAQNIAAMEAQUDCwEP 400 | A0cBggNQAaQDQQFyAxwBJxQAAzcBWgNIAYgDSAGIAyABLhMAAQEDFAEbAx0BKgMgAS4DIAEuAyABLgMg 401 | AS4DIAEuAx8BLAMcASgDCgEOAwABARQAAwsBDwMgAS4DIAEuAyABLgMgAS4DIAEuAyABLgMgAS4DIAEu 402 | AyABLgMgAS4DQwF4A00BlgNIAYgDIAEuEwAB/wM5AWADCAELlAADIQEwA0IBdQNbAdADLQFGEAADAgED 403 | AwEBAgMEAQYDAAEBAwQBBgMBAQIDLQFFAwAB/wMrAUMDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDBAEG 404 | AwEBAgMEAQYDAAEBAwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMB 405 | AQIDBAEGAwABAQMEAQYDAQECAwQBBQMCBAMBBAMOARMDKwFDAw8BFAMCAQMDBAEFAwEBAgMEAQYDAQEC 406 | AwMBBAQAAw0BEQM6AWEDUwHxAz8BbQMYASEDCwEPA08BnANVAbUDNAFVAxUBHQMgAS8DSgGNA1cBwgNP 407 | AaUDIwEzAw0BEQMDAQQDCgENAyYBOAMjATQDAQECAwABAUgAAwsBDwMfAS0DVgGzA1UBsQMZASMDCQEM 408 | FAADNwFaA0gBiANIAYgDIAEuDwABAQMDAQQDMgFRA0UBfQNIAYgDSAGIA0gBiANIAYgDSAGIA0cBgwND 409 | AXgDHgErAwIBAxQAAx8BLQNIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDVQGy 410 | A1UBsgNIAYgDIAEuEwAB/wM5AWADCAELlAADIQEwA0IBdQNZAc8DLQFGFAADBAEGAwABAQMEAQYDAAEB 411 | AwQBBgMqAUADAAH/AysBQwMDAQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDBAEGAwABAQMEAQYDAAEB 412 | AwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEDBAEGAwABAQME 413 | AQYDAQECAwQBBQMCAQMDDwEUAysBQwMOARMDAwEEAwIBAwMEAQUDAQECAwQBBgMAAQEEAAMEAQYDKAE9 414 | A1EBpwNNAZUDOQFgAwUBBwMzAVIDSwGOA1YBvAM1AVgDHQEpAyABLwNAAXADTwGcA1UBsQNHAYMDNQFX 415 | AyABLwMYASIDDQESAwABAUgAAwEBAgMhATEDSwGPA1EBogNDAXcDCQEMAwMBBBQAAzcBWgNIAYgDSAGI 416 | AyABLg8AAQEDAwEEAzIBUQNFAX0DSAGIA0gBiANIAYgDSAGIA0gBiANHAYMDQwF4Ax4BKwMCAQMUAAMu 417 | AUgDWQHXA1IBpgNKAYsDSAGIA0gBiANIAYgDSAGIA0gBiANNAZUDVQGxA1oB1QNWAbgDNgFZAxYBHhMA 418 | Af8DOQFgAwgBC0AAAyQBNQM5AV8DRAF7A0QBewNEAXsDRAF7A0QBewNEAXsDRAF7A0QBewNEAXsDRAF7 419 | A0QBewNEAXsDRAF7A0QBewNEAXsDRAF7A0QBewNEAXsDRAF7A08BnANSAagDUQGgAyQBNhAAAwIBAwMB 420 | AQIDBAEGAwABAQMEAQYDAAEBAy0BRQMAAf8DKwFDAwIEAwEEAwIEAwEEAwMBBAMCAQMDBAEFAwEBAgME 421 | AQYDAAEBAxwBKANGAYADRwGCA0YBgQNGAYEDRwGCA0YBgQNHAYMDRQF/AxwBJwMCAQMDBAEFAwEBAgME 422 | AQYDAAEBAwQBBgMAAQEDBAEGAwEBAgMEAQUDKgFBAwAB/wMrAUMDAwEEAwMBBAMCAQMDBAEFAwEEAgED 423 | CAADFgEeAzYBWQNQAZ8DTAGTAyIBMgMgAS4DNwFbA1YBvANLAY4DNQFYAxUBHQMmATkDPAFnA1IBqANQ 424 | AZ4DSgGMA0EBcwMnAToDDQESTAADGQEjAzsBYwNXAcIDRQF+AygBPRwAAzcBWgNIAYgDSAGIAyABLg8A 425 | AQEDAgEDAyQBNgMzAVMDNwFaAzcBWgM3AVoDNwFaAzcBWgM1AVcDMgFQAxUBHQMBAQIUAAM0AVUDAAH/ 426 | A04BmAM6AWEDNwFaAzcBWgM3AVoDNwFaAz0BagNMAZMDWgHTA1kBxANKAYwDHgErAwsBDxMAAf8DOQFg 427 | AwgBCzgAAwYBCAMSARgDQQFyA1ABnQNOAZkDTgGYA04BmANOAZgDTgGYA04BmANOAZgDTgGYA04BmANO 428 | AZgDTgGYA04BmANOAZgDTgGYA04BmANOAZgDTgGYA04BmANOAZgDUAGjA0sBjwM3AVsDFgEfEwABAQME 429 | AQUDAQECAwQBBgMBAQIDBAEGAyoBQAMAAf8DKwFCAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMCAQMDBAEF 430 | AwEBAgMEAQYDOwFlAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DPAFmAwMBBAMCAQMDBAEF 431 | AwEBAgMEAQYDAQECAwQBBgMAAQEDBAEGAwEBAgMtAUUDAAH/AysBQwMDAQQDAwEEAwMBBAMCAQMDBAEF 432 | AwEBAggAAwIBAwMGAQgDSgGMA1UBugNLAY8DIQEwAxUBHQM1AVcDVgG8A1YBvAM0AVUDFQEdAwcBCQMT 433 | ARoDOgFiA1EBogNbAdkDRQF+AyQBNUwAAzoBYgNQAaQDWAHGAy4BRwMEAQUcAAM3AVoDSAGIA0gBiAMg 434 | AS5UAAM0AVUDAAH/AzkBYAMIAQsQAAMhATADRgGAA04B8ANGAYADIQEwGwAB/wM5AWADCAELOAADEgEY 435 | Ay4BSANVAbUDVgG8AzgBXAM2AVkDNQFYAzUBWAM1AVgDNQFYAzUBWAM1AVgDNQFYAzUBWAM1AVgDNQFY 436 | AzUBWAM1AVgDNQFYAzUBWAM1AVgDNQFYAzUBWAMuAUgDHgErAwABARQAAwIBAwMCAQMDBAEFAwEBAgME 437 | AQYDAAEBAy0BRQMAAf8DLAFEAwEBAgMEAQUDAgQDAQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDBgEI 438 | A1QBrgMhAfsDLwFKAwQBBgMBAQIDMAFMAyEB+wNUAa4DBAEFAwMBBAMDAQQDAgEDAwQBBQMBAQIDBAEG 439 | AwABAQMEAQYDAAEBAwQBBgMqAUADAAH/AysBQwMDAQQDAwEEAwMBBAMDAQQDAgEDAwIBAwsAAQEDAgED 440 | AykBPwNGAYEDWAHLA0IBdQMnAToDFQEdAzcBWwNLAY4DVQG1A0kBiQM2AVkDGgElAx0BKgMkATYDLgFI 441 | Ax0BKgMNARJEAAMSARkDMAFLA1ABnQNRAaADMgFRAxUBHQMBAQIcAAM3AVoDSAGIA0gBiAMgAS5UAAM0 442 | AVUDAAH/AzkBYAMIAQsIAAMMARADIQEwA0oBiwNPAaUDRgGAAycBOwMMARAbAAH/AzkBYAMIAQs0AAMH 443 | AQkDLQFFA1UBsgNOAZQDOwFjAxYBHwMWAR4DFQEdAxUBHQMVAR0DFQEdAxUBHQMVAR0DFQEdAxUBHQMV 444 | AR0DFQEdAxUBHQMVAR0DFQEdAxUBHQMVAR0DFQEdAxUBHQMSARgDCgEOGwABAQMDAQQDAgEDAwQBBQMB 445 | AQIDBAEGAyoBQQMAAf8DKgFBAwQBBgMBAQIDBAEFAwIEAwEEAwIEAwEEAwMBBAMCAQMDBAEFAwEBAgMN 446 | AREDWQHPA1gB7wMeASsDIAEuA1gB7wNZAc8DCgEOAwMBBAMCBAMBBAMDAQQDAgEDAwQBBQMBAQIDBAEG 447 | AwABAQMEAQYDAAEBAy0BRQMAAf8DKwFDAwIEAwEEAwIEAwEEAwMBBAMBAQIQAAMMARADLgFIA1QBqwNQ 448 | AZ4DQgF1AyEBMAMfAS0DMgFRA08BnANQAZ4DSwGPAz8BbgMyAVEDJAE2AxUBHQMHAQpDAAEBAxgBIQMz 449 | AVMDTQGWA1ABnwNBAXMDCwEPAwQBBSAAAzcBWgNIAYgDSAGIAyABLlQAAzQBVQMAAf8DOQFgAwgBCwQA 450 | AwwBEAMnATsDRgGAA08BpQNKAYoDIQEwAwwBEBwAA0AB/QM7AWQDCwEPNAADIQExA0IBdgNaAc0DPQFp 451 | AxoBJWwAAwEBAgMDAQQDAwEEAwIBAwMEAQUDAQECAywBRAMAAf8DLQFFAwABAQM7AWMDVgHBAwQBBQMC 452 | BAMBBAMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAgMaASQDXAHnA1oB2wNaAdsDXAHnAxYBHwMEAQUDAgQD 453 | AQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDIwE0A1gBwAMkATYDKgFAAwAB/wMrAUIDBAEFAwIEAwEE 454 | AwMBBAMDAQQDAQECFAADDAEQAyEBMANUAasDWAHLA0sBkAMiATIDBQEHAwsBDwM5AWADUwGsA1MB8QNc 455 | AdQDUQGgAzQBVQMVAR0/AAEBAwMBBAM6AWIDUwGtA10B4gM9AWkDFQEdKAADNwFaA0gBiANIAYgDIAEu 456 | VAADNAFVAwAB/wM5AWADCAELBAADIQEwA0YBgANOAfADRgGAAyEBMCQAAz4B+AM+AWsDEQEXNAADQwF3 457 | A1MBqgNOAZkDIwEzcwABAQMDAQQDAwEEAwMBBAMCAQMDBAEFAysBQgMAAf8DKgFAAwQBBgM5AWADVgHB 458 | AwEBAgMEAQUDAgQDAQQDAwEEAwMBBAMDAQQDAgEDAwQBBQMBAQIDKAE9A1EB9wNRAfcDJgE5AwQBBgMB 459 | AQIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDIgEyA1gBwAMhATEDLQFFAwAB/wMsAUQDAQEC 460 | AwQBBQMCBAMBBAMDAQQDAgEDFAADBAEFAwwBEAMvAUkDRwGCA1YBvANOAZQDOQFgAxgBIQMdASkDKAE8 461 | AzYBWQM/AW8DPwFuAzQBVAMUARw4AAMOARMDKQE+A0YBgQNQAaMDTQGWAzcBWgMcASgDBwEKKAADNwFa 462 | A0gBiANIAYgDIAEuVAADNAFVAwAB/wM5AWADFAEbAyEBMANKAYsDTwGlA0YBgAMnATsDDAEQJAADUgGp 463 | A1QBrwNTAbADUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGqA1MBqgNTAaoDUwGq 464 | A1gBwANQAZoDJgE5Aw4BE3AAAwEBAgMDAQQDAgQDAQQDAwEEAwIBAwMrAUMDAAH/Ay0BRQMAAQEDBAEG 465 | AwABAQMEAQYDAQECAwQBBQMCBAMBBAMCBAMBBAMDAQQDAgEDAwQBBQMBAQIDLgFIAy0BRgMEAQYDAAEB 466 | AwQBBgMBAQIDBAEFAwIEAwEEAwIEAwEEAwMBBAMCAQMDBAEFAwEBAgMEAQYDKgFBAwAB/wMqAUEDBAEG 467 | AwEBAgMEAQUDAgQDAQQDAAEBHAADDAEQAykBPwNLAY4DUQGgA00BlQM/AW0DLgFHAx0BKgMQARUDHwEt 468 | AyYBOAMlATcDDgETLAADBgEIAxMBGgMkATUDOAFcA0gBhANTAa0DTAGSAzgBXgMLAQ8DBAEFLAADNwFa 469 | A0gBiANIAYgDIAEuVAADNAFVAwAB/wNAAXADLQRGAYADTwGlA0oBigMhATADDAEQKAADNQFWA0oBjQNU 470 | AasDVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA1QBrwNUAa8DVAGvA08BmwM7 471 | AWMDBAEGAwEBAnAAAwEEAgQDAQQDAwEEAwMBBAMDAQQDKwFDAwAB/wMqAUADBAEGAwEBAgMEAQYDAAEB 472 | AwQBBgMBAQIDBAEFAwIEAwEEAwMBBAMDAQQDAwEEAwIBAwMEAQUDAQECAwQBBgMBAQIDBAEGAwABAQME 473 | AQYDAQECAwQBBQMCBAMBBAMDAQQDAwEEAwMBBAMCAQMDBAEFAwEBAgMsAUQDAAH/Ay0BRQMAAQEDBAEG 474 | AwEBAgMEAQUDAgEDAwIBAyAAAwIBAwMHAQkDNgFZA1EBpwNTAfEDVgG5A0IBdAMaASUDCQEMOAADEgEZ 475 | AzEBTgNQAZ0DWwHZA1kB0gNIAYgDIgEyAwQBBTQAAzcBWgNIAYgDSAGIAyABLlQAAzQBVQMAAf8DSwGQ 476 | A0oBigNOAfADRgGAAyEBMDQAAwQBBgMIAQsDDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMM 477 | ARADDAEQAwwBEAMMARADDAEQAwcBCgMEAQV7AAEBAwQBBQMCBAMBBAMDAQQDAwEEAyoBQQMAAf8DAAH/ 478 | AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ 479 | AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ 480 | AwAB/wMAAf8DKQE/AwQBBgMAAQEDBAEGAwEBAgMEAQUDAAEBIwABAQMCAQMDFgEeAygBPQM6AWEDSAGG 481 | A1EBoANTAbADTgGZA0QBfAM2AVkDKQE+Ax0BKQMTARoDDgETAwsBDwMLAQ8DEAEWAxgEIQExAzABTAM+ 482 | AWsDSwGOA08BpQNTAaoDTwGcA0QBewM1AVYDHwEtAw0BEQMBAQI0AAM3AVoDSQGJA0oBjQMlATcDCAEL 483 | AwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAELAwgBCwMIAQsDCAEL 484 | AwgBCwMIAQsDCAELAwgBCwMIAQsDOAFcAwAB/wNaAdUDUwGqA0YBgAMnATsDDAEQNAADAQECAwMEBAEF 485 | AwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwIBAwMBAQJ4AAMC 486 | AQMDAQECAwQBBQMCBAMBBAMCAQMDCgEOA0QBeQNHAYIDRgGBA0YBgQNHAYIDRgGBA0cBgwNGAYADRwGD 487 | A0YBgANHAYMDRgGAA0cBgwNGAYADRwGDA0YBgQNHAYIDRgGBA0YBgQNHAYIDRgGBA0cBgwNGAYADRwGD 488 | A0YBgANHAYMDRgGAA0cBgwNGAYADRwGDA0YBgQNHAYIDRgGBA0QBegMMARADAAEBAwQBBgMAAQEDBAEG 489 | AwEBAgMDAQQsAAMEAQUDDQERAy4BSANEAXoDUQGnA1IBqQNRAaEDSgGMA0QBfANAAXEDPQFpAzsBZQM7 490 | AWMDOwFjAzwBZgM+AWwDQgF0A0gBhQNOAZcDVAGrA1IBqANMAZIDPAFnAyIBMgMMARBAAAM3AVoDTgGX 491 | A1UBtQNFAX0DOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADOQFg 492 | AzkBYAM5AWADOQFgAzkBYAM5AWADOQFgAzkBYAM5AWADTgGUA0AB/QNbAdADSgGMAyEBMAMMARD3AAEB 493 | AwIBAwMABAEBAgMBAQIDAAEBAwIBAwMAAQEDAgEDBAADAgEDBAADAgEDBAADAgEDAwABAQMCAQMDAAQB 494 | AQIDAQECAwABAQMCAQMDAAEBAwIBAwQAAwIBAwQAAwIBAwQAAwIBAwMAAQEDAgEDAwAEAQECAwEBAgMA 495 | AQEDAgEDAwABAQMCAQMEAAMCAQMEAAMCAQMEAAMCAQMDAAEBAwIBAzwAAwMBBAMKAQ0DKQQ/AW8DTwGb 496 | A1UBugNaAdUDVQHqA0IB9QMpAfoDKQH6A1gB7wNXAd8DWQHJA1MBqgNIAYQDNQFYAxsBJgMHAQlMAAM3 497 | AVoDUwGwAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 498 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DQAH9Az4B+ANHAYMDIQEw/AABQgFN 499 | AT4HAAE+AwABKAMAAcADAAFgAwABAQEAAQEGAAEJFgAD//8A/wD/AP8AhQABgAQAAQEB/wH8AgABfwH/ 500 | AfAEAAEPBv8GAAH/AeACAAEPAf8B8AQAAQ8G/wUAAQEB/wHgAgABDwH/AfAEAAEPBv8GAAH/AwABAQH/ 501 | AfAEAAEPAYADAAEBAf8BgAUAAf4BAAF/AfABAAF/AfAE/wEPBQABfwYAAf4BAwH/AfABQAF/AfAE/wEP 502 | BQABfwGABQAB+AEDAf8B8AEAAT8B8AT/AQ8FAAF/BgAB8AEPAf8B8AEAAQ8B8AT/AQ8BHwP/AfgBPwYA 503 | AfABfwH/Af4BAAEPAfAE/wEPAR8D/wH4AT8GAAHAAX8B/wHAAQABBwHwAeACAAIPAR8D/wH4AT8GAAHA 504 | Av8BwAEAAQcB8AHgAgACDwEHA/8B/AE/BgABwAL/AcABAAEHAfAB4AIAAg8BBwP/AfwBPwYAAYEC/wGA 505 | AQABAQLwAgABHwEPAQcD/wH8AQ8GAAGDAv8BgAEAAQEB8AT/AQ8BAwP/AfwBDwYAAYcC/wGAAQABIQHw 506 | BP8BDwEDBP8BDwYAAQcC/wGAAgAB8AH4AgABHwEPAQME/wEHBgABBwH/AfABEAIAAfAB4AIAAg8BAwT/ 507 | AQcFAAEBAR8B/wHwARgBAQEAAfAB4AIAAg8BAwT/AYcGAAEfAf8BwAEAAQEBAAHwAeACAAIPAQAE/wGH 508 | AYAFAAEfAf8BgAECAQEBAAHwBP8BDwEABP8BgQYAAR8B/wGBAYMBAQLwBP8BDwEQBP8BgQGABQABHwH/ 509 | AQEBgAEBAvAB+AIAAR8BDwEQBP8BgQYAAR8B/wEHAcABDwLwAeACAAIPARABfwP/AeEGAAEfAf8BDwHw 510 | Af8C8AHgAgACDwEQAX8D/wHhBgABHwH/AQ8B8AH/AvAB4AIAAg8BEAF/A/8B4AYAAR8B8QEHAcAB/wLw 511 | BP8BDwEYAX8D/wHgBgABHwHhAQcBwAH/AvAE/wEPARgBfwP/AfAGAAEfAgEBgAH/AvAE/wEPARgBHwP/ 512 | AfAGAAEQAgABAwH/AvAB4AIAAg8BGAsAARABAAFAAQMB/wLwAeACAAIPAR4LAAEQAQABIAEHAf8C8AHg 513 | AgACDwEeDgABHwH/AeAB8AH4AgABHwEPAR8KAAEBAgABDwL/AeAB8AT/AQ8BHwT/AQ8IAAEBAv8B4AHw 514 | BP8BDwEfBP8BDwGABQABgAEAAQEC/wGBAvABAAH4AQABDwEfBP8BDwYAAYABAAEBAv8BgQHwAeABAAH4 515 | AQABDwEfBP8BDwGABQABgAEAAQMC/wEBAfAB4AEAAfgBAAEPAR8B/wHgAgABDwYAAcABAAEHAv8BBwHw 516 | AeABAAH4AQABDwEfAf8BgAIAAQ8GAAHAAQABBwL/AQcB8AL/AfgBeAE/AR8B/wGAAgABHwYAAcABAAEH 517 | Af8B/AEHAfAC/wH4AWABPwEfAf8DAAE/BgAB8AEAAQ8B/wHwAQ8B8AL/AfgBQAF/AR8B/wEHA/8GAAH4 518 | AQABDwH/AeABPwHwAv8B+AFBAf8BHwH/AQ8D/wYAAfgBAAEPAf8BwAE/AfAC/wH4AQEB/wIAAQ8D/wYA 519 | Af4BAAEPAf4BAAF/AfAC/wH4AQMB/wIAAQ8D/wYAAf8BAAF/Af4BAQH/AfAC/wH4AQ8B/wGAAQABPwP/ 520 | BgAB/wMAAQEB/wHwAwABDwH/AYABAAE/A/8GAAH/AeACAAEPAf8B8AMAAR8H/wEAAVQBAAGoAQEBUQH/ 521 | AfwCAAF/Af8B8AMAAX8H/ws= 522 | 523 | 524 | 525 | 380, 6 526 | 527 | 528 | 193, 8 529 | 530 | 531 | 532 | AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w 533 | LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 534 | ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC8 535 | KQAAAk1TRnQBSQFMAgEBBAEAAYQBAgGEAQIBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA 536 | AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 537 | /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A 538 | /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AVQABAQMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgED 539 | AwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgED 540 | AwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMoAAMJAQwDNQFWA04BmANbAcgDWAHpA0EB+QNB 541 | AfkDWAHpA1sByANOAZcDNAFVAwgBCzQAAz8BbANXAcIDVAGwA1QBrQNUAa0DVAGtA1QBrQNUAa0DVAGt 542 | A1QBrQNUAa0DVAGtA1QBrQNUAa0DVAGtA1QBrQNUAa0DVAGtA1QBrQNUAa0DVAGtA1QBrQNUAa0DVAGt 543 | A1UBsQNBAXIDDwEUiAADAgQDAQQDAwEEAwMEBAEFAz8BbwNZAewDAAH/AwAB/wMAAf8DAAH/AwAB/wMA 544 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DWQHsAz8BbwMD 545 | AQQDAwQEAQUDAwEEAwEBAiAAAxgBIgNQAZoDUgH0A1sB1gNIAYcDMAFLAxwBKAMRARcDEQEXAxwBKAMw 546 | AUwDSAGHA1sB1gNMAfMDTgGZAxgBISwAA0EBcgNLAY8DGwEmAwwBEAMMARADDAEQAwwBEAMMARADDAEQ 547 | AwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADDAEQ 548 | A0QBeQNIAYgDEQEXiAADAgQDAQQDAwEEAwMBBAMrAUIDXAHUAxUBHQMDAQQDAwEEAwMEBAEFAwMBBAMD 549 | AQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMBBAMWAR8DWgHTAyoBQQMD 550 | AQQDAwQEAQUDAQECGAADBQEHA0gBhwNRAfcDUAGeAxwBJygAAxwBKANQAZ8DUQH3A0gBhQMEAQYkAANB 551 | AXIDSQGJAxMBGgMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMC 552 | AQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwNCAXMDSAGIAxEBFwgAAxIBGAMgAS8DJAE2 553 | AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 554 | AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMcASgDCAELAwEBAhAAAwEBAgMEAQUDAwEEAwMBBANF 555 | AX8DSAGEAwQBBQMDAQQDAwEEAwMBBAMrAUIDRwGCA0cBggNHAYIDKwFCAysBQgMsAUQDKwFDA0cBggNG 556 | AYEDRgGBAywBRAMDAQQDAwEEAwMBBAMDAQQDSAGFA0YBgAMDAQQDAwEEAwMBBAMCAQMUAAMRARcDVwHF 557 | A1gBwAMfAS0oAAM0AVUDNAFVAwkBDAQAAyABLgNXAcIDWQHDAxABFiAAA0ABcQNIAYgDEQEXVAADQAFx 558 | A0gBiAMRARcIAANKAY0DVQHqAwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 559 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DWQHXAyoBQQMI 560 | AQsQAAMBAQIDAwQEAQUDAwEEA0YBgQNGAYEDAwQEAQUDAwEEAwMBBAMrAUIDRwGCA0cBggNGAYEDKwFD 561 | AysBQgMrAUMDLAFEA0YBgQNGAYEDRwGCAysBQwMEAQUDAwEEAwMBBAMDAQQDRwGCA0cBggMDAQQDAwEE 562 | AwMBBAMCAQMQAAMfASwDXQHiA0wBkwMDAQQsAAM1AVYDWQHJA04B8ANIAYcDCwEPAwQBBQNNAZUDWwHh 563 | Ax4BKxwAA0ABcQNIAYgDEQEXVAADQAFxA0gBiAMRARcIAANYAekDPgFrAx4BKwMeASsDHgErAx4BKwMe 564 | ASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMe 565 | ASsDHgErAx4BKwMeASsDPwFtA1YBswMYASIQAAMCBAMBBAMDBAQBBQNGAYEDRwGCAwMBBAMDBAQBBQMD 566 | AQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEE 567 | A0cBggNGAYEDBAEFAwMBBAMDAQQDAgEDDAADEQEXA10B4gNAAXA8AAMfAS0DVAGuA1gB4wMqAUAEAANB 568 | AXIDXwHgAxABFhgAA0ABcQNIAYgDEQEXVAADQAFxA0gBiAMRARcLAAH/A0UBfVwAAyEBMANZAfIDKQE+ 569 | EAADAgQDAQQDAwEEAwMBBANHAYIDRwGCAwMBBAMDAQQDAwQEAQUDAwEEAwMBBAMDAQQDAwQEAQUDAwEE 570 | AwMBBAMDAQQDAwQEAQUDAwEEAwMBBAMDAQQDAwQEAQUDAwEEA0YBgQNGAYEDAwQEAQUDAwEEAwEBAggA 571 | AwQBBQNWAcEDTAGSNAADMwFSA1sB2QNIAYUDEgEYBAADNQRYAe8DNQFYBAADTQGWA1cBxQMFAQcUAANA 572 | AXEDSAGIAxEBFwcAAQEDBAEFAzgBXQNEAXoDRAF6A0QBegNEAXoDRAF6A0QBegNEAXoDRAF6A0QBegNE 573 | AXoDRAF6A0MBeAM/AWwDEAEWDAADQAFxA0gBiAMRARcLAAH/A1YBtgMHAQkDAQECVAADFAEcA1EBoANA 574 | AW4QAAMCBAMBBAMDAQQDAwEEA0cBggNHAYIDAwEEAyQBNgNGAYEDRgGBA0cBggNHAYIDRwGCA0YBgQNG 575 | AYEDRwGCA0cBggNHAYIDRgGBA0YBgQNHAYIDRwGCA0cBggNGAYEDJAE2AwQBBQNGAYEDRwGCAwMBBAMD 576 | BAQBBQMBAQIIAANIAYgDVwG/AwMBBDQAAwEBAgMrAUIDUAGkA04B8AM8AWcEAAMnAToDTgHwAyoBQAME 577 | AQUDVwHCA0gBhRQAA0ABcQNIAYgDEQEXBwAEAQECAzcBWgNDAXgDQwF4A0MBeANDAXgDQwF4A0MBeAND 578 | AXgDQwF4A0MBeANDAXgDQwF4A0IBdgM8AWgDDgETDAADQAFxA0gBiAMRARcLAAH/A1kB1wMkATYDBwEJ 579 | VAADCQEMAy0BRQNPAZwQAAMBAQIDBAEFAwMBBAMDAQQDRwGCA1gBwAMlATcDRgGBA1gBwANHAYIDRwGC 580 | A0cBggNGAYEDRgGBA0cBggNHAYIDRwGCA0YBgQNGAYEDRwGCA0cBggNHAYIDRgGBA1gBwANGAYEDJAE1 581 | A1YBwQNHAYIDAwEEAwMBBAMDAQQDAgEDBAADGgEkA1EB9wMfASw0AAMCAQMDMQFPAwkBDAQAAyQBNgNX 582 | Ad8DSgGMBAADNQRYAeMDCwEPAyABLgNIAfYDGAEhEAADQAFxA0gBiAMRARcLAAEBAwsEDwEUAw8BFAMP 583 | ARQDDwEUAw8BFAMPARQDDwEUAw8BFAMPARQDDwEUAw8BFAMPARQDDQESAwIBAwwAA0ABcQNIAYgDEQEX 584 | CwAB/wNTAbADTAGTAxMBGlQAAwIBAwMKAQ0DUAGaAygBPQMIAQsIAAMBAQIDAwQEAQUDAwEEAyMBNANW 585 | AcEDRgGBA0cBggNHAYIDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMD 586 | BAQBBQNGAYEDRwGCA0cBggNYAcADJAE1AwMBBAMDAQQDAwEEAwIBAwQAA08BmwNQAZ04AAMIAQsDVgG7 587 | A1kB8gNGAYEDAgEDAxIBGQNXAd8DPAFnBAADUwGtA0gBhwQAA1EBoANOAZkQAANAAXEDSAGIAxEBF1QA 588 | A0ABcQNIAYgDEQEXCwAB/wNHAYEDWQHrAx4BK1wAA0IBdQNOAZQDEgEZCAADAgQDAQQDAwQEAQUDJAE1 589 | A1gBwANGAYEDRwGCA0cBggMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEE 590 | AwMBBAMDAQQDRwGCA0cBggNGAYEDWAHAAyQBNgMEAQUDAwEEAwMBBAMCAQMDCgENA0IB9QMbASZAAAMb 591 | ASYDWwHIA1UBtwMCAQMDJAE2A04B8AMSARkDIAEuA04B8AMJAQwDHAEoA0wB8wMIAQsMAANAAXEDSAGI 592 | AxEBFwcABAEBAgMrAUIDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM3AVoDNwFaAzcBWgM2 593 | AVgDMAFMAwoBDgwAA0ABcQNIAYgDEQEXCwAB/wM4AV4DWQHMAzYBWVwAAy4BSANbAdkDIQEwCAADAgQD 594 | AQQDAwEEAwMBBANHAYIDWAHAAyQBNgNHAYIDRgGBAwQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEE 595 | AwMBBAMDBAQBBQMDAQQDAwEEAwMBBANHAYIDRwGCAyQBNgNYAcADRgGBAwMEBAEFAwMBBAMBAQIDNQFY 596 | A1wB1DAAAwoBDQMqAUEDKgFBAwoBDQgAAwQBBgNZAccDRgGBBAADUAGkA0gBhQQAA1kByQM0AVQEAANb 597 | AdYDNAFVDAADQAFxA0gBiAMRARcEAAMBAQIDBwEJA0wBkANWAbgDVgG4A1YBuANWAbgDVgG4A1YBuANW 598 | AbgDVgG4A1YBuANWAbgDVgG4A1YBtgNSAagDGAEiDAADQAFxA0gBiAMRARcLAAH/Ay8BSgNEAXsDSQGI 599 | XAADGQEjA1kBzwM2AVgIAAMCBAMBBAMDAQQDAwEEA0cBggNYAcADJAE2A0YBgQNGAYEDAwQEAQUDAwEE 600 | AwMBBAMDAQQDAwQEAQUDAwEEAwMBBAMDAQQDAwQEAQUDAwEEAwMBBANHAYIDRgGBAyQBNQNYAcADRwGC 601 | AwMBBAMDBAQBBQMBAQIDUAGaA0gBhSsAAQEDQwF4A1IB9ANaAdsDWgHbA1IB9ANDAXcDAAEBBAADGwEm 602 | A1kB8gMJAQwDKgFBA1sB2QQAAzUBVwMzAVIEAANIAYcDTgGYDAADQAFxA0gBiAMRARcHAAQBAQIDEgEY 603 | AxYBHwMWAR8DFgEfAxYBHwMWAR8DFgEfAxYBHwMWAR8DFgEfAxYBHwMWAR8DFgEeAxQBHAMEAQYMAANA 604 | AXEDSAGIAxEBFwsAAf8DKAE9Ax0BKgNRAaIDFQEdAwQBBVQAAw4BEwNCAXMDSAGFAwIBAwMABAEBAgME 605 | AQUDAwEEAwMBBAMkATUDWAHAA0cBggNGAYEDRwGCAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMD 606 | AQQDAwEEAwMBBAMDBAQBBQMDAQQDRgGBA0YBgQNHAYIDVgHBAyQBNQMDAQQDAwEEAwMBBAMCAQMDWgHK 607 | Ay8BSigAA0QBeQNaAdsDIQExCAADIgEyA1oB2wNDAXcIAANWAbsDMAFNAwEBAgMyAVEQAAMwAUwDWQHH 608 | DAADQAFxA0gBiAMRARdUAANAAXEDSAGIAxEBFwsAAf8DJAE2BAADTAGRAzwBZwMNARJUAAMDAQQDEgEY 609 | A1MBqgMNAREDAgEDAwEBAgMDBAQBBQMDAQQDJAE2A1gBwANGAYEDRwGCA0cBggMDAQQDAwEEAwMEBAEF 610 | AwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMEBAEFA0YBgQNHAYIDRwGCA1gBwAMlATcDAwEE 611 | AwMBBAMDAQQDAgEDA1kB6wMcASckAAMKAQ4DUgH0AyIBMhAAAyIBMgNSAfQDCgENBAADCAELAwEBAhgA 612 | Ax0BKQNYAekMAANAAXEDSAGIAxEBFwcABAEBAgMcASgDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2 613 | AyQBNgMkATYDJAE2AyQBNgMjATQDIAEuAwcBCgwAA0ABcQNIAYgDEQEXCwAB/wMkATYEAAM6AWIDVwG9 614 | AxoBJFcAAQEDAwEEA0oBiQM+AWoDDQESAwIEAwEEAwMEBAEFA0YBgQNYAcADJAE2A0cBggNYAcADRwGC 615 | A0cBggNGAYEDRgGBA0cBggNHAYIDRwGCA0YBgQNGAYEDRwGCA0cBggNHAYIDRgGBA0YBgQNWAcEDRwGC 616 | AyMBNANWAcEDRgGBAwQBBQMDAQQDAwEEAwIBAwNBAfkDEQEXJAADKwFCA1oB2xgAA1oB2wMqAUEkAAMS 617 | ARgDPgH4DAADQAFxA0gBiAMRARcEAAMBAQIDBwEJA1cBxQMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 618 | Af8DAAH/AwAB/wMAAf8DAAH/AyEB+wNYAeYDHwEtDAADQAFxA0gBiAMRARcLAAH/AyQBNgQAAyIBMgNC 619 | AfUDKgFAXAADOAFcA1gBxgMYASIDAgQDAQQDAwEEAwMBBANHAYIDRwGCAwMBBAMkATUDRwGCA0cBggNG 620 | AYEDRgGBA0cBggNHAYIDRwGCA0YBgQNGAYEDRwGCA0cBggNHAYIDRgGBA0YBgQNHAYIDRwGCAyQBNQMD 621 | AQQDRgGBA0YBgQMDBAQBBQMDAQQDAQECA0EB+QMRARckAAMrAUIDWgHbGAADWgHbAyoBQSQAAxIBGAM+ 622 | AfgMAANAAXEDSAGIAxEBFwcABAEBAgMYASEDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMe 623 | ASsDHgErAx4BKwMdASoDGwEmAwYBCAwAA0ABcQNIAYgDEQEXCwAB/wMkATYEAAMVAR0DUAGkA0ABcFwA 624 | AyMBMwNcAdwDLAFEAwIEAwEEAwMBBAMDAQQDRwGCA0cBggMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEE 625 | AwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQNGAYEDRwGCAwMBBAMD 626 | BAQBBQMBAQIDWQHrAxsBJhgAAwEBAgMJAQwEAAMKAQ4DUgH0AyEBMRAAAyIBMgNSAfQDCgENJAADHAEo 627 | A1gB6QwAA0ABcQNIAYgDEQEXVAADQAFxA0gBiAMRARcLAAH/AyQBNgQAAwkBDAMvAUkDUAGeXAADFAEb 628 | A1ABnwNBAXIDAQECAwQBBQMDAQQDAwEEA0cBggNGAYEDBAEFAwMBBAMDAQQDAwEEAwMEBAEFA0cBggNH 629 | AYIDRgGBA0YBgQNHAYIDRwGCA0cBggNGAYEDAwQEAQUDAwEEAwMBBAMDAQQDAwEEA0cBggNHAYIDAwEE 630 | AwMBBAMDAQQDAgEDA1oBygMvAUkQAAMzAVIDAQECAzEBTgNWAbsIAANEAXoDXgHaAyEBMQgAAyIBMgNa 631 | AdsDQwF4KAADMAFMA1kBxwwAA0ABcQNIAYgDEQEXBwAEAQECAxQBHAMZASMDGQEjAxkBIwMZASMDGQEj 632 | AxkBIwMZASMDGQEjAxkBIwMZASMDGQEjAxkBIwMYASEDBQEHDAADQAFxA0gBiAMRARcLAAH/AyQBNgQA 633 | AwIBAwMKAQ4DTwGbAy4BSAMXASADEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEX 634 | AxEBFwMRARcDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDGgEkAzoBYQNOAZkDAQEC 635 | AwMEBAEFAwMBBANGAYEDRgGBAwMEBAEFAwMBBAMDAQQDAwEEAwMBBANHAYIDRgGBA0YBgQNHAYIDRwGC 636 | A0cBggNGAYEDRgGBAwMBBAMDBAQBBQMDAQQDAwEEAwMBBANHAYIDRwGCAwMBBAMDAQQDAwEEAwIBAwNP 637 | AZsDSAGEBAADMwFTAzUBVwQAA1sB2QMqAUADCgENA1kB8gMaASQHAAEBA0QBegNCAfUDWgHbA1oB2wNC 638 | AfUDRAF5AwABASgAA0gBhgNOAZkMAANAAXEDSAGIAxEBFwQAAwEBAgMHAQkDUAGkA1sB0ANbAdADWwHQ 639 | A1sB0ANbAdADWwHQA1sB0ANbAdADWwHQA1sB0ANbAdADXAHOA1gBwAMbASYMAANAAXEDSAGIAxEBFwsA 640 | Af8DJAE2DAADQgFzA1sByANMAZMDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGI 641 | A0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSAGIA0gBiANIAYgDSgGMA1ABnwNSAaYDAgQD 642 | AQQDAwQEAQUDRgGBA0cBggMDAQQDAwQEAQUDAwEEAwMBBAMDAQQDAwQEAQUDAwEEAwMBBAMDAQQDAwQE 643 | AQUDAwEEAwMBBAMDAQQDAwQEAQUDAwEEAwMBBANHAYIDRgGBAwQBBQMDAQQDAwEEAwIBAwM2AVkDXAHU 644 | BAADNQFYA1cBxQQAA0gBhwNRAaEEAANIAYQDWAHGAwQBBggAAwoBDgMrAUIDKwFCAwoBDjAAA1sB1gM1 645 | AVYMAANAAXEDSAGIAxEBFwcABAEBAgMoATwDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz 646 | AVMDMwFTAzMBUwMyAVEDLQFFAwoBDQwAA0ABcQNIAYgDEQEXCwAB/wMkATYMAAMWAR4DOgFhA0ABbwNA 647 | AXEDQAFxA0ABcQNAAXEDQAFxA0ABcQNAAXEDQAFxA0ABcQNAAXEDQAFxA0ABcQNAAXEDQAFxA0ABcQNA 648 | AXEDQAFxA0ABcQNAAXEDTgGZA1oB1QNIAYMDQAFxAycBOwMCBAMBBAMDAQQDAwEEA0cBggNHAYIDAwEE 649 | AwMBBAMDBAQBBQMDAQQDAwEEAysBQwNGAYEDRwGCA0cBggNHAYIDRgGBA0YBgQMsAUQDAwEEAwMBBAMD 650 | AQQDAwQEAQUDAwEEAysBQgMrAUMDAwQEAQUDAwEEAwEBAgMKAQ0DQgH1AxoBJQMKAQ0DTgHwAx4BKwMT 651 | ARoDTgHwAyMBMwMDAQQDVgG5A1cBxQMaASRAAAMcAScDUgH0AwkBDAwAA0ABcQNIAYgDEQEXVAADQAFx 652 | A0gBiAMRARcLAAH/AyQBNmQAAzMBUwNbAdADGQEjCAADAgQDAQQDAwEEAwMBBANHAYIDRwGCAwMBBAMD 653 | AQQDAwEEAwMEBAEFAwMBBAMrAUIDRwGCA0cBggNHAYIDRgGBA0YBgQNHAYIDKwFDAwQBBQMDAQQDAwEE 654 | AwMBBAMDBAQBBQMrAUMDKwFCAwMBBAMDBAQBBQMBAQIEAANOAZcDTwGcBAADSQGJA1MBrAQAAz4BawNa 655 | Ad4DEgEYAwMBBANIAYQDWQHyA1UBugMIAQs4AANQAZ4DUAGaEAADQAFxA0gBiAMRARcLAAEBAw0BEgMR 656 | ARcDEQEXAxEBFwMRARcDDwEUAwMBBAwAAwMBBAMRARcDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDRQF8 657 | A0gBiAMRARcLAAH/AyQBNmQAAzMBUwNbAdADGQEjCAADAQECAwQBBQMDAQQDAwEEA0cBggNGAYEDBAEF 658 | AwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMD 659 | AQQDAwEEAwMBBAMsAUQDKwFCAwMBBAMDAQQDAwEEAwIBAwQAAxIBGQNTAfEDHQEqAwsBDwNaAeQDNAFV 660 | BAADSgGNA1gB3QMjATMEAAMKAQ0DMAFNAwEBAjQAAx8BLQNRAfcDGQEjEAADQAFxA0gBiAMRARcHAAEB 661 | AwMBBAM9AWcDSAGIA0gBiANIAYgDSAGGA0MBeAMRARcMAAMRARcDSAGIA0gBiANIAYgDSAGIA0gBiANI 662 | AYgDSAGIA1UBsgNIAYgDEQEXCwAB/wMkATZkAAMzAVMDWQHPAxkBIwgAAwEBAgMDBAQBBQMDAQQDRgGB 663 | A0YBgQMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMD 664 | BAQBBQMDAQQDAwEEAwMBBAMrAUIDLAFEAwMBBAMDAQQDAwEEAwIBAwgAA0cBggNXAb0DAgEDAysBQgNY 665 | Ae8DJgE5BAADPgFrA04B8ANRAaEDKgFAAwEBAjQAAwMBBANYAcADSAGHFAADQAFxA0gBiAMRARcHAAEB 666 | AwMBBAM1AVYDQAFxA0ABcQNAAXEDQAFwAzsBZAMPARQMAAMcASgDWQHrA0oBiwNAAXEDQAFxA0ABcQNJ 667 | AYcDVwHCA1YBuAMrAUIDCQEMCwAB/wMkATYkAAMBAQIDCQEMAz0BaQNKAYoDSgGKA0oBigNKAYoDSgGK 668 | A0oBigNKAYoDSgGKA0oBigNKAYoDSgGKA0oBigNKAYoDUAGeA0YBfgMQARYIAAMCBAMBBAMDBAQBBQNG 669 | AYEDRwGCAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAMDAQQDWAHmAwAB/wMAAf8DAAH/AwAB/wNYAeYDAwEE 670 | AwMBBAMDAQQDAwQEAQUDAwEEAwMBBANHAYIDRgGBAwQBBQMDAQQDAwEEAwIBAwgAAwYBCANZAc8DSwGP 671 | BAADNQFXA1gB7wM0AVUEAAMTARoDSAGHA1sB2QMyAVA0AANMAZMDWAHGAwUBBxQAA0ABcQNIAYgDEQEX 672 | NAADHgErAwAB/wMkATYMAAM2AVgDTgHwAzYBWBMAAf8DJAE2JAADCQEMAy4BSANWAbkDOAFcAzYBWQM1 673 | AVgDNQFYAzUBWAM1AVgDNQFYAzUBWAM1AVgDNQFYAzUBWAM1AVgDNQFYAycBOgMAAQEMAAMCBAMBBAMD 674 | AQQDAwEEA0cBggNHAYIDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBAM1AVYDWwHhAxQBHAMUARwDWwHh 675 | AzQBVQMEAQUDAwEEAwMBBAMDAQQDAwQEAQUDAwEEA0YBgQNGAYEDAwQEAQUDAwEEAwEBAgwAAxoBJANY 676 | AekDPwFuBAADKgFBA1oB5ANUAasDHgErPAADQAFwA1sB4QMRARcYAANAAXEDSAGIAxEBFzQAAx4BKwMA 677 | Af8DJAE2BAADEQEXAzYBWANOAZgDNgFYAxEBFxAAAwYB/gMmATgkAAMpAT4DWAHAAzoBYgMMARADCwEP 678 | AwsBDwMLAQ8DCwEPAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DCwEPAwsBDwMLAQ8DBwEKEAADAgQDAQQDAwEE 679 | AwMBBANHAYIDRwGCAwMBBANHAYIDAwEEAwMEBAEFAwMBBAMDAQQDAwEEA0UBfwNbAcgDWQHJA0UBfQMD 680 | AQQDAwQEAQUDAwEEAwMBBAMDAQQDKwFCAywBRANGAYEDRwGCAwMBBAMDBAQBBQMBAQIQAAMhATADWAHp 681 | A0sBkAMCAQMDCwEPA0kBiQNTAfEDWAHGAzQBVSwAAwMBBANMAZIDXQHiAx8BLBwAA0ABcQNIAYgDEQEX 682 | NAADHgErAwAB/wMkATYEAAM2AVgDTgHwAzYBWBgAAz4B+AMqAUEkAANMAZEDTgGZAxMBGkgAAwEBAgME 683 | AQUDAwEEAwMBBANHAYIDRgGBAwQBBQNGAYEDAwEEAwMBBAMDBAQBBQMDAQQDAwEEAwMBBANSAaYDUgGm 684 | AwQBBQMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDKwFCAysBQwNHAYIDRwGCAwMBBAMDAQQDAwEEAwIBAxQA 685 | AxoBJANZAdIDVwG9Ax0BKgQAAwoBDQM1AVYDMwFTKAADHgErA1cBvwNXAcUDEQEXIAADQAFxA0gBiAMR 686 | ARc0AAMeASsDAAH/AzEBTQM2AVgDTgGYAzYBWAMRARcYAANHAYADUgGmA1QBrQNUAa0DVAGtA1QBrQNU 687 | Aa0DVAGtA1QBrQNUAa0DVAGtA04BlgMXASADBAEGSAADAQECAwMEBAEFAwMBBANGAYEDRgGBAwMEBAEF 688 | AwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMDAQQDAwEEAwMEBAEFAwMBBAMD 689 | AQQDAwEEA0cBggNHAYIDAwEEAwMBBAMDAQQDAgEDGAADBwEJA0cBggNTAfEDTwGcAxoBJSgAAxsBJgNQ 690 | AZ0DUQH3A0gBiAMFAQckAANAAXEDSAGIAxEBFzQAAx4BKwMAAf8DSgGNA04B8AM2AVgkAAMHAQkDDAEQ 691 | AwwBEAMMARADDAEQAwwBEAMMARADDAEQAwwBEAMMARADBgEIUAADAgQDAQQDAwQEAQUDQQFzAwAB/wMA 692 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA 693 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wNCAXQDBAEFAwMBBAMDAQQDAgEDIAADEgEZA04BlwNCAfUDXAHU 694 | A0gBhQMvAUkDHAEnAxABFgMQARYDHAEnAy8BSQNIAYYDWgHVA0IB9QNPAZsDGgEkLAADQgF2A1EBoQMu 695 | AUgDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AyQBNgMkATYDJAE2AzUBVwMG 696 | Af4DVQG3AzYBWAMRARckAAMBBAIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwIBAwMCAQMDAgEDAwEBAlAA 697 | AwEEAgEDAwEBAgMBBAIBAwMCAQMDAgEDAwEBAgMBBAIBAwMCAQMDAgEDAwEBAgMBBAIBAwMCAQMDAgED 698 | AwEBAgMBBAIBAwMCAQMDAgEDAwEBAgMBBAIBAwMCAQMDAgEDAwEBAgMBBAIBAwMCAQMDAAEBKAADCgEN 699 | AzYBWQNPAZsDWgHKA1UB6gMpAfoDKQH6A1UB6gNZAckDUAGaAzUBWAMKAQ00AANIAYUDAAH/AwAB/wMA 700 | Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DBgH+Az4B+AM3 701 | AVqoAAFCAU0BPgcAAT4DAAEoAwABgAMAAUADAAEBAQABAQYAAQQWAAP//wD/AAcAAf8BwAEDAf8B4AIA 702 | AQME/wQAAf8CAAH/AeACAAEDBP8EAAH8AR8B+AE/AeACAAEDAwABDwQAAfgBfwHiAR8B4wL/AeMDAAEP 703 | BAAB8AH/AeABDwHjAv8B4wMAAQ8EAAHjAf8B+AFHAeMC/wHjAT8C/wGPBAABxwH/AcIBIwHiAgAB4wEP 704 | Av8BjwQAAccB/wHBAQMB4gIAAeMBDwL/AY8EAAGPAf8BiAGBAeMCAAHjAQ8C/wGDBAABnwH/AYABSQHj 705 | Av8B4wEPAv8B4wQAAR8B/wHgAQAB4gIAAeMBDwL/AeMEAAE/AfwBMQEkAeICAAHjAQ8C/wHjBAABPwHw 706 | AQgBJAHiAgAB4wEDAv8B4AQAAT8B8QGMATwB4wL/AeMBIwL/AeAEAAE/AeMBxAH8AeICAAHjASMC/wHg 707 | BAABPwLnAfwB4gIAAeMBIwL/AfgEAAE/AucB/AHiAgAB4wEjAv8B+AQAAT8BIwHHAfwB4wL/AeMBIwL/ 708 | AfgEAAE8ATEBjwH8AeICAAHjASAHAAEkARABDwH8AeICAAHjATgHAAEkAYwBPwH8AeICAAHjATgIAAEH 709 | Af8B+AHjAv8B4wE/Av8B4wQAAZIBAQH/AfkB4wEAAeABAwE/Av8B4wQAAYEBEQH/AfEB4gEAAeABAwE/ 710 | Av8B4wQAAcABgwH/AeMB4gEAAeABAwE/AeABAAEDBAABxAFDAf8C4wH/AeMBjwE/AeABAAEHBAAB4gEf 711 | Af8BxwHjAf8B4gEPAT8B4AEAAQ8EAAHwAQcB/wEPAeMB/wHiAj8B4wL/BAAB+AFHAf4BHwHjAf8B4AE/ 712 | AQABAwL/BAAB/AEfAfgBPwHjAf8B4AH/AYABDwL/BAAB/wIAAf8B4AIAAf8BgAEPAv8EAAH/AcABAwH/ 713 | AeABAAEDBf8L 714 | 715 | 716 | 717 | 651, 6 718 | 719 | 720 | 545, 6 721 | 722 | 723 | 63 724 | 725 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/PFS_HDD_Manager.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/PFS_HDD_Manager.rc -------------------------------------------------------------------------------- /PFS_HDD_Manager/PFS_HDD_Manager.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {DB41C0D2-60BE-423C-B660-1D0D2EA28704} 24 | v4.6.1 25 | ManagedCProj 26 | PFSHDDManager 27 | 10.0 28 | PFS_HDD_Manager 29 | 30 | 31 | 32 | Application 33 | true 34 | v142 35 | true 36 | Unicode 37 | 38 | 39 | Application 40 | false 41 | v142 42 | true 43 | Unicode 44 | 45 | 46 | Application 47 | true 48 | v142 49 | true 50 | Unicode 51 | 52 | 53 | Application 54 | false 55 | v142 56 | true 57 | Unicode 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | true 79 | $(SolutionDir)bin\$(Platform)\$(Configuration)\ 80 | $(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\ 81 | C:\msys64\mingw64\x86_64-w64-mingw32\include;$(IncludePath) 82 | C:\msys64\mingw64\x86_64-w64-mingw32\lib;$(LibraryPath) 83 | 84 | 85 | true 86 | $(SolutionDir)bin\$(Platform)\$(Configuration)\ 87 | $(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\ 88 | C:\msys64\mingw64\include;$(IncludePath) 89 | C:\msys64\mingw64\lib;$(LibraryPath) 90 | 91 | 92 | false 93 | $(SolutionDir)bin\$(Platform)\$(Configuration)\ 94 | $(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\ 95 | C:\msys64\mingw64\x86_64-w64-mingw32\include;$(IncludePath) 96 | C:\msys64\mingw64\x86_64-w64-mingw32\lib;$(LibraryPath) 97 | 98 | 99 | false 100 | $(SolutionDir)bin\$(Platform)\$(Configuration)\ 101 | $(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\ 102 | C:\msys64\mingw64\include;$(IncludePath) 103 | C:\msys64\mingw64\lib;$(LibraryPath) 104 | 105 | 106 | 107 | Level3 108 | Disabled 109 | WIN32;_DEBUG;%(PreprocessorDefinitions) 110 | 111 | 112 | 113 | Windows 114 | main 115 | RequireAdministrator 116 | false 117 | 118 | 119 | 120 | 121 | Level3 122 | Disabled 123 | _DEBUG;%(PreprocessorDefinitions) 124 | 125 | 126 | 127 | Windows 128 | main 129 | RequireAdministrator 130 | false 131 | 132 | 133 | 134 | 135 | Level3 136 | WIN32;NDEBUG;%(PreprocessorDefinitions) 137 | 138 | 139 | 140 | Windows 141 | main 142 | RequireAdministrator 143 | false 144 | 145 | 146 | 147 | 148 | Level3 149 | NDEBUG;%(PreprocessorDefinitions) 150 | 151 | 152 | 153 | Windows 154 | main 155 | RequireAdministrator 156 | false 157 | 158 | 159 | 160 | 161 | shell\ConsoleControl.dll 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | CppForm 181 | 182 | 183 | 184 | CppForm 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | false 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | InputBox.h 216 | 217 | 218 | Designer 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/PFS_HDD_Manager.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {7646b35c-4e3c-4ad1-ac3a-f03c734f008e} 18 | 19 | 20 | 21 | 22 | Arquivos de Origem 23 | 24 | 25 | Arquivos de Origem 26 | 27 | 28 | Arquivos de Origem 29 | 30 | 31 | Arquivos de Origem 32 | 33 | 34 | Arquivos de Origem 35 | 36 | 37 | 38 | 39 | Arquivos de Cabeçalho 40 | 41 | 42 | Arquivos de Cabeçalho 43 | 44 | 45 | Arquivos de Cabeçalho 46 | 47 | 48 | Arquivos de Cabeçalho 49 | 50 | 51 | Arquivos de Cabeçalho 52 | 53 | 54 | Arquivos de Cabeçalho 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | Arquivos de Origem 64 | 65 | 66 | Arquivos de Origem 67 | 68 | 69 | Arquivos de Origem 70 | 71 | 72 | 73 | Arquivos de Origem 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | Arquivos de Recurso 85 | 86 | 87 | Arquivos de Recurso 88 | 89 | 90 | Arquivos de Recurso 91 | 92 | 93 | 94 | 95 | Arquivos de Recurso 96 | 97 | 98 | 99 | 100 | Arquivos de Recurso 101 | 102 | 103 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/PS2HDD.cpp: -------------------------------------------------------------------------------- 1 | #include "PS2HDD.h" 2 | 3 | 4 | //constructor - sets mprocesses StartInfo 5 | PS2HDD::PS2HDD() 6 | { 7 | PFSShell = gcnew System::Diagnostics::Process; 8 | PFSShell->StartInfo->FileName = "shell\\pfsshell.exe"; 9 | PFSShell->StartInfo->CreateNoWindow = true; 10 | PFSShell->StartInfo->ErrorDialog = false; 11 | PFSShell->StartInfo->UseShellExecute = false; 12 | PFSShell->StartInfo->RedirectStandardError = true; 13 | PFSShell->StartInfo->RedirectStandardInput = true; 14 | PFSShell->StartInfo->RedirectStandardOutput = true; 15 | PFSShell->EnableRaisingEvents = true; 16 | //this->PFSShell->OutputDataReceived += gcnew System::Diagnostics::DataReceivedEventHandler(this, &PS2HDD::PfsShell_OutputDataReceived); 17 | 18 | HDLDump = gcnew System::Diagnostics::Process; 19 | HDLDump->StartInfo->FileName = "shell\\hdl_dump.exe"; 20 | HDLDump->StartInfo->CreateNoWindow = true; 21 | HDLDump->StartInfo->ErrorDialog = false; 22 | HDLDump->StartInfo->UseShellExecute = false; 23 | HDLDump->StartInfo->RedirectStandardError = true; 24 | HDLDump->StartInfo->RedirectStandardInput = true; 25 | HDLDump->StartInfo->RedirectStandardOutput = true; 26 | HDLDump->EnableRaisingEvents = true; 27 | //this->HDLDump->OutputDataReceived += gcnew System::Diagnostics::DataReceivedEventHandler(this, &PS2HDD::HDL_OutputDataReceived); 28 | } 29 | System::Void PS2HDD::Query() { 30 | devices = gcnew System::Collections::Generic::List ; 31 | HDLDump->StartInfo->Arguments = "query"; 32 | HDLDump->Start(); 33 | output = HDLDump->StandardOutput->ReadToEnd(); 34 | StringReader = gcnew System::IO::StringReader(output); 35 | Device^ tmp; 36 | do { 37 | tmp = gcnew Device; 38 | tmp->Name = StringReader->ReadLine(); 39 | if (tmp->Name->Contains("hdd")) { 40 | if (tmp->Name->Contains("MB")) { 41 | tmp->Name = tmp->Name->Substring(tmp->Name->LastIndexOf(" ") + 1); 42 | 43 | if (tmp->Name->Contains("formatted Playstation 2")) tmp->PFS = true; 44 | else tmp->PFS = false; 45 | 46 | String^ tmpstr; 47 | tmpstr = tmp->Name->Substring(tmp->Name->IndexOf(" ") + 1); 48 | tmpstr->Remove(tmpstr->IndexOf("MB") - 1); 49 | tmpstr = tmpstr->Substring(0, tmpstr->IndexOf(" ")); 50 | tmp->Size = Int32::Parse(tmpstr); 51 | tmp->Name = tmp->Name->Substring(0, tmp->Name->IndexOf(":") + 1); 52 | tmp->DevFile = gcnew File(tmp->Name); 53 | devices->Add(tmp); 54 | } 55 | } 56 | } while (!tmp->Name->Contains("Optical")); 57 | } 58 | 59 | System::Void PS2HDD::Query_Part(Device^ Dev) { 60 | if (Dev->PFS) { 61 | Dev->Partitions = gcnew System::Collections::Generic::List < PS2HDD::Partition^>; 62 | Dev->DevFile->Childs = gcnew System::Collections::Generic::List; 63 | HDLDump->StartInfo->Arguments = "toc " + Dev->Name; 64 | HDLDump->Start(); 65 | output = HDLDump->StandardOutput->ReadToEnd(); 66 | System::IO::StringReader^ StringReaderr = gcnew System::IO::StringReader(output->Substring(output->IndexOf("0x"))); 67 | do { 68 | Partition^ part = gcnew Partition; 69 | output = StringReaderr->ReadLine(); 70 | if (!output->Contains("Total ")) { 71 | part->Type = output->Substring(2, 4); 72 | part->Size = Int32::Parse(output->Substring(20)->Substring(0, 9)->Trim()->TrimEnd('M', 'B')); 73 | part->Parts = 1; 74 | part->Name = output->Substring(output->LastIndexOf("MB") + 2)->Trim(); 75 | File^ tmp; 76 | if (part->Type->Contains("1337"))tmp = gcnew File(part->Name, File::Types::Game, Dev->DevFile, Dev->DevFile); 77 | if (part->Type->Contains("0001"))tmp = gcnew File(part->Name, File::Types::PartitionNull, Dev->DevFile, Dev->DevFile); 78 | if (part->Type->Contains("0100"))tmp = gcnew File(part->Name, File::Types::Partition, Dev->DevFile, Dev->DevFile); 79 | 80 | tmp->Root = Dev->DevFile; 81 | tmp->PartRoot = tmp; 82 | tmp->Path = tmp->Name; 83 | tmp->Path = tmp->Name; 84 | 85 | part->PartFile = tmp; 86 | Dev->Partitions->Add(part); 87 | Dev->DevFile->Childs->Add(part->PartFile); 88 | } 89 | } while (!output->Contains("Total ")); 90 | } 91 | } 92 | 93 | System::Void PS2HDD::Query_File_Path(File^ file) 94 | { 95 | file->Childs = gcnew System::Collections::Generic::List; 96 | PFSShell->Start(); 97 | PFSShell->StandardInput->WriteLine("device " + file->Root->Name); 98 | PFSShell->StandardInput->WriteLine("mount \"" + file->PartRoot->Name+"\""); 99 | String^ teste = file->Path->Substring(file->Path->IndexOf("/") + 1); 100 | if(file->Type == File::Types::Folder) PFSShell->StandardInput->WriteLine("cd \"" + file->Path->Substring(file->Path->IndexOf("/")+1) + "\""); 101 | PFSShell->StandardInput->WriteLine("ls"); 102 | PFSShell->StandardInput->WriteLine("exit"); 103 | 104 | output = PFSShell->StandardOutput->ReadToEnd(); 105 | if (output->Contains("Invalid magic/version")) { 106 | file->Type = File::Types::PartitionNull; throw(Convert::ToString("Not PFS Partition")); 107 | } 108 | System::IO::StringReader^ tmpStringReader = gcnew System::IO::StringReader(output->Substring(output->IndexOf(" .."))); 109 | output = tmpStringReader->ReadLine(); 110 | File^ tmpFile; 111 | do { 112 | output = tmpStringReader->ReadLine(); 113 | if (output->Contains("# ")) break; 114 | if ((!output->Contains("drwxrwxrwx")&& !output->Contains("-rw-rw-rw-"))|| output->Contains(" ..")) continue; 115 | if (output->Contains("-rw-rw-rw-"))tmpFile = gcnew File(output->Substring(38)->Trim(), output->Substring(output->LastIndexOf(".") + 1)->Trim(), 64, file); 116 | if (output->Contains("drwxrwxrwx"))tmpFile = gcnew File(output->Substring(38)->Trim(), File::Types::Folder, file); 117 | tmpFile->PartRoot = file->PartRoot; 118 | tmpFile->Root = file->Root; 119 | tmpFile->Path = file->Path + "/" + tmpFile->Name; 120 | 121 | file->Childs->Add(tmpFile); 122 | } while (output != "# "); 123 | for each (File^ child in file->Childs) 124 | { 125 | if(child->Type == File::Types::Folder) Query_File_Path(child); 126 | } 127 | } 128 | 129 | 130 | System::String^ PS2HDD::Debug() { 131 | String^ tmp; 132 | return tmp; 133 | } 134 | 135 | PS2HDD::Device^ PS2HDD::GetDevByName(String^ Name) 136 | { 137 | for each (Device^ var in devices) 138 | { 139 | if (var->Name == Name) 140 | return var; 141 | } 142 | return nullptr; 143 | } 144 | 145 | PS2HDD::Partition^ PS2HDD::GetPartByName(Device^ Dev, String^ Name) 146 | { 147 | for each (Partition^ part in Dev->Partitions) 148 | { 149 | if (part->Name == Name) 150 | return part; 151 | } 152 | return nullptr; 153 | } 154 | 155 | 156 | 157 | System::Void PS2HDD::GetCDVDInfo(String^ Path) { 158 | HDLDump->StartInfo->Arguments = "cdvd_info2 " + Path; 159 | HDLDump->Start(); 160 | return; 161 | } 162 | 163 | 164 | System::Void PS2HDD::InitDev(Device^ Dev) 165 | { 166 | HDLDump->StartInfo->Arguments = "initialize " + Dev->Name; 167 | HDLDump->Start(); 168 | devices->Clear(); 169 | Query(); 170 | } 171 | 172 | System::Void PS2HDD::MkPart(File^ Parent, String^ PartName, System::Int32 Size) 173 | { 174 | throw gcnew System::NotImplementedException(); 175 | } 176 | 177 | //void PS2HDD::PfsShell_OutputDataReceived(System::Object^ sender, System::Diagnostics::DataReceivedEventArgs^ e) 178 | //{ 179 | // out += e->Data; 180 | // out += e->Data; 181 | // out += e->Data; 182 | // throw gcnew System::NotImplementedException(); 183 | //} 184 | 185 | 186 | System::Void PS2HDD::test() 187 | { 188 | PFSShell->Start(); 189 | PFSShell->StandardInput->WriteLine("device hdd2:"); 190 | } 191 | 192 | System::Boolean PS2HDD::HDL_Remove(File^ Part) 193 | { 194 | HDLDump->StartInfo->Arguments = "delete " + Part->Root->Name + " \"" + Part->PartRoot->Name+ "\""; 195 | HDLDump->Start(); 196 | HDLDump->WaitForExit(); 197 | output = HDLDump->StandardOutput->ReadToEnd(); 198 | output = HDLDump->StandardError->ReadToEnd(); 199 | if (output->Contains("not found")) return false; 200 | if (output->Contains("Operation is not allowed")) { throw (Convert::ToString("not allowed")); return false; } 201 | return true; 202 | } 203 | 204 | System::Boolean PS2HDD::PFS_Initialize(File^ dev) 205 | { 206 | PFSShell->Start(); 207 | PFSShell->StandardInput->WriteLine("device " + dev->Root->Name); 208 | PFSShell->StandardInput->WriteLine("initialize yes"); 209 | PFSShell->StandardInput->WriteLine("mkfs __net"); 210 | PFSShell->StandardInput->WriteLine("mkfs __system"); 211 | PFSShell->StandardInput->WriteLine("mkfs __sysconf"); 212 | PFSShell->StandardInput->WriteLine("mkfs __common"); 213 | PFSShell->StandardInput->WriteLine("exit"); 214 | output = PFSShell->StandardOutput->ReadToEnd(); 215 | output += PFSShell->StandardError->ReadToEnd(); 216 | if (output->Contains("error")) return false; 217 | return true; 218 | } 219 | 220 | File^ PS2HDD::PFS_Mkpart(Device^ dev, String^ Name, Int32 Size) 221 | { 222 | if (Math::Floor(System::Math::Log(Size, 2)) - System::Math::Log(Size, 2) != 0) throw(Convert::ToString("The size is not a power of two!\nOperation Aborted!")); 223 | PFSShell->Start(); 224 | PFSShell->StandardInput->WriteLine("device " + dev->Name); 225 | PFSShell->StandardInput->WriteLine("mkpart \""+Name + "\" " + Size + "MB"); 226 | PFSShell->StandardInput->WriteLine("exit"); 227 | output = PFSShell->StandardOutput->ReadToEnd(); 228 | output += PFSShell->StandardError->ReadToEnd(); 229 | if (output->Contains("error")) throw(Convert::ToString("Error")); 230 | File^ ptfl = gcnew File(Name, File::Types::PartitionNull, dev->DevFile, dev->DevFile); 231 | dev->DevFile->Childs->Add(ptfl); 232 | return ptfl; 233 | } 234 | 235 | System::Void PS2HDD::PFS_Mkfs(File^ file) 236 | { 237 | PFSShell->Start(); 238 | PFSShell->StandardInput->WriteLine("device " + file->Root->Name); 239 | PFSShell->StandardInput->WriteLine("mkfs \"" + file->Name + "\""); 240 | PFSShell->StandardInput->WriteLine("exit"); 241 | output = PFSShell->StandardOutput->ReadToEnd(); 242 | output += PFSShell->StandardError->ReadToEnd(); 243 | if (output->Contains("error")) throw(Convert::ToString("Error")); 244 | return; 245 | } 246 | 247 | System::Void PS2HDD::PFS_MkDir(File^ parent, String^ name) 248 | { 249 | PFSShell->Start(); 250 | PFSShell->StandardInput->WriteLine("device " + parent->Root->Name); 251 | PFSShell->StandardInput->WriteLine("mount \"" + parent->PartRoot->Name+"\""); 252 | if(parent->Type == File::Types::Folder)PFSShell->StandardInput->WriteLine("cd \"" + parent->Path->Substring(parent->Path->IndexOf("/")) + "\""); 253 | PFSShell->StandardInput->WriteLine("mkdir \"" + name + "\""); 254 | PFSShell->StandardInput->WriteLine("exit"); 255 | PFSShell->WaitForExit(); 256 | output = PFSShell->StandardOutput->ReadToEnd(); 257 | output += PFSShell->StandardError->ReadToEnd(); 258 | Query_File_Path(parent); 259 | if (output->Contains("error")) return; 260 | return; 261 | } 262 | 263 | System::Void PS2HDD::PFS_RmDir(File^ dir) 264 | { 265 | /*if (dir->Childs->Count > 0) for each (File^ fl in dir->Childs) 266 | { 267 | Remove(fl); 268 | } */ 269 | PFSShell->Start(); 270 | PFSShell->StandardInput->WriteLine("device " + dir->Root->Name); 271 | PFSShell->StandardInput->WriteLine("mount " + dir->PartRoot->Name); 272 | PFSShell->StandardInput->WriteLine("rmdir \"" + dir->Path->Substring(dir->Path->IndexOf("/")) + "\""); 273 | PFSShell->StandardInput->WriteLine("exit"); 274 | output = PFSShell->StandardOutput->ReadToEnd(); 275 | output += PFSShell->StandardError->ReadToEnd(); 276 | if (output->Contains("error")) return; 277 | //Query_File_Path(dir->Parent); 278 | return; 279 | } 280 | 281 | System::Void PS2HDD::PFS_Get(File^ Origin, String^ Dest) 282 | { 283 | PFSShell->Start(); 284 | PFSShell->StandardInput->WriteLine("device " + Origin->Root->Name); 285 | PFSShell->StandardInput->WriteLine("mount " + Origin->PartRoot->Name); 286 | if(Origin->Parent->Type == File::Types::Folder) PFSShell->StandardInput->WriteLine("cd \"" + Origin->Parent->Path->Substring(Origin->Parent->Path->IndexOf("/"))+"\""); 287 | PFSShell->StandardInput->WriteLine("lcd \"" + Dest->Replace("\\", "/") +"\""); 288 | PFSShell->StandardInput->WriteLine("get \"" + Origin->Name+"\""); 289 | PFSShell->StandardInput->WriteLine("exit"); 290 | output = PFSShell->StandardOutput->ReadToEnd(); 291 | output += PFSShell->StandardError->ReadToEnd(); 292 | if (output->Contains("error")) return; 293 | return; 294 | } 295 | 296 | System::Void PS2HDD::PFS_Gets(Device^ Dev, String^ Part, String^ Orig, System::Collections::Generic::List^ Names, String^ Dest) 297 | { 298 | PFSShell->Start(); 299 | PFSShell->StandardInput->WriteLine("device " + Dev->Name); 300 | PFSShell->StandardInput->WriteLine("mount " + Part); 301 | PFSShell->StandardInput->WriteLine("cd " + Orig); 302 | PFSShell->StandardInput->WriteLine("lcd " + Dest); 303 | for each (String^ Name in Names) 304 | { 305 | PFSShell->StandardInput->WriteLine("get " + Name); 306 | } 307 | PFSShell->StandardInput->WriteLine("exit"); 308 | output = PFSShell->StandardOutput->ReadToEnd(); 309 | output += PFSShell->StandardError->ReadToEnd(); 310 | if (output->Contains("error")) return; 311 | return; 312 | } 313 | 314 | System::Void PS2HDD::PFS_Put(String^ Orig, String^ Name, File^ Dest) 315 | { 316 | PFSShell->Start(); 317 | PFSShell->StandardInput->WriteLine("lcd \"" + Orig+"\""); 318 | PFSShell->StandardInput->WriteLine("device " + Dest->Root->Name); 319 | PFSShell->StandardInput->WriteLine("mount \"" + Dest->PartRoot->Name + "\""); 320 | if(Dest->Type == File::Types::Folder) PFSShell->StandardInput->WriteLine("cd \"" + Dest->Path->Substring(Dest->Path->IndexOf("/")) + "\""); 321 | PFSShell->StandardInput->WriteLine("put \"" + Name + "\""); 322 | PFSShell->StandardInput->WriteLine("exit"); 323 | PFSShell->WaitForExit(); 324 | output = PFSShell->StandardOutput->ReadToEnd(); 325 | output += PFSShell->StandardError->ReadToEnd(); 326 | if (output->Contains("error")) return; 327 | Query_File_Path(Dest); 328 | return; 329 | } 330 | 331 | System::Void PS2HDD::PFS_RM(File^ file) 332 | { 333 | String^ tmp = file->Path; 334 | if (file->Parent->Type != File::Types::Partition) { 335 | tmp = tmp->Substring(file->Path->IndexOf("/") + 1); 336 | tmp = tmp->Substring(0, tmp->LastIndexOf("/")); 337 | } 338 | 339 | PFSShell->Start(); 340 | PFSShell->StandardInput->WriteLine("device " + file->Root->Name); 341 | PFSShell->StandardInput->WriteLine("mount \"" + file->PartRoot->Name + "\""); 342 | PFSShell->StandardInput->WriteLine("cd \"" + tmp + "\""); 343 | PFSShell->StandardInput->WriteLine("rm \"" + file->Name + "\""); 344 | PFSShell->StandardInput->WriteLine("exit"); 345 | PFSShell->WaitForExit(); 346 | output = PFSShell->StandardOutput->ReadToEnd(); 347 | output += PFSShell->StandardError->ReadToEnd(); 348 | 349 | //file->Parent->Childs->Remove(file); 350 | if (output->Contains("error")) return; 351 | //Query_File_Path(file->Parent); 352 | return; 353 | } 354 | 355 | System::Void PS2HDD::PFS_Rename(File^ Origin, String^ NewName) 356 | { 357 | PFSShell->Start(); 358 | PFSShell->StandardInput->WriteLine("device " + Origin->Root->Name); 359 | PFSShell->StandardInput->WriteLine("mount \"" + Origin->PartRoot->Name + "\""); 360 | String^ teste = "cd \"" + Origin->Parent->Path->Substring(Origin->Parent->Path->IndexOf("/")+1) + "\""; 361 | if(Origin->Parent->Type == File::Types::Folder) PFSShell->StandardInput->WriteLine("cd \"" + Origin->Parent->Path->Substring(Origin->Parent->Path->IndexOf("/")) + "\""); 362 | PFSShell->StandardInput->WriteLine("rename \"" + Origin->Name + "\" \"" + NewName+"\""); 363 | PFSShell->StandardInput->WriteLine("exit"); 364 | output = PFSShell->StandardOutput->ReadToEnd(); 365 | output += PFSShell->StandardError->ReadToEnd(); 366 | if (output->Contains("error")) return; 367 | Query_File_Path(Origin->Parent); 368 | return; 369 | } 370 | 371 | System::Void PS2HDD::Remove(File^ file) 372 | { 373 | try { 374 | switch (file->Type) 375 | { 376 | case File::Types::Game: 377 | case File::Types::PartitionNull: 378 | case File::Types::Partition: 379 | HDL_Remove(file); 380 | Query_Part(GetDevByName(file->Root->Name)); 381 | break; 382 | case File::Types::File: 383 | PFS_RM(file); 384 | break; 385 | case File::Types::Folder: 386 | for each (File ^ child in file->Childs) 387 | { 388 | Remove(child); 389 | } 390 | PFS_RmDir(file); 391 | break; 392 | default: 393 | break; 394 | } 395 | if(file->Type == File::Types::File || file->Type == File::Types::Folder)Query_File_Path(file->Parent); 396 | } 397 | catch (String^ Error) { throw Error; }; 398 | return System::Void(); 399 | } 400 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/PS2HDD.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "File.h" 3 | 4 | using namespace System; 5 | 6 | ref class PS2HDD 7 | { 8 | public: 9 | #pragma region Struct definitions 10 | //Basic info for ISO games 11 | typedef ref struct ISO { 12 | System::String ^Name, ^Startup, ^Path; 13 | System::Int32 Size; 14 | System::Boolean DVD; 15 | }ISO; 16 | 17 | //Base info for partitions 18 | typedef ref struct Partition{ 19 | System::Single Size; 20 | System::Int32 Parts; 21 | System::String^ Name, ^Type, ^Startup; 22 | System::Boolean Game = false, DVD; 23 | File^ PartFile; 24 | 25 | }Partition; 26 | 27 | //device Name: "hddx:" and Size are applicable to any device. 28 | //Used, Available and partition List are applicable only for PS2 HDD`s - the boolean PS2 defines if it is a PFS formatted device 29 | typedef ref struct Device { 30 | System::String^ Name; 31 | System::Int32 Size, Used, Available; 32 | System::Boolean PFS; 33 | File^ DevFile; 34 | System::Collections::Generic::List ^ Partitions = nullptr; 35 | }Device; 36 | #pragma endregion Struct definitions 37 | 38 | #pragma region Variables 39 | //list all the disk drives found on system 40 | System::Collections::Generic::List ^ devices; 41 | 42 | //output for the console readdings - Used for Debugging 43 | String^ output; 44 | 45 | //same as output - auxiliar 46 | System::IO::StringReader^ StringReader; 47 | 48 | //the process for using PFSShell.exe 49 | System::Diagnostics::Process^ PFSShell; 50 | 51 | //the process for using HDL_Dump.exe 52 | System::Diagnostics::Process^ HDLDump; 53 | 54 | #pragma endregion Variables 55 | 56 | //set the processes configs for the program 57 | PS2HDD(); 58 | 59 | //list the system devices using HDL_Dump 60 | System::Void Query(); 61 | 62 | //list the partitions in the given device 63 | System::Void Query_Part(Device^ Dev); 64 | 65 | 66 | //System::Void Query_Part_Path(Device^ Dev, Partition^ Part); 67 | 68 | System::Void Query_File_Path(File^ file); 69 | 70 | // System::Void Query_Part_Path(File^ Dev, File^ Part); 71 | 72 | //System::Void Query_Childs(File^ file); 73 | 74 | 75 | //test 76 | System::Void HDL_OutputDataReceived(System::Object^ sender, System::EventArgs^ e) { return;}; 77 | 78 | //Get Table of Contents of a PS2 device. Uses HDL_Dump (could use pfsshell too) 79 | //Void GetTOC(Device^); 80 | 81 | //Get Info over an specific partition 82 | //Void GetPartitionInfo(Device^); 83 | 84 | //Get Info over an ISO image on the host PC using HDL_Dump`s "cdvd_info2". 85 | //Get if the ISO is a dvd or a cd, it`s size and It startup name (SLUS_XXX.XX) 86 | Void GetCDVDInfo(String^); 87 | 88 | //function used for debuging 89 | System::String^ Debug(); 90 | 91 | //gets device by its name 92 | Device^ GetDevByName(String^ Name); 93 | 94 | 95 | //gets partition by its name 96 | Partition^ GetPartByName(Device^ Dev,String^ Name); 97 | 98 | //OK 99 | //initializes device into pfs filesystem with 128mb MBR partition 100 | System::Void InitDev(Device^ Dev); 101 | 102 | 103 | System::Void MkPart(File^ Parent, String^ PartName, System::Int32 Size); 104 | 105 | //void PfsShell_OutputDataReceived(System::Object^ sender, System::Diagnostics::DataReceivedEventArgs^ e); 106 | 107 | System::Void test(); 108 | 109 | System::Boolean HDLDumpp(Device^ dev, String^ file) { return 0; }; 110 | 111 | //OK 112 | //Delete a specified partition of the specified device 113 | System::Boolean HDL_Remove(File^ Part); 114 | 115 | //OK 116 | //Initialize the HDD into PFS system using PFSShell 117 | System::Boolean PFS_Initialize(File^ dev); 118 | 119 | //OK 120 | //Make a Partition with the given Name and Size(MB) 121 | File^ PFS_Mkpart(Device^ dev, String^ Name, Int32 Size); 122 | 123 | 124 | System::Void PFS_Mkfs(File^); 125 | 126 | 127 | //Will not be used on this way 128 | System::Boolean PFS_LCD(String^ Path) { return 0; }; 129 | 130 | //List Partitions 131 | System::Boolean PFS_LS(Device^ Dev) { return false; }; 132 | 133 | //List Files 134 | System::Void PFS_LS(Device^ Dev, String^ Part) { return; }; 135 | 136 | //OK 137 | //makes a directory in the given device and partition, with the given name 138 | System::Void PFS_MkDir(File^ , String^ ); 139 | 140 | //OK 141 | //Removes the given directory in the given device partition 142 | System::Void PFS_RmDir(File^); 143 | 144 | //OK 145 | //copy the fine in the given path from ps2 hdd to the givem system path 146 | System::Void PFS_Get(File^ Origin, String^ Dest); 147 | 148 | //OK 149 | //copy the fine in the given path from ps2 hdd to the givem system path 150 | System::Void PFS_Gets(Device^ Dev, String^ Part, String^ Orig, System::Collections::Generic::List ^ Names, String^ Dest); 151 | 152 | //OK 153 | //Write the given file to the given path, partition and device 154 | System::Void PFS_Put(String^ Orig, String^ Name, File^ Dest); 155 | //OK 156 | //Removes the given file from the given path, partition and device 157 | System::Void PFS_RM(File^); 158 | 159 | //OK 160 | //Removes the given file from the given path, partition and device 161 | System::Void PFS_Rename(File^ Origin, String^ NewName); 162 | 163 | //Remove the given path - removes child files if exists 164 | System::Void Remove(File^); 165 | }; 166 | 167 | //research: 168 | //ok = declaration done 169 | //OK = implementation done 170 | //>> = not direc usage 171 | //XX = not used 172 | 173 | //PfsShell: //mount device busy: dont know why... Just umount and mount again 174 | //ok lcd[path] - display / set a new local working directory(host) 175 | //>> device -tell shell where PS2 HDD is; 176 | //ok initialize - blank and create APA on a new PS2 HDD(destructive); doesn`t format the partitions (__mbr - 128, __net - 128, __system - 256, __sysconf - 512, __comon - 1024) NEED MKFS 177 | //ok mkpart -create a new partition; ATM size must be a power of 2 (128, 256, 512, ...); 178 | //>> mkfs -blank and create PFS on a new partition(destructive); 179 | //>> mount -mount(start to use) a partition; 180 | //>> umount - un - mount a partition; 181 | //ok ls - no mount : list partitions; mount: list files / dirs; 182 | //ok mkdir -create a new directory; - work with composite path 183 | //ok rmdir -delete an existing directory; - dir must be empty 184 | //XX pwd - print current PS2 HDD directory; - trash 185 | //>> cd -change directory on pfs side; // can use composite paths 186 | //ok get -copy file from PS2 HDD to current dir; file name must not contain a path; 187 | //ok put -copy file from current dir to PS2 HDD; file name must not contain a path; 188 | //ok rm -delete a file; - work with composite path 189 | //ok rename -rename a file / dir. - works with composite path 190 | 191 | //HDL_Dump: all is network capable 192 | // query: List system devices 193 | // dump: dump "device" "file" - create an ISO image from the device (cdvd, loaded cd on game) 194 | // compare_iin: compare two ISO inputs??? 195 | // toc: toc "device" - Displays PlayStation 2 HDD TOC. - returns: type(?), start(Starting sector on device), #parts(number of parts the partition is divided), size, name 196 | // hdl_toc: hdl_toc "device" - lloks like toc, but more precise - type(is a CD or a DVD), size, flags(?), startup(SLUS_XXX_XX), Name 197 | //OK delete*: delete "device" "partition/game" - Obvious? 198 | // info: info "device" "partition" - Gets partition info - Startup, Name, CDVD, parts list, and size 199 | // extract: extract "device" "name" "output_file" - creates a iso file with the selected device partition. 200 | // inject_cd*,inject_dvd*: inject_cd "target" "name" "source" "[startup]" "[flags]" "[@slice_index]" create a partition in the target device with the given parameters 201 | // install*: looks like inject_cd/dvd??? create a partition in the target device with the parameter on the compatibility list. 202 | // cdvd_info, cdvd_info2: cdvd_info "file": tell image type(Cd or DVD?), size, and startup code (SLUS_XXX.XX) 203 | // poweroff: poweroff "ip": turn off the device 204 | // initialize*: create pfs partition table on device (inclued __MBR with 128MB) 205 | // backup_toc: 206 | // restore_toc*: 207 | // diag: diag "device": scans device for partition errors 208 | // modify*: modify device game [new_name] [new_flags] 209 | // copy_hdd*: copy the hdd 210 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # PFS_HDD_Manager 5 | 6 | "PHM" is a single tool to handle all the needs of a PS2 internal Hard Drive user. It uses HDL_Dump and PFSShell Functions integrated in a sigle GUI meant to handle PS2 Hard Drives, managing Partitions, files and VMC`s 7 | It is a ongoing project and still have lots of things to be implemented. 8 | For now you can handle your PS2 HDD, Editing its partitions and folders... Some coding was made wrong and the function to transfer files from your PC to the HDD is not working properly, But soon it will 9 | 10 | ## Getting Started 11 | 12 | For Compiling the project, download it`s zip and open with visual studio (working on 2017 and 2019 editions) - All settings are already done. You just need to compile it after checking pre-requisites 13 | 14 | ### Prerequisites 15 | 16 | You will need to have installed: 17 | - Visual Studio with: 18 | -- c++ desktop dev kit 19 | -- latest windows 10 SDK 20 | -- latest VC++ tools 21 | 22 | ### Installing 23 | 24 | after compilling the file, you have to get the folder "shell" and "ICONS" to the same folder that the .exe file will be 25 | 26 | ## Running the tests 27 | 28 | For testing the software, you gonna need a Hard Drive or a virtual drive that can be formated. 29 | If selected a device in the right drop doen list, you are gona be prompted to format it OR the device partitions are gonna be listed 30 | After connecting the device to your PC and startting the software with admin rights, cligk the Debug button. Then the text box bellow should be filled with system HDD`s list and the ps2 hdd partition list 31 | 32 | ### Break down into end to end tests 33 | 34 | This test shows if the .exe`s for HDL_Dump and PFSShell.exe are ok and if this is being started with the correct permissions. 35 | 36 | ### And coding style tests 37 | 38 | Explain what these tests test and why 39 | 40 | ``` 41 | Give an example 42 | ``` 43 | 44 | ## Deployment 45 | 46 | Add additional notes about how to deploy this on a live system 47 | 48 | ## Built With 49 | 50 | 51 | ## Contributing 52 | 53 | Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. 54 | 55 | ## Versioning 56 | 57 | We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 58 | 59 | ## Authors 60 | 61 | * **Orley Eduardo (Leyed)** - *development of the project* 62 | 63 | ## License 64 | 65 | This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details 66 | 67 | ## Acknowledgments 68 | Credits to UyJulian who mantain PFSShell sourcecode 69 | 70 | PS2-HOME thread: http://www.ps2-home.com/forum/viewtopic.php?p=34567#p34567 71 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/ScreenShot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/ScreenShot.png -------------------------------------------------------------------------------- /PFS_HDD_Manager/filesystem.cpp: -------------------------------------------------------------------------------- 1 | #include "filesystem.h" 2 | using namespace filesystem; 3 | 4 | template 5 | Tree::Tree(T root) 6 | { 7 | Root = gcnew Node; 8 | Root->Data = root; 9 | Root->Parent = nullptr; 10 | Root->Child = gcnew System::Collections::Generic::List; 11 | CurrNode = Root; 12 | } 13 | 14 | //template 15 | //System::Boolean Tree::AddChild(T data) { 16 | // AddChild(data, CurrNode); 17 | //} 18 | 19 | template 20 | System::Boolean Tree::AddChild(T data, Node^ parent) { 21 | Node^ tmp = gcnew Node; 22 | tmp->Parent = parent; 23 | tmp->Data = data; 24 | tmp->Child = gcnew System::Collections::Generic::List; 25 | parent->Child->Add(tmp); 26 | } 27 | 28 | //template 29 | //typename Tree::Node^ Tree::GetCurrNode() 30 | //{ 31 | // return CurrNode; 32 | //} 33 | 34 | //template 35 | //System::Void Tree::SetCurrNode(Node^ Nd) 36 | //{ 37 | // if (Root->Data == dt) return Root->Data; 38 | // for each (Node^ nd in Root->Child) 39 | // { 40 | // if (nd->Data == dt) return nd->Data; 41 | // if (nd->Child != nullptr); 42 | // } 43 | //} 44 | 45 | template 46 | typename Tree::Node^ Tree::SearchNode(T dt) 47 | { 48 | return SearchNode(dt, Root); 49 | } 50 | 51 | template 52 | typename Tree::Node^ Tree::SearchNode(T dt, Node^ sn) 53 | { 54 | if (sn->Data == dt) return sn; 55 | for each (Node^ nd in sn->Child) 56 | { 57 | if (nd->Data == dt) return nd; 58 | return SearchNode(dt, nd); 59 | } 60 | return nullptr; 61 | } 62 | 63 | 64 | template 65 | System::Boolean Tree::Delete(Node^ nd) 66 | { 67 | if (nd->Child->Count == 0) nd = nullptr; 68 | else return false; 69 | return true; 70 | } 71 | 72 | 73 | //template 74 | //System::Collections::Generic::List::Node^>^ Tree::GetChildList() 75 | //{ 76 | // System::Collections::Generic::List^ ret = gcnew System::Collections::Generic::List; 77 | // if(CurrNode->Child != nullptr) for each (Node^ nd in CurrNode->Child) 78 | // { 79 | // ret->Add(nd->Data); 80 | // } 81 | // return ret; 82 | //} 83 | 84 | template 85 | typename Tree::Node^ Tree::test(Node^) 86 | { 87 | throw gcnew System::NotImplementedException(); 88 | // TODO: insert return statement here 89 | } -------------------------------------------------------------------------------- /PFS_HDD_Manager/filesystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace filesystem { 4 | template 5 | ref class Tree 6 | { 7 | public: 8 | typedef ref struct Node { 9 | Node ^Parent; 10 | System::Collections::Generic::List^ Child; 11 | T Data; 12 | }Nd; 13 | Node ^Root, ^CurrNode, ^SrchNode; 14 | public: 15 | Tree(T root); //create 16 | System::Boolean AddChild(T data) { AddChild(data, CurrNode); }; //create 17 | System::Boolean AddChild(T data, Node^ parent); //create 18 | Node^ GetCurrNode() { return CurrNode; }; 19 | System::Void SetCurrNode(Node^ Nd) { CurrNode = Nd; }; 20 | Node^ SearchNode(T); 21 | Node^ SearchNode(T, Node^); 22 | System::Boolean Delete(Node^); 23 | System::Collections::Generic::List^ GetChildList(Node^ Nd) { return Nd->Child; }; 24 | Node^ GetParent(Node^ Nd) { return Nd->Parent; }; 25 | Node^ test(Node^); 26 | }; 27 | //Can`t have Node in return and function types 28 | 29 | ref class File { 30 | public: 31 | System::String ^Name, ^Path, ^ParentName; 32 | enum class Type { File, Folder, Partition }type; 33 | System::String^ extension; 34 | System::Int32 Size; 35 | public: 36 | File(System::String^ Name, Type Tp) { this->Name = Name; this->type = Tp; }; 37 | File(System::String^ Name) { this->Name = Name; this->type = Type::Folder; }; 38 | File(System::String^ Name, System::String^ Ext, System::Int32 Size) { this->type = Type::File; this->Name = Name; this->extension = Ext; this->Size = Size; }; 39 | File(System::String^ Name, System::Int32 Size) { this->Name = Name; this->Size = Size; }; 40 | //System::Collections::Generic::List^ FullPath(); 41 | }; 42 | 43 | ref class FileSystem { 44 | private: 45 | Tree^ tree; 46 | public: 47 | FileSystem(System::String^ Name) { tree = gcnew Tree(gcnew File(Name)); }; 48 | }; 49 | } -------------------------------------------------------------------------------- /PFS_HDD_Manager/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by PFS_HDD_Manager.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/README: -------------------------------------------------------------------------------- 1 | 2 | PFS (PlayStation File System) client for Linux/Unix/Windows 3 | =========================================================== 4 | 5 | 6 | What is this? 7 | ------------- 8 | 9 | This is an incomplete port of ps2sdk's (http://ps2dev.org) APA, PFS 10 | and iomanX libraries to Linux/Unix. Port exports full access to 11 | iomanX's API (APA and PFS drivers are registered in iomanX). That 12 | means, that one can work with APA partitions and can access PFS on the 13 | Linux/Unix side almost as easy as working with local files. 14 | 15 | Because original iomanX exports API colliding with host OS API, iomanX 16 | functions and constants are prefixed with iomanx_/IOMANX_, 17 | accordingly. Usage of iomanX API requires some knowledge of PS2 18 | development; at least knowledge of mount partition, use file-system, 19 | unmount partition sequence of steps. Simple use-cases can be found in 20 | the supplied sources (startup.c). 21 | 22 | Patches over APA and PFS drivers are separated and kept as minimal as 23 | possible to allow an easy upgrade to future ps2sdk versions. ATM 24 | patches include only function/variable re-naming and truncation of 25 | imports files. 26 | 27 | 28 | What is included? 29 | ----------------- 30 | 31 | Means to manipulate files and directories on a PFS partition from the 32 | host OS on a locally attached or networked PS2 HDD. It is also 33 | possible to debug APA and PFS on the host OS. 34 | 35 | 36 | What is NOT included? 37 | --------------------- 38 | 39 | * GUI (as usual); 40 | * 64-bit compiler compatibility; 41 | * little-endian compatibility; 42 | 43 | 44 | How to give it a try (no warrany whatsoever) 45 | -------------------------------------------- 46 | 47 | Fetch Windows build or compile it yourself. To compile hdl_dump's 48 | sources need to be unpacked next to pfs sources (hdl_dump dir and pfs 49 | dir need to be on the same level). You need a 32-bit compiler on 50 | big-endian box to make it work; 32-bit chroots works just fine. 51 | 52 | ./pfsshell 53 | > help 54 | > device 192.168.0.10 55 | # ls 56 | # mount +Misc 57 | +Misc:/# ls 58 | ... 59 | # umount 60 | # exit 61 | 62 | 63 | Disclaimer 64 | ---------- 65 | 66 | This... thing comes with no warrany whatsoever. Use at your own risk. 67 | 68 | 69 | Please, send port bug-reports to w1zard0f07@yahoo.com. APA and PFS 70 | bug-reports should probably be reported at ps2dev sit. 71 | 72 | Wizard of Oz, over and out. 73 | -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/hdl_dump.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/shell/hdl_dump.exe -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/libapa.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/shell/libapa.dll -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/libfakeps2sdk.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/shell/libfakeps2sdk.dll -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/libiomanX.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/shell/libiomanX.dll -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/libpfs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/shell/libpfs.dll -------------------------------------------------------------------------------- /PFS_HDD_Manager/shell/pfsshell.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/PFS_HDD_Manager/shell/pfsshell.exe -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # PFS_HDD_Manager 5 | 6 | "PHM" is a single tool to handle all the needs of a PS2 internal Hard Drive user. It uses HDL_Dump and PFSShell Functions integrated in a sigle GUI meant to handle PS2 Hard Drives, managing Partitions, files and VMC`s 7 | It is a ongoing project and still have lots of things to be implemented. 8 | For now you can handle your PS2 HDD, Editing its partitions and folders... Some coding was made wrong and the function to transfer files from your PC to the HDD is not working properly, But soon it will 9 | 10 | ## Getting Started 11 | 12 | For Compiling the project, download it`s zip and open with visual studio (working on 2017 and 2019 editions) - All settings are already done. You just need to compile it after checking pre-requisites 13 | 14 | ### Prerequisites 15 | 16 | You will need to have installed: 17 | - Visual Studio with: 18 | -- c++ desktop dev kit 19 | -- latest windows 10 SDK 20 | -- latest VC++ tools 21 | 22 | ### Installing 23 | 24 | after compilling the file, you have to get the folder "shell" and "ICONS" to the same folder that the .exe file will be 25 | 26 | ## Running the tests 27 | 28 | For testing the software, you gonna need a Hard Drive or a virtual drive that can be formated. 29 | If selected a device in the right drop doen list, you are gona be prompted to format it OR the device partitions are gonna be listed 30 | After connecting the device to your PC and startting the software with admin rights, cligk the Debug button. Then the text box bellow should be filled with system HDD`s list and the ps2 hdd partition list 31 | 32 | ### Break down into end to end tests 33 | 34 | This test shows if the .exe`s for HDL_Dump and PFSShell.exe are ok and if this is being started with the correct permissions. 35 | 36 | ### And coding style tests 37 | 38 | Explain what these tests test and why 39 | 40 | ``` 41 | Give an example 42 | ``` 43 | 44 | ## Deployment 45 | 46 | Add additional notes about how to deploy this on a live system 47 | 48 | ## Built With 49 | 50 | 51 | ## Contributing 52 | 53 | Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. 54 | 55 | ## Versioning 56 | 57 | We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 58 | 59 | ## Authors 60 | 61 | * **Orley Eduardo (Leyed)** - *development of the project* 62 | 63 | ## License 64 | 65 | This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details 66 | 67 | ## Acknowledgments 68 | Credits to UyJulian who mantain PFSShell sourcecode 69 | 70 | PS2-HOME thread: http://www.ps2-home.com/forum/viewtopic.php?p=34567#p34567 71 | -------------------------------------------------------------------------------- /pfsshell-0.2a.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/pfsshell-0.2a.7z -------------------------------------------------------------------------------- /pfsshell-0.2a/README: -------------------------------------------------------------------------------- 1 | 2 | PFS (PlayStation File System) client for Linux/Unix/Windows 3 | =========================================================== 4 | 5 | 6 | What is this? 7 | ------------- 8 | 9 | This is an incomplete port of ps2sdk's (http://ps2dev.org) APA, PFS 10 | and iomanX libraries to Linux/Unix. Port exports full access to 11 | iomanX's API (APA and PFS drivers are registered in iomanX). That 12 | means, that one can work with APA partitions and can access PFS on the 13 | Linux/Unix side almost as easy as working with local files. 14 | 15 | Because original iomanX exports API colliding with host OS API, iomanX 16 | functions and constants are prefixed with iomanx_/IOMANX_, 17 | accordingly. Usage of iomanX API requires some knowledge of PS2 18 | development; at least knowledge of mount partition, use file-system, 19 | unmount partition sequence of steps. Simple use-cases can be found in 20 | the supplied sources (startup.c). 21 | 22 | Patches over APA and PFS drivers are separated and kept as minimal as 23 | possible to allow an easy upgrade to future ps2sdk versions. ATM 24 | patches include only function/variable re-naming and truncation of 25 | imports files. 26 | 27 | 28 | What is included? 29 | ----------------- 30 | 31 | Means to manipulate files and directories on a PFS partition from the 32 | host OS on a locally attached or networked PS2 HDD. It is also 33 | possible to debug APA and PFS on the host OS. 34 | 35 | 36 | What is NOT included? 37 | --------------------- 38 | 39 | * GUI (as usual); 40 | * 64-bit compiler compatibility; 41 | * little-endian compatibility; 42 | 43 | 44 | How to give it a try (no warrany whatsoever) 45 | -------------------------------------------- 46 | 47 | Fetch Windows build or compile it yourself. To compile hdl_dump's 48 | sources need to be unpacked next to pfs sources (hdl_dump dir and pfs 49 | dir need to be on the same level). You need a 32-bit compiler on 50 | big-endian box to make it work; 32-bit chroots works just fine. 51 | 52 | ./pfsshell 53 | > help 54 | > device 192.168.0.10 55 | # ls 56 | # mount +Misc 57 | +Misc:/# ls 58 | ... 59 | # umount 60 | # exit 61 | 62 | 63 | Disclaimer 64 | ---------- 65 | 66 | This... thing comes with no warrany whatsoever. Use at your own risk. 67 | 68 | 69 | Please, send port bug-reports to w1zard0f07@yahoo.com. APA and PFS 70 | bug-reports should probably be reported at ps2dev sit. 71 | 72 | Wizard of Oz, over and out. 73 | -------------------------------------------------------------------------------- /pfsshell-0.2a/libapa.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/pfsshell-0.2a/libapa.dll -------------------------------------------------------------------------------- /pfsshell-0.2a/libfakeps2sdk.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/pfsshell-0.2a/libfakeps2sdk.dll -------------------------------------------------------------------------------- /pfsshell-0.2a/libiomanX.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/pfsshell-0.2a/libiomanX.dll -------------------------------------------------------------------------------- /pfsshell-0.2a/libpfs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/pfsshell-0.2a/libpfs.dll -------------------------------------------------------------------------------- /pfsshell-0.2a/pfs.bat: -------------------------------------------------------------------------------- 1 | echo Usage: pfs.bat device partition file_wildcard 2 | echo Usage Example: pfs.bat hdd1: __common *.jpg 3 | echo Must run as administrator 4 | echo device %1 > ps2xfer.txt 5 | echo mount %2 >> ps2xfer.txt 6 | for %%X in (%3) do (echo put "%%X") >> ps2xfer.txt 7 | echo umount >> ps2xfer.txt 8 | echo exit >> ps2xfer.txt 9 | type ps2xfer.txt | pfsshell 10 | del ps2xfer.txt 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /pfsshell-0.2a/pfsdir.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Usage: pfsdir.bat device partition file_wildcard 3 | echo Usage Example: pfsdir.bat hdd1: __common *.jpg 4 | echo Must run as administrator 5 | echo Directory names cannot contain the . character 6 | set ps2xfer=%CD%\ps2xfer.txt 7 | set rootdir=%CD% 8 | echo device %1 > %ps2xfer% 9 | echo mount %2 >> %ps2xfer% 10 | for %%Y in (%3) do (echo put "%%Y") >> %ps2xfer% 11 | for /d %%X in (*) do ( 12 | echo mkdir "%%~nX" >> %ps2xfer% 13 | echo cd "%%~nX" >> %ps2xfer% 14 | echo lcd "%%~nX" >> %ps2xfer% 15 | cd "%%~nX" 16 | for %%Y in (%3) do (echo put "%%Y") >> %ps2xfer% 17 | cd .. 18 | echo lcd .. >> %ps2xfer% 19 | echo cd .. >> %ps2xfer% 20 | ) 21 | echo umount >> %ps2xfer% 22 | echo exit >> %ps2xfer% 23 | cd %rootdir% 24 | type ps2xfer.txt | pfsshell 25 | echo . 26 | echo DONE 27 | echo . 28 | del ps2xfer.txt 29 | 30 | -------------------------------------------------------------------------------- /pfsshell-0.2a/pfsshell.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leyed0/PFS_HDD_Manager_VS/7259675dcd279a2816e3ec19675579f9dba80829/pfsshell-0.2a/pfsshell.exe --------------------------------------------------------------------------------