├── .gitattributes
├── .gitignore
├── AsciiTreeMaker.sln
├── AsciiTreeMaker
├── App.config
├── AsciiTreeMaker.csproj
├── Form
│ ├── Mainform.Designer.cs
│ ├── Mainform.cs
│ ├── Mainform.resx
│ ├── SettingsForm.Designer.cs
│ ├── SettingsForm.cs
│ └── SettingsForm.resx
├── Icon
│ └── AppIcon.ico
├── Image
│ ├── AddBrotherNodeButtonImage.png
│ ├── AddChildNodeButtonImage.png
│ ├── CollapseTreeView_ToolStripButton.png
│ ├── ConvertTreeViewToTextButtonImage.png
│ ├── ExpandTreeView_ToolStripButton.png
│ ├── RemoveSelectedNodeButtonImage.png
│ ├── SwapNextNodeButtonImage.png
│ └── SwapPreviousNodeButtonImage.png
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
└── Source
│ ├── AppBaseInfo.cs
│ ├── FileOperation
│ ├── DirectoryStructureCreator.cs
│ ├── EditingFile.cs
│ ├── ExportXmlFile.cs
│ ├── FileManager.cs
│ └── ImportXmlFile.cs
│ ├── TextFormatTree
│ ├── TextFormatTreeBranchLength.cs
│ ├── TextFormatTreeDesigner.cs
│ └── TreeConverter.cs
│ ├── TreeViewEdit
│ ├── NodeEditor.cs
│ └── NodeLabel.cs
│ └── Warning
│ ├── IWarning.cs
│ ├── NoNodeSelected.cs
│ └── TreeViewIsEmpty.cs
├── LICENSE.txt
└── README.md
/.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 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/AsciiTreeMaker.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.7.34202.233
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsciiTreeMaker", "AsciiTreeMaker\AsciiTreeMaker.csproj", "{163B360B-EFAC-4367-A668-DA2FFF7D4658}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {163B360B-EFAC-4367-A668-DA2FFF7D4658}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {163B360B-EFAC-4367-A668-DA2FFF7D4658}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {163B360B-EFAC-4367-A668-DA2FFF7D4658}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {163B360B-EFAC-4367-A668-DA2FFF7D4658}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {14CE72F3-CB07-4D5C-9D73-B245DA2F2B8D}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/AsciiTreeMaker.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {163B360B-EFAC-4367-A668-DA2FFF7D4658}
8 | WinExe
9 | AsciiTreeMaker
10 | AsciiTreeMaker
11 | v4.7.2
12 | 512
13 | true
14 | true
15 | publish\
16 | true
17 | Disk
18 | false
19 | Foreground
20 | 7
21 | Days
22 | false
23 | false
24 | true
25 | 0
26 | 1.0.0.%2a
27 | false
28 | false
29 | true
30 |
31 |
32 | AnyCPU
33 | true
34 | full
35 | false
36 | bin\Debug\
37 | DEBUG;TRACE
38 | prompt
39 | 4
40 |
41 |
42 | AnyCPU
43 | pdbonly
44 | true
45 | bin\Release\
46 | TRACE
47 | prompt
48 | 4
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | Form
75 |
76 |
77 | Mainform.cs
78 |
79 |
80 |
81 |
82 | Form
83 |
84 |
85 | SettingsForm.cs
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | Mainform.cs
94 |
95 |
96 | ResXFileCodeGenerator
97 | Resources.Designer.cs
98 | Designer
99 |
100 |
101 | True
102 | Resources.resx
103 | True
104 |
105 |
106 | SettingsForm.cs
107 |
108 |
109 | SettingsSingleFileGenerator
110 | Settings.Designer.cs
111 |
112 |
113 | True
114 | Settings.settings
115 | True
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 | False
135 | Microsoft .NET Framework 4.7.2 %28x86 and x64%29
136 | true
137 |
138 |
139 | False
140 | .NET Framework 3.5 SP1
141 | false
142 |
143 |
144 |
145 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Form/Mainform.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace AsciiTreeMaker
2 | {
3 | partial class Mainform
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Mainform));
32 | this.treeView = new System.Windows.Forms.TreeView();
33 | this.toolStrip = new System.Windows.Forms.ToolStrip();
34 | this.AddChildNode_ToolStripButton = new System.Windows.Forms.ToolStripButton();
35 | this.AddBrotherNode_ToolStripButton = new System.Windows.Forms.ToolStripButton();
36 | this.SwapPreviousNode_ToolStripButton = new System.Windows.Forms.ToolStripButton();
37 | this.SwapNextNode_ToolStripButton = new System.Windows.Forms.ToolStripButton();
38 | this.RemoveSelectedNode_ToolStripButton = new System.Windows.Forms.ToolStripButton();
39 | this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
40 | this.ExpandTreeView_ToolStripButton = new System.Windows.Forms.ToolStripButton();
41 | this.CollapseTreeView_ToolStripButton = new System.Windows.Forms.ToolStripButton();
42 | this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
43 | this.ConvertTreeViewToText_ToolStripButton = new System.Windows.Forms.ToolStripButton();
44 | this.menuStrip = new System.Windows.Forms.MenuStrip();
45 | this.File_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
46 | this.CreateNewTreeView_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
47 | this.OpenXMLFile_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
48 | this.CreateFromFolder_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
49 | this.SaveXMLFile_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
50 | this.SaveAsXMLFile_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
51 | this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
52 | this.Settings_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
53 | this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
54 | this.Exit_ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
55 | this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
56 | this.toolStrip.SuspendLayout();
57 | this.menuStrip.SuspendLayout();
58 | this.SuspendLayout();
59 | //
60 | // treeView
61 | //
62 | this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
63 | | System.Windows.Forms.AnchorStyles.Left)
64 | | System.Windows.Forms.AnchorStyles.Right)));
65 | this.treeView.Font = new System.Drawing.Font("MS UI Gothic", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
66 | this.treeView.LabelEdit = true;
67 | this.treeView.Location = new System.Drawing.Point(9, 76);
68 | this.treeView.Margin = new System.Windows.Forms.Padding(2);
69 | this.treeView.Name = "treeView";
70 | this.treeView.Size = new System.Drawing.Size(583, 479);
71 | this.treeView.TabIndex = 0;
72 | this.treeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TreeView_KeyDown);
73 | //
74 | // toolStrip
75 | //
76 | this.toolStrip.ImageScalingSize = new System.Drawing.Size(30, 30);
77 | this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
78 | this.AddChildNode_ToolStripButton,
79 | this.AddBrotherNode_ToolStripButton,
80 | this.SwapPreviousNode_ToolStripButton,
81 | this.SwapNextNode_ToolStripButton,
82 | this.RemoveSelectedNode_ToolStripButton,
83 | this.toolStripSeparator3,
84 | this.ExpandTreeView_ToolStripButton,
85 | this.CollapseTreeView_ToolStripButton,
86 | this.toolStripSeparator4,
87 | this.ConvertTreeViewToText_ToolStripButton});
88 | this.toolStrip.Location = new System.Drawing.Point(0, 24);
89 | this.toolStrip.Name = "toolStrip";
90 | this.toolStrip.Size = new System.Drawing.Size(600, 37);
91 | this.toolStrip.TabIndex = 1;
92 | this.toolStrip.Text = "toolStrip1";
93 | //
94 | // AddChildNode_ToolStripButton
95 | //
96 | this.AddChildNode_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
97 | this.AddChildNode_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("AddChildNode_ToolStripButton.Image")));
98 | this.AddChildNode_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
99 | this.AddChildNode_ToolStripButton.Name = "AddChildNode_ToolStripButton";
100 | this.AddChildNode_ToolStripButton.Size = new System.Drawing.Size(34, 34);
101 | this.AddChildNode_ToolStripButton.Text = "toolStripButton1";
102 | this.AddChildNode_ToolStripButton.ToolTipText = "子ノードを追加";
103 | this.AddChildNode_ToolStripButton.Click += new System.EventHandler(this.AddChildNode_ToolStripButton_Click);
104 | //
105 | // AddBrotherNode_ToolStripButton
106 | //
107 | this.AddBrotherNode_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
108 | this.AddBrotherNode_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("AddBrotherNode_ToolStripButton.Image")));
109 | this.AddBrotherNode_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
110 | this.AddBrotherNode_ToolStripButton.Name = "AddBrotherNode_ToolStripButton";
111 | this.AddBrotherNode_ToolStripButton.Size = new System.Drawing.Size(34, 34);
112 | this.AddBrotherNode_ToolStripButton.Text = "toolStripButton2";
113 | this.AddBrotherNode_ToolStripButton.ToolTipText = "兄弟ノードを追加";
114 | this.AddBrotherNode_ToolStripButton.Click += new System.EventHandler(this.AddBrotherNode_ToolStripButton_Click);
115 | //
116 | // SwapPreviousNode_ToolStripButton
117 | //
118 | this.SwapPreviousNode_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
119 | this.SwapPreviousNode_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("SwapPreviousNode_ToolStripButton.Image")));
120 | this.SwapPreviousNode_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
121 | this.SwapPreviousNode_ToolStripButton.Name = "SwapPreviousNode_ToolStripButton";
122 | this.SwapPreviousNode_ToolStripButton.Size = new System.Drawing.Size(34, 34);
123 | this.SwapPreviousNode_ToolStripButton.Text = "toolStripButton1";
124 | this.SwapPreviousNode_ToolStripButton.ToolTipText = "上へ移動";
125 | this.SwapPreviousNode_ToolStripButton.Click += new System.EventHandler(this.SwapPreviousNode_ToolStripButton_Click);
126 | //
127 | // SwapNextNode_ToolStripButton
128 | //
129 | this.SwapNextNode_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
130 | this.SwapNextNode_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("SwapNextNode_ToolStripButton.Image")));
131 | this.SwapNextNode_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
132 | this.SwapNextNode_ToolStripButton.Name = "SwapNextNode_ToolStripButton";
133 | this.SwapNextNode_ToolStripButton.Size = new System.Drawing.Size(34, 34);
134 | this.SwapNextNode_ToolStripButton.Text = "swap";
135 | this.SwapNextNode_ToolStripButton.ToolTipText = "下へ移動";
136 | this.SwapNextNode_ToolStripButton.Click += new System.EventHandler(this.SwapNextNode_ToolStripButton_Click);
137 | //
138 | // RemoveSelectedNode_ToolStripButton
139 | //
140 | this.RemoveSelectedNode_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
141 | this.RemoveSelectedNode_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("RemoveSelectedNode_ToolStripButton.Image")));
142 | this.RemoveSelectedNode_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
143 | this.RemoveSelectedNode_ToolStripButton.Name = "RemoveSelectedNode_ToolStripButton";
144 | this.RemoveSelectedNode_ToolStripButton.Size = new System.Drawing.Size(34, 34);
145 | this.RemoveSelectedNode_ToolStripButton.Text = "toolStripButton1";
146 | this.RemoveSelectedNode_ToolStripButton.ToolTipText = "ノードを削除";
147 | this.RemoveSelectedNode_ToolStripButton.Click += new System.EventHandler(this.RemoveSelectedNode_ToolStripButton_Click);
148 | //
149 | // toolStripSeparator3
150 | //
151 | this.toolStripSeparator3.Name = "toolStripSeparator3";
152 | this.toolStripSeparator3.Size = new System.Drawing.Size(6, 37);
153 | //
154 | // ExpandTreeView_ToolStripButton
155 | //
156 | this.ExpandTreeView_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
157 | this.ExpandTreeView_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("ExpandTreeView_ToolStripButton.Image")));
158 | this.ExpandTreeView_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
159 | this.ExpandTreeView_ToolStripButton.Name = "ExpandTreeView_ToolStripButton";
160 | this.ExpandTreeView_ToolStripButton.Size = new System.Drawing.Size(34, 34);
161 | this.ExpandTreeView_ToolStripButton.Text = "すべて展開";
162 | this.ExpandTreeView_ToolStripButton.Click += new System.EventHandler(this.ExpandTreeView_ToolStripButton_Click);
163 | //
164 | // CollapseTreeView_ToolStripButton
165 | //
166 | this.CollapseTreeView_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
167 | this.CollapseTreeView_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("CollapseTreeView_ToolStripButton.Image")));
168 | this.CollapseTreeView_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
169 | this.CollapseTreeView_ToolStripButton.Name = "CollapseTreeView_ToolStripButton";
170 | this.CollapseTreeView_ToolStripButton.Size = new System.Drawing.Size(34, 34);
171 | this.CollapseTreeView_ToolStripButton.Text = "すべて折りたたむ";
172 | this.CollapseTreeView_ToolStripButton.Click += new System.EventHandler(this.CollapseTreeView_ToolStripButton_Click);
173 | //
174 | // toolStripSeparator4
175 | //
176 | this.toolStripSeparator4.Name = "toolStripSeparator4";
177 | this.toolStripSeparator4.Size = new System.Drawing.Size(6, 37);
178 | //
179 | // ConvertTreeViewToText_ToolStripButton
180 | //
181 | this.ConvertTreeViewToText_ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
182 | this.ConvertTreeViewToText_ToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("ConvertTreeViewToText_ToolStripButton.Image")));
183 | this.ConvertTreeViewToText_ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
184 | this.ConvertTreeViewToText_ToolStripButton.Name = "ConvertTreeViewToText_ToolStripButton";
185 | this.ConvertTreeViewToText_ToolStripButton.Size = new System.Drawing.Size(34, 34);
186 | this.ConvertTreeViewToText_ToolStripButton.Text = "toolStripButton3";
187 | this.ConvertTreeViewToText_ToolStripButton.ToolTipText = "樹形図をテキスト形式へ変換";
188 | this.ConvertTreeViewToText_ToolStripButton.Click += new System.EventHandler(this.ConvertTreeViewToText_ToolStripButton_Click);
189 | //
190 | // menuStrip
191 | //
192 | this.menuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
193 | this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
194 | this.File_ToolStripMenuItem});
195 | this.menuStrip.Location = new System.Drawing.Point(0, 0);
196 | this.menuStrip.Name = "menuStrip";
197 | this.menuStrip.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
198 | this.menuStrip.Size = new System.Drawing.Size(600, 24);
199 | this.menuStrip.TabIndex = 2;
200 | this.menuStrip.Text = "menuStrip1";
201 | //
202 | // File_ToolStripMenuItem
203 | //
204 | this.File_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
205 | this.File_ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
206 | this.CreateNewTreeView_ToolStripMenuItem,
207 | this.OpenXMLFile_ToolStripMenuItem,
208 | this.SaveXMLFile_ToolStripMenuItem,
209 | this.SaveAsXMLFile_ToolStripMenuItem,
210 | this.toolStripSeparator1,
211 | this.CreateFromFolder_ToolStripMenuItem,
212 | this.toolStripSeparator5,
213 | this.Settings_ToolStripMenuItem,
214 | this.toolStripSeparator2,
215 | this.Exit_ToolStripMenuItem});
216 | this.File_ToolStripMenuItem.Name = "File_ToolStripMenuItem";
217 | this.File_ToolStripMenuItem.Size = new System.Drawing.Size(53, 20);
218 | this.File_ToolStripMenuItem.Text = "ファイル";
219 | //
220 | // CreateNewTreeView_ToolStripMenuItem
221 | //
222 | this.CreateNewTreeView_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
223 | this.CreateNewTreeView_ToolStripMenuItem.Name = "CreateNewTreeView_ToolStripMenuItem";
224 | this.CreateNewTreeView_ToolStripMenuItem.ShortcutKeyDisplayString = "";
225 | this.CreateNewTreeView_ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
226 | this.CreateNewTreeView_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
227 | this.CreateNewTreeView_ToolStripMenuItem.Text = "新規作成";
228 | this.CreateNewTreeView_ToolStripMenuItem.Click += new System.EventHandler(this.CreateNewTreeView_ToolStripMenuItem_Click);
229 | //
230 | // OpenXMLFile_ToolStripMenuItem
231 | //
232 | this.OpenXMLFile_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
233 | this.OpenXMLFile_ToolStripMenuItem.Name = "OpenXMLFile_ToolStripMenuItem";
234 | this.OpenXMLFile_ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
235 | this.OpenXMLFile_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
236 | this.OpenXMLFile_ToolStripMenuItem.Text = "開く";
237 | this.OpenXMLFile_ToolStripMenuItem.Click += new System.EventHandler(this.OpenXMLFile_ToolStripMenuItem_Click);
238 | //
239 | // CreateFromFolder_ToolStripMenuItem
240 | //
241 | this.CreateFromFolder_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
242 | this.CreateFromFolder_ToolStripMenuItem.Name = "CreateFromFolder_ToolStripMenuItem";
243 | this.CreateFromFolder_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
244 | this.CreateFromFolder_ToolStripMenuItem.Text = "フォルダから樹形図を生成";
245 | this.CreateFromFolder_ToolStripMenuItem.Click += new System.EventHandler(this.CreateFromFolder_ToolStripMenuItem_Click);
246 | //
247 | // SaveXMLFile_ToolStripMenuItem
248 | //
249 | this.SaveXMLFile_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
250 | this.SaveXMLFile_ToolStripMenuItem.Name = "SaveXMLFile_ToolStripMenuItem";
251 | this.SaveXMLFile_ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
252 | this.SaveXMLFile_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
253 | this.SaveXMLFile_ToolStripMenuItem.Text = "保存";
254 | this.SaveXMLFile_ToolStripMenuItem.Click += new System.EventHandler(this.SaveXMLFile_ToolStripMenuItem_Click);
255 | //
256 | // SaveAsXMLFile_ToolStripMenuItem
257 | //
258 | this.SaveAsXMLFile_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
259 | this.SaveAsXMLFile_ToolStripMenuItem.Name = "SaveAsXMLFile_ToolStripMenuItem";
260 | this.SaveAsXMLFile_ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
261 | | System.Windows.Forms.Keys.S)));
262 | this.SaveAsXMLFile_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
263 | this.SaveAsXMLFile_ToolStripMenuItem.Text = "名前を付けて保存";
264 | this.SaveAsXMLFile_ToolStripMenuItem.Click += new System.EventHandler(this.SaveAsXMLFile_ToolStripMenuItem_Click);
265 | //
266 | // toolStripSeparator1
267 | //
268 | this.toolStripSeparator1.Name = "toolStripSeparator1";
269 | this.toolStripSeparator1.Size = new System.Drawing.Size(229, 6);
270 | //
271 | // Settings_ToolStripMenuItem
272 | //
273 | this.Settings_ToolStripMenuItem.Name = "Settings_ToolStripMenuItem";
274 | this.Settings_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
275 | this.Settings_ToolStripMenuItem.Text = "設定";
276 | this.Settings_ToolStripMenuItem.Click += new System.EventHandler(this.Settings_ToolStripMenuItem_Click);
277 | //
278 | // toolStripSeparator2
279 | //
280 | this.toolStripSeparator2.Name = "toolStripSeparator2";
281 | this.toolStripSeparator2.Size = new System.Drawing.Size(229, 6);
282 | //
283 | // Exit_ToolStripMenuItem
284 | //
285 | this.Exit_ToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
286 | this.Exit_ToolStripMenuItem.Name = "Exit_ToolStripMenuItem";
287 | this.Exit_ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q)));
288 | this.Exit_ToolStripMenuItem.Size = new System.Drawing.Size(232, 22);
289 | this.Exit_ToolStripMenuItem.Text = "終了";
290 | this.Exit_ToolStripMenuItem.Click += new System.EventHandler(this.Exit_ToolStripMenuItem_Click);
291 | //
292 | // toolStripSeparator5
293 | //
294 | this.toolStripSeparator5.Name = "toolStripSeparator5";
295 | this.toolStripSeparator5.Size = new System.Drawing.Size(229, 6);
296 | //
297 | // Mainform
298 | //
299 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
300 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
301 | this.ClientSize = new System.Drawing.Size(600, 564);
302 | this.Controls.Add(this.toolStrip);
303 | this.Controls.Add(this.menuStrip);
304 | this.Controls.Add(this.treeView);
305 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
306 | this.MainMenuStrip = this.menuStrip;
307 | this.Margin = new System.Windows.Forms.Padding(2);
308 | this.Name = "Mainform";
309 | this.Text = "アスキーツリーメーカー";
310 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Mainform_FormClosing);
311 | this.toolStrip.ResumeLayout(false);
312 | this.toolStrip.PerformLayout();
313 | this.menuStrip.ResumeLayout(false);
314 | this.menuStrip.PerformLayout();
315 | this.ResumeLayout(false);
316 | this.PerformLayout();
317 |
318 | }
319 |
320 | #endregion
321 |
322 | private System.Windows.Forms.TreeView treeView;
323 | private System.Windows.Forms.ToolStrip toolStrip;
324 | private System.Windows.Forms.ToolStripButton AddChildNode_ToolStripButton;
325 | private System.Windows.Forms.ToolStripButton AddBrotherNode_ToolStripButton;
326 | private System.Windows.Forms.ToolStripButton ConvertTreeViewToText_ToolStripButton;
327 | private System.Windows.Forms.MenuStrip menuStrip;
328 | private System.Windows.Forms.ToolStripMenuItem File_ToolStripMenuItem;
329 | private System.Windows.Forms.ToolStripMenuItem CreateNewTreeView_ToolStripMenuItem;
330 | private System.Windows.Forms.ToolStripMenuItem OpenXMLFile_ToolStripMenuItem;
331 | private System.Windows.Forms.ToolStripMenuItem SaveAsXMLFile_ToolStripMenuItem;
332 | private System.Windows.Forms.ToolStripButton RemoveSelectedNode_ToolStripButton;
333 | private System.Windows.Forms.ToolStripButton SwapNextNode_ToolStripButton;
334 | private System.Windows.Forms.ToolStripButton SwapPreviousNode_ToolStripButton;
335 | private System.Windows.Forms.ToolStripMenuItem Exit_ToolStripMenuItem;
336 | private System.Windows.Forms.ToolStripMenuItem SaveXMLFile_ToolStripMenuItem;
337 | private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
338 | private System.Windows.Forms.ToolStripMenuItem Settings_ToolStripMenuItem;
339 | private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
340 | private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
341 | private System.Windows.Forms.ToolStripButton ExpandTreeView_ToolStripButton;
342 | private System.Windows.Forms.ToolStripButton CollapseTreeView_ToolStripButton;
343 | private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
344 | private System.Windows.Forms.ToolStripMenuItem CreateFromFolder_ToolStripMenuItem;
345 | private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
346 | }
347 | }
348 |
349 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Form/Mainform.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Windows.Forms;
4 | using AsciiTreeMaker.Source;
5 |
6 | namespace AsciiTreeMaker
7 | {
8 | /*
9 | * Mainform クラス
10 | */
11 | public partial class Mainform : Form
12 | {
13 | private readonly TreeConverter treeConverter;
14 | private readonly NodeEditor nodeEditor;
15 | private readonly FileManager fileManager;
16 | private readonly TextFormatTreeDesigner textFormatTreeDesigner;
17 | private readonly TextFormatTreeBranchLength branchLength;
18 |
19 | ///
20 | /// Mainform コンストラクタ
21 | ///
22 | public Mainform()
23 | {
24 | InitializeComponent();
25 |
26 | nodeEditor = new NodeEditor(treeView);
27 |
28 | EditingFile editingFile = new EditingFile();
29 | editingFile.EditFileStatusChanged += UpdateEditingFileName;
30 | fileManager = new FileManager(treeView, editingFile);
31 | fileManager.InitializeFileState();
32 |
33 | branchLength = TextFormatTreeBranchLength.DefaultTextFormatTreeBranchLength();
34 | textFormatTreeDesigner = new TextFormatTreeDesigner(branchLength);
35 | treeConverter = new TreeConverter(treeView, textFormatTreeDesigner);
36 |
37 | this.treeView.BeforeLabelEdit += new NodeLabelEditEventHandler(TreeView_BeforeLabelEdit);
38 | this.treeView.AfterLabelEdit += new NodeLabelEditEventHandler(TreeView_AfterLabelEdit);
39 |
40 | CreateNewTreeView();
41 | }
42 |
43 | ///
44 | /// ユーザがノードのテキストを編集する前に実行する処理
45 | ///
46 | ///
47 | ///
48 | private void TreeView_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
49 | {
50 | // ラベル編集中に toolStrip のボタンを押下すると挙動がおかしくなるから無効にする
51 | toolStrip.Enabled = false;
52 |
53 | // バグらないけど意図した動きではないので無効にする
54 | menuStrip.Enabled = false;
55 | }
56 |
57 | ///
58 | /// ユーザがノードのテキストを編集した後に実行する処理
59 | ///
60 | ///
61 | ///
62 | private void TreeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
63 | {
64 | // 復活させる
65 | toolStrip.Enabled = true;
66 | menuStrip.Enabled = true;
67 |
68 | // 編集後のテキスト e.Label が空なら編集を無効にする
69 | if (string.IsNullOrEmpty(e.Label))
70 | {
71 | e.CancelEdit = true;
72 | return;
73 | }
74 |
75 | fileManager.TreeViewHasChanged();
76 | }
77 |
78 | ///
79 | /// 樹形図が空なら true を返す
80 | ///
81 | ///
82 | public bool TreeViewIsEmpty()
83 | {
84 | return treeView.Nodes.Count == 0;
85 | }
86 |
87 | ///
88 | /// フォームのタイトル横に表示するファイル名を更新する
89 | ///
90 | ///
91 | ///
92 | private void UpdateEditingFileName(object sender, EventArgs e)
93 | {
94 | if (fileManager.editingFile.IsSaved())
95 | {
96 | this.Text = String.Format("{0} - [ {1} ]", AppBaseInfo.APP_NAME, fileManager.editingFile.GetName());
97 | }
98 | else
99 | {
100 | // 未保存の編集内容がある場合
101 | this.Text = String.Format("{0} - [ {1} ]*", AppBaseInfo.APP_NAME, fileManager.editingFile.GetName());
102 | }
103 | }
104 |
105 | ///
106 | /// 子ノードを追加するボタンを押下した際の処理
107 | ///
108 | ///
109 | ///
110 | private void AddChildNode_ToolStripButton_Click(object sender, EventArgs e)
111 | {
112 | bool success = nodeEditor.AddChildNode();
113 | if (success == false)
114 | {
115 | IWarning warning = new NoNodeSelected();
116 | warning.ShowWarningMessageBox();
117 | return;
118 | }
119 |
120 | fileManager.TreeViewHasChanged();
121 | }
122 |
123 | ///
124 | /// 兄弟ノードを追加するボタンを押下した際の処理
125 | ///
126 | ///
127 | ///
128 | private void AddBrotherNode_ToolStripButton_Click(object sender, EventArgs e)
129 | {
130 | bool success = nodeEditor.AddBrotherNode();
131 | if (success == false)
132 | {
133 | IWarning warning = new NoNodeSelected();
134 | warning.ShowWarningMessageBox();
135 | return;
136 | }
137 |
138 | fileManager.TreeViewHasChanged();
139 | }
140 |
141 | ///
142 | /// 選択したノードを削除するボタンを押下した際の処理
143 | ///
144 | ///
145 | ///
146 | private void RemoveSelectedNode_ToolStripButton_Click(object sender, EventArgs e)
147 | {
148 | bool success = nodeEditor.RemoveSelectedNode();
149 | if (success == false)
150 | {
151 | IWarning warning = new NoNodeSelected();
152 | warning.ShowWarningMessageBox();
153 | return;
154 | }
155 |
156 | // 樹形図が空になったら、実質的に初期化処理を行う
157 | if (TreeViewIsEmpty())
158 | {
159 | nodeEditor.InitializeTreeViewContents();
160 | }
161 |
162 | fileManager.TreeViewHasChanged();
163 | }
164 |
165 | ///
166 | /// 樹形図をテキストへ変換するボタンを押下した際の処理
167 | ///
168 | ///
169 | ///
170 | private void ConvertTreeViewToText_ToolStripButton_Click(object sender, EventArgs e)
171 | {
172 | // 樹形図が空なら例外を出す
173 | if (TreeViewIsEmpty())
174 | {
175 | IWarning warning = new TreeViewIsEmpty();
176 | warning.ShowWarningMessageBox();
177 | return;
178 | }
179 |
180 | // テキスト変換
181 | string textFormatTree = treeConverter.ConvertTreeToText(textFormatTreeDesigner);
182 |
183 | // クリップボードへ保存
184 | Clipboard.SetText(textFormatTree);
185 |
186 | // 処理後のメッセージ
187 | MessageBox.Show("クリップボードにコピーしました",
188 | AppBaseInfo.APP_NAME,
189 | MessageBoxButtons.OK,
190 | MessageBoxIcon.Information,
191 | MessageBoxDefaultButton.Button1);
192 | }
193 |
194 | ///
195 | /// ファイルタブの「新規作成」を押下した際の処理
196 | ///
197 | ///
198 | ///
199 | private void CreateNewTreeView_ToolStripMenuItem_Click(object sender, EventArgs e)
200 | {
201 | // ショートカットキーを押下したときも呼ばれることに注意
202 | // コンポーネントが無効なら実行しない
203 | if (!menuStrip.Enabled)
204 | {
205 | return;
206 | }
207 | CreateNewTreeView();
208 | }
209 |
210 | ///
211 | /// 樹形図を新規作成する
212 | ///
213 | private void CreateNewTreeView()
214 | {
215 | // 未保存の編集内容がある時だけユーザに確認をとる(短絡評価)
216 | if (fileManager.editingFile.IsSaved() || ConfirmClearTreeView())
217 | {
218 | nodeEditor.InitializeTreeViewContents();
219 | fileManager.InitializeFileState();
220 | }
221 | }
222 |
223 | ///
224 | /// ファイルタブの「開く」を押下した際の処理
225 | ///
226 | ///
227 | ///
228 | private void OpenXMLFile_ToolStripMenuItem_Click(object sender, EventArgs e)
229 | {
230 | if (!menuStrip.Enabled)
231 | {
232 | return;
233 | }
234 | LoadXmlFile();
235 | }
236 |
237 | ///
238 | /// XMLファイルを読み込んで樹形図に反映させる
239 | ///
240 | private void LoadXmlFile()
241 | {
242 | // 未保存の編集内容がある時だけユーザに確認をとる(短絡評価)
243 | if (fileManager.editingFile.IsSaved() || ConfirmClearTreeView())
244 | {
245 | fileManager.AskAndLoadFile();
246 | }
247 | }
248 |
249 | ///
250 | /// ファイルタブの「フォルダから作成」を押下した際の処理
251 | ///
252 | ///
253 | ///
254 | private void CreateFromFolder_ToolStripMenuItem_Click(object sender, EventArgs e)
255 | {
256 | // 未保存の編集内容がある時だけユーザに確認をとる(短絡評価)
257 | if (fileManager.editingFile.IsSaved() || ConfirmClearTreeView())
258 | {
259 | fileManager.AskRootFolderAndCreateDirectoryStructureTreeView();
260 | }
261 | }
262 |
263 | ///
264 | /// ファイルタブの「保存」を押下した際の処理
265 | ///
266 | ///
267 | ///
268 | private void SaveXMLFile_ToolStripMenuItem_Click(object sender, EventArgs e)
269 | {
270 | if (!menuStrip.Enabled)
271 | {
272 | return;
273 | }
274 | SaveXmlFile();
275 | }
276 |
277 | ///
278 | /// 現在の樹形図をファイルに上書き保存する
279 | /// 保存したことのないファイルなら名前を付けて保存させる
280 | ///
281 | private void SaveXmlFile()
282 | {
283 | // 上書き保存を試す
284 | bool success = fileManager.Save();
285 | if (!success)
286 | {
287 | // 名前を付けて保存を試す
288 | SaveAsXMLFile();
289 | }
290 | }
291 |
292 | ///
293 | /// ファイルタブの「名前を付けて保存」を押下した際の処理
294 | ///
295 | ///
296 | ///
297 | private void SaveAsXMLFile_ToolStripMenuItem_Click(object sender, EventArgs e)
298 | {
299 | if (!menuStrip.Enabled)
300 | {
301 | return;
302 | }
303 | SaveAsXMLFile();
304 | }
305 |
306 | ///
307 | /// 名前を付けた上でファイルを保存する
308 | ///
309 | private void SaveAsXMLFile()
310 | {
311 | // 作成した樹形図をXML形式で保存する
312 | fileManager.AskAndSaveFile();
313 | }
314 |
315 | ///
316 | /// 現在の樹形図を破棄してよいか確認する
317 | ///
318 | /// 破棄してよいなら true
319 | private bool ConfirmClearTreeView()
320 | {
321 | DialogResult result = MessageBox.Show("保存していない樹形図は破棄されますが、よろしいですか?",
322 | AppBaseInfo.APP_NAME,
323 | MessageBoxButtons.YesNoCancel,
324 | MessageBoxIcon.Exclamation,
325 | MessageBoxDefaultButton.Button2);
326 |
327 | return result == DialogResult.Yes;
328 | }
329 |
330 | ///
331 | /// 「下へ移動」のボタンを押下した際の処理
332 | ///
333 | ///
334 | ///
335 | private void SwapNextNode_ToolStripButton_Click(object sender, EventArgs e)
336 | {
337 | if (nodeEditor.SwapNodes(NodeEditor.SwapType.NEXT))
338 | {
339 | fileManager.TreeViewHasChanged();
340 | }
341 | }
342 |
343 | ///
344 | /// 「上へ移動」のボタンを押下した際の処理
345 | ///
346 | ///
347 | ///
348 | private void SwapPreviousNode_ToolStripButton_Click(object sender, EventArgs e)
349 | {
350 | if (nodeEditor.SwapNodes(NodeEditor.SwapType.PREVIOUS))
351 | {
352 | fileManager.TreeViewHasChanged();
353 | }
354 | }
355 |
356 | ///
357 | /// ファイルタブの「終了」を押下した際の処理
358 | ///
359 | ///
360 | ///
361 | private void Exit_ToolStripMenuItem_Click(object sender, EventArgs e)
362 | {
363 | if (!menuStrip.Enabled)
364 | {
365 | return;
366 | }
367 |
368 | // Mainform_FormClosing が呼び出される
369 | Application.Exit();
370 | }
371 |
372 | ///
373 | /// Mainform が閉じられるときの処理
374 | ///
375 | ///
376 | ///
377 | private void Mainform_FormClosing(object sender, FormClosingEventArgs e)
378 | {
379 | bool success = ConfirmBeforeExitApp();
380 | if (!success)
381 | {
382 | e.Cancel = true;
383 | }
384 | }
385 |
386 | ///
387 | /// アプリを終了してよいかを確認する
388 | ///
389 | private bool ConfirmBeforeExitApp()
390 | {
391 | // 未保存の編集内容があるなら、破棄してよいか確認する
392 | if (!fileManager.editingFile.IsSaved() && !ConfirmClearTreeView())
393 | {
394 | return false;
395 | }
396 | return true;
397 | }
398 |
399 | ///
400 | /// ファイルタブの「設定」を押下した際の処理
401 | ///
402 | ///
403 | ///
404 | private void Settings_ToolStripMenuItem_Click(object sender, EventArgs e)
405 | {
406 | // Mainform を無効化
407 | this.Enabled = false;
408 |
409 | using (SettingsForm settingsForm = new SettingsForm(branchLength))
410 | {
411 | // Mainform の近くで開くようにする
412 | settingsForm.StartPosition = FormStartPosition.Manual;
413 | const int OFFSET_PIXEL_X = 50;
414 | const int OFFSET_PIXEL_Y = 50;
415 | settingsForm.Location = new Point(this.Location.X + OFFSET_PIXEL_X, this.Location.Y + OFFSET_PIXEL_Y);
416 |
417 | settingsForm.FormClosed += new System.Windows.Forms.FormClosedEventHandler(SettingsForm_FormClosed);
418 | if (settingsForm.ShowDialog() == DialogResult.OK)
419 | {
420 | branchLength.Update(settingsForm.UpdatedBranchLength);
421 | textFormatTreeDesigner.UpdateBranchLength(branchLength);
422 | }
423 | }
424 | }
425 |
426 | ///
427 | /// 設定ウィンドウが閉じた時の処理
428 | ///
429 | ///
430 | ///
431 | private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e)
432 | {
433 | // MainFormを有効化
434 | this.Enabled = true;
435 | }
436 |
437 | ///
438 | /// 「すべて展開」を押下した際の処理
439 | ///
440 | ///
441 | ///
442 | private void ExpandTreeView_ToolStripButton_Click(object sender, EventArgs e)
443 | {
444 | this.treeView.BeginUpdate();
445 | this.treeView.ExpandAll();
446 | this.treeView.EndUpdate();
447 | }
448 |
449 | ///
450 | /// 「すべて折りたたむ」を押下した際の処理
451 | ///
452 | ///
453 | ///
454 | private void CollapseTreeView_ToolStripButton_Click(object sender, EventArgs e)
455 | {
456 | this.treeView.BeginUpdate();
457 | this.treeView.CollapseAll();
458 | this.treeView.EndUpdate();
459 | }
460 |
461 | ///
462 | /// キーが押されたときの処理
463 | ///
464 | ///
465 | ///
466 | private void TreeView_KeyDown(object sender, KeyEventArgs e)
467 | {
468 | if (treeView.SelectedNode == null)
469 | {
470 | return;
471 | }
472 |
473 | // F2キーで即時入力モードにする
474 | if (e.KeyCode == Keys.F2)
475 | {
476 | treeView.SelectedNode.BeginEdit();
477 | }
478 | }
479 | }
480 | }
481 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Form/SettingsForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace AsciiTreeMaker
2 | {
3 | partial class SettingsForm
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
32 | this.branchLengthComboBox = new System.Windows.Forms.ComboBox();
33 | this.label1 = new System.Windows.Forms.Label();
34 | this.OK_Button = new System.Windows.Forms.Button();
35 | this.Cancel_Button = new System.Windows.Forms.Button();
36 | this.SuspendLayout();
37 | //
38 | // branchLengthComboBox
39 | //
40 | this.branchLengthComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
41 | this.branchLengthComboBox.FormattingEnabled = true;
42 | this.branchLengthComboBox.Items.AddRange(new object[] {
43 | "0",
44 | "1",
45 | "2",
46 | "3",
47 | "4",
48 | "5"});
49 | this.branchLengthComboBox.Location = new System.Drawing.Point(38, 45);
50 | this.branchLengthComboBox.Name = "branchLengthComboBox";
51 | this.branchLengthComboBox.Size = new System.Drawing.Size(121, 20);
52 | this.branchLengthComboBox.TabIndex = 0;
53 | this.branchLengthComboBox.SelectedIndexChanged += new System.EventHandler(this.BranchLengthComboBox_SelectedIndexChanged);
54 | //
55 | // label1
56 | //
57 | this.label1.AutoSize = true;
58 | this.label1.Location = new System.Drawing.Point(36, 30);
59 | this.label1.Name = "label1";
60 | this.label1.Size = new System.Drawing.Size(47, 12);
61 | this.label1.TabIndex = 1;
62 | this.label1.Text = "枝の長さ";
63 | //
64 | // OK_Button
65 | //
66 | this.OK_Button.Location = new System.Drawing.Point(110, 131);
67 | this.OK_Button.Name = "OK_Button";
68 | this.OK_Button.Size = new System.Drawing.Size(85, 27);
69 | this.OK_Button.TabIndex = 2;
70 | this.OK_Button.Text = "OK";
71 | this.OK_Button.UseVisualStyleBackColor = true;
72 | this.OK_Button.Click += new System.EventHandler(this.OK_Button_Click);
73 | //
74 | // Cancel_Button
75 | //
76 | this.Cancel_Button.Location = new System.Drawing.Point(201, 131);
77 | this.Cancel_Button.Name = "Cancel_Button";
78 | this.Cancel_Button.Size = new System.Drawing.Size(85, 27);
79 | this.Cancel_Button.TabIndex = 2;
80 | this.Cancel_Button.Text = "キャンセル";
81 | this.Cancel_Button.UseVisualStyleBackColor = true;
82 | this.Cancel_Button.Click += new System.EventHandler(this.Cancel_Button_Click);
83 | //
84 | // SettingsForm
85 | //
86 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
87 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
88 | this.ClientSize = new System.Drawing.Size(298, 170);
89 | this.Controls.Add(this.Cancel_Button);
90 | this.Controls.Add(this.OK_Button);
91 | this.Controls.Add(this.label1);
92 | this.Controls.Add(this.branchLengthComboBox);
93 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
94 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
95 | this.MaximizeBox = false;
96 | this.Name = "SettingsForm";
97 | this.Text = "設定";
98 | this.ResumeLayout(false);
99 | this.PerformLayout();
100 |
101 | }
102 |
103 | #endregion
104 |
105 | private System.Windows.Forms.ComboBox branchLengthComboBox;
106 | private System.Windows.Forms.Label label1;
107 | private System.Windows.Forms.Button OK_Button;
108 | private System.Windows.Forms.Button Cancel_Button;
109 | }
110 | }
--------------------------------------------------------------------------------
/AsciiTreeMaker/Form/SettingsForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | /*
7 | * SettingsForm クラス
8 | * 設定画面を管理する
9 | */
10 | public partial class SettingsForm : Form
11 | {
12 | private readonly TextFormatTreeBranchLength branchLength;
13 | public TextFormatTreeBranchLength UpdatedBranchLength { get; private set; }
14 |
15 | ///
16 | /// コンストラクタ
17 | ///
18 | ///
19 | public SettingsForm(in TextFormatTreeBranchLength branchLength_prev)
20 | {
21 | InitializeComponent();
22 |
23 | branchLength = branchLength_prev;
24 | UpdatedBranchLength = TextFormatTreeBranchLength.Copy(branchLength);
25 |
26 | LoadPresentSettings(branchLength);
27 | }
28 |
29 | ///
30 | /// コンボボックスの選択されているアイテムを更新する
31 | ///
32 | ///
33 | private void LoadPresentSettings(in TextFormatTreeBranchLength branchLength_present)
34 | {
35 | // 「選択肢のインデックス = 選択肢の値」だが、将来的にずれた時に困るので、安全のため文字列を検索する
36 | branchLengthComboBox.SelectedIndex = branchLengthComboBox.FindStringExact(branchLength_present.Value.ToString());
37 | }
38 |
39 | ///
40 | /// 枝の長さに関するコンボボックスが変化したときの処理
41 | ///
42 | ///
43 | ///
44 | private void BranchLengthComboBox_SelectedIndexChanged(object sender, EventArgs e)
45 | {
46 | string selectedItemText = branchLengthComboBox.SelectedItem.ToString();
47 |
48 | bool success = int.TryParse(selectedItemText, out int selectedBranchLength);
49 | if (!success)
50 | {
51 | throw new Exception("branchLengthComboBox_SelectedIndexChanged");
52 | }
53 |
54 | UpdatedBranchLength.Update(new TextFormatTreeBranchLength(selectedBranchLength));
55 | }
56 |
57 | ///
58 | /// "OK"を押下した際の処理
59 | ///
60 | ///
61 | ///
62 | private void OK_Button_Click(object sender, EventArgs e)
63 | {
64 | this.DialogResult = DialogResult.OK;
65 | this.Close();
66 | }
67 |
68 | ///
69 | /// "キャンセル"を押下した際の処理
70 | ///
71 | ///
72 | ///
73 | private void Cancel_Button_Click(object sender, EventArgs e)
74 | {
75 | this.DialogResult= DialogResult.Cancel;
76 | this.Close();
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Form/SettingsForm.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 |
122 |
123 | AAABAAEAgIAAAAAAGAAoyAAAFgAAACgAAACAAAAAAAEAAAEAGAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAA
124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
134 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
136 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
138 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
139 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
140 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
141 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
142 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
143 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
144 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
145 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
147 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
148 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
149 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
152 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
153 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
154 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
157 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
159 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
160 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
162 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
163 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
164 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
165 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
166 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
167 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
168 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
169 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
170 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
171 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
172 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
173 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
174 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
176 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
177 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
178 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
179 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
180 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
181 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
182 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
184 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
185 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
191 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
192 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
193 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
195 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
196 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
197 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
198 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
199 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
200 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
201 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
202 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
203 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
204 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
205 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
206 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
207 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
208 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
209 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
210 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
211 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
212 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
213 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
214 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
215 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
216 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
217 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
218 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
219 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
220 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
221 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
222 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
223 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
224 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
225 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
226 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
227 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
228 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
229 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
230 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
231 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
232 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
233 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
234 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
235 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
236 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
237 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
238 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
239 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
240 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
241 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
242 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
243 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
244 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
245 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
246 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
247 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
248 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
249 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
250 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
251 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
252 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
253 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
254 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
255 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
256 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
257 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
258 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
259 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
260 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
261 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
262 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
263 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
264 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
265 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
266 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
267 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
268 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
269 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
270 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
271 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
272 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
273 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
274 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
275 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
276 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
277 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
278 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
279 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
280 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
281 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
282 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
283 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
284 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
285 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
286 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
287 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
288 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
289 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
290 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
291 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
292 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
293 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
294 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
295 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
296 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
297 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
298 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
299 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
300 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
301 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
302 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
303 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
304 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
305 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
306 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
307 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
308 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
309 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
310 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
311 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
312 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
313 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
314 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
315 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
316 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
317 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
318 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
319 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
320 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
321 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
322 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
323 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
324 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
325 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
326 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
327 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
328 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
329 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
330 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
331 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
332 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
333 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
334 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
335 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
336 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
337 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
338 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
339 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
340 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
341 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
342 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
343 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
344 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
345 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
346 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
347 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
348 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
349 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
350 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
351 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
352 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
353 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
354 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
355 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
356 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
357 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
358 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
359 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
360 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
361 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
362 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
363 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
364 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
365 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
366 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
367 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
368 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
369 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
370 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
371 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
372 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
373 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
374 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
375 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
376 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
377 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
378 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
379 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
380 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
381 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
382 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
383 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
384 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
385 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
386 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
387 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
388 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
389 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
390 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
391 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
392 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
393 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
394 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
395 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
396 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
397 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
398 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
399 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
400 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
401 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
402 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
403 | ZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
404 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
405 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
406 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
407 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
408 | AAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYz
409 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
410 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
411 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
412 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
413 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
414 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYz
415 | ZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAAAAA
416 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
417 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
418 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
419 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
420 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
421 | AAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYzZmYAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
422 | mQAAmQAzZmYzZmYzZmYzZmYzZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
423 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
424 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
425 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
426 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
427 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYzZmYzZmYzZmYzZmYzZmYAmQAAmQAAmQAA
428 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAzZmYzZmYAAAAAAAAAAAAAAAAAAAAA
429 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
430 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
431 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
432 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
433 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZmYzZmYz
434 | ZmYzZmYAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
435 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
436 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
437 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
438 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
439 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
440 | AAAAAAAAAAAAAAAAAAAAAAAzZmYAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
441 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
442 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
443 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
444 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
445 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
446 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
447 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
448 | mQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
449 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
450 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
451 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
452 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
453 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
454 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
455 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAA
456 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
457 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
458 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
459 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
460 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAA
461 | AAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
462 | mQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
463 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
464 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAA
465 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
466 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
467 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
468 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAA
469 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
470 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
471 | AAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
472 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
473 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAmQAA
474 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
475 | mQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
476 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
477 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
478 | mQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
479 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
480 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
481 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAA
482 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
483 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAA
484 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAmQAAmQAAmQAAmQAA
485 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
486 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
487 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
488 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
489 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
490 | AAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
491 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
492 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
493 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
494 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
495 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
496 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
497 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
498 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
499 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
500 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
501 | mQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
502 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAA
503 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
504 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
505 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
506 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
507 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
508 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
509 | AAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
510 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
511 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
512 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
513 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAA
514 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
515 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
516 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
517 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
518 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
519 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
520 | mQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
521 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAA
522 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
523 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
524 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
525 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
526 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAA
527 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
528 | AAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
529 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
530 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
531 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
532 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
533 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
534 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
535 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
536 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
537 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
538 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
539 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
540 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAA
541 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
542 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
543 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
544 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
545 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAA
546 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
547 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
548 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
549 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
550 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
551 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
552 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
553 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
554 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
555 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
556 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
557 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
558 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAA
559 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
560 | AAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
561 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
562 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
563 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
564 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
565 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
566 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
567 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
568 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
569 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
570 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
571 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
572 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
573 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
574 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
575 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
576 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
577 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAA
578 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
579 | AAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
580 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
581 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
582 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
583 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
584 | mQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
585 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
586 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
587 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
588 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
589 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
590 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAA
591 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
592 | AAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
593 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
594 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
595 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
596 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
597 | mQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
598 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
599 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
600 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
601 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
602 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
603 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
604 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
605 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
606 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
607 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
608 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
609 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAA
610 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
611 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
612 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
613 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
614 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
615 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
616 | mQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
617 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAA
618 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
619 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
620 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
621 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
622 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
623 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
624 | AAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
625 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
626 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
627 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
628 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
629 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
630 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
631 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
632 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
633 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
634 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
635 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
636 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
637 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
638 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
639 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
640 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
641 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAA
642 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
643 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
644 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
645 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
646 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
647 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
648 | mQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
649 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
650 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
651 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
652 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
653 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
654 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
655 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
656 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
657 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
658 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
659 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
660 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAA
661 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
662 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAA
663 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
664 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
665 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
666 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
667 | mQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
668 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
669 | AAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
670 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
671 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
672 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
673 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
674 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
675 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAA
676 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
677 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
678 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
679 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAA
680 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
681 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
682 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
683 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
684 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
685 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
686 | mQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
687 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
688 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
689 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
690 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
691 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
692 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAA
693 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
694 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
695 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
696 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
697 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
698 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
699 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
700 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
701 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
702 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
703 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
704 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
705 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
706 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
707 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAA
708 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
709 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
710 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
711 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
712 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
713 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
714 | AAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
715 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
716 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
717 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
718 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
719 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
720 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
721 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
722 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
723 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
724 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAA
725 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
726 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
727 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
728 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
729 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
730 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
731 | mQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
732 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
733 | AAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
734 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
735 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
736 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
737 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
738 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
739 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
740 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
741 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
742 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
743 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
744 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
745 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
746 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
747 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
748 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
749 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
750 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
751 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
752 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
753 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
754 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
755 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
756 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAA
757 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
758 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAA
759 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
760 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
761 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
762 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
763 | mQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
764 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
765 | AAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
766 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
767 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
768 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
769 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
770 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
771 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
772 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
773 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
774 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
775 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAA
776 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
777 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
778 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
779 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
780 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
781 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
782 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
783 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
784 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
785 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
786 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
787 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
788 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAA
789 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
790 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
791 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
792 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
793 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
794 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
795 | mQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
796 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
797 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
798 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
799 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
800 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
801 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
802 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
803 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAA
804 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
805 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
806 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
807 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAA
808 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
809 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
810 | AAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
811 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
812 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
813 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
814 | mQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
815 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
816 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
817 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
818 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
819 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
820 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
821 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
822 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
823 | AAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
824 | mQAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
825 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
826 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAA
827 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
828 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
829 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
830 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
831 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
832 | mQAAmQAAmQAAmQAAmQAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
833 | mQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
834 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
835 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
836 | AAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAmQAAmQAA
837 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
838 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
839 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
840 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
841 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
842 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAA
843 | AAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
844 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
845 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAA
846 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
847 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
848 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
849 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAA
850 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
851 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
852 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
853 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
854 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
855 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
856 | AAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
857 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAA
858 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
859 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
860 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
861 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
862 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
863 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
864 | mQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
865 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
866 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
867 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
868 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
869 | AAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
870 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
871 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
872 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
873 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
874 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
875 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
876 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAA
877 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
878 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
879 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
880 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
881 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAA
882 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
883 | mQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
884 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
885 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
886 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
887 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
888 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
889 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
890 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
891 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
892 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
893 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
894 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAA
895 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAA
896 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
897 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
898 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
899 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
900 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
901 | AAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAA
902 | mQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
903 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
904 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
905 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
906 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
907 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
908 | mQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
909 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
910 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
911 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
912 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
913 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
914 | AAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAAAAAAAAA
915 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
916 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
917 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
918 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
919 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
920 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAmQAAmQAAmQAA
921 | mQAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
922 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
923 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
924 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
925 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
926 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
927 | AAAAAAAAAAAAAAAAAAAAmQAAmQAAmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
928 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
929 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
930 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
931 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
932 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
933 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
934 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
935 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
936 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
937 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
938 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
939 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
940 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
941 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
942 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
943 | AAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////
944 | ////////////////////////////////+AAAA/////////////////gAAAP////////////////4AAAD
945 | ////////////////+AAAA/////////////////gAAAP////////////////4AAAD////////////////
946 | +AAAA/////////////////gAAAP////////////////4AAAD////////////////+AAAA///////////
947 | //////gAAAP////////////////4AAAD////////////////+AAAA/////////////////gAAAP/////
948 | ///////////4AAAD////////////////+AAAA/////////////////gAAAP////////////////4AAAD
949 | ////////////////+AAAA/////////////////gAAAP////////////////4AAAD////////////////
950 | +AAAA/////////////////gAAAP////////////////4AAAD////////////////+AAAA///////////
951 | //////gAAAP////////////////4AAAD////////////////+AAAA/////////////////gAAAP/////
952 | ///////////4AAAD////////////////+AAAA/////////////////gAAAP////////////////4AAAD
953 | ////////////////+AAAA/////////////////gAAAP////////////////4AAAD////////////////
954 | +AAAA/////////////////gAAAP////////////////4AAAD////////////////+AAAA///////////
955 | //////gAAAP////////////////4AAAD////////////////+AAAA/////////////////gAAAP/////
956 | ///////////4AAAD////////////////+AAAA/////////////////gAAAD/+AP////////////wAAAA
957 | f+AAf///////////wAAAAD+AAB/////////f/4AAAAAeAAAD///////+AP8AAAAADAAAAP//////+AB/
958 | AAAAAAAAAAB//////+AABgAAAAAAAAAAP/////+AAAAAAAAAAAAAAB//////AAAAAAAAAAAAAAAP////
959 | /AAAAAAAAAAAAAAAD/////gAAAAAAAAAAAAAAAf////wAAAAAAAAAAAAAAAH////4AAAAAAAAAAAAAAA
960 | A////+AAAAAAAAAAAAAAAAP////AAAAAAAAAAAAAAAAD////wAAAAAAAAAAAAAAAA////8AAAAAAAAAA
961 | AAAAAAP///+AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAAP///+AAAAA
962 | AAAAAAAAAAAD////gAAAAAAAAAAAAAAAB////4AAAAAAAAAAAAAAAAf///+AAAAAAAAAAAAAAAAH////
963 | gAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAAP////wAAAAAAAAAAAAAAA
964 | H////+AAAAAAAAAAAAAAAB/////gAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAAP/////AAAAAAAAAA
965 | AAAAAH/////4AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAB//////4AAAAAAAAAAAAAB///////gAAA
966 | AAAAAAAAAD///////+AAAAAAAAAAAAA////////8AAAAAAAAAAAAD///////+AAAAAAAAAAAAAf/////
967 | //AAAAAAAAAAAAAD///////gAAAAAAAAAAAAAf//////4AAAAAAAAAAAAAH//////8AAAAAAAAAAAAAB
968 | ///////AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAB//////8AAAAAAAAA
969 | AAAAAf//////AAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf//////AAAA
970 | AAAAAAAAAAP//////wAAAAAAAAAAAAAD//////8AAAAAAAAAAAAAA///////AAAAAAAAAAAAAAf/////
971 | /4AAAAAAAAAAAAAH///////AAAAAAAAAAAAAD///////wAAAAAAAAAAAAB///////+AAAAAAAAAAAAA/
972 | ///////wAAAAAAAAAAAAf////////AAAgAAAAAAAAP////////4AAYAAAAAIAAH/////////gAeAAAAA
973 | H4AH//////////wfgAAAAB/wP////////////8AAAAA////////////////AAAAAf///////////////
974 | 4AAAAH////////////////AAAAD////////////////wAAAA////////////////+AAAAf//////////
975 | //////wAAAP////////////////8AAAD/////////////////wAAB/////////////////+AAB//////
976 | ////////////4AB///////////////////gB////////////////////H///////////////////////
977 | /////////////////////////////w==
978 |
979 |
980 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Icon/AppIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Icon/AppIcon.ico
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/AddBrotherNodeButtonImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/AddBrotherNodeButtonImage.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/AddChildNodeButtonImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/AddChildNodeButtonImage.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/CollapseTreeView_ToolStripButton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/CollapseTreeView_ToolStripButton.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/ConvertTreeViewToTextButtonImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/ConvertTreeViewToTextButtonImage.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/ExpandTreeView_ToolStripButton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/ExpandTreeView_ToolStripButton.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/RemoveSelectedNodeButtonImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/RemoveSelectedNodeButtonImage.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/SwapNextNodeButtonImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/SwapNextNodeButtonImage.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Image/SwapPreviousNodeButtonImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kossyprg/ascii-tree-maker/9105af06b46f39cd6b6d5ff86dfd38866ac6af92/AsciiTreeMaker/Image/SwapPreviousNodeButtonImage.png
--------------------------------------------------------------------------------
/AsciiTreeMaker/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | internal static class Program
7 | {
8 | ///
9 | /// The main entry point for the application.
10 | ///
11 | [STAThread]
12 | static void Main()
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new Mainform());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("AsciiTreeMaker")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("HP")]
11 | [assembly: AssemblyProduct("AsciiTreeMaker")]
12 | [assembly: AssemblyCopyright("Copyright © HP 2024")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("163b360b-efac-4367-a668-da2fff7d4658")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace AsciiTreeMaker.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AsciiTreeMaker.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Properties/Resources.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 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace AsciiTreeMaker.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/AppBaseInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace AsciiTreeMaker.Source
8 | {
9 | /*
10 | * AppBaseInfo クラス
11 | * アプリの基本的な情報を保持するだけのクラス
12 | */
13 | public static class AppBaseInfo
14 | {
15 | public const string APP_NAME = "アスキーツリーメーカー";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/FileOperation/DirectoryStructureCreator.cs:
--------------------------------------------------------------------------------
1 |
2 | using System.IO;
3 | using System.Windows.Forms;
4 |
5 | namespace AsciiTreeMaker
6 | {
7 | /*
8 | * DirectoryStructureCreator クラス
9 | * ディレクトリ構成を表すツリービューを生成する機能を有する
10 | */
11 | internal static class DirectoryStructureCreator
12 | {
13 | ///
14 | /// ディレクトリ構成を表すツリービューを生成する
15 | ///
16 | ///
17 | ///
18 | /// 起点となるフォルダのフルパス
19 | ///
20 | public static bool CreateDirectoryStructureTreeView(TreeView treeView, NodeEditor nodeEditor, string rootFolderPath)
21 | {
22 | // 読み込みが完了するまで再描画しない
23 | treeView.BeginUpdate();
24 |
25 | nodeEditor.ClearAllNodes();
26 |
27 | // 樹形図の生成に失敗したら、中途半端な樹形図を作ってもしょうがないので初期化する
28 | if (!CreateTreeNodeFromFolder(rootFolderPath, treeView.Nodes, nodeEditor))
29 | {
30 | nodeEditor.InitializeTreeViewContents();
31 | treeView.EndUpdate();
32 | return false;
33 | }
34 |
35 | treeView.EndUpdate();
36 | return true;
37 | }
38 |
39 | ///
40 | /// フォルダからツリーノードを作成する
41 | /// 内部で再帰呼び出しを行う
42 | ///
43 | /// 起点となるフォルダのフルパス
44 | ///
45 | ///
46 | /// 樹形図の生成に失敗したら false
47 | private static bool CreateTreeNodeFromFolder(string rootFolderPath, TreeNodeCollection treeNodes, NodeEditor nodeEditor)
48 | {
49 | NodeLabel rootFolderLabel = new NodeLabel(Path.GetFileName(rootFolderPath));
50 | TreeNode node = nodeEditor.AddNode(treeNodes, rootFolderLabel);
51 |
52 | string[] folders;
53 | string[] files;
54 |
55 | try
56 | {
57 | folders = Directory.GetDirectories(rootFolderPath);
58 | files = Directory.GetFiles(rootFolderPath);
59 | }
60 | catch (System.UnauthorizedAccessException)
61 | {
62 | // アクセス権がないファイルを読み込もうとするとここに来る
63 | // Cドライブ直下のフォルダを選択した際に発生しやすい
64 | // 中途半端な樹形図を作ってもしょうがないので、生成を断念する
65 | MessageBox.Show("ファイルのアクセスに失敗しました\n",
66 | "エラー",
67 | MessageBoxButtons.OK,
68 | MessageBoxIcon.Error);
69 | return false;
70 | }
71 |
72 | foreach (string f in folders)
73 | {
74 | if (!CreateTreeNodeFromFolder(f, node.Nodes, nodeEditor))
75 | {
76 | return false;
77 | }
78 | }
79 |
80 | foreach (string file in files)
81 | {
82 | NodeLabel fileNodeLabel = new NodeLabel(Path.GetFileName(file));
83 | nodeEditor.AddNode(node.Nodes, fileNodeLabel);
84 | }
85 |
86 | return true;
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/FileOperation/EditingFile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | /*
7 | * EditingFile クラス
8 | * 編集中のファイルの情報を管理する
9 | */
10 | internal class EditingFile
11 | {
12 | private const string INITIAL_FILE_NAME = "Untitled.xml";
13 | private const string EMPTY_FILE_PATH = "";
14 |
15 | private string _filepath;
16 | private bool _isSaved;
17 |
18 | public event EventHandler EditFileStatusChanged;
19 |
20 | ///
21 | /// コンストラクタ
22 | ///
23 | ///
24 | public EditingFile(in string editingFilepath = EMPTY_FILE_PATH, in bool isSaved = true)
25 | {
26 | _isSaved = isSaved;
27 | UpdatePath(editingFilepath);
28 | }
29 |
30 | ///
31 | /// 編集中ファイルの状態を初期化する
32 | ///
33 | /// 保存済みの扱いなら true
34 | public void Initialize(bool isSaved = true)
35 | {
36 | UpdatePath(EMPTY_FILE_PATH);
37 | UpdateSaveState(isSaved);
38 | }
39 |
40 | ///
41 | /// ファイルパスを更新する
42 | ///
43 | ///
44 | public void UpdatePath(in string filepath)
45 | {
46 | _filepath = filepath;
47 | SaveStateOrFilePathChanged();
48 | }
49 |
50 | ///
51 | /// ファイルパスを取得する
52 | ///
53 | ///
54 | public string GetPath()
55 | {
56 | if (this.IsNotDefined())
57 | {
58 | // 未定義の状態でパスは取得できない
59 | throw new InvalidOperationException();
60 | }
61 | return _filepath;
62 | }
63 |
64 | ///
65 | /// ファイル名を取得する
66 | ///
67 | ///
68 | public string GetName()
69 | {
70 | if (this.IsNotDefined())
71 | {
72 | return INITIAL_FILE_NAME;
73 | }
74 |
75 | return Path.GetFileName(_filepath);
76 | }
77 |
78 | ///
79 | /// ファイルの保存状態を更新する
80 | ///
81 | ///
82 | public void UpdateSaveState(bool isSaved)
83 | {
84 | if (_isSaved != isSaved)
85 | {
86 | _isSaved = isSaved;
87 | SaveStateOrFilePathChanged();
88 | }
89 | }
90 |
91 | ///
92 | /// 保存されていれば true
93 | ///
94 | ///
95 | public bool IsSaved()
96 | {
97 | return _isSaved;
98 | }
99 |
100 | ///
101 | /// ファイルパスが未定義なら true
102 | ///
103 | ///
104 | public bool IsNotDefined()
105 | {
106 | return string.IsNullOrEmpty(_filepath);
107 | }
108 |
109 | ///
110 | /// 変更通知のメソッド
111 | ///
112 | protected virtual void SaveStateOrFilePathChanged()
113 | {
114 | // イベントを発生させる
115 | EditFileStatusChanged?.Invoke(this, EventArgs.Empty);
116 | }
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/FileOperation/ExportXmlFile.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 | using System.Xml;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | /*
7 | * ExportXmlFile クラス
8 | * XML形式で出力する機能を有する
9 | */
10 | internal static class ExportXmlFile
11 | {
12 | ///
13 | /// 樹形図をXML形式で出力する
14 | ///
15 | ///
16 | /// 完全パス
17 | public static void SaveTreeViewAsXmlFile(System.Windows.Forms.TreeView treeView, string filepath)
18 | {
19 | XmlDocument exportXmlDocument = new XmlDocument();
20 |
21 | // XMLヘッダ出力(バージョン 1.0, エンコード UTF-8)
22 | XmlDeclaration xmlDeclaration = exportXmlDocument.CreateXmlDeclaration("1.0", "UTF-8", null);
23 | exportXmlDocument.AppendChild(xmlDeclaration);
24 |
25 | XmlElement xmlRoot = exportXmlDocument.CreateElement("TreeViewData"); // ルート要素を作成
26 |
27 | // 最上位のノードを追加していく
28 | // 内部で深さ優先探索する
29 | foreach (TreeNode rootNode in treeView.Nodes)
30 | {
31 | XmlElement xmlNode = CreateXmlNode(exportXmlDocument, rootNode);
32 | xmlRoot.AppendChild(xmlNode);
33 | }
34 |
35 | // ルート要素をドキュメントに追加
36 | exportXmlDocument.AppendChild(xmlRoot);
37 |
38 | // ファイルに出力
39 | exportXmlDocument.Save(filepath);
40 | }
41 |
42 | ///
43 | /// TreeNodeをXML要素に変換する
44 | ///
45 | ///
46 | ///
47 | ///
48 | private static XmlElement CreateXmlNode(XmlDocument xmlDoc, TreeNode treeNode)
49 | {
50 | XmlElement xmlNode = xmlDoc.CreateElement("Node");
51 | xmlNode.SetAttribute("Text", treeNode.Text);
52 |
53 | // 子ノードがある場合、再帰的に処理する
54 | foreach (TreeNode childNode in treeNode.Nodes)
55 | {
56 | XmlElement xmlChildNode = CreateXmlNode(xmlDoc, childNode);
57 | xmlNode.AppendChild(xmlChildNode);
58 | }
59 |
60 | return xmlNode;
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/FileOperation/FileManager.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace AsciiTreeMaker
4 | {
5 | /*
6 | * FileManager クラス
7 | * ファイルの保存状態を監視し、
8 | * XMLファイルの読み込み、書き出し命令を出す
9 | */
10 | internal class FileManager
11 | {
12 | private readonly NodeEditor nodeEditor;
13 | private readonly System.Windows.Forms.TreeView treeView;
14 | public EditingFile editingFile;
15 |
16 | ///
17 | /// コンストラクタ
18 | ///
19 | ///
20 | ///
21 | public FileManager(System.Windows.Forms.TreeView treeView, EditingFile editingFile)
22 | {
23 | nodeEditor = new NodeEditor(treeView);
24 | this.treeView = treeView;
25 | this.editingFile = editingFile;
26 | }
27 |
28 | ///
29 | /// 指定したファイルの保存を行う
30 | /// 指定がない場合は上書き保存を実行する
31 | ///
32 | ///
33 | /// 保存に成功したら true
34 | public bool Save(string path = null)
35 | {
36 | if (path == null && editingFile.IsNotDefined())
37 | {
38 | // 上書き保存できない
39 | // Mainform側で名前を付けて保存を実行させる
40 | return false;
41 | }
42 |
43 | if (path == null)
44 | {
45 | // 上書き保存
46 | path = editingFile.GetPath();
47 | ExportXmlFile.SaveTreeViewAsXmlFile(treeView, path);
48 | editingFile.UpdateSaveState(true);
49 | }
50 | else
51 | {
52 | // path として保存
53 | ExportXmlFile.SaveTreeViewAsXmlFile(treeView, path);
54 | editingFile.UpdatePath(path);
55 | editingFile.UpdateSaveState(true);
56 | }
57 |
58 | return true;
59 | }
60 |
61 | ///
62 | /// 初期状態に戻す
63 | /// 新規作成時に実行することを想定
64 | ///
65 | public void InitializeFileState()
66 | {
67 | editingFile.Initialize();
68 | }
69 |
70 | ///
71 | /// ユーザにロードするファイルを尋ねて読み込む
72 | ///
73 | ///
74 | public void AskAndLoadFile()
75 | {
76 | OpenFileDialog openFileDialog = new OpenFileDialog();
77 |
78 | openFileDialog.Title = "ファイルを選択してください";
79 | openFileDialog.Filter = "XMLファイル|*.xml|すべてのファイル|*.*";
80 | openFileDialog.FilterIndex = 0;
81 |
82 | // ダイアログを表示して選択されたファイルを開く
83 | if (openFileDialog.ShowDialog() != DialogResult.OK)
84 | {
85 | return;
86 | }
87 |
88 | string filepath = openFileDialog.FileName;
89 | if (!ImportXmlFile.LoadXmlFileAndCreateTreeView(treeView, nodeEditor, filepath))
90 | {
91 | return;
92 | }
93 |
94 | editingFile.UpdatePath(filepath);
95 | editingFile.UpdateSaveState(true);
96 |
97 | return;
98 | }
99 |
100 | ///
101 | /// ユーザにフォルダを尋ねてフォルダ構成を表す樹形図を生成する
102 | ///
103 | public void AskRootFolderAndCreateDirectoryStructureTreeView()
104 | {
105 | FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
106 | folderBrowserDialog.Description = "フォルダを選択してください";
107 |
108 | if (folderBrowserDialog.ShowDialog() != DialogResult.OK)
109 | {
110 | return;
111 | }
112 |
113 | string folderpath = folderBrowserDialog.SelectedPath;
114 |
115 | // 樹形図の生成に失敗したら、初期状態に戻す
116 | // アクセス権がないファイルにアクセスしたときに発生
117 | if (!DirectoryStructureCreator.CreateDirectoryStructureTreeView(treeView, nodeEditor, folderpath))
118 | {
119 | editingFile.Initialize();
120 | return;
121 | }
122 |
123 | // 生成された樹形図はまだファイル保存してない
124 | bool isSaved = false;
125 | editingFile.Initialize(isSaved);
126 | }
127 |
128 | ///
129 | /// ユーザにファイル名を尋ねて書き出す
130 | ///
131 | ///
132 | public bool AskAndSaveFile()
133 | {
134 | SaveFileDialog saveFileDialog = new SaveFileDialog();
135 |
136 | saveFileDialog.Title = "リストファイルを選択してください";
137 | saveFileDialog.FileName = "*.xml";
138 | saveFileDialog.Filter = "XMLファイル|*.xml|すべてのファイル|*.*";
139 | saveFileDialog.FilterIndex = 0;
140 | saveFileDialog.RestoreDirectory = false;
141 | saveFileDialog.OverwritePrompt = true;
142 | saveFileDialog.DefaultExt = "XML";
143 | saveFileDialog.AddExtension = true;
144 |
145 | if (saveFileDialog.ShowDialog() != DialogResult.OK)
146 | {
147 | return false;
148 | }
149 |
150 | string filepath = saveFileDialog.FileName;
151 | Save(filepath);
152 |
153 | return true;
154 | }
155 |
156 | ///
157 | /// 樹形図に変更が加わった際のファイル側の処理
158 | ///
159 | public void TreeViewHasChanged()
160 | {
161 | bool isSaved = false;
162 | editingFile.UpdateSaveState(isSaved);
163 | }
164 | }
165 | }
166 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/FileOperation/ImportXmlFile.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 | using System.Xml;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | /*
7 | * ImportXmlFile クラス
8 | * XMLファイルを読み込み樹形図を構成する機能を有する
9 | */
10 | internal static class ImportXmlFile
11 | {
12 | private const string NODETEXT_IF_FAILED_TO_LOAD = "(ノードの復元に失敗しました)";
13 |
14 | ///
15 | /// 指定されたパスにある XML ファイルを読み込んで樹形図を構成する
16 | ///
17 | ///
18 | ///
19 | /// XMLファイルのフルパス
20 | ///
21 | public static bool LoadXmlFileAndCreateTreeView(System.Windows.Forms.TreeView treeView, NodeEditor nodeEditor, string filepath)
22 | {
23 | XmlDocument xmlDoc = new XmlDocument();
24 |
25 | try
26 | {
27 | // XMLファイルを読み込む
28 | xmlDoc.Load(filepath);
29 | }
30 | catch (XmlException ex)
31 | {
32 | MessageBox.Show("XMLファイルの読み込み中にエラーが発生しました \n\n詳細\n" + ex.Message,
33 | "エラー",
34 | MessageBoxButtons.OK,
35 | MessageBoxIcon.Error);
36 | return false;
37 | }
38 |
39 | // 読み込みが完了するまで再描画しない
40 | treeView.BeginUpdate();
41 |
42 | nodeEditor.ClearAllNodes();
43 |
44 | // XMLのルート要素から再帰的にTreeViewを構築する
45 | foreach (XmlNode xmlNode in xmlDoc.DocumentElement.ChildNodes)
46 | {
47 | CreateTreeNodeFromXml(nodeEditor, xmlNode, treeView.Nodes);
48 | }
49 |
50 | treeView.EndUpdate();
51 | return true;
52 | }
53 |
54 | ///
55 | /// XML のノードから樹形図のノードを生成する
56 | /// 内部で再帰呼び出しを行う
57 | ///
58 | ///
59 | ///
60 | ///
61 | ///
62 | private static TreeNode CreateTreeNodeFromXml(NodeEditor nodeEditor, XmlNode xmlNode, TreeNodeCollection treeNodes)
63 | {
64 | // 属性がおかしい場合、失敗したことを表す文字列を埋め込んで動作は続けるものとする
65 | string nodeText = (xmlNode.Attributes["Text"] != null) ? xmlNode.Attributes["Text"].Value : NODETEXT_IF_FAILED_TO_LOAD;
66 |
67 | NodeLabel nodeLabel = new NodeLabel(nodeText);
68 | TreeNode treeNode = nodeEditor.AddNode(treeNodes, nodeLabel);
69 |
70 | // 子ノードがある場合、再帰的に処理する
71 | foreach (XmlNode xmlChildNode in xmlNode.ChildNodes)
72 | {
73 | CreateTreeNodeFromXml(nodeEditor, xmlChildNode, treeNode.Nodes);
74 | }
75 |
76 | return treeNode;
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/TextFormatTree/TextFormatTreeBranchLength.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace AsciiTreeMaker
4 | {
5 | /*
6 | * TextFormatTreeBranchLength クラス
7 | * テキスト変換後の樹形図の枝の長さ
8 | */
9 | public class TextFormatTreeBranchLength
10 | {
11 | private static readonly int MIN_LENGTH = 0;
12 | private static readonly int MAX_LENGTH = 5;
13 | private static readonly int DEFAULT_LENGTH = 2;
14 | public int Value { get; private set; }
15 |
16 | ///
17 | /// コンストラクタ
18 | ///
19 | /// 枝の長さ
20 | public TextFormatTreeBranchLength(in int branchLength)
21 | {
22 | if (branchLength < MIN_LENGTH || branchLength > MAX_LENGTH)
23 | {
24 | throw new ArgumentOutOfRangeException("TextFormatTreeBranchLength");
25 | }
26 |
27 | Value = branchLength;
28 | }
29 |
30 | ///
31 | /// 既定値の枝の長さを返す
32 | ///
33 | ///
34 | public static TextFormatTreeBranchLength DefaultTextFormatTreeBranchLength()
35 | {
36 | return new TextFormatTreeBranchLength(DEFAULT_LENGTH);
37 | }
38 |
39 | ///
40 | /// オブジェクトのコピーを渡す
41 | ///
42 | ///
43 | ///
44 | public static TextFormatTreeBranchLength Copy(in TextFormatTreeBranchLength branchLength)
45 | {
46 | return new TextFormatTreeBranchLength(branchLength.Value);
47 | }
48 |
49 | ///
50 | /// 枝の長さを更新する
51 | ///
52 | ///
53 | public void Update(in TextFormatTreeBranchLength branchLength)
54 | {
55 | Value = branchLength.Value;
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/TextFormatTree/TextFormatTreeDesigner.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace AsciiTreeMaker
4 | {
5 | /*
6 | * TextFormatTreeDesigner クラス
7 | * テキストベースの樹形図のデザインを変える
8 | */
9 | internal class TextFormatTreeDesigner
10 | {
11 | public string LastNodeBranch { get; private set; } // "└── "
12 | public string IntermediateNodeBranch { get; private set; } // "├── "
13 | public string VerticalLine { get; private set; } // "│ "
14 | public string Blank { get; private set; } // " "
15 |
16 | private readonly TextFormatTreeBranchLength textFormatTreeBranchLength;
17 | private static string branchString = "─";
18 |
19 | ///
20 | /// コンストラクタ
21 | ///
22 | /// 枝の長さ
23 | public TextFormatTreeDesigner(in TextFormatTreeBranchLength textFormatTreeBranchLength)
24 | {
25 | this.textFormatTreeBranchLength = textFormatTreeBranchLength;
26 | SetupTextFormatTreeDesign();
27 | }
28 |
29 | ///
30 | /// 枝の長さを変える
31 | ///
32 | /// 枝の長さ
33 | public void UpdateBranchLength(in TextFormatTreeBranchLength branchLength)
34 | {
35 | textFormatTreeBranchLength.Update(branchLength);
36 | SetupTextFormatTreeDesign();
37 | }
38 |
39 | ///
40 | /// テキストベースの樹形図で用いる枝のデザインを決める
41 | ///
42 | private void SetupTextFormatTreeDesign()
43 | {
44 | LastNodeBranch = "└";
45 | LastNodeBranch += string.Concat(Enumerable.Repeat(branchString, textFormatTreeBranchLength.Value));
46 | LastNodeBranch += " ";
47 |
48 | IntermediateNodeBranch = "├";
49 | IntermediateNodeBranch += string.Concat(Enumerable.Repeat(branchString, textFormatTreeBranchLength.Value));
50 | IntermediateNodeBranch += " ";
51 |
52 | VerticalLine = "│";
53 | VerticalLine += string.Concat(Enumerable.Repeat(" ", textFormatTreeBranchLength.Value + 1));
54 |
55 | Blank = new string(' ', textFormatTreeBranchLength.Value + 2);
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/TextFormatTree/TreeConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 | using System.Windows.Forms;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | /*
7 | * TreeConverter クラス
8 | * 樹形図をテキスト形式へ変換する機能を実現する
9 | */
10 | internal class TreeConverter
11 | {
12 | private readonly StringBuilder TextFormatTree = new StringBuilder();
13 | private readonly System.Windows.Forms.TreeView treeView;
14 | private TextFormatTreeDesigner textFormatTreeDesigner;
15 |
16 | // lastChildFlag が 64 bitなので、level = 0,1,...,63 までの階層ならテキスト変換が正常に行われる
17 | private readonly int MAX_LEVEL = 63;
18 | private bool _over_level = false;
19 |
20 | ///
21 | /// コンストラクタ
22 | ///
23 | ///
24 | ///
25 | public TreeConverter(in TreeView treeView, in TextFormatTreeDesigner textFormatTreeDesigner)
26 | {
27 | this.treeView = treeView;
28 | this.textFormatTreeDesigner = textFormatTreeDesigner;
29 | }
30 |
31 | ///
32 | /// 作成した樹形図をテキスト形式へ変換する
33 | ///
34 | /// テキスト形式の樹形図のデザイン
35 | ///
36 | public string ConvertTreeToText(in TextFormatTreeDesigner textFormatTreeDesigner)
37 | {
38 | this.textFormatTreeDesigner = textFormatTreeDesigner;
39 |
40 | // テキスト変換後の樹形図を一度削除する
41 | TextFormatTree.Clear();
42 |
43 | // 階層の上限値を超えていないかを確認する
44 | _over_level = false;
45 | ConvertNodesToText(treeView.Nodes); // 0 レベルからスタート
46 |
47 | // 許容できる階層を超えた場合はメッセージを出す
48 | // 変換を諦めたところ以外はそのまま出力する
49 | if (_over_level == true)
50 | {
51 | string message = string.Format("許容できる階層の数({0})を超えたため、一部のノードが変換されません", MAX_LEVEL + 1);
52 | MessageBox.Show(message);
53 | }
54 |
55 | return TextFormatTree.ToString();
56 | }
57 |
58 | ///
59 | /// nodes 以下のノードをテキスト形式に変換する
60 | /// 内部で再帰的に処理している
61 | /// 最上位のノードを渡せば、木全体を変換することになる
62 | ///
63 | /// ノード
64 | /// 親ノードからの伸ばし棒を表示するか否かを管理する値
65 | private void ConvertNodesToText(TreeNodeCollection nodes, ulong lastChildFlag = 0UL)
66 | {
67 | // ノードの階層レベルを取得する
68 | // level = 0 からスタート
69 | int level = nodes[0].Level;
70 |
71 | // 許容できる階層を超えた場合は変換を断念する
72 | if (level > MAX_LEVEL)
73 | {
74 | _over_level = true;
75 | return;
76 | }
77 |
78 | // nodes の兄弟ノードの個数
79 | int n_brothers = nodes.Count;
80 |
81 | for (int i = 0; i < n_brothers; i++)
82 | {
83 | // nodes[i] が nodes の最後の兄弟ノードなら、親ノードからの伸ばし棒は不要
84 | // 伸ばし棒が不要なレベルに 1 を立てる
85 | if (i == n_brothers - 1 && level >= 1)
86 | {
87 | lastChildFlag |= (1UL << (level - 1));
88 | }
89 |
90 | // nodes[i] をテキストへ変換
91 | ConvertOneNodeToText(nodes[i].Text, level, i, n_brothers, lastChildFlag);
92 |
93 | // 子ノードがあるなら、それらを変換
94 | if (nodes[i].Nodes.Count > 0)
95 | {
96 | ConvertNodesToText(nodes[i].Nodes, lastChildFlag);
97 | }
98 | }
99 | }
100 |
101 | ///
102 | /// 特定のノードをテキストへ変換する
103 | ///
104 | /// ノードの文字列
105 | /// ノードのレベル(level >= 0)
106 | /// 兄弟ノードのうち何個目のノードか(0 <= cnt <= n_brothers - 1)
107 | /// 兄弟ノードの個数
108 | /// 親ノードからの伸ばし棒を表示するか否かを管理する値
109 | private void ConvertOneNodeToText(string nodeText, int level, int cnt, int n_brothers, ulong lastChildFlag)
110 | {
111 | StringBuilder sb = new StringBuilder();
112 |
113 | for (int i = 0; i < level - 1; i++)
114 | {
115 | // 親ノードからの伸ばし棒を表示するかを判定する
116 | if ((lastChildFlag & (1UL << i)) == 0)
117 | {
118 | // 親ノードからの伸ばし棒を表示
119 | sb.AppendFormat(textFormatTreeDesigner.VerticalLine);
120 | }
121 | else
122 | {
123 | sb.AppendFormat(textFormatTreeDesigner.Blank);
124 | }
125 | }
126 |
127 | if (level > 0)
128 | {
129 | if (cnt == n_brothers - 1)
130 | {
131 | // 最後の兄弟ノード
132 | sb.AppendFormat(textFormatTreeDesigner.LastNodeBranch);
133 | }
134 | else
135 | {
136 | sb.AppendFormat(textFormatTreeDesigner.IntermediateNodeBranch);
137 | }
138 | }
139 |
140 | sb.Append(nodeText);
141 |
142 | // 末尾に改行を付けながら、TextFormatTree へ格納していく
143 | TextFormatTree.AppendLine(sb.ToString());
144 |
145 | // デバッグ用
146 | //Console.WriteLine(sb.ToString());
147 | }
148 | }
149 | }
150 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/TreeViewEdit/NodeEditor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace AsciiTreeMaker
5 | {
6 | /*
7 | * NodeEditor クラス
8 | * 樹形図の編集する機能を実現する
9 | */
10 | public class NodeEditor
11 | {
12 | private readonly TreeView treeView;
13 |
14 |
15 | public enum SwapType
16 | {
17 | PREVIOUS, // 1個上のノードと交換
18 | NEXT // 1個下のノードと交換
19 | }
20 |
21 | ///
22 | /// コンストラクタ
23 | ///
24 | ///
25 | public NodeEditor(TreeView treeView)
26 | {
27 | this.treeView = treeView;
28 | }
29 |
30 | ///
31 | /// TreeView の内容を初期化する
32 | ///
33 | public void InitializeTreeViewContents()
34 | {
35 | ClearAllNodes();
36 | AddNode(treeView.Nodes, NodeLabel.InitialNodeLabel(), true);
37 | return;
38 | }
39 |
40 | ///
41 | /// 選択されたノードの兄弟ノードを作成する
42 | ///
43 | /// ノードのテキスト
44 | /// ノードの追加に成功したら true
45 | public bool AddBrotherNode(string nodeText = null)
46 | {
47 | NodeLabel nodeLabel = new NodeLabel(nodeText);
48 |
49 | // 兄弟ノードが選択されていないと追加できない
50 | // Mainform側で例外処理できるようにする
51 | if (treeView.SelectedNode == null)
52 | {
53 | return false;
54 | }
55 |
56 | TreeNode selectedNode = treeView.SelectedNode;
57 |
58 | if (selectedNode.Parent == null)
59 | {
60 | // 親ノードがないなら、最上位層に追加
61 | AddNode(treeView.Nodes, nodeLabel, true);
62 | }
63 | else
64 | {
65 | // 親ノードの子ノードとして追加する
66 | AddNode(selectedNode.Parent.Nodes, nodeLabel, true);
67 | }
68 | return true;
69 | }
70 |
71 | ///
72 | /// 選択されたノードの子ノードを作成する
73 | ///
74 | /// ノードのテキスト
75 | /// ノードの追加に成功したら true
76 | public bool AddChildNode(string nodeText = null)
77 | {
78 | NodeLabel nodeLabel = new NodeLabel(nodeText);
79 |
80 | // 親が選択されていないと子を追加できない
81 | // Mainform側で例外処理できるようにする
82 | if (treeView.SelectedNode == null)
83 | {
84 | return false;
85 | }
86 |
87 | // 選択されているノードの子ノードを追加する
88 | AddNode(treeView.SelectedNode.Nodes, nodeLabel, true);
89 |
90 | return true;
91 | }
92 |
93 | ///
94 | /// 選択状態のノードを削除する
95 | ///
96 | /// 削除に成功したら true
97 | public bool RemoveSelectedNode()
98 | {
99 | // 選択状態のノードがないなら false を返す
100 | // Mainform側で例外処理できるようにするため
101 | if (treeView.SelectedNode == null) return false;
102 |
103 | treeView.SelectedNode.Remove();
104 | return true;
105 | }
106 |
107 | ///
108 | /// 樹形図の全てのノードを削除する
109 | ///
110 | public void ClearAllNodes()
111 | {
112 | treeView.Nodes.Clear();
113 | }
114 |
115 | ///
116 | /// nodes の兄弟ノードを作成する
117 | ///
118 | ///
119 | ///
120 | /// ユーザがノードを追加する処理を行った場合 true, ファイルを読み込むなどの処理は false
121 | ///
122 | public TreeNode AddNode(in TreeNodeCollection nodes, in NodeLabel nodeLabel, in bool isEditing = false)
123 | {
124 | TreeNode node = nodes.Add(nodeLabel.Text);
125 |
126 | // 追加したノードをすぐに編集できるようにする
127 | // こうすることで、テキストを編集する際にノードをクリックする必要がない
128 | if (isEditing == true)
129 | {
130 | node.EnsureVisible();
131 | node.BeginEdit();
132 | treeView.SelectedNode = node;
133 | }
134 | return node;
135 | }
136 |
137 | ///
138 | /// 選択したノードとそれと隣接するノードを交換する
139 | ///
140 | /// 交換するノードの種別
141 | /// 交換に成功したら true
142 | public bool SwapNodes(in SwapType swapType)
143 | {
144 | TreeNode selectedNode = treeView.SelectedNode;
145 | TreeNode targetNode = null;
146 |
147 | switch (swapType)
148 | {
149 | case SwapType.PREVIOUS:
150 | targetNode = selectedNode.PrevNode; // 上方向へスワップ
151 | break;
152 | case SwapType.NEXT:
153 | targetNode = selectedNode.NextNode; // 下方向へスワップ
154 | break;
155 | default:
156 | throw new NotImplementedException();
157 | }
158 |
159 | if (selectedNode == null || targetNode == null)
160 | {
161 | return false;
162 | }
163 |
164 | TreeNode parentNode = selectedNode.Parent;
165 | treeView.BeginUpdate();
166 |
167 | if (parentNode == null)
168 | {
169 | // 選択したノードが最上位のノードであるとき
170 | int x = treeView.Nodes.IndexOf(selectedNode);
171 | int y = treeView.Nodes.IndexOf(targetNode);
172 |
173 | treeView.Nodes.Remove(selectedNode);
174 | treeView.Nodes.Insert(y, selectedNode);
175 |
176 | treeView.Nodes.Remove(targetNode);
177 | treeView.Nodes.Insert(x, targetNode);
178 | }
179 | else
180 | {
181 | int x = parentNode.Nodes.IndexOf(selectedNode);
182 | int y = parentNode.Nodes.IndexOf(targetNode);
183 |
184 | parentNode.Nodes.Remove(selectedNode);
185 | parentNode.Nodes.Insert(y, selectedNode);
186 |
187 | parentNode.Nodes.Remove(targetNode);
188 | parentNode.Nodes.Insert(x, targetNode);
189 | }
190 |
191 | // 選択していたノードを追跡する
192 | treeView.SelectedNode = selectedNode;
193 |
194 | treeView.EndUpdate();
195 |
196 | return true;
197 | }
198 | }
199 | }
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/TreeViewEdit/NodeLabel.cs:
--------------------------------------------------------------------------------
1 | namespace AsciiTreeMaker
2 | {
3 | /*
4 | * NodeLabel クラス
5 | * 各ノードのラベル
6 | */
7 | public class NodeLabel
8 | {
9 | private const string INITIAL_NODE_LABEL = "テキストを入力";
10 | public string Text { get; private set; }
11 |
12 | ///
13 | /// コンストラクタ
14 | ///
15 | /// ラベルのテキスト
16 | public NodeLabel(in string nodeLabel)
17 | {
18 | if (string.IsNullOrEmpty(nodeLabel))
19 | {
20 | Text = INITIAL_NODE_LABEL;
21 | return;
22 | }
23 |
24 | Text = nodeLabel;
25 | }
26 |
27 | ///
28 | /// 生成時のラベル
29 | ///
30 | ///
31 | public static NodeLabel InitialNodeLabel()
32 | {
33 | return new NodeLabel(INITIAL_NODE_LABEL);
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/Warning/IWarning.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace AsciiTreeMaker.Source
4 | {
5 | /*
6 | * IWarning インタフェース
7 | */
8 | public interface IWarning
9 | {
10 | DialogResult ShowWarningMessageBox();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/Warning/NoNodeSelected.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace AsciiTreeMaker.Source
4 | {
5 | /*
6 | * NoNodeSelected クラス
7 | * ノードが選択されていない時の警告
8 | */
9 | internal class NoNodeSelected : IWarning
10 | {
11 | public DialogResult ShowWarningMessageBox()
12 | {
13 | string message = "ノードが選択されていません";
14 |
15 | DialogResult result = MessageBox.Show(message,
16 | AppBaseInfo.APP_NAME,
17 | MessageBoxButtons.OK,
18 | MessageBoxIcon.Warning,
19 | MessageBoxDefaultButton.Button1);
20 | return result;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/AsciiTreeMaker/Source/Warning/TreeViewIsEmpty.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace AsciiTreeMaker.Source
4 | {
5 | /*
6 | * TreeViewIsEmpty クラス
7 | * 樹形図が空の時の警告
8 | */
9 | internal class TreeViewIsEmpty : IWarning
10 | {
11 | public DialogResult ShowWarningMessageBox()
12 | {
13 | string message = "樹形図が空です";
14 |
15 | DialogResult result = MessageBox.Show(message,
16 | AppBaseInfo.APP_NAME,
17 | MessageBoxButtons.OK,
18 | MessageBoxIcon.Warning,
19 | MessageBoxDefaultButton.Button1);
20 | return result;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 kossyprg
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # アスキーツリーメーカー
2 |
3 | 
4 |
5 | 出力されるテキスト形式の樹形図
6 | ```
7 | root
8 | ├── bin
9 | ├── etc
10 | ├── usr
11 | │ └── local
12 | │ └── bin
13 | └── lib
14 | ```
15 | ## アプリ概要
16 |
17 | テキスト形式の樹形図を編集するWindowsアプリです。
18 | GUI操作で樹形図を作成し、テキスト形式へ変換することができます。
19 |
20 |
21 | ↓ Qiitaの紹介記事
22 |
23 | [【個人開発】フォルダ構成図を作るWindowsアプリを作った](https://qiita.com/kossyprg/items/2b6b10223adf34bce194)
24 |
25 | ## 要件
26 |
27 | - Windows
28 |
29 | ## 基本的な使い方
30 |
31 | ### ノードの編集
32 |
33 | 子ノード、兄弟ノードを追加することができます。
34 |
35 | 
36 |
37 | ノードを移動させることができます。
38 |
39 | 
40 |
41 | ノードを削除することができます。
42 |
43 | 
44 |
45 | ### テキスト形式へ変換
46 |
47 | 作成した樹形図はテキスト形式へ変換することができます。
48 |
49 | 
50 |
51 | ### ファイル保存、読み込み
52 |
53 | 作成した樹形図はXML形式で保存できます。
54 | 保存したファイルを読み込むことで、再編集が可能です。
55 |
56 | 
57 |
58 | ## ダウンロード方法
59 |
60 | 本リポジトリの[トップページ](https://github.com/kossyprg/ascii-tree-maker)のReleasesから最新版のアプリをダウンロードしてください。
61 |
62 | exeファイル単体で実行することができます。
63 |
64 | ## 作成者
65 |
66 | [Xアカウント](https://twitter.com/kossy_engineer)
67 |
68 | ## ライセンス
69 |
70 | このソフトウェアは[MITライセンス](https://github.com/kossyprg/ascii-tree-maker/blob/main/LICENSE.txt)の下でリリースされています。
71 |
72 |
73 |
--------------------------------------------------------------------------------