Full Code of fschwiet/ManyConsole for AI

master c9cff98dccc7 cached
1565 files
10.4 MB
2.8M tokens
215 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,228K chars total). Download the full file to get everything.
Repository: fschwiet/ManyConsole
Branch: master
Commit: c9cff98dccc7
Files: 1565
Total size: 10.4 MB

Directory structure:
gitextract_i8ldszcx/

├── .gitignore
├── .nuget/
│   └── packages.config
├── LICENSE.txt
├── ManyConsole/
│   ├── ConsoleCommand.cs
│   ├── ConsoleCommandDispatcher.cs
│   ├── ConsoleHelpAsException.cs
│   ├── Internal/
│   │   ├── ConsoleHelp.cs
│   │   ├── ConsoleRedirectionDetection.cs
│   │   ├── ConsoleUtil.cs
│   │   └── RequiredOptionRecord.cs
│   └── ManyConsole.csproj
├── ManyConsole.Tests/
│   ├── Can_consume_variable_number_of_arguments.cs
│   ├── Can_define_commands_with_aliases.cs
│   ├── Can_have_required_parameters.cs
│   ├── Can_modify_command_behavior_after_parsing_and_before_running.cs
│   ├── Can_overwrite_options_property.cs
│   ├── Can_verify_number_of_arguments_passed_to_command.cs
│   ├── ConsoleModeCommandSpecs/
│   │   └── StatusEchoCommand.cs
│   ├── Console_interface_is_simplified_when_there_is_only_one_command.cs
│   ├── ManyConsole.Tests.csproj
│   ├── Multiple_dispatch_calls_dont_interfere_with_each_other.cs
│   ├── MyStringAssert.cs
│   ├── Show_useful_error_information.cs
│   ├── TestCommand.cs
│   ├── abstract_commands_arent_loaded.cs
│   ├── lets_user_browse_command_help.cs
│   └── show_useful_command_summary.cs
├── ManyConsole.nuspec
├── ManyConsole.sln
├── ManyConsoleModeCommand/
│   ├── ConsoleModeCommand.cs
│   ├── Internal/
│   │   └── CommandLineParser.cs
│   └── ManyConsoleModeCommand.csproj
├── ManyConsoleModeCommand.Test/
│   ├── ConsoleModeCommandSpecs/
│   │   ├── ConsoleModeCommandSpecification.cs
│   │   ├── Should_fail_strictly_on_error_when_running_noninteractive.cs
│   │   ├── Should_give_user_prompt_in_interactive_mode.cs
│   │   ├── Should_interpret_quotes_properly.cs
│   │   └── StatusEchoCommand.cs
│   └── ManyConsoleModeCommand.Test.csproj
├── RunTestsInGUI.ps1
├── SampleConsole/
│   ├── DumpEmlFilesCommand.cs
│   ├── EchoStringsCommand.cs
│   ├── ExampleCommand.cs
│   ├── GetTimeCommand.cs
│   ├── MattsCommand.cs
│   ├── Program.cs
│   ├── SampleConsole.csproj
│   ├── SimpleConsoleModeCommand.cs
│   ├── StatefulConsoleModeCommand.cs
│   ├── ThrowException.cs
│   ├── app.config
│   └── packages.config
├── default.ps1
├── lib/
│   ├── Sasa-v0.9.3/
│   │   ├── CHANGELOG.txt
│   │   ├── Sasa.Arrow.xml
│   │   ├── Sasa.Contracts.xml
│   │   ├── Sasa.Core.xml
│   │   ├── Sasa.Dynamics.xml
│   │   ├── Sasa.Linq.xml
│   │   ├── Sasa.Mime.xml
│   │   ├── Sasa.Net.xml
│   │   ├── Sasa.Operators.xml
│   │   ├── Sasa.Parsing.xml
│   │   ├── Sasa.Serialization.xml
│   │   ├── Sasa.Statistics.xml
│   │   └── Sasa.xml
│   └── Sasa-v0.9.3-docs/
│       ├── CSS/
│       │   ├── Contents.css
│       │   ├── TableOfContents.css
│       │   └── TreeView.css
│       ├── Contents/
│       │   ├── 0/
│       │   │   ├── 0.html
│       │   │   └── 1.html
│       │   ├── 1/
│       │   │   ├── 1.html
│       │   │   ├── 10.html
│       │   │   ├── 100.html
│       │   │   ├── 101.html
│       │   │   ├── 102.html
│       │   │   ├── 103.html
│       │   │   ├── 104.html
│       │   │   ├── 105.html
│       │   │   ├── 106.html
│       │   │   ├── 107.html
│       │   │   ├── 108.html
│       │   │   ├── 109.html
│       │   │   ├── 11.html
│       │   │   ├── 110.html
│       │   │   ├── 111.html
│       │   │   ├── 112.html
│       │   │   ├── 113.html
│       │   │   ├── 114.html
│       │   │   ├── 115.html
│       │   │   ├── 116.html
│       │   │   ├── 117.html
│       │   │   ├── 118.html
│       │   │   ├── 119.html
│       │   │   ├── 12.html
│       │   │   ├── 120.html
│       │   │   ├── 121.html
│       │   │   ├── 122.html
│       │   │   ├── 123.html
│       │   │   ├── 124.html
│       │   │   ├── 125.html
│       │   │   ├── 126.html
│       │   │   ├── 127.html
│       │   │   ├── 128.html
│       │   │   ├── 129.html
│       │   │   ├── 13.html
│       │   │   ├── 130.html
│       │   │   ├── 131.html
│       │   │   ├── 132.html
│       │   │   ├── 133.html
│       │   │   ├── 134.html
│       │   │   ├── 135.html
│       │   │   ├── 136.html
│       │   │   ├── 137.html
│       │   │   ├── 138.html
│       │   │   ├── 139.html
│       │   │   ├── 14.html
│       │   │   ├── 140.html
│       │   │   ├── 141.html
│       │   │   ├── 142.html
│       │   │   ├── 143.html
│       │   │   ├── 144.html
│       │   │   ├── 145.html
│       │   │   ├── 146.html
│       │   │   ├── 147.html
│       │   │   ├── 148.html
│       │   │   ├── 149.html
│       │   │   ├── 15.html
│       │   │   ├── 150.html
│       │   │   ├── 151.html
│       │   │   ├── 152.html
│       │   │   ├── 153.html
│       │   │   ├── 154.html
│       │   │   ├── 155.html
│       │   │   ├── 156.html
│       │   │   ├── 157.html
│       │   │   ├── 158.html
│       │   │   ├── 159.html
│       │   │   ├── 16.html
│       │   │   ├── 160.html
│       │   │   ├── 161.html
│       │   │   ├── 162.html
│       │   │   ├── 163.html
│       │   │   ├── 164.html
│       │   │   ├── 165.html
│       │   │   ├── 166.html
│       │   │   ├── 167.html
│       │   │   ├── 168.html
│       │   │   ├── 169.html
│       │   │   ├── 17.html
│       │   │   ├── 170.html
│       │   │   ├── 171.html
│       │   │   ├── 172.html
│       │   │   ├── 173.html
│       │   │   ├── 174.html
│       │   │   ├── 175.html
│       │   │   ├── 176.html
│       │   │   ├── 177.html
│       │   │   ├── 178.html
│       │   │   ├── 179.html
│       │   │   ├── 18.html
│       │   │   ├── 180.html
│       │   │   ├── 181.html
│       │   │   ├── 182.html
│       │   │   ├── 183.html
│       │   │   ├── 184.html
│       │   │   ├── 185.html
│       │   │   ├── 186.html
│       │   │   ├── 187.html
│       │   │   ├── 188.html
│       │   │   ├── 189.html
│       │   │   ├── 19.html
│       │   │   ├── 190.html
│       │   │   ├── 191.html
│       │   │   ├── 192.html
│       │   │   ├── 193.html
│       │   │   ├── 194.html
│       │   │   ├── 195.html
│       │   │   ├── 196.html
│       │   │   ├── 197.html
│       │   │   ├── 198.html
│       │   │   ├── 199.html
│       │   │   ├── 2.html
│       │   │   ├── 20.html
│       │   │   ├── 200.html
│       │   │   ├── 201.html
│       │   │   ├── 202.html
│       │   │   ├── 203.html
│       │   │   ├── 204.html
│       │   │   ├── 205.html
│       │   │   ├── 206.html
│       │   │   ├── 207.html
│       │   │   ├── 208.html
│       │   │   ├── 209.html
│       │   │   ├── 21.html
│       │   │   ├── 210.html
│       │   │   ├── 211.html
│       │   │   ├── 212.html
│       │   │   ├── 213.html
│       │   │   ├── 214.html
│       │   │   ├── 215.html
│       │   │   ├── 216.html
│       │   │   ├── 217.html
│       │   │   ├── 218.html
│       │   │   ├── 219.html
│       │   │   ├── 22.html
│       │   │   ├── 220.html
│       │   │   ├── 221.html
│       │   │   ├── 222.html
│       │   │   ├── 223.html
│       │   │   ├── 224.html
│       │   │   ├── 225.html
│       │   │   ├── 226.html
│       │   │   ├── 227.html
│       │   │   ├── 228.html
│       │   │   ├── 229.html
│       │   │   ├── 23.html
│       │   │   ├── 230.html
│       │   │   ├── 231.html
│       │   │   ├── 232.html
│       │   │   ├── 233.html
│       │   │   ├── 234.html
│       │   │   ├── 235.html
│       │   │   ├── 236.html
│       │   │   ├── 237.html
│       │   │   ├── 238.html
│       │   │   ├── 239.html
│       │   │   ├── 24.html
│       │   │   ├── 240.html
│       │   │   ├── 241.html
│       │   │   ├── 242.html
│       │   │   ├── 243.html
│       │   │   ├── 244.html
│       │   │   ├── 245.html
│       │   │   ├── 246.html
│       │   │   ├── 247.html
│       │   │   ├── 248.html
│       │   │   ├── 249.html
│       │   │   ├── 25.html
│       │   │   ├── 250.html
│       │   │   ├── 251.html
│       │   │   ├── 252.html
│       │   │   ├── 253.html
│       │   │   ├── 254.html
│       │   │   ├── 255.html
│       │   │   ├── 256.html
│       │   │   ├── 257.html
│       │   │   ├── 258.html
│       │   │   ├── 259.html
│       │   │   ├── 26.html
│       │   │   ├── 260.html
│       │   │   ├── 261.html
│       │   │   ├── 262.html
│       │   │   ├── 263.html
│       │   │   ├── 264.html
│       │   │   ├── 265.html
│       │   │   ├── 266.html
│       │   │   ├── 267.html
│       │   │   ├── 268.html
│       │   │   ├── 269.html
│       │   │   ├── 27.html
│       │   │   ├── 270.html
│       │   │   ├── 271.html
│       │   │   ├── 272.html
│       │   │   ├── 273.html
│       │   │   ├── 274.html
│       │   │   ├── 275.html
│       │   │   ├── 276.html
│       │   │   ├── 277.html
│       │   │   ├── 278.html
│       │   │   ├── 279.html
│       │   │   ├── 28.html
│       │   │   ├── 280.html
│       │   │   ├── 281.html
│       │   │   ├── 282.html
│       │   │   ├── 283.html
│       │   │   ├── 284.html
│       │   │   ├── 285.html
│       │   │   ├── 286.html
│       │   │   ├── 287.html
│       │   │   ├── 288.html
│       │   │   ├── 289.html
│       │   │   ├── 29.html
│       │   │   ├── 290.html
│       │   │   ├── 291.html
│       │   │   ├── 292.html
│       │   │   ├── 293.html
│       │   │   ├── 294.html
│       │   │   ├── 295.html
│       │   │   ├── 296.html
│       │   │   ├── 297.html
│       │   │   ├── 298.html
│       │   │   ├── 299.html
│       │   │   ├── 3.html
│       │   │   ├── 30.html
│       │   │   ├── 300.html
│       │   │   ├── 301.html
│       │   │   ├── 302.html
│       │   │   ├── 303.html
│       │   │   ├── 304.html
│       │   │   ├── 305.html
│       │   │   ├── 306.html
│       │   │   ├── 307.html
│       │   │   ├── 308.html
│       │   │   ├── 309.html
│       │   │   ├── 31.html
│       │   │   ├── 310.html
│       │   │   ├── 311.html
│       │   │   ├── 312.html
│       │   │   ├── 313.html
│       │   │   ├── 314.html
│       │   │   ├── 315.html
│       │   │   ├── 316.html
│       │   │   ├── 317.html
│       │   │   ├── 318.html
│       │   │   ├── 319.html
│       │   │   ├── 32.html
│       │   │   ├── 320.html
│       │   │   ├── 321.html
│       │   │   ├── 322.html
│       │   │   ├── 323.html
│       │   │   ├── 324.html
│       │   │   ├── 325.html
│       │   │   ├── 326.html
│       │   │   ├── 327.html
│       │   │   ├── 328.html
│       │   │   ├── 329.html
│       │   │   ├── 33.html
│       │   │   ├── 330.html
│       │   │   ├── 331.html
│       │   │   ├── 332.html
│       │   │   ├── 333.html
│       │   │   ├── 334.html
│       │   │   ├── 335.html
│       │   │   ├── 336.html
│       │   │   ├── 337.html
│       │   │   ├── 338.html
│       │   │   ├── 339.html
│       │   │   ├── 34.html
│       │   │   ├── 340.html
│       │   │   ├── 341.html
│       │   │   ├── 342.html
│       │   │   ├── 343.html
│       │   │   ├── 344.html
│       │   │   ├── 345.html
│       │   │   ├── 346.html
│       │   │   ├── 347.html
│       │   │   ├── 348.html
│       │   │   ├── 349.html
│       │   │   ├── 35.html
│       │   │   ├── 350.html
│       │   │   ├── 351.html
│       │   │   ├── 352.html
│       │   │   ├── 353.html
│       │   │   ├── 354.html
│       │   │   ├── 355.html
│       │   │   ├── 356.html
│       │   │   ├── 357.html
│       │   │   ├── 358.html
│       │   │   ├── 359.html
│       │   │   ├── 36.html
│       │   │   ├── 360.html
│       │   │   ├── 361.html
│       │   │   ├── 362.html
│       │   │   ├── 363.html
│       │   │   ├── 364.html
│       │   │   ├── 365.html
│       │   │   ├── 366.html
│       │   │   ├── 367.html
│       │   │   ├── 368.html
│       │   │   ├── 369.html
│       │   │   ├── 37.html
│       │   │   ├── 370.html
│       │   │   ├── 371.html
│       │   │   ├── 372.html
│       │   │   ├── 373.html
│       │   │   ├── 374.html
│       │   │   ├── 375.html
│       │   │   ├── 376.html
│       │   │   ├── 377.html
│       │   │   ├── 378.html
│       │   │   ├── 379.html
│       │   │   ├── 38.html
│       │   │   ├── 380.html
│       │   │   ├── 381.html
│       │   │   ├── 382.html
│       │   │   ├── 383.html
│       │   │   ├── 384.html
│       │   │   ├── 385.html
│       │   │   ├── 386.html
│       │   │   ├── 387.html
│       │   │   ├── 388.html
│       │   │   ├── 389.html
│       │   │   ├── 39.html
│       │   │   ├── 390.html
│       │   │   ├── 391.html
│       │   │   ├── 392.html
│       │   │   ├── 393.html
│       │   │   ├── 394.html
│       │   │   ├── 395.html
│       │   │   ├── 396.html
│       │   │   ├── 397.html
│       │   │   ├── 398.html
│       │   │   ├── 399.html
│       │   │   ├── 4.html
│       │   │   ├── 40.html
│       │   │   ├── 400.html
│       │   │   ├── 401.html
│       │   │   ├── 402.html
│       │   │   ├── 403.html
│       │   │   ├── 404.html
│       │   │   ├── 405.html
│       │   │   ├── 406.html
│       │   │   ├── 407.html
│       │   │   ├── 408.html
│       │   │   ├── 409.html
│       │   │   ├── 41.html
│       │   │   ├── 410.html
│       │   │   ├── 411.html
│       │   │   ├── 412.html
│       │   │   ├── 413.html
│       │   │   ├── 414.html
│       │   │   ├── 415.html
│       │   │   ├── 416.html
│       │   │   ├── 417.html
│       │   │   ├── 418.html
│       │   │   ├── 419.html
│       │   │   ├── 42.html
│       │   │   ├── 420.html
│       │   │   ├── 421.html
│       │   │   ├── 422.html
│       │   │   ├── 423.html
│       │   │   ├── 424.html
│       │   │   ├── 425.html
│       │   │   ├── 426.html
│       │   │   ├── 427.html
│       │   │   ├── 428.html
│       │   │   ├── 429.html
│       │   │   ├── 43.html
│       │   │   ├── 430.html
│       │   │   ├── 431.html
│       │   │   ├── 432.html
│       │   │   ├── 433.html
│       │   │   ├── 434.html
│       │   │   ├── 435.html
│       │   │   ├── 436.html
│       │   │   ├── 437.html
│       │   │   ├── 438.html
│       │   │   ├── 439.html
│       │   │   ├── 44.html
│       │   │   ├── 440.html
│       │   │   ├── 441.html
│       │   │   ├── 442.html
│       │   │   ├── 443.html
│       │   │   ├── 444.html
│       │   │   ├── 445.html
│       │   │   ├── 446.html
│       │   │   ├── 447.html
│       │   │   ├── 448.html
│       │   │   ├── 449.html
│       │   │   ├── 45.html
│       │   │   ├── 450.html
│       │   │   ├── 451.html
│       │   │   ├── 452.html
│       │   │   ├── 453.html
│       │   │   ├── 454.html
│       │   │   ├── 455.html
│       │   │   ├── 456.html
│       │   │   ├── 457.html
│       │   │   ├── 458.html
│       │   │   ├── 459.html
│       │   │   ├── 46.html
│       │   │   ├── 460.html
│       │   │   ├── 461.html
│       │   │   ├── 462.html
│       │   │   ├── 463.html
│       │   │   ├── 464.html
│       │   │   ├── 465.html
│       │   │   ├── 466.html
│       │   │   ├── 467.html
│       │   │   ├── 468.html
│       │   │   ├── 469.html
│       │   │   ├── 47.html
│       │   │   ├── 470.html
│       │   │   ├── 471.html
│       │   │   ├── 472.html
│       │   │   ├── 473.html
│       │   │   ├── 474.html
│       │   │   ├── 475.html
│       │   │   ├── 476.html
│       │   │   ├── 477.html
│       │   │   ├── 478.html
│       │   │   ├── 479.html
│       │   │   ├── 48.html
│       │   │   ├── 480.html
│       │   │   ├── 481.html
│       │   │   ├── 482.html
│       │   │   ├── 483.html
│       │   │   ├── 484.html
│       │   │   ├── 485.html
│       │   │   ├── 486.html
│       │   │   ├── 487.html
│       │   │   ├── 488.html
│       │   │   ├── 489.html
│       │   │   ├── 49.html
│       │   │   ├── 490.html
│       │   │   ├── 491.html
│       │   │   ├── 492.html
│       │   │   ├── 493.html
│       │   │   ├── 494.html
│       │   │   ├── 495.html
│       │   │   ├── 496.html
│       │   │   ├── 497.html
│       │   │   ├── 498.html
│       │   │   ├── 499.html
│       │   │   ├── 5.html
│       │   │   ├── 50.html
│       │   │   ├── 500.html
│       │   │   ├── 51.html
│       │   │   ├── 52.html
│       │   │   ├── 53.html
│       │   │   ├── 54.html
│       │   │   ├── 55.html
│       │   │   ├── 56.html
│       │   │   ├── 57.html
│       │   │   ├── 58.html
│       │   │   ├── 59.html
│       │   │   ├── 6.html
│       │   │   ├── 60.html
│       │   │   ├── 61.html
│       │   │   ├── 62.html
│       │   │   ├── 63.html
│       │   │   ├── 64.html
│       │   │   ├── 65.html
│       │   │   ├── 66.html
│       │   │   ├── 67.html
│       │   │   ├── 68.html
│       │   │   ├── 69.html
│       │   │   ├── 7.html
│       │   │   ├── 70.html
│       │   │   ├── 71.html
│       │   │   ├── 72.html
│       │   │   ├── 73.html
│       │   │   ├── 74.html
│       │   │   ├── 75.html
│       │   │   ├── 76.html
│       │   │   ├── 77.html
│       │   │   ├── 78.html
│       │   │   ├── 79.html
│       │   │   ├── 8.html
│       │   │   ├── 80.html
│       │   │   ├── 81.html
│       │   │   ├── 82.html
│       │   │   ├── 83.html
│       │   │   ├── 84.html
│       │   │   ├── 85.html
│       │   │   ├── 86.html
│       │   │   ├── 87.html
│       │   │   ├── 88.html
│       │   │   ├── 89.html
│       │   │   ├── 9.html
│       │   │   ├── 90.html
│       │   │   ├── 91.html
│       │   │   ├── 92.html
│       │   │   ├── 93.html
│       │   │   ├── 94.html
│       │   │   ├── 95.html
│       │   │   ├── 96.html
│       │   │   ├── 97.html
│       │   │   ├── 98.html
│       │   │   └── 99.html
│       │   ├── 2/
│       │   │   ├── 1.html
│       │   │   ├── 10.html
│       │   │   ├── 100.html
│       │   │   ├── 101.html
│       │   │   ├── 102.html
│       │   │   ├── 103.html
│       │   │   ├── 104.html
│       │   │   ├── 105.html
│       │   │   ├── 106.html
│       │   │   ├── 107.html
│       │   │   ├── 108.html
│       │   │   ├── 109.html
│       │   │   ├── 11.html
│       │   │   ├── 110.html
│       │   │   ├── 111.html
│       │   │   ├── 112.html
│       │   │   ├── 113.html
│       │   │   ├── 114.html
│       │   │   ├── 115.html
│       │   │   ├── 116.html
│       │   │   ├── 117.html
│       │   │   ├── 118.html
│       │   │   ├── 119.html
│       │   │   ├── 12.html
│       │   │   ├── 120.html
│       │   │   ├── 121.html
│       │   │   ├── 122.html
│       │   │   ├── 123.html
│       │   │   ├── 124.html
│       │   │   ├── 125.html
│       │   │   ├── 126.html
│       │   │   ├── 127.html
│       │   │   ├── 128.html
│       │   │   ├── 129.html
│       │   │   ├── 13.html
│       │   │   ├── 130.html
│       │   │   ├── 131.html
│       │   │   ├── 132.html
│       │   │   ├── 133.html
│       │   │   ├── 134.html
│       │   │   ├── 135.html
│       │   │   ├── 136.html
│       │   │   ├── 137.html
│       │   │   ├── 138.html
│       │   │   ├── 139.html
│       │   │   ├── 14.html
│       │   │   ├── 140.html
│       │   │   ├── 141.html
│       │   │   ├── 142.html
│       │   │   ├── 143.html
│       │   │   ├── 144.html
│       │   │   ├── 145.html
│       │   │   ├── 146.html
│       │   │   ├── 147.html
│       │   │   ├── 148.html
│       │   │   ├── 149.html
│       │   │   ├── 15.html
│       │   │   ├── 150.html
│       │   │   ├── 151.html
│       │   │   ├── 152.html
│       │   │   ├── 153.html
│       │   │   ├── 154.html
│       │   │   ├── 155.html
│       │   │   ├── 156.html
│       │   │   ├── 157.html
│       │   │   ├── 158.html
│       │   │   ├── 159.html
│       │   │   ├── 16.html
│       │   │   ├── 160.html
│       │   │   ├── 161.html
│       │   │   ├── 162.html
│       │   │   ├── 163.html
│       │   │   ├── 164.html
│       │   │   ├── 165.html
│       │   │   ├── 166.html
│       │   │   ├── 167.html
│       │   │   ├── 168.html
│       │   │   ├── 169.html
│       │   │   ├── 17.html
│       │   │   ├── 170.html
│       │   │   ├── 171.html
│       │   │   ├── 172.html
│       │   │   ├── 173.html
│       │   │   ├── 174.html
│       │   │   ├── 175.html
│       │   │   ├── 176.html
│       │   │   ├── 177.html
│       │   │   ├── 178.html
│       │   │   ├── 179.html
│       │   │   ├── 18.html
│       │   │   ├── 180.html
│       │   │   ├── 181.html
│       │   │   ├── 182.html
│       │   │   ├── 183.html
│       │   │   ├── 184.html
│       │   │   ├── 185.html
│       │   │   ├── 186.html
│       │   │   ├── 187.html
│       │   │   ├── 188.html
│       │   │   ├── 189.html
│       │   │   ├── 19.html
│       │   │   ├── 190.html
│       │   │   ├── 191.html
│       │   │   ├── 192.html
│       │   │   ├── 193.html
│       │   │   ├── 194.html
│       │   │   ├── 195.html
│       │   │   ├── 196.html
│       │   │   ├── 197.html
│       │   │   ├── 198.html
│       │   │   ├── 199.html
│       │   │   ├── 2.html
│       │   │   ├── 20.html
│       │   │   ├── 200.html
│       │   │   ├── 201.html
│       │   │   ├── 202.html
│       │   │   ├── 203.html
│       │   │   ├── 204.html
│       │   │   ├── 205.html
│       │   │   ├── 206.html
│       │   │   ├── 207.html
│       │   │   ├── 208.html
│       │   │   ├── 209.html
│       │   │   ├── 21.html
│       │   │   ├── 210.html
│       │   │   ├── 211.html
│       │   │   ├── 212.html
│       │   │   ├── 213.html
│       │   │   ├── 214.html
│       │   │   ├── 215.html
│       │   │   ├── 216.html
│       │   │   ├── 217.html
│       │   │   ├── 218.html
│       │   │   ├── 219.html
│       │   │   ├── 22.html
│       │   │   ├── 220.html
│       │   │   ├── 221.html
│       │   │   ├── 222.html
│       │   │   ├── 223.html
│       │   │   ├── 224.html
│       │   │   ├── 225.html
│       │   │   ├── 226.html
│       │   │   ├── 227.html
│       │   │   ├── 228.html
│       │   │   ├── 229.html
│       │   │   ├── 23.html
│       │   │   ├── 230.html
│       │   │   ├── 231.html
│       │   │   ├── 232.html
│       │   │   ├── 233.html
│       │   │   ├── 234.html
│       │   │   ├── 235.html
│       │   │   ├── 236.html
│       │   │   ├── 237.html
│       │   │   ├── 238.html
│       │   │   ├── 239.html
│       │   │   ├── 24.html
│       │   │   ├── 240.html
│       │   │   ├── 241.html
│       │   │   ├── 242.html
│       │   │   ├── 243.html
│       │   │   ├── 244.html
│       │   │   ├── 245.html
│       │   │   ├── 246.html
│       │   │   ├── 247.html
│       │   │   ├── 248.html
│       │   │   ├── 249.html
│       │   │   ├── 25.html
│       │   │   ├── 250.html
│       │   │   ├── 251.html
│       │   │   ├── 252.html
│       │   │   ├── 253.html
│       │   │   ├── 254.html
│       │   │   ├── 255.html
│       │   │   ├── 256.html
│       │   │   ├── 257.html
│       │   │   ├── 258.html
│       │   │   ├── 259.html
│       │   │   ├── 26.html
│       │   │   ├── 260.html
│       │   │   ├── 261.html
│       │   │   ├── 262.html
│       │   │   ├── 263.html
│       │   │   ├── 264.html
│       │   │   ├── 265.html
│       │   │   ├── 266.html
│       │   │   ├── 267.html
│       │   │   ├── 268.html
│       │   │   ├── 269.html
│       │   │   ├── 27.html
│       │   │   ├── 270.html
│       │   │   ├── 271.html
│       │   │   ├── 272.html
│       │   │   ├── 273.html
│       │   │   ├── 274.html
│       │   │   ├── 275.html
│       │   │   ├── 276.html
│       │   │   ├── 277.html
│       │   │   ├── 278.html
│       │   │   ├── 279.html
│       │   │   ├── 28.html
│       │   │   ├── 280.html
│       │   │   ├── 281.html
│       │   │   ├── 282.html
│       │   │   ├── 283.html
│       │   │   ├── 284.html
│       │   │   ├── 285.html
│       │   │   ├── 286.html
│       │   │   ├── 287.html
│       │   │   ├── 288.html
│       │   │   ├── 289.html
│       │   │   ├── 29.html
│       │   │   ├── 290.html
│       │   │   ├── 291.html
│       │   │   ├── 292.html
│       │   │   ├── 293.html
│       │   │   ├── 294.html
│       │   │   ├── 295.html
│       │   │   ├── 296.html
│       │   │   ├── 297.html
│       │   │   ├── 298.html
│       │   │   ├── 299.html
│       │   │   ├── 3.html
│       │   │   ├── 30.html
│       │   │   ├── 300.html
│       │   │   ├── 301.html
│       │   │   ├── 302.html
│       │   │   ├── 303.html
│       │   │   ├── 304.html
│       │   │   ├── 305.html
│       │   │   ├── 306.html
│       │   │   ├── 307.html
│       │   │   ├── 308.html
│       │   │   ├── 309.html
│       │   │   ├── 31.html
│       │   │   ├── 310.html
│       │   │   ├── 311.html
│       │   │   ├── 312.html
│       │   │   ├── 313.html
│       │   │   ├── 314.html
│       │   │   ├── 315.html
│       │   │   ├── 316.html
│       │   │   ├── 317.html
│       │   │   ├── 318.html
│       │   │   ├── 319.html
│       │   │   ├── 32.html
│       │   │   ├── 320.html
│       │   │   ├── 321.html
│       │   │   ├── 322.html
│       │   │   ├── 323.html
│       │   │   ├── 324.html
│       │   │   ├── 325.html
│       │   │   ├── 326.html
│       │   │   ├── 327.html
│       │   │   ├── 328.html
│       │   │   ├── 329.html
│       │   │   ├── 33.html
│       │   │   ├── 330.html
│       │   │   ├── 331.html
│       │   │   ├── 332.html
│       │   │   ├── 333.html
│       │   │   ├── 334.html
│       │   │   ├── 335.html
│       │   │   ├── 336.html
│       │   │   ├── 337.html
│       │   │   ├── 338.html
│       │   │   ├── 339.html
│       │   │   ├── 34.html
│       │   │   ├── 340.html
│       │   │   ├── 341.html
│       │   │   ├── 342.html
│       │   │   ├── 343.html
│       │   │   ├── 344.html
│       │   │   ├── 345.html
│       │   │   ├── 346.html
│       │   │   ├── 347.html
│       │   │   ├── 348.html
│       │   │   ├── 349.html
│       │   │   ├── 35.html
│       │   │   ├── 350.html
│       │   │   ├── 351.html
│       │   │   ├── 352.html
│       │   │   ├── 353.html
│       │   │   ├── 354.html
│       │   │   ├── 355.html
│       │   │   ├── 356.html
│       │   │   ├── 357.html
│       │   │   ├── 358.html
│       │   │   ├── 359.html
│       │   │   ├── 36.html
│       │   │   ├── 360.html
│       │   │   ├── 361.html
│       │   │   ├── 362.html
│       │   │   ├── 363.html
│       │   │   ├── 364.html
│       │   │   ├── 365.html
│       │   │   ├── 366.html
│       │   │   ├── 367.html
│       │   │   ├── 368.html
│       │   │   ├── 369.html
│       │   │   ├── 37.html
│       │   │   ├── 370.html
│       │   │   ├── 371.html
│       │   │   ├── 372.html
│       │   │   ├── 373.html
│       │   │   ├── 374.html
│       │   │   ├── 375.html
│       │   │   ├── 376.html
│       │   │   ├── 377.html
│       │   │   ├── 378.html
│       │   │   ├── 379.html
│       │   │   ├── 38.html
│       │   │   ├── 380.html
│       │   │   ├── 381.html
│       │   │   ├── 382.html
│       │   │   ├── 383.html
│       │   │   ├── 384.html
│       │   │   ├── 385.html
│       │   │   ├── 386.html
│       │   │   ├── 387.html
│       │   │   ├── 388.html
│       │   │   ├── 389.html
│       │   │   ├── 39.html
│       │   │   ├── 390.html
│       │   │   ├── 391.html
│       │   │   ├── 392.html
│       │   │   ├── 393.html
│       │   │   ├── 394.html
│       │   │   ├── 395.html
│       │   │   ├── 396.html
│       │   │   ├── 397.html
│       │   │   ├── 398.html
│       │   │   ├── 399.html
│       │   │   ├── 4.html
│       │   │   ├── 40.html
│       │   │   ├── 400.html
│       │   │   ├── 401.html
│       │   │   ├── 402.html
│       │   │   ├── 403.html
│       │   │   ├── 404.html
│       │   │   ├── 405.html
│       │   │   ├── 406.html
│       │   │   ├── 407.html
│       │   │   ├── 408.html
│       │   │   ├── 409.html
│       │   │   ├── 41.html
│       │   │   ├── 410.html
│       │   │   ├── 411.html
│       │   │   ├── 412.html
│       │   │   ├── 413.html
│       │   │   ├── 414.html
│       │   │   ├── 415.html
│       │   │   ├── 416.html
│       │   │   ├── 417.html
│       │   │   ├── 418.html
│       │   │   ├── 419.html
│       │   │   ├── 42.html
│       │   │   ├── 420.html
│       │   │   ├── 421.html
│       │   │   ├── 422.html
│       │   │   ├── 423.html
│       │   │   ├── 424.html
│       │   │   ├── 425.html
│       │   │   ├── 426.html
│       │   │   ├── 427.html
│       │   │   ├── 428.html
│       │   │   ├── 429.html
│       │   │   ├── 43.html
│       │   │   ├── 430.html
│       │   │   ├── 431.html
│       │   │   ├── 432.html
│       │   │   ├── 433.html
│       │   │   ├── 434.html
│       │   │   ├── 435.html
│       │   │   ├── 436.html
│       │   │   ├── 437.html
│       │   │   ├── 438.html
│       │   │   ├── 439.html
│       │   │   ├── 44.html
│       │   │   ├── 440.html
│       │   │   ├── 441.html
│       │   │   ├── 442.html
│       │   │   ├── 443.html
│       │   │   ├── 444.html
│       │   │   ├── 445.html
│       │   │   ├── 446.html
│       │   │   ├── 447.html
│       │   │   ├── 448.html
│       │   │   ├── 449.html
│       │   │   ├── 45.html
│       │   │   ├── 450.html
│       │   │   ├── 451.html
│       │   │   ├── 452.html
│       │   │   ├── 453.html
│       │   │   ├── 454.html
│       │   │   ├── 455.html
│       │   │   ├── 456.html
│       │   │   ├── 457.html
│       │   │   ├── 458.html
│       │   │   ├── 459.html
│       │   │   ├── 46.html
│       │   │   ├── 460.html
│       │   │   ├── 461.html
│       │   │   ├── 462.html
│       │   │   ├── 463.html
│       │   │   ├── 464.html
│       │   │   ├── 465.html
│       │   │   ├── 466.html
│       │   │   ├── 467.html
│       │   │   ├── 468.html
│       │   │   ├── 469.html
│       │   │   ├── 47.html
│       │   │   ├── 470.html
│       │   │   ├── 471.html
│       │   │   ├── 472.html
│       │   │   ├── 473.html
│       │   │   ├── 474.html
│       │   │   ├── 475.html
│       │   │   ├── 476.html
│       │   │   ├── 477.html
│       │   │   ├── 478.html
│       │   │   ├── 479.html
│       │   │   ├── 48.html
│       │   │   ├── 480.html
│       │   │   ├── 481.html
│       │   │   ├── 482.html
│       │   │   ├── 483.html
│       │   │   ├── 484.html
│       │   │   ├── 485.html
│       │   │   ├── 486.html
│       │   │   ├── 487.html
│       │   │   ├── 488.html
│       │   │   ├── 489.html
│       │   │   ├── 49.html
│       │   │   ├── 490.html
│       │   │   ├── 491.html
│       │   │   ├── 492.html
│       │   │   ├── 493.html
│       │   │   ├── 494.html
│       │   │   ├── 495.html
│       │   │   ├── 496.html
│       │   │   ├── 497.html
│       │   │   ├── 498.html
│       │   │   ├── 499.html
│       │   │   ├── 5.html
│       │   │   ├── 50.html
│       │   │   ├── 500.html
│       │   │   ├── 51.html
│       │   │   ├── 52.html
│       │   │   ├── 53.html
│       │   │   ├── 54.html
│       │   │   ├── 55.html
│       │   │   ├── 56.html
│       │   │   ├── 57.html
│       │   │   ├── 58.html
│       │   │   ├── 59.html
│       │   │   ├── 6.html
│       │   │   ├── 60.html
│       │   │   ├── 61.html
│       │   │   ├── 62.html
│       │   │   ├── 63.html
│       │   │   ├── 64.html
│       │   │   ├── 65.html
│       │   │   ├── 66.html
│       │   │   ├── 67.html
│       │   │   ├── 68.html
│       │   │   ├── 69.html
│       │   │   ├── 7.html
│       │   │   ├── 70.html
│       │   │   ├── 71.html
│       │   │   ├── 72.html
│       │   │   ├── 73.html
│       │   │   ├── 74.html
│       │   │   ├── 75.html
│       │   │   ├── 76.html
│       │   │   ├── 77.html
│       │   │   ├── 78.html
│       │   │   ├── 79.html
│       │   │   ├── 8.html
│       │   │   ├── 80.html
│       │   │   ├── 81.html
│       │   │   ├── 82.html
│       │   │   ├── 83.html
│       │   │   ├── 84.html
│       │   │   ├── 85.html
│       │   │   ├── 86.html
│       │   │   ├── 87.html
│       │   │   ├── 88.html
│       │   │   ├── 89.html
│       │   │   ├── 9.html
│       │   │   ├── 90.html
│       │   │   ├── 91.html
│       │   │   ├── 92.html
│       │   │   ├── 93.html
│       │   │   ├── 94.html
│       │   │   ├── 95.html
│       │   │   ├── 96.html
│       │   │   ├── 97.html
│       │   │   ├── 98.html
│       │   │   └── 99.html
│       │   └── 3/
│       │       ├── 1.html
│       │       ├── 10.html
│       │       ├── 100.html
│       │       ├── 101.html
│       │       ├── 102.html
│       │       ├── 103.html
│       │       ├── 104.html
│       │       ├── 105.html
│       │       ├── 106.html
│       │       ├── 107.html
│       │       ├── 108.html
│       │       ├── 109.html
│       │       ├── 11.html
│       │       ├── 110.html
│       │       ├── 111.html
│       │       ├── 112.html
│       │       ├── 113.html
│       │       ├── 114.html
│       │       ├── 115.html
│       │       ├── 116.html
│       │       ├── 117.html
│       │       ├── 118.html
│       │       ├── 119.html
│       │       ├── 12.html
│       │       ├── 120.html
│       │       ├── 121.html
│       │       ├── 122.html
│       │       ├── 123.html
│       │       ├── 124.html
│       │       ├── 125.html
│       │       ├── 126.html
│       │       ├── 127.html
│       │       ├── 128.html
│       │       ├── 129.html
│       │       ├── 13.html
│       │       ├── 130.html
│       │       ├── 131.html
│       │       ├── 132.html
│       │       ├── 133.html
│       │       ├── 134.html
│       │       ├── 135.html
│       │       ├── 136.html
│       │       ├── 137.html
│       │       ├── 138.html
│       │       ├── 139.html
│       │       ├── 14.html
│       │       ├── 140.html
│       │       ├── 141.html
│       │       ├── 142.html
│       │       ├── 143.html
│       │       ├── 144.html
│       │       ├── 145.html
│       │       ├── 146.html
│       │       ├── 147.html
│       │       ├── 148.html
│       │       ├── 149.html
│       │       ├── 15.html
│       │       ├── 150.html
│       │       ├── 151.html
│       │       ├── 152.html
│       │       ├── 153.html
│       │       ├── 154.html
│       │       ├── 155.html
│       │       ├── 156.html
│       │       ├── 157.html
│       │       ├── 158.html
│       │       ├── 159.html
│       │       ├── 16.html
│       │       ├── 160.html
│       │       ├── 161.html
│       │       ├── 162.html
│       │       ├── 163.html
│       │       ├── 164.html
│       │       ├── 165.html
│       │       ├── 166.html
│       │       ├── 167.html
│       │       ├── 168.html
│       │       ├── 169.html
│       │       ├── 17.html
│       │       ├── 170.html
│       │       ├── 171.html
│       │       ├── 172.html
│       │       ├── 173.html
│       │       ├── 174.html
│       │       ├── 175.html
│       │       ├── 176.html
│       │       ├── 177.html
│       │       ├── 178.html
│       │       ├── 179.html
│       │       ├── 18.html
│       │       ├── 180.html
│       │       ├── 181.html
│       │       ├── 182.html
│       │       ├── 183.html
│       │       ├── 184.html
│       │       ├── 185.html
│       │       ├── 186.html
│       │       ├── 187.html
│       │       ├── 188.html
│       │       ├── 189.html
│       │       ├── 19.html
│       │       ├── 190.html
│       │       ├── 191.html
│       │       ├── 192.html
│       │       ├── 193.html
│       │       ├── 194.html
│       │       ├── 195.html
│       │       ├── 196.html
│       │       ├── 197.html
│       │       ├── 198.html
│       │       ├── 199.html
│       │       ├── 2.html
│       │       ├── 20.html
│       │       ├── 200.html
│       │       ├── 201.html
│       │       ├── 202.html
│       │       ├── 203.html
│       │       ├── 204.html
│       │       ├── 205.html
│       │       ├── 206.html
│       │       ├── 207.html
│       │       ├── 208.html
│       │       ├── 209.html
│       │       ├── 21.html
│       │       ├── 210.html
│       │       ├── 211.html
│       │       ├── 212.html
│       │       ├── 213.html
│       │       ├── 214.html
│       │       ├── 215.html
│       │       ├── 216.html
│       │       ├── 217.html
│       │       ├── 218.html
│       │       ├── 219.html
│       │       ├── 22.html
│       │       ├── 220.html
│       │       ├── 221.html
│       │       ├── 222.html
│       │       ├── 223.html
│       │       ├── 224.html
│       │       ├── 225.html
│       │       ├── 226.html
│       │       ├── 227.html
│       │       ├── 228.html
│       │       ├── 229.html
│       │       ├── 23.html
│       │       ├── 230.html
│       │       ├── 231.html
│       │       ├── 232.html
│       │       ├── 233.html
│       │       ├── 234.html
│       │       ├── 235.html
│       │       ├── 236.html
│       │       ├── 237.html
│       │       ├── 238.html
│       │       ├── 239.html
│       │       ├── 24.html
│       │       ├── 240.html
│       │       ├── 241.html
│       │       ├── 242.html
│       │       ├── 243.html
│       │       ├── 244.html
│       │       ├── 245.html
│       │       ├── 246.html
│       │       ├── 247.html
│       │       ├── 248.html
│       │       ├── 249.html
│       │       ├── 25.html
│       │       ├── 250.html
│       │       ├── 251.html
│       │       ├── 252.html
│       │       ├── 253.html
│       │       ├── 254.html
│       │       ├── 255.html
│       │       ├── 256.html
│       │       ├── 257.html
│       │       ├── 258.html
│       │       ├── 259.html
│       │       ├── 26.html
│       │       ├── 260.html
│       │       ├── 261.html
│       │       ├── 262.html
│       │       ├── 263.html
│       │       ├── 264.html
│       │       ├── 265.html
│       │       ├── 266.html
│       │       ├── 267.html
│       │       ├── 268.html
│       │       ├── 269.html
│       │       ├── 27.html
│       │       ├── 270.html
│       │       ├── 271.html
│       │       ├── 272.html
│       │       ├── 273.html
│       │       ├── 274.html
│       │       ├── 275.html
│       │       ├── 276.html
│       │       ├── 277.html
│       │       ├── 278.html
│       │       ├── 279.html
│       │       ├── 28.html
│       │       ├── 280.html
│       │       ├── 281.html
│       │       ├── 282.html
│       │       ├── 283.html
│       │       ├── 284.html
│       │       ├── 285.html
│       │       ├── 286.html
│       │       ├── 287.html
│       │       ├── 288.html
│       │       ├── 289.html
│       │       ├── 29.html
│       │       ├── 290.html
│       │       ├── 291.html
│       │       ├── 292.html
│       │       ├── 293.html
│       │       ├── 294.html
│       │       ├── 295.html
│       │       ├── 296.html
│       │       ├── 297.html
│       │       ├── 298.html
│       │       ├── 299.html
│       │       ├── 3.html
│       │       ├── 30.html
│       │       ├── 300.html
│       │       ├── 301.html
│       │       ├── 302.html
│       │       ├── 303.html
│       │       ├── 304.html
│       │       ├── 305.html
│       │       ├── 306.html
│       │       ├── 307.html
│       │       ├── 308.html
│       │       ├── 309.html
│       │       ├── 31.html
│       │       ├── 310.html
│       │       ├── 311.html
│       │       ├── 312.html
│       │       ├── 313.html
│       │       ├── 314.html
│       │       ├── 315.html
│       │       ├── 316.html
│       │       ├── 317.html
│       │       ├── 318.html
│       │       ├── 319.html
│       │       ├── 32.html
│       │       ├── 320.html
│       │       ├── 321.html
│       │       ├── 322.html
│       │       ├── 323.html
│       │       ├── 324.html
│       │       ├── 325.html
│       │       ├── 326.html
│       │       ├── 327.html
│       │       ├── 328.html
│       │       ├── 329.html
│       │       ├── 33.html
│       │       ├── 330.html
│       │       ├── 331.html
│       │       ├── 332.html
│       │       ├── 333.html
│       │       ├── 334.html
│       │       ├── 335.html
│       │       ├── 336.html
│       │       ├── 337.html
│       │       ├── 338.html
│       │       ├── 339.html
│       │       ├── 34.html
│       │       ├── 340.html
│       │       ├── 341.html
│       │       ├── 342.html
│       │       ├── 343.html
│       │       ├── 344.html
│       │       ├── 345.html
│       │       ├── 346.html
│       │       ├── 347.html
│       │       ├── 348.html
│       │       ├── 349.html
│       │       ├── 35.html
│       │       ├── 350.html
│       │       ├── 351.html
│       │       ├── 352.html
│       │       ├── 353.html
│       │       ├── 354.html
│       │       ├── 355.html
│       │       ├── 356.html
│       │       ├── 357.html
│       │       ├── 358.html
│       │       ├── 359.html
│       │       ├── 36.html
│       │       ├── 360.html
│       │       ├── 361.html
│       │       ├── 362.html
│       │       ├── 363.html
│       │       ├── 364.html
│       │       ├── 365.html
│       │       ├── 366.html
│       │       ├── 367.html
│       │       ├── 368.html
│       │       ├── 369.html
│       │       ├── 37.html
│       │       ├── 370.html
│       │       ├── 371.html
│       │       ├── 372.html
│       │       ├── 373.html
│       │       ├── 374.html
│       │       ├── 375.html
│       │       ├── 376.html
│       │       ├── 377.html
│       │       ├── 378.html
│       │       ├── 379.html
│       │       ├── 38.html
│       │       ├── 380.html
│       │       ├── 381.html
│       │       ├── 382.html
│       │       ├── 383.html
│       │       ├── 384.html
│       │       ├── 385.html
│       │       ├── 386.html
│       │       ├── 387.html
│       │       ├── 388.html
│       │       ├── 389.html
│       │       ├── 39.html
│       │       ├── 390.html
│       │       ├── 391.html
│       │       ├── 392.html
│       │       ├── 393.html
│       │       ├── 394.html
│       │       ├── 395.html
│       │       ├── 396.html
│       │       ├── 397.html
│       │       ├── 398.html
│       │       ├── 399.html
│       │       ├── 4.html
│       │       ├── 40.html
│       │       ├── 400.html
│       │       ├── 401.html
│       │       ├── 402.html
│       │       ├── 403.html
│       │       ├── 41.html
│       │       ├── 42.html
│       │       ├── 43.html
│       │       ├── 44.html
│       │       ├── 45.html
│       │       ├── 46.html
│       │       ├── 47.html
│       │       ├── 48.html
│       │       ├── 49.html
│       │       ├── 5.html
│       │       ├── 50.html
│       │       ├── 51.html
│       │       ├── 52.html
│       │       ├── 53.html
│       │       ├── 54.html
│       │       ├── 55.html
│       │       ├── 56.html
│       │       ├── 57.html
│       │       ├── 58.html
│       │       ├── 59.html
│       │       ├── 6.html
│       │       ├── 60.html
│       │       ├── 61.html
│       │       ├── 62.html
│       │       ├── 63.html
│       │       ├── 64.html
│       │       ├── 65.html
│       │       ├── 66.html
│       │       ├── 67.html
│       │       ├── 68.html
│       │       ├── 69.html
│       │       ├── 7.html
│       │       ├── 70.html
│       │       ├── 71.html
│       │       ├── 72.html
│       │       ├── 73.html
│       │       ├── 74.html
│       │       ├── 75.html
│       │       ├── 76.html
│       │       ├── 77.html
│       │       ├── 78.html
│       │       ├── 79.html
│       │       ├── 8.html
│       │       ├── 80.html
│       │       ├── 81.html
│       │       ├── 82.html
│       │       ├── 83.html
│       │       ├── 84.html
│       │       ├── 85.html
│       │       ├── 86.html
│       │       ├── 87.html
│       │       ├── 88.html
│       │       ├── 89.html
│       │       ├── 9.html
│       │       ├── 90.html
│       │       ├── 91.html
│       │       ├── 92.html
│       │       ├── 93.html
│       │       ├── 94.html
│       │       ├── 95.html
│       │       ├── 96.html
│       │       ├── 97.html
│       │       ├── 98.html
│       │       └── 99.html
│       ├── JS/
│       │   ├── Common.js
│       │   ├── ImmJSLib.js
│       │   └── TreeView.js
│       └── index.html
├── packages/
│   ├── Castle.Core.3.0.0.4001/
│   │   ├── ASL - Apache Software Foundation License.txt
│   │   ├── BreakingChanges.txt
│   │   ├── Castle.Core.3.0.0.4001.nupkg
│   │   ├── Changes.txt
│   │   ├── Committers.txt
│   │   ├── lib/
│   │   │   ├── net35/
│   │   │   │   └── Castle.Core.xml
│   │   │   ├── net40-client/
│   │   │   │   └── Castle.Core.xml
│   │   │   └── sl4/
│   │   │       └── Castle.Core.xml
│   │   └── readme.txt
│   ├── FakeItEasy.1.7.4507.61/
│   │   ├── FakeItEasy.1.7.4507.61.nupkg
│   │   └── lib/
│   │       ├── NET35/
│   │       │   └── FakeItEasy.xml
│   │       ├── NET40/
│   │       │   └── FakeItEasy.xml
│   │       ├── SL3/
│   │       │   └── FakeItEasy.XML
│   │       └── SL4/
│   │           └── FakeItEasy.xml
│   ├── Mono.Options.5.3.0.1/
│   │   ├── Mono.Options.5.3.0.1.nupkg
│   │   └── THIRD-PARTY-NOTICES.txt
│   ├── NJasmine.0.3.2.0/
│   │   ├── NJasmine.0.3.2.0.nupkg
│   │   ├── lib/
│   │   │   └── NJasmine.pdb
│   │   └── tools/
│   │       └── readme.txt
│   ├── NJasmine.NUnit.0.3.2.0/
│   │   ├── NJasmine.NUnit.0.3.2.0.nupkg
│   │   ├── lib/
│   │   │   ├── NJasmine.NUnit.pdb
│   │   │   └── NJasmine.pdb
│   │   └── tools/
│   │       ├── install.ps1
│   │       └── readme.txt
│   ├── NUnit.2.6.1/
│   │   ├── NUnit.2.6.1.nupkg
│   │   ├── lib/
│   │   │   └── nunit.framework.xml
│   │   └── license.txt
│   ├── NUnit.Runners.2.6.1/
│   │   ├── NUnit.Runners.2.6.1.nupkg
│   │   ├── license.txt
│   │   └── tools/
│   │       ├── addins/
│   │       │   ├── NJasmine.NUnit.pdb
│   │       │   └── NJasmine.pdb
│   │       ├── agent.conf
│   │       ├── agent.log.conf
│   │       ├── launcher.log.conf
│   │       ├── nunit-agent-x86.exe.config
│   │       ├── nunit-agent.exe.config
│   │       ├── nunit-console-x86.exe.config
│   │       ├── nunit-console.exe.config
│   │       ├── nunit-x86.exe.config
│   │       ├── nunit.exe.config
│   │       ├── pnunit-agent.exe.config
│   │       ├── pnunit-launcher.exe.config
│   │       ├── runpnunit.bat
│   │       └── test.conf
│   ├── Newtonsoft.Json.4.5.11/
│   │   ├── Newtonsoft.Json.4.5.11.nupkg
│   │   └── lib/
│   │       ├── net20/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── net35/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── net40/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── portable-net40+sl4+wp7+win8/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── sl3-wp/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── sl4/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── sl4-windowsphone71/
│   │       │   └── Newtonsoft.Json.xml
│   │       └── winrt45/
│   │           └── Newtonsoft.Json.xml
│   ├── PowerAssert.1.0.2/
│   │   └── PowerAssert.1.0.2.nupkg
│   ├── psake.4.6.0/
│   │   ├── psake.4.6.0.nupkg
│   │   └── tools/
│   │       ├── README.markdown
│   │       ├── chocolateyInstall.ps1
│   │       ├── en-US/
│   │       │   └── psake.psm1-help.xml
│   │       ├── examples/
│   │       │   ├── checkvariables.ps1
│   │       │   ├── continueonerror.ps1
│   │       │   ├── default.ps1
│   │       │   ├── formattaskname_scriptblock.ps1
│   │       │   ├── formattaskname_string.ps1
│   │       │   ├── msbuild40.ps1
│   │       │   ├── nested/
│   │       │   │   ├── nested1.ps1
│   │       │   │   └── nested2.ps1
│   │       │   ├── nested.ps1
│   │       │   ├── paralleltasks.ps1
│   │       │   ├── parameters.ps1
│   │       │   ├── passingParametersString/
│   │       │   │   ├── build.Release.Version.bat
│   │       │   │   └── parameters.ps1
│   │       │   ├── preandpostaction.ps1
│   │       │   ├── preandpostcondition.ps1
│   │       │   ├── properties.ps1
│   │       │   ├── requiredvariables.ps1
│   │       │   └── tasksetupandteardown.ps1
│   │       ├── init.ps1
│   │       ├── license.txt
│   │       ├── psake-config.ps1
│   │       ├── psake.cmd
│   │       ├── psake.ps1
│   │       ├── psake.psd1
│   │       └── psake.psm1
│   └── repositories.config
├── psake.ps1
├── psake_ext.ps1
├── readme.md
└── tools/
    └── PSUpdateXml.psm1

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
bin/
obj/
build/
_ReSharper.*
.vscode
*.ncb
*.aps
*.suo
*.sln.cache
*.dotCover
*.user
.vs
ManyConsole.Tests/TestResults
ManyConsoleModeCommand.Test/TestResults
**/Properties/AssemblyInfo.cs



================================================
FILE: .nuget/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="psake" version="4.2.0.1" />
</packages>

================================================
FILE: LICENSE.txt
================================================
Copyright (c) 2010 Frank Schwieterman

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: ManyConsole/ConsoleCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Linq;
using ManyConsole.Internal;
using Mono.Options;

namespace ManyConsole
{
    public abstract class ConsoleCommand : ConsoleUtil
    {
        public ConsoleCommand()
        {
            OneLineDescription = "";
            Options = new OptionSet();
            TraceCommandAfterParse = true;
            TraceCommandSkipProperties = new SortedSet<string>(DefaultTraceCommandSkipProperties, StringComparer.Ordinal);
            RemainingArgumentsCountMax = 0;
            RemainingArgumentsHelpText = "";
            OptionsHasd = new OptionSet();
            RequiredOptions = new List<RequiredOptionRecord>();
        }

        public string Command { get; private set; }
        public List<string> Aliases { get; private set; }
        public string OneLineDescription { get; private set; }
        public string LongDescription { get; private set; }
        public OptionSet Options { get; protected set; }
        public bool TraceCommandAfterParse { get; private set; }
        public ISet<string> TraceCommandSkipProperties { get; private set; }
        public int? RemainingArgumentsCountMin { get; private set; }
        public int? RemainingArgumentsCountMax { get; private set; }
        public string RemainingArgumentsHelpText { get; private set; }
        private OptionSet OptionsHasd { get; set; }
        private List<RequiredOptionRecord> RequiredOptions { get; set; }

        private static readonly string[] DefaultTraceCommandSkipProperties =
        {
            nameof(Command),
            nameof(Aliases),
            nameof(OneLineDescription),
            nameof(LongDescription),
            nameof(Options),
            nameof(TraceCommandAfterParse),
            nameof(TraceCommandSkipProperties),
            nameof(RemainingArgumentsCountMin),
            nameof(RemainingArgumentsCountMax),
            nameof(RemainingArgumentsHelpText),
            nameof(RequiredOptions)
        };

        public ConsoleCommand IsCommand(string command, string oneLineDescription = "")
        {
            Command = command;
            OneLineDescription = oneLineDescription;
            return this;
        }
        public ConsoleCommand HasAlias(string alias)
        {
            if (!String.IsNullOrEmpty(alias))
            {
                if (Aliases == null)
                {
                    Aliases = new List<string>();
                }
                Aliases.Add(alias);
            }
            return this;
        }

        public ConsoleCommand HasLongDescription(string longDescription)
        {
            LongDescription = longDescription;
            return this;
        }

        public ConsoleCommand HasAdditionalArguments(int? count = 0, string helpText = "")
        {
            HasAdditionalArgumentsBetween(count, count, helpText);
            return this;
        }

        public ConsoleCommand HasAdditionalArgumentsBetween(int? min, int? max, string helpText = "")
        {
            RemainingArgumentsCountMin = min;
            RemainingArgumentsCountMax = max;
            RemainingArgumentsHelpText = helpText;
            return this;
        }

        public ConsoleCommand AllowsAnyAdditionalArguments(string helpText = "")
        {
            HasAdditionalArgumentsBetween(null, null, helpText);
            return this;
        }

        public ConsoleCommand SkipsCommandSummaryBeforeRunning()
        {
            TraceCommandAfterParse = false;
            return this;
        }

        public ConsoleCommand SkipsPropertyInCommandSummary(string propertyName)
        {
            TraceCommandSkipProperties.Add(propertyName);
            return this;
        }

        public ConsoleCommand HasOption(string prototype, string description, Action<string> action)
        {
            OptionsHasd.Add(prototype, description, action);

            return this;
        }

        public ConsoleCommand HasRequiredOption(string prototype, string description, Action<string> action)
        {
            HasRequiredOption<string>(prototype, description, action);

            return this;
        }

        public ConsoleCommand HasOption<T>(string prototype, string description, Action<T> action)
        {
            OptionsHasd.Add(prototype, description, action);
            return this;
        }

        public ConsoleCommand HasRequiredOption<T>(string prototype, string description, Action<T> action)
        {
            var requiredRecord = new RequiredOptionRecord();

            var previousOptions = OptionsHasd.ToArray();

            OptionsHasd.Add<T>(prototype, description, s =>
            {
                requiredRecord.WasIncluded = true;
                action(s);
            });

            var newOption = OptionsHasd.Single(o => !previousOptions.Contains(o));

            requiredRecord.Name = newOption.GetNames().OrderByDescending(n => n.Length).First();

            RequiredOptions.Add(requiredRecord);

            return this;
        }

        public ConsoleCommand HasOption(string prototype, string description, OptionAction<string, string> action)
        {
            OptionsHasd.Add(prototype, description, action);
            return this;
        }

        public ConsoleCommand HasOption<TKey, TValue>(string prototype, string description, OptionAction<TKey, TValue> action)
        {
            OptionsHasd.Add(prototype, description, action);
            return this;
        }

        public virtual void CheckRequiredArguments()
        {
            var missingOptions = this.RequiredOptions
                .Where(o => !o.WasIncluded).Select(o => o.Name).OrderBy(n => n).ToArray();

            if (missingOptions.Any())
            {
                throw new ConsoleHelpAsException("Missing option: " + String.Join(", ", missingOptions));
            }
        }

        public virtual int? OverrideAfterHandlingArgumentsBeforeRun(string[] remainingArguments)
        {
            return null;
        }

        public abstract int Run(string[] remainingArguments);

        public OptionSet GetActualOptions()
        {
            var result = new OptionSet();

            foreach (var option in Options)
                result.Add(option);

            foreach (var option in OptionsHasd)
                result.Add(option);

            return result;
        }
    }
}

================================================
FILE: ManyConsole/ConsoleCommandDispatcher.cs
================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Reflection;
using ManyConsole.Internal;

namespace ManyConsole
{
    public class ConsoleCommandDispatcher
    {
        public static int DispatchCommand(ConsoleCommand command, string[] arguments, TextWriter consoleOut)
        {
            return DispatchCommand(new [] {command}, arguments, consoleOut);
        }

        public static int DispatchCommand(IEnumerable<ConsoleCommand> commands, string[] arguments, TextWriter consoleOut, bool skipExeInExpectedUsage = false)
        {
            ConsoleCommand selectedCommand = null;

            TextWriter console = consoleOut;

            foreach (var command in commands)
            {
                ValidateConsoleCommand(command);
            }

            try
            {
                List<string> remainingArguments;

                if (commands.Count() == 1)
                {
                    selectedCommand = commands.First();

                    if (arguments.Count() > 0 && CommandMatchesArgument(selectedCommand, arguments.First()))
                    {
                        remainingArguments = selectedCommand.GetActualOptions().Parse(arguments.Skip(1));
                    }
                    else
                    {
                        remainingArguments = selectedCommand.GetActualOptions().Parse(arguments);
                    }
                }
                else
                {
                    if (arguments.Count() < 1)
                        throw new ConsoleHelpAsException("No arguments specified.");

                    if (arguments[0].Equals("help", StringComparison.InvariantCultureIgnoreCase))
                    {
                        selectedCommand = GetMatchingCommand(commands, arguments.Skip(1).FirstOrDefault());

                        if (selectedCommand == null)
                            ConsoleHelp.ShowSummaryOfCommands(commands, console);
                        else
                            ConsoleHelp.ShowCommandHelp(selectedCommand, console, skipExeInExpectedUsage);

                        return -1;
                    }

                    selectedCommand = GetMatchingCommand(commands, arguments.First());

                    if (selectedCommand == null)
                        throw new ConsoleHelpAsException("Command name not recognized.");

                    remainingArguments = selectedCommand.GetActualOptions().Parse(arguments.Skip(1));
                }

                selectedCommand.CheckRequiredArguments();

                CheckRemainingArguments(remainingArguments, selectedCommand.RemainingArgumentsCountMin, selectedCommand.RemainingArgumentsCountMax);

                var preResult = selectedCommand.OverrideAfterHandlingArgumentsBeforeRun(remainingArguments.ToArray());

                if (preResult.HasValue)
                    return preResult.Value;

                ConsoleHelp.ShowParsedCommand(selectedCommand, console);

                return selectedCommand.Run(remainingArguments.ToArray());
            }
            catch (ConsoleHelpAsException e)
            {
                return DealWithException(e, console, skipExeInExpectedUsage, selectedCommand, commands);
            }
            catch (Mono.Options.OptionException e)
            {
                return DealWithException(e, console, skipExeInExpectedUsage, selectedCommand, commands);
            }
        }

        private static int DealWithException(Exception e, TextWriter console, bool skipExeInExpectedUsage, ConsoleCommand selectedCommand, IEnumerable<ConsoleCommand> commands)
        {
            if (selectedCommand != null)
            {
                console.WriteLine();
                console.WriteLine(e.Message);
                ConsoleHelp.ShowCommandHelp(selectedCommand, console, skipExeInExpectedUsage);
            }
            else
            {
                ConsoleHelp.ShowSummaryOfCommands(commands, console);
            }

            return -1;
        }
  
        private static ConsoleCommand GetMatchingCommand(IEnumerable<ConsoleCommand> command, string name)
        {
            return command.FirstOrDefault(c => CommandMatchesArgument(c, name));
        }

        private static bool CommandMatchesArgument(ConsoleCommand command, string arg)
        {
            if (String.IsNullOrEmpty(arg))
            {
                return false;
            }
            if (arg.Equals(command.Command, StringComparison.OrdinalIgnoreCase))
            {
                return true;
            } else if (command.Aliases != null && command.Aliases.Count > 0)
            {
                foreach (string alias in command.Aliases)
                {
                    if (arg.Equals(alias, StringComparison.OrdinalIgnoreCase))
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private static void ValidateConsoleCommand(ConsoleCommand command)
        {
            if (string.IsNullOrEmpty(command.Command))
            {
                throw new InvalidOperationException(String.Format(
                    "Command {0} did not call IsCommand in its constructor to indicate its name and description.",
                    command.GetType().Name));
            }
        }

        private static void CheckRemainingArguments(List<string> remainingArguments, int? parametersRequiredAfterOptionsMin, int? parametersRequiredAfterOptionsMax)
        {
            ConsoleUtil.VerifyNumberOfArguments(remainingArguments.ToArray(),
                    parametersRequiredAfterOptionsMin, parametersRequiredAfterOptionsMax);
        }

        public static IEnumerable<ConsoleCommand> FindCommandsInSameAssemblyAs(Type typeInSameAssembly)
        {
            if (typeInSameAssembly == null)
                throw new ArgumentNullException("typeInSameAssembly");

            return FindCommandsInAssembly(typeInSameAssembly.Assembly);
        }

        public static IEnumerable<ConsoleCommand> FindCommandsInAllLoadedAssemblies()
        {
            return AppDomain.CurrentDomain.GetAssemblies().SelectMany(FindCommandsInAssembly);
        }

        public static IEnumerable<ConsoleCommand> FindCommandsInAssembly(Assembly assembly)
        {
            if (assembly == null)
                throw new ArgumentNullException("assembly");

            var commandTypes = assembly.GetTypes()
                .Where(t => t.IsSubclassOf(typeof(ConsoleCommand)))
                .Where(t => !t.IsAbstract)
                .OrderBy(t => t.FullName);

            List<ConsoleCommand> result = new List<ConsoleCommand>();

            foreach(var commandType in commandTypes)
            {
                var constructor = commandType.GetConstructor(new Type[] { });

                if (constructor == null)
                    continue;

                result.Add((ConsoleCommand)constructor.Invoke(new object[] { }));
            }

            return result;
        }
    }
}


================================================
FILE: ManyConsole/ConsoleHelpAsException.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace ManyConsole
{
    public class ConsoleHelpAsException : Exception
    {
        public ConsoleHelpAsException(string message) : base(message)
        {
        }
    }
}


================================================
FILE: ManyConsole/Internal/ConsoleHelp.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Xml.Linq;

namespace ManyConsole.Internal
{
    public class ConsoleHelp
    {
        public static void ShowSummaryOfCommands(IEnumerable<ConsoleCommand> commands, TextWriter console)
        {
            console.WriteLine();
            console.WriteLine("Available commands are:");
            console.WriteLine();

            string helpCommand = "help <name>";

            var commandList = commands.ToList();
            var n = commandList.Select(c => c.Command).Concat(new [] { helpCommand}).Max(c => c.Length) + 1;
            var commandFormatString = "    {0,-" + n + "}- {1}";

            foreach (var command in commandList)
            {
                console.WriteLine(commandFormatString, command.Command, command.OneLineDescription);
            }
            console.WriteLine();
            console.WriteLine(commandFormatString, helpCommand, "For help with one of the above commands");
            console.WriteLine();
        }

        public static void ShowCommandHelp(ConsoleCommand selectedCommand, TextWriter console, bool skipExeInExpectedUsage = false)
        {
            var haveOptions = selectedCommand.GetActualOptions().Count > 0;

            console.WriteLine();
            console.WriteLine("'" + selectedCommand.Command + "' - " + selectedCommand.OneLineDescription);
            if (selectedCommand.Aliases != null && selectedCommand.Aliases.Count > 0)
            {
                console.WriteLine("Aliases:");
                foreach (string alias in selectedCommand.Aliases)
                {
                    console.WriteLine("  " + alias);
                }
            }
            console.WriteLine();

            if (!string.IsNullOrEmpty(selectedCommand.LongDescription))
            {
                console.WriteLine(selectedCommand.LongDescription);
                console.WriteLine();
            }

            console.Write("Expected usage:");

            if (!skipExeInExpectedUsage)
            {
                console.Write(" " + AppDomain.CurrentDomain.FriendlyName);
            }

            console.Write(" " + selectedCommand.Command);

            if (haveOptions)
                console.Write(" <options> ");

            console.WriteLine(selectedCommand.RemainingArgumentsHelpText);

            if (haveOptions)
            {
                console.WriteLine("<options> available:");
                selectedCommand.GetActualOptions().WriteOptionDescriptions(console);
            }
            console.WriteLine();
        }

        public static void ShowParsedCommand(ConsoleCommand consoleCommand, TextWriter consoleOut)
        {
            if (!consoleCommand.TraceCommandAfterParse)
            {
                return;
            }

            var properties = consoleCommand.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .Where(p => !consoleCommand.TraceCommandSkipProperties.Contains(p.Name));

            var fields = consoleCommand.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance)
                .Where(p => !consoleCommand.TraceCommandSkipProperties.Contains(p.Name));

            Dictionary<string,string> allValuesToTrace = new Dictionary<string, string>();

            foreach (var property in properties)
            {
                allValuesToTrace[property.Name] = MakeObjectReadable(property.GetValue(consoleCommand, new object[0]));
            }

            foreach (var field in fields)
            {
                allValuesToTrace[field.Name] = MakeObjectReadable(field.GetValue(consoleCommand));
            }

            consoleOut.WriteLine();

            string introLine = String.Format("Executing {0}", consoleCommand.Command);

            if (string.IsNullOrEmpty(consoleCommand.OneLineDescription))
                introLine = introLine + ":";
            else
                introLine = introLine + " (" + consoleCommand.OneLineDescription + "):";

            consoleOut.WriteLine(introLine);
            
            foreach(var value in allValuesToTrace.OrderBy(k => k.Key))
                consoleOut.WriteLine("    " + value.Key + " : " + value.Value);

            consoleOut.WriteLine();
        }

        static string MakeObjectReadable(object value)
        {
            string readable;

            if (value is System.Collections.IEnumerable && !(value is string))
            {
                readable = "";
                var separator = "";

                foreach (var member in (IEnumerable) value)
                {
                    readable += separator + MakeObjectReadable(member);
                    separator = ", ";
                }
            }
            else if (value != null)
                readable = value.ToString();
            else
                readable = "null";
            return readable;
        }
    }
}


================================================
FILE: ManyConsole/Internal/ConsoleRedirectionDetection.cs
================================================
namespace ManyConsole.Internal
{
    using System;

    // implementation from http://stackoverflow.com/questions/3453220/how-to-detect-if-console-in-stdin-has-been-redirected

    public interface IConsoleRedirectionDetection
    {
        bool IsOutputRedirected();
        bool IsInputRedirected();
        bool IsErrorRedirected();
    }

    public class ConsoleRedirectionDetection : IConsoleRedirectionDetection
    {
        public bool IsOutputRedirected()
        {
            return Console.IsOutputRedirected;
        }
        public bool IsInputRedirected()
        {
            return Console.IsInputRedirected;
        }
        public bool IsErrorRedirected()
        {
            return Console.IsErrorRedirected;
        }

    }
}


================================================
FILE: ManyConsole/Internal/ConsoleUtil.cs
================================================
using System.Linq;

namespace ManyConsole.Internal
{
    public abstract class ConsoleUtil
    {
        public static void VerifyNumberOfArguments(string[] args, int? expectedArgumentCountMin, int? expectedArgumentCountMax)
        {
            if (expectedArgumentCountMin.HasValue && args.Count() < expectedArgumentCountMin.Value)
                throw new ConsoleHelpAsException(
                    string.Format("Invalid number of arguments-- expected {0} more.", expectedArgumentCountMin.Value - args.Count()));

            if (expectedArgumentCountMax.HasValue && args.Count() > expectedArgumentCountMax.Value)
                throw new ConsoleHelpAsException("Extra parameters specified: " + string.Join(", ", args.Skip(expectedArgumentCountMax.Value).ToArray()));
        }
    }
}

================================================
FILE: ManyConsole/Internal/RequiredOptionRecord.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ManyConsole.Internal
{
    public class RequiredOptionRecord
    {
        public string Name;
        public bool WasIncluded;
    }
}


================================================
FILE: ManyConsole/ManyConsole.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
    <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Mono.Options" Version="5.3.0.1" />
  </ItemGroup>

</Project>


================================================
FILE: ManyConsole.Tests/Can_consume_variable_number_of_arguments.cs
================================================
using NUnit.Framework;
using System.IO;
using System.Text;

namespace ManyConsole.Tests
{
    public class Can_consume_variable_number_of_arguments
    {
        [Test]
        public void Expecting2CalledWith0()
        {
            var output = run_command_with_parameters(new[] { "command1" });
            StringAssert.Contains("Invalid number of arguments-- expected 2 more", output,
                "the output does not have an errorstring asking for 2 more parameters");
        }
        [Test]
        public void Expecting2CalledWith1()
        {
            var output = run_command_with_parameters(new[] { "command1", "1" });
            StringAssert.Contains("Invalid number of arguments-- expected 1 more", output,
                "the output does not have an errorstring asking for 1 more parameter");
        }
        [Test]
        public void Expecting2CalledWith2()
        {
            var output = run_command_with_parameters(new[] { "command1", "1", "2" });
            StringAssert.AreEqualIgnoringCase("Executing command1:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void Expecting2CalledWith5()
        {
            var output = run_command_with_parameters(new[] { "command1", "1", "2", "3", "4", "5" });
            StringAssert.AreEqualIgnoringCase("Executing command1:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void Expecting2To5CalledWith0()
        {
            var output = run_command_with_parameters(new[] { "command2" });
            StringAssert.Contains("Invalid number of arguments-- expected 2 more", output,
                "the output does not have an errorstring asking for 2 more parameters");
        }
        [Test]
        public void Expecting2To5CalledWith1()
        {
            var output = run_command_with_parameters(new[] { "command2", "1" });
            StringAssert.Contains("Invalid number of arguments-- expected 1 more", output,
                "the output does not have an errorstring asking for 1 more parameter");
        }
        [Test]
        public void Expecting2To5CalledWith2()
        {
            var output = run_command_with_parameters(new[] { "command2", "1", "2" });
            StringAssert.AreEqualIgnoringCase("Executing command2:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void Expecting2To5CalledWith4()
        {
            var output = run_command_with_parameters(new[] { "command2", "1", "2", "3", "4" });
            StringAssert.AreEqualIgnoringCase("Executing command2:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void Expecting2To5CalledWith5()
        {
            var output = run_command_with_parameters(new[] { "command2", "1", "2", "3", "4", "5" });
            StringAssert.AreEqualIgnoringCase("Executing command2:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void Expecting2To5CalledWith6()
        {
            var output = run_command_with_parameters(new[] { "command2", "1", "2", "3", "4", "5", "6" });
            StringAssert.Contains("Extra parameters specified: 6", output,
                "the output does not have an errorstring iundicating superfluous parameter(s)");
        }

        public class CommandWithAtLeast2Parameters : ConsoleCommand
        {
            public CommandWithAtLeast2Parameters()
            {
                this.IsCommand("command1");
                HasAdditionalArgumentsBetween(2, null, "");
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        public class CommandWith2To5Parameters : ConsoleCommand
        {
            public CommandWith2To5Parameters()
            {
                this.IsCommand("command2");
                HasAdditionalArgumentsBetween(2, 5, "");
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        private string run_command_with_parameters(string[] parameters)
        {
            StringBuilder sb = new StringBuilder();
            var sw = new StringWriter(sb);

            ConsoleCommandDispatcher.DispatchCommand(
                new ConsoleCommand[]
                {
                    new CommandWithAtLeast2Parameters(),
                    new CommandWith2To5Parameters()
                },
                parameters,
                sw);

            return sb.ToString();
        }
    }
}


================================================
FILE: ManyConsole.Tests/Can_define_commands_with_aliases.cs
================================================
using NUnit.Framework;
using System.IO;
using System.Text;

namespace ManyConsole.Tests
{
    public class Can_define_commands_with_aliases
    {
        [Test]
        public void CommandWithTwoAliasesDirect()
        {
            var output = run_command_with_parameters(new[] { "command" });
            StringAssert.AreEqualIgnoringCase("Executing command:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void CommandWithTwoAliasesFirst()
        {
            var output = run_command_with_parameters(new[] { "--command" });
            StringAssert.AreEqualIgnoringCase("Executing command:", output.Trim(),
                "unexpected output for valid command");
        }
        [Test]
        public void CommandWithTwoAliasesSecond()
        {
            var output = run_command_with_parameters(new[] { "-c" });
            StringAssert.AreEqualIgnoringCase("Executing command:", output.Trim(),
                "unexpected output for valid command");
        }

        public class CommandWith2Aliases: ConsoleCommand
        {
            public CommandWith2Aliases()
            {
                this.IsCommand("command");
                this.HasAlias("--command");
                this.HasAlias("-c");
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        private string run_command_with_parameters(string[] parameters)
        {
            StringBuilder sb = new StringBuilder();
            var sw = new StringWriter(sb);

            ConsoleCommandDispatcher.DispatchCommand(
                new ConsoleCommand[]
                {
                    new CommandWith2Aliases()
                },
                parameters,
                sw);

            return sb.ToString();
        }
    }
}


================================================
FILE: ManyConsole.Tests/Can_have_required_parameters.cs
================================================
using System.IO;
using NUnit.Framework;

namespace ManyConsole.Tests
{
    public class Can_have_required_parameters
    {
        [Test]
        public void CommandRunWithoutParameters()
        {
            string result = null;
            var noopCommand = new TestCommand()
                .IsCommand("required", "This command has a required parameter")
                .HasOption("ignored=", "An extra option.", v => { })
                .HasRequiredOption("f|foo=", "This foo to use.", v => result = v)
                .SkipsCommandSummaryBeforeRunning();

            when_the_command_is_run_without_the_parameter_then_the_console_gives_error_output(noopCommand, "foo");
            //            when("that command is ran with the parameter", delegate ()
            StringWriter output = new StringWriter();

            var exitCode = ConsoleCommandDispatcher.DispatchCommand(noopCommand,
                new[] { "required", "-foo", "bar" }, output);

            Assert.AreEqual(0, exitCode,
                "the exit code does not indicates the call succeeded");

            Assert.AreEqual("bar", result,
                "the option is not received");
        }
        [Test]
        public void CommandRunWithIntegerParameters()
        {
            int result = 0;
            var requiresInteger = new TestCommand()
                .IsCommand("parse-int")
                .HasRequiredOption<int>("value=", "The integer value", v => result = v);

            when_the_command_is_run_without_the_parameter_then_the_console_gives_error_output(requiresInteger, "value");

            //when("the command is passed an integer value", () =>
            StringWriter output = new StringWriter();

            var exitCode = ConsoleCommandDispatcher.DispatchCommand(requiresInteger,
                new[] { "parse-int", "-value", "42" }, output);

            Assert.AreEqual(0, exitCode,
                "the exit code does not indicates the call succeeded");

            Assert.AreEqual(42, result,
                "the value is not received");
        }

        void when_the_command_is_run_without_the_parameter_then_the_console_gives_error_output(ConsoleCommand command, string parameterName)
        {
            StringWriter output = new StringWriter();

            var exitCode = ConsoleCommandDispatcher.DispatchCommand(command,new[] {command.Command}, output);

            StringAssert.Contains("Missing option: " + parameterName, output.ToString(),
                "the output does not indicates the parameter wasn't specified");

            Assert.AreEqual(-1, exitCode,
                "the exit code does not indicate the call failed");
        }
    }
}


================================================
FILE: ManyConsole.Tests/Can_modify_command_behavior_after_parsing_and_before_running.cs
================================================
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace ManyConsole.Tests
{
    public class Can_modify_command_behavior_after_parsing_and_before_running
    {
        public class OverridingCommand : ConsoleCommand
        {
            public OverridingCommand()
            {
                this.IsCommand("fail-me-maybe");
                this.HasOption<int>("n=", "number", v => Maybe = v);
            }

            public int? Maybe;

            public override int? OverrideAfterHandlingArgumentsBeforeRun(string[] remainingArguments)
            {
                return Maybe;
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        [Test]
        public void ReturnCodeAndHalt()
        {
            var output = new StringWriter();
            var command = new OverridingCommand();

            var exitCode = ConsoleCommandDispatcher.DispatchCommand(command, new[] { "/n", "123" }, output);

            Assert.AreEqual(123, exitCode, "Exit code not 123 as expected");
            Assert.That(String.IsNullOrEmpty(output.ToString()), "Output is not empty");
        }

    }
}


================================================
FILE: ManyConsole.Tests/Can_overwrite_options_property.cs
================================================
using System;
using System.IO;
using System.Text;
using Mono.Options;
using NUnit.Framework;

namespace ManyConsole.Tests
{
    public class Can_overwrite_options_property 
    {
        public class OverwriteCommand : ConsoleCommand
        {
            public int A;
            public int B;
            public string Result;

            public OverwriteCommand()
            {
                this.IsCommand("foo", "bar");
                this.HasOption<int>("A=", "first value", v => A = v);
                this.SkipsCommandSummaryBeforeRunning();

                var optionSet = new OptionSet();
                this.Options = optionSet;
                optionSet.Add<int>("B=", "second option", v => B = v);
            }

            public override int Run(string[] remainingArguments)
            {
                Result = A + "," + B;
                return 0;
            }
        }
        [Test]
        public void DoNotLooseOtherArgumentsWhenPropertyOptionsAreOverwritten()
        {
            var command = new OverwriteCommand();
            var consoleOutput = new StringBuilder();

            var outputCode = ConsoleCommandDispatcher.DispatchCommand(
                command,
                new[] { "/A", "1", "/B", "2" },
                new StringWriter(consoleOutput));

            Assert.That(String.IsNullOrEmpty(consoleOutput.ToString()), "Console output is not empty");
            Assert.AreEqual(0, outputCode, "Output is not zero");
            StringAssert.AreEqualIgnoringCase("1,2", command.Result);
        }
    }
}


================================================
FILE: ManyConsole.Tests/Can_verify_number_of_arguments_passed_to_command.cs
================================================
using NUnit.Framework;
using System.IO;
using System.Text;

namespace ManyConsole.Tests
{
    public class Can_verify_number_of_arguments_passed_to_command
    {
        [Test]
        public void Expecting5CalledWith0()
        {
            var output = run_command_with_parameters(new[] { "command" });
            StringAssert.Contains("Invalid number of arguments-- expected 5 more.", output,
                "the output does not have an errorstring asking for 5 parameters");
        }
        [Test]
        public void Expecting5CalledWith8()
        {
            var output = run_command_with_parameters(new[] { "command", "1", "2", "3", "4", "5", "6", "7", "8" });
            StringAssert.Contains("Extra parameters specified: 6, 7, 8", output,
                "the output does not have an errorstring indicating the extra parameters");
        }
        [Test]
        public void Expecting5CalledWith5()
        {
            var output = run_command_with_parameters(new[] { "command", "1", "2", "3", "4", "5" });
            StringAssert.AreEqualIgnoringCase("Executing command:", output.Trim(),
                "unexpected output for valid command");
        }

        public class CommandWith5Parameters : ConsoleCommand
        {
            public CommandWith5Parameters()
            {
                this.IsCommand("command");
                HasAdditionalArguments(5);
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        private string run_command_with_parameters(string[] parameters)
        {
            StringBuilder sb = new StringBuilder();
            var sw = new StringWriter(sb);

            ConsoleCommandDispatcher.DispatchCommand(
                new ConsoleCommand[]
                {
                    new CommandWith5Parameters()
                },
                parameters,
                sw);

            return sb.ToString();
        }
    }
}


================================================
FILE: ManyConsole.Tests/ConsoleModeCommandSpecs/StatusEchoCommand.cs
================================================
using System;

namespace ManyConsole.Tests.ConsoleModeCommandSpecs
{
    public class StatusEchoCommand : ConsoleCommand
    {
        public static int RunCount = 0;

        public StatusEchoCommand()
        {
            this.IsCommand("echo-status", "Returns a particular status code");
            this.HasRequiredOption("s=", "Status code to return", v => StatusCode = Int32.Parse(v));
        }

        public int StatusCode;

        public override int Run(string[] remainingArguments)
        {
            RunCount++;
            return StatusCode;
        }
    }
}

================================================
FILE: ManyConsole.Tests/Console_interface_is_simplified_when_there_is_only_one_command.cs
================================================
using NUnit.Framework;
using System.IO;

namespace ManyConsole.Tests
{
    public class Console_interface_is_simplified_when_there_is_only_one_command
    {
        private const int Success = 999;

        public class ExampleCommand : ConsoleCommand
        {
            public ExampleCommand()
            {
                this.IsCommand("Example");
                this.HasOption("f|foo=", "This foo to use.", v => Foo = v);
                this.SkipsCommandSummaryBeforeRunning();
            }

            public override int Run(string[] remainingArguments)
            {
                return Success;
            }

            public string Foo { get; set; }
        }

        [Test]
        public void NoParametersSpecified()
        {
            var exampleCommand = new ExampleCommand();

            var output = new StringWriter();
            var exitCode = ConsoleCommandDispatcher.DispatchCommand(exampleCommand, new string[0], output);

            then_the_command_runs_without_tracing_parameter_information(output, exitCode);

            Assert.IsNull(exampleCommand.Foo);
        }
        [Test]
        public void OnlyCommandIsSpecified()
        {
            var exampleCommand = new ExampleCommand();

            var output = new StringWriter();
            var exitCode = ConsoleCommandDispatcher.DispatchCommand(exampleCommand, new[] { "Example" }, output);

            then_the_command_runs_without_tracing_parameter_information(output, exitCode);

            Assert.IsNull(exampleCommand.Foo);
        }
        [Test]
        public void OnlyParameterIsNotCommand()
        {
            var exampleCommand = new ExampleCommand();

            var output = new StringWriter();
            var exitCode = ConsoleCommandDispatcher.DispatchCommand(exampleCommand, new[] { "/f=bar" }, output);

            then_the_command_runs_without_tracing_parameter_information(output, exitCode);

            StringAssert.AreEqualIgnoringCase("bar", exampleCommand.Foo);
        }
        [Test]
        public void CommandAndParameterSpecified()
        {
            var exampleCommand = new ExampleCommand();

            var output = new StringWriter();
            var exitCode = ConsoleCommandDispatcher.DispatchCommand(exampleCommand, new[] { "Example", "/f=bar" }, output);

            then_the_command_runs_without_tracing_parameter_information(output, exitCode);

            StringAssert.AreEqualIgnoringCase("bar", exampleCommand.Foo);
        }
        private void then_the_command_runs_without_tracing_parameter_information(StringWriter output, int exitCode)
        {
            Assert.That(string.IsNullOrEmpty(output.ToString().Trim()),
                "the output is not empty");
            Assert.AreEqual(Success, exitCode);
        }
    }
}


================================================
FILE: ManyConsole.Tests/ManyConsole.Tests.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>

    <IsPackable>false</IsPackable>

    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
    <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Castle.Core" Version="4.4.0" />
    <PackageReference Include="FakeItEasy" Version="5.1.1" />
    <PackageReference Include="Mono.Options" Version="5.3.0.1" />
    <PackageReference Include="nunit" Version="3.11.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.13.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
    <PackageReference Include="PowerAssert" Version="1.0.85" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ManyConsole\ManyConsole.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: ManyConsole.Tests/Multiple_dispatch_calls_dont_interfere_with_each_other.cs
================================================
using System.IO;
using Mono.Options;
using NUnit.Framework;

namespace ManyConsole.Tests
{
    public class Multiple_dispatch_calls_dont_interfere_with_each_other
    {
        [Test]
        public void RepeatedlyDispatchingCommand()
        {
            var trace = new StringWriter();

            ConsoleCommandDispatcher.DispatchCommand(SomeProgram.GetCommands(trace), new[] { "move", "-x", "1", "-y", "2" }, new StringWriter());
            ConsoleCommandDispatcher.DispatchCommand(SomeProgram.GetCommands(trace), new[] { "move", "-x", "3" }, new StringWriter());
            ConsoleCommandDispatcher.DispatchCommand(SomeProgram.GetCommands(trace), new[] { "move", "-y", "4" }, new StringWriter());
            ConsoleCommandDispatcher.DispatchCommand(SomeProgram.GetCommands(trace), new[] { "move" }, new StringWriter());

            // all parameters are evaluated independently
            MyStringAssert.ContainsInOrder(trace.ToString(),
                        "You walk to 1, 2 and find a maze of twisty little passages, all alike.",
                        "You walk to 3, 0 and find a maze of twisty little passages, all alike.",
                        "You walk to 0, 4 and find a maze of twisty little passages, all alike.",
                        "You walk to 0, 0 and find a maze of twisty little passages, all alike."
                    );            
        }

        public class SomeProgram
        {
            public static CoordinateCommand[] GetCommands(StringWriter trace)
            {
                return new[]
            {
                new CoordinateCommand(trace)    
            };
            }
        }

        public class CoordinateCommand : ConsoleCommand
        {
            readonly TextWriter _recorder;

            public CoordinateCommand(TextWriter recorder)
            {
                _recorder = recorder;

                this.IsCommand("move");
                Options = new OptionSet()
                {
                    {"x=", "Coordinate along the x axis.", v => X = int.Parse(v)},
                    {"y=", "Coordinate along the y axis.", v => Y = int.Parse(v)},
                };
            }

            public int X;
            public int Y;

            public override int Run(string[] remainingArguments)
            {
                _recorder.WriteLine("You walk to {0}, {1} and find a maze of twisty little passages, all alike.", X, Y);
                return 0;
            }
        }
    }
}


================================================
FILE: ManyConsole.Tests/MyStringAssert.cs
================================================

using NUnit.Framework;

namespace ManyConsole.Tests
{
    static class MyStringAssert
    {
        public static void ContainsInOrder(string actual, params string[] args)
        {
            int i = 0;
            bool result = true;
            foreach (var s in args)
            {
                int pos = actual.IndexOf(s);
                if (pos < i)
                    result = false;
                else
                    i = pos + 1;                
            }
            Assert.IsTrue(result);
        }

    }
}


================================================
FILE: ManyConsole.Tests/Show_useful_error_information.cs
================================================
using System.ComponentModel;
using System.IO;
using NUnit.Framework;

namespace ManyConsole.Tests
{
    public class Show_useful_error_information
    {
        string TextWithinExpectedUsageHelp = "Expected usage:";

        [Test]
        public void UserTypesInputRejectedByNDeskOptions()
        {
            var trace = new StringWriter();

            var lastError = ConsoleCommandDispatcher.DispatchCommand(
                    new ConsoleCommand[] { new SomeCommandWithAParameter() },
                    new[] { "some", "/a" },
                    trace);

            // the error output gives the error message and typical help
            Assert.AreNotEqual(0, lastError);

            StringAssert.Contains("Missing required value for option '/a'", trace.ToString());
            StringAssert.Contains(TextWithinExpectedUsageHelp, trace.ToString());

            StringAssert.DoesNotContain("ndesk.options", trace.ToString().ToLower());
            StringAssert.DoesNotContain("exception", trace.ToString().ToLower());
    
            // a command causes other unexpected errors
            Assert.Throws<InvalidAsynchronousStateException>(() => ConsoleCommandDispatcher.DispatchCommand(
                        new ConsoleCommand[] { new SomeCommandThrowingAnException(), },
                        new string[0],
                        trace));
        }

        class SomeCommandWithAParameter : ConsoleCommand
        {
            public SomeCommandWithAParameter()
            {
                this.IsCommand("some");
                this.HasOption("a=", "a parameter", v => {});
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }
        
        class SomeCommandThrowingAnException : ConsoleCommand
        {
            public SomeCommandThrowingAnException()
            {
                this.IsCommand("some");
            }

            public override int Run(string[] remainingArguments)
            {
                throw new InvalidAsynchronousStateException();
            }
        }
    }
}


================================================
FILE: ManyConsole.Tests/TestCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ManyConsole.Tests
{
    public class TestCommand : ConsoleCommand
    {
        public Func<int> Action = delegate { return 0; };

        public override int Run(string[] remainingArguments)
        {
            return Action();
        }
    }
}


================================================
FILE: ManyConsole.Tests/abstract_commands_arent_loaded.cs
================================================
using NUnit.Framework;
using System.Linq;

namespace ManyConsole.Tests
{
    public class abstract_commands_arent_loaded
    {
        public abstract class AbstractCommand : ConsoleCommand
        {
        }

        public abstract class AnotherAbstractCommand : AbstractCommand
        {
            public AnotherAbstractCommand() {}
        }

        public class NonabstractCommand : AnotherAbstractCommand
        {
            public NonabstractCommand()
            {
                this.IsCommand("NonabstractCommand");
            }

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        [Test]
        public void AbstractCommandArentLoaded()
        {
            var commands = ConsoleCommandDispatcher.FindCommandsInSameAssemblyAs(this.GetType());

            Assert.IsTrue(commands.Any(c => c.GetType() == typeof(NonabstractCommand)), "No non-abstract commands are found.");
            Assert.IsFalse(commands.Any(c => c.GetType() == typeof(AbstractCommand)), "AbstractCommands present - should be ignored.");
            Assert.IsFalse(commands.Any(c => c.GetType() == typeof(AnotherAbstractCommand)), "AnotherAbstractCommand present - should be ignored.");
        }

    }
}


================================================
FILE: ManyConsole.Tests/lets_user_browse_command_help.cs
================================================
using NUnit.Framework;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace ManyConsole.Tests
{

    public class lets_user_browse_command_help
    {
        [Test]
        public void TestCommandDescriptions()
        {
            var firstcommand = new TestCommand().IsCommand("command-a", "oneline description a");
            var secondCommand = new TestCommand().IsCommand("command-b", "oneline description b");

            var commands = new ConsoleCommand[]
            {
                firstcommand,
                secondCommand
            }.ToList();

            var writer = new StringWriter();

            WhenTheUserDoesNotSpecifyACommandThenShowAvailableCommands(commands, writer, firstcommand, secondCommand, new string[0]);
            WhenTheUserDoesNotSpecifyACommandThenShowAvailableCommands(commands, writer, firstcommand, secondCommand, new [] { "help"});

            ShouldShowHelpWhenRequested(commands, new string[] { "command-c", "/?" });
            ShouldShowHelpWhenRequested(commands, new string[] { "help", "command-c" });
        }

        private void WhenTheUserDoesNotSpecifyACommandThenShowAvailableCommands(List<ConsoleCommand> commands, StringWriter writer,
                                                                                ConsoleCommand firstcommand,
                                                                                ConsoleCommand secondCommand, string[] arguments)
        {
            // when the user does not specify a command
            ConsoleCommandDispatcher.DispatchCommand(commands, arguments, writer);

            // then the output contains a list of available commands
            var output = writer.ToString();

            MyStringAssert.ContainsInOrder(output, firstcommand.Command,
                    firstcommand.OneLineDescription,
                    secondCommand.Command,
                    secondCommand.OneLineDescription);
        }

        private void ShouldShowHelpWhenRequested(List<ConsoleCommand> commands, string[] consoleArguments)
        {
            var writer = new StringWriter();

            // when we call a command, asking for help
            var commandC = new TestCommand()
                .IsCommand("command-c", "one line description for C")
                .HasLongDescription(
@"Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.")
                .HasAdditionalArguments(0, "<remaining> <args>")
                .HasOption("o|option=", "option description", v => { });

            commands.Add(commandC);

            var exitCode = ConsoleCommandDispatcher.DispatchCommand(commands, consoleArguments, writer);

            // then the output contains a all help available for that command
            var output = writer.ToString();
            MyStringAssert.ContainsInOrder(output,
                commandC.Command,
                commandC.OneLineDescription,
                commandC.LongDescription,
                commandC.RemainingArgumentsHelpText,
                "-o",
                "--option",
                "option description");
                
            Assert.AreEqual(-1, exitCode);
        }
    }
}


================================================
FILE: ManyConsole.Tests/show_useful_command_summary.cs
================================================
using NUnit.Framework;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace ManyConsole.Tests
{
    public class show_useful_command_summary
    {
        class SomeCommand : ConsoleCommand
        {
            public SomeCommand()
            {
                this.IsCommand("thecommand", "One-line description");
                PropertyB = "def";
            }

            public string FieldA = "abc";
            public string PropertyB { get; set; }
            public int? PropertyC { get; set; }
            public IEnumerable<int>  PropertyD = new int[] { 1,2,3 };

            public override int Run(string[] remainingArguments)
            {
                return 0;
            }
        }

        [Test]
        public void RunSimpleCommand()
        {
            StringBuilder result = new StringBuilder();
            var sw = new StringWriter(result);

            ConsoleCommandDispatcher.DispatchCommand(
                new ConsoleCommand[]
                {
                    new SomeCommand()
                },
                new string[] { "thecommand" },
                sw);

            // the output includes a summary of the command
            StringAssert.AreEqualIgnoringCase(@"
Executing thecommand (One-line description):
    FieldA : abc
    PropertyB : def
    PropertyC : null
    PropertyD : 1, 2, 3

", result.ToString());
        }
    }
}


================================================
FILE: ManyConsole.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>ManyConsole</id>
    <version>$version$</version>
    <authors>Frank Schwieterman</authors>
    <owners>fschwiet</owners>
    <license type="file">LICENSE.txt</license>
    <projectUrl>https://github.com/fschwiet/ManyConsole/</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>A library for writing console applications.  Extends Mono.Options to support separate commands from one console application.</description>
    <releaseNotes>.NET standard 2.0 support added in ManyConsole 2.0.  ConsoleModeCommand was split to separte DLL not supported for .NET standard 2.0  </releaseNotes>
    <copyright>Copyright 2019</copyright>
    <tags>mono.options command-line console</tags>
    <dependencies>
      <dependency id="Mono.Options" version="5.3" />
    </dependencies>
    <summary>Easily mix commands for a console application.</summary>
  </metadata>
  <files>
    <file src="..\ManyConsole\ManyConsole.dll" target="lib\netstandard2.0\ManyConsole.dll" />
    <file src="..\ManyConsole\ManyConsole.pdb" target="lib\netstandard2.0\ManyConsole.pdb" />
    <file src="..\ManyConsole\ManyConsole.dll" target="lib\net46\ManyConsole.dll" />
    <file src="..\ManyConsole\ManyConsole.pdb" target="lib\net46\ManyConsole.pdb" />
    <file src="..\ManyConsoleModeCommand\ManyConsoleModeCommand.dll" target="lib\net46\ManyConsoleModeCommand.dll" />
    <file src="..\ManyConsoleModeCommand\ManyConsoleModeCommand.pdb" target="lib\net46\ManyConsoleModeCommand.pdb" />
    <file src="..\..\LICENSE.TXT" target="LICENSE.txt"/>
  </files>
</package>

================================================
FILE: ManyConsole.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28729.10
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManyConsole", "ManyConsole\ManyConsole.csproj", "{18205C5D-97C7-4314-94CC-8DCF0BCA0673}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleConsole", "SampleConsole\SampleConsole.csproj", "{4ACACC34-FEC3-432C-8EC1-4D07586EC948}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{372EBBAA-5A4F-450E-BA4E-AEC14225C999}"
	ProjectSection(SolutionItems) = preProject
		default.ps1 = default.ps1
		readme.md = readme.md
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D7FAA0BE-0F38-472C-945B-25CAFAD5A8C0}"
	ProjectSection(SolutionItems) = preProject
		.nuget\packages.config = .nuget\packages.config
	EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ManyConsole.Tests", "ManyConsole.Tests\ManyConsole.Tests.csproj", "{FE40442C-3D7F-4595-BD45-D50243165DDE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManyConsoleModeCommand", "ManyConsoleModeCommand\ManyConsoleModeCommand.csproj", "{B983A1F4-5A01-494A-969A-72FD67FCC49A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManyConsoleModeCommand.Test", "ManyConsoleModeCommand.Test\ManyConsoleModeCommand.Test.csproj", "{90F82204-8871-4AB8-A06E-445CFD55BE02}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|Mixed Platforms = Debug|Mixed Platforms
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|Mixed Platforms = Release|Mixed Platforms
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{90DB8534-C471-47CF-999D-BE7A86070979}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Debug|x86.ActiveCfg = Debug|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Release|Any CPU.Build.0 = Release|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Release|Mixed Platforms.Build.0 = Release|Any CPU
		{90DB8534-C471-47CF-999D-BE7A86070979}.Release|x86.ActiveCfg = Release|Any CPU
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Debug|Any CPU.ActiveCfg = Debug|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Debug|Mixed Platforms.Build.0 = Debug|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Debug|x86.ActiveCfg = Debug|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Debug|x86.Build.0 = Debug|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Release|Any CPU.ActiveCfg = Release|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Release|Mixed Platforms.ActiveCfg = Release|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Release|Mixed Platforms.Build.0 = Release|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Release|x86.ActiveCfg = Release|x86
		{4ACACC34-FEC3-432C-8EC1-4D07586EC948}.Release|x86.Build.0 = Release|x86
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Debug|x86.ActiveCfg = Debug|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Debug|x86.Build.0 = Debug|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Release|Any CPU.Build.0 = Release|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Release|x86.ActiveCfg = Release|Any CPU
		{FE40442C-3D7F-4595-BD45-D50243165DDE}.Release|x86.Build.0 = Release|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Debug|x86.Build.0 = Debug|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Release|Any CPU.Build.0 = Release|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Release|x86.ActiveCfg = Release|Any CPU
		{B983A1F4-5A01-494A-969A-72FD67FCC49A}.Release|x86.Build.0 = Release|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Debug|x86.ActiveCfg = Debug|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Debug|x86.Build.0 = Debug|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Release|Any CPU.Build.0 = Release|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Release|Mixed Platforms.Build.0 = Release|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Release|x86.ActiveCfg = Release|Any CPU
		{90F82204-8871-4AB8-A06E-445CFD55BE02}.Release|x86.Build.0 = Release|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Debug|x86.ActiveCfg = Debug|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Debug|x86.Build.0 = Debug|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Release|Any CPU.Build.0 = Release|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Release|Mixed Platforms.Build.0 = Release|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Release|x86.ActiveCfg = Release|Any CPU
		{18205C5D-97C7-4314-94CC-8DCF0BCA0673}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {AFDCFEE6-A661-4100-B8D1-B8FF73B97390}
	EndGlobalSection
EndGlobal


================================================
FILE: ManyConsoleModeCommand/ConsoleModeCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using ManyConsole.Internal;
using Mono.Options;

namespace ManyConsole
{
    public class ConsoleModeCommand : ConsoleCommand
    {
        private readonly TextReader _inputStream;
        private readonly TextWriter _outputStream;
        IConsoleRedirectionDetection _redirectionDetector = new ConsoleRedirectionDetection();
        public static string FriendlyContinuePrompt = "Enter a command or 'x' to exit or '?' for help";
        readonly Func<IEnumerable<ConsoleCommand>> _commandSource;
        private string _continuePrompt;

        public ConsoleModeCommand(
            TextWriter outputStream = null,
            TextReader inputStream = null,
            OptionSet options = null)
            : this(() => new ConsoleCommand[0], outputStream, inputStream, null, options)
        {
            _commandSource = () => new ConsoleCommand[0];
        }

        [Obsolete("Its preferred to override methods on ConsoleModeCommand and use the shorter constructor.")]
        public ConsoleModeCommand(
            Func<IEnumerable<ConsoleCommand>> commandSource,
            TextWriter outputStream = null,
            TextReader inputStream = null,
            string friendlyContinueText = null,
            OptionSet options = null)
        {
            _inputStream = inputStream ?? Console.In;
            _outputStream = outputStream ?? Console.Out;

            this.IsCommand("run-console", "Run in console mode, treating each line of console input as a command.");

            this.Options = options ?? this.Options;  //  added per request from https://github.com/fschwiet/ManyConsole/issues/7

            _commandSource = () =>
            {
                var commands = commandSource();
                return commands.Where(c => !(c is ConsoleModeCommand));  // don't cross the beams
            };

            _continuePrompt = friendlyContinueText ?? FriendlyContinuePrompt;
        }

        /// <summary>
        /// Writes to the console to prompt the user for their next command.
        /// Is skipped if commands are being ran without user interaction.
        /// </summary>
        public virtual void WritePromptForCommands()
        {
            if (!string.IsNullOrEmpty(_continuePrompt))
                _outputStream.WriteLine(_continuePrompt);
        }

        /// <summary>
        /// Runs to get the next available commands
        /// </summary>
        /// <returns></returns>
        public virtual IEnumerable<ConsoleCommand> GetNextCommands()
        {
            return _commandSource();
        }

        public override int Run(string[] remainingArguments)
        {
            string[] args;

            bool isInputRedirected = _redirectionDetector.IsInputRedirected();

            if (!isInputRedirected)
            {
                WritePromptForCommands();
            }

            bool haveError = false;
            string input = _inputStream.ReadLine();

            while (!input.Trim().Equals("x"))
            {
                if (input.Trim().Equals("?"))
                {
                    ConsoleHelp.ShowSummaryOfCommands(GetNextCommands(), _outputStream);
                }
                else
                {
                    args = CommandLineParser.Parse(input);

                    var result = ConsoleCommandDispatcher.DispatchCommand(GetNextCommands(), args, _outputStream, true);
                    if (result != 0)
                    {
                        haveError = true;

                        if (isInputRedirected)
                            return result;
                    }
                }
                
                if (!isInputRedirected)
                {
                    _outputStream.WriteLine();

                    if (!isInputRedirected)
                    {
                        WritePromptForCommands();
                    }
                }

                input = _inputStream.ReadLine();
            }

            return haveError ? -1 : 0;
        }

        public void SetConsoleRedirectionDetection(IConsoleRedirectionDetection consoleRedirectionDetection)
        {
            _redirectionDetector = consoleRedirectionDetection;
        }
    }
}


================================================
FILE: ManyConsoleModeCommand/Internal/CommandLineParser.cs
================================================
using System;
using System.Runtime.InteropServices;

namespace ManyConsole.Internal
{
    public static class CommandLineParser
    {
        /// <summary>
        /// Splits a string in the same way that Windows splits up a command line into args 
        /// (i.e. identical to how this is implemented under the covers: http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx)
        /// </summary>
        /// <param name="commandLine">a string containing command line arguments</param>
        /// <returns></returns>
        /// <remarks>taken from http://stackoverflow.com/q/298830/5351</remarks>
        public static string[] Parse(string commandLine)
        {
            int argc;
            var argv = CommandLineToArgvW(commandLine, out argc);
            if (argv == IntPtr.Zero)
                throw new System.ComponentModel.Win32Exception();
            try
            {
                var args = new string[argc];
                for (var i = 0; i < args.Length; i++)
                {
                    var p = Marshal.ReadIntPtr(argv, i * IntPtr.Size);
                    args[i] = Marshal.PtrToStringUni(p);
                }

                return args;
            }
            finally
            {
                Marshal.FreeHGlobal(argv);
            }
        }


        [DllImport("shell32.dll", SetLastError = true)]
        static extern IntPtr CommandLineToArgvW(
            [MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, out int pNumArgs);
    }
}


================================================
FILE: ManyConsoleModeCommand/ManyConsoleModeCommand.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
    <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Mono.Options" Version="5.3.0.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ManyConsole\ManyConsole.csproj" />
  </ItemGroup>

</Project>

================================================
FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/ConsoleModeCommandSpecification.cs
================================================
using System;
using System.IO;
using FakeItEasy;
using ManyConsole.Internal;

namespace ManyConsole.Tests.ConsoleModeCommandSpecs
{
    public abstract class ConsoleModeCommandSpecification 
    {
        public Func<int> RunConsoleModeCommand(string[] lines, bool inputIsFromUser, ConsoleCommand command, TextWriter outputWriter = null)
        {
            var injectedInputStream = new MemoryStream();

            var fakeConsoleWriter = outputWriter ?? new StringWriter();
            var fakeConsoleReader = new StreamReader(injectedInputStream);

            var consoleModeCommand = new ConsoleModeCommand(
                () => new ConsoleCommand[] {command},
                fakeConsoleWriter,
                fakeConsoleReader);

            var injectedInput = new StreamWriter(injectedInputStream);

            foreach (var line in lines)
                injectedInput.WriteLine(line);
            injectedInput.Flush();

            injectedInputStream.Seek(0, SeekOrigin.Begin);

            IConsoleRedirectionDetection redirectionDetection = A.Fake<IConsoleRedirectionDetection>();
            consoleModeCommand.SetConsoleRedirectionDetection(redirectionDetection);
            A.CallTo(() => redirectionDetection.IsInputRedirected()).Returns(!inputIsFromUser);
            
            return () =>
                   ConsoleCommandDispatcher.DispatchCommand(new ConsoleCommand[] {consoleModeCommand}, new string[0],
                                                            fakeConsoleWriter);
        }
    }
}

================================================
FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_fail_strictly_on_error_when_running_noninteractive.cs
================================================
using NUnit.Framework;

namespace ManyConsole.Tests.ConsoleModeCommandSpecs
{
    public class Should_fail_strictly_on_error_when_running_noninteractive : ConsoleModeCommandSpecification
    {
        [Test]
        public void ConsoleInputFromUserSuccess()
        {
            StatusEchoCommand.RunCount = 0;

            // multiple commands run successfully
            var result = RunConsoleModeCommand(new string[]
            {
                "echo-status -s 0",
                "echo-status -s 0",
                "echo-status -s 0",
                "x",
            }, true, new StatusEchoCommand()).Invoke();

            Assert.AreEqual(0, result);
            Assert.AreEqual(3, StatusEchoCommand.RunCount);

        }

        [Test]
        public void ConsoleInputFromUserFail()
        {
            StatusEchoCommand.RunCount = 0;

            var result = RunConsoleModeCommand(new string[]
            {
                "echo-status -s 0",
                "echo-status -s 2",
                "echo-status -s 0",
                "x",
            }, true, new StatusEchoCommand()).Invoke();

            Assert.AreEqual(-1, result);
            Assert.AreEqual(3, StatusEchoCommand.RunCount);
        }

        [Test]
        public void ConsoleInputNotFromUserSuccess()
        {
            StatusEchoCommand.RunCount = 0;

            var result = RunConsoleModeCommand(new string[]
                {
                    "echo-status -s 0",
                    "echo-status -s 456",
                    "echo-status -s 0",
                    "x",
                }, false, new StatusEchoCommand()).Invoke();

            Assert.AreEqual(456, result);
            Assert.AreEqual(2, StatusEchoCommand.RunCount);
        }
    }
}


================================================
FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_give_user_prompt_in_interactive_mode.cs
================================================
using NUnit.Framework;
using System.IO;

namespace ManyConsole.Tests.ConsoleModeCommandSpecs
{
    public class Should_give_user_prompt_in_interactive_mode : ConsoleModeCommandSpecification
    {
        [Test]
        public void ConsoleModeCommandIsRunningForTheUser()
        {
            var output = new StringWriter();
            RunConsoleModeCommand(new string[]
            {
                    "echo-status -s 0",
                    "x",
            },
            inputIsFromUser: true, command: new StatusEchoCommand(),
            outputWriter: output).Invoke();

            StringAssert.Contains(ConsoleModeCommand.FriendlyContinuePrompt,
                output.ToString(),
                "the output does not contain a helpful prompt");
        }

        [Test]
        public void ConsoleModeCommandIsNotRunningForTheUser()
        {
            var output = new StringWriter();
            RunConsoleModeCommand(new string[]
                {
                    "echo-status -s 0",
                    "x",
                },
                inputIsFromUser: false, command: new StatusEchoCommand(),
                outputWriter: output).Invoke();
            StringAssert.DoesNotContain(ConsoleModeCommand.FriendlyContinuePrompt,
                output.ToString(),
                "the output contains the helpful prompt");
        }
    }
}


================================================
FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_interpret_quotes_properly.cs
================================================
using System.Collections.Generic;
using NUnit.Framework;

namespace ManyConsole.Tests.ConsoleModeCommandSpecs
{
    public class Should_interpret_quotes_properly : ConsoleModeCommandSpecification
    {
        public class AccumulateStringsCommand : ConsoleCommand
        {
            public List<string> Marked = new List<string>();
            public List<string> Unmarked = new List<string>(); 

            public AccumulateStringsCommand()
            {
                this.IsCommand("accumulate-strings", "Accumulates strings.");
                this.HasOption("s=", "A string.", v => Marked.Add(v));
                this.AllowsAnyAdditionalArguments("And more strings");
            }

            public override int Run(string[] remainingArguments)
            {
                Unmarked.AddRange(remainingArguments);
                return 0;
            }
        }

        [Test]
        public void CommandRunWithQuotedInput()
        {
            var command = new AccumulateStringsCommand();

            RunConsoleModeCommand(new string[]
                {
                    "accumulate-strings -s \"one two three\" \"four five six\"",
                    "x",
                },
                inputIsFromUser: true, command: command).Invoke();

            Assert.That(command.Marked, Is.EquivalentTo(new[] { "one two three" }));
            Assert.That(command.Unmarked, Is.EquivalentTo(new[] { "four five six" }));         
        }
    }
}


================================================
FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/StatusEchoCommand.cs
================================================
using System;

namespace ManyConsole.Tests.ConsoleModeCommandSpecs
{
    public class StatusEchoCommand : ConsoleCommand
    {
        public static int RunCount = 0;

        public StatusEchoCommand()
        {
            this.IsCommand("echo-status", "Returns a particular status code");
            this.HasRequiredOption("s=", "Status code to return", v => StatusCode = Int32.Parse(v));
        }

        public int StatusCode;

        public override int Run(string[] remainingArguments)
        {
            RunCount++;
            return StatusCode;
        }
    }
}

================================================
FILE: ManyConsoleModeCommand.Test/ManyConsoleModeCommand.Test.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>

    <IsPackable>false</IsPackable>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
    <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="FakeItEasy" Version="5.1.1" />
    <PackageReference Include="Mono.Options" Version="5.3.0.1" />
    <PackageReference Include="nunit" Version="3.11.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.11.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ManyConsoleModeCommand\ManyConsoleModeCommand.csproj" />
    <ProjectReference Include="..\ManyConsole\ManyConsole.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: RunTestsInGUI.ps1
================================================
.\packages\NUnit.Runners.2.6.1\tools\nunit.exe .\ManyConsole.Tests\bin\Debug\ManyConsole.Tests.dll

================================================
FILE: SampleConsole/DumpEmlFilesCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    public class DumpEmlFilesCommand : ConsoleCommand
    {
        public DumpEmlFilesCommand()
        {
            this.IsCommand("dump-eml", "Prints the contents of eml file(s).");

            this.HasOption("r|recursive", "Print files recursively", v => Recursive = v != null);
            this.HasOption("h|header=", "Mail header to include", v => HeadersToPrint.Add(v));

            HasAdditionalArguments(1, "<fileOrDirectory>");
        }

        public string Path;
        public bool Recursive;
        public List<string> HeadersToPrint = new List<string>();

        public override int Run(string[] remainingArguments)
        {
            Path = remainingArguments[0];

            if (File.Exists(Path))
            {
                PrintEmlFile(Path);
            }
            else if (Directory.Exists(Path))
            {
                PrintEmlDirectory(Path);
            }
            else
            {
                throw new Exception("Could not find file or directory at " + Path);
            }

            return 0;
        }

        private void PrintEmlDirectory(string directory)
        {
            var di = new DirectoryInfo(directory);

            foreach(var entry in di.GetFileSystemInfos())
            {
                if (entry is FileInfo)
                {
                    PrintEmlFile(entry.FullName);
                }
                else if (Recursive && entry is DirectoryInfo)
                {
                    PrintEmlDirectory(entry.FullName);
                }
            }
        }

        private void PrintEmlFile(string filepath)
        {
            var mail = Sasa.Net.Mail.Message.ParseMailMessage(File.ReadAllText(filepath));

            Console.WriteLine("SUBJECT:\t{0}", mail.Subject);
            Console.WriteLine("FROM:\t{0}", mail.From);

            foreach(var to in mail.To)
            {
                Console.WriteLine("TO:\t{0}", to);
            }
            
            var headersPresent = mail.Headers.Keys.OfType<string>().Select(s => s.ToLower());

            foreach (var header in HeadersToPrint)
            {
                if (headersPresent.Contains(header.ToLower()))
                {
                    Console.WriteLine("{0}:\t{1}", header.ToUpper(), mail.Headers[header]);
                }
            }

            Console.WriteLine("BODY:");
            Console.WriteLine(mail.Body);
        }
    }
}


================================================
FILE: SampleConsole/EchoStringsCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    public class EchoStringsCommand : ConsoleCommand
    {
        public string comments;

        public EchoStringsCommand()
        {
            IsCommand("echo");
            HasAlias("--echo");

            HasOption("c|comment=",
                           "enter a string, maybe even delimited by double quotes, i.e. - \"See Matt's poorly written code\"",
                           v => comments = v);

            AllowsAnyAdditionalArguments("<foo1> <foo2> <fooN> where N is a word");
        }

        public override int Run(string[] remainingArguments)
        {
            if (string.IsNullOrWhiteSpace(comments))
            {
                Console.WriteLine("You made no comment");
            }
            else
            {
                Console.WriteLine("Your comment is: " + comments);
            }

            Console.WriteLine("The remaining arguments were " + Newtonsoft.Json.JsonConvert.SerializeObject(remainingArguments));

            return 0;
        }
    }
}


================================================
FILE: SampleConsole/ExampleCommand.cs
================================================
using System;
using System.Collections.Generic;
using ManyConsole;
using Mono.Options;

namespace MC.AX.DataUtility
{
    /// <summary>
    /// Example implementation of a ManyConsole command-line argument parser (ConsoleCommand) class
    /// </summary>
    public class ExampleCommand : ConsoleCommand
    {
        /// <summary>
        /// Configure command options and describe details in the class contructor
        /// </summary>
        /// <example>
        /// Example usage:
        /// 
        /// SampleConsole.exe example "option one" two -b -o "optional argument" -l=first -l=second -l "the third option"
        /// 
        /// Expected output:
        /// 
        /// Executing Example (Example implementation of a ManyConsole command-line argument
        /// parser Command):
        ///    Argument1 : option one
        ///    Argument2 : two
        ///    BooleanOption : True
        ///    OptionalArgument1 : optional argument
        ///    OptionalArgumentList : System.Collections.Generic.List`1[System.String]
        ///
        ///Called Example command - Argument1 = "option one" Argument2 = "two" BooleanOptio
        ///n: True
        ///List Item 0 = "first"
        ///List Item 1 = "second"
        ///List Item 2 = "the third option"
        /// </example>
        public ExampleCommand()
        {
            this.IsCommand("Example", "Example implementation of a ManyConsole command-line argument parser Command");

            this.HasOption("b|booleanOption", "Boolean flag option", b => BooleanOption = true);

            //  Setting .Options directly is the old way to do this, you may prefer to call the helper
            //  method HasOption/HasRequiredOption.
            Options = new OptionSet()
            {
                {"l|list=", "Values to add to list", v => OptionalArgumentList.Add(v)},
                {"r|requiredArguments=", "Optional string argument requiring a value be specified afterwards", s => OptionalArgument1 = s},
                {"o|optionalArgument:", "Optional String argument which is null if no value follow is specified", s => OptionalArgument2 = s ?? "<no argument specified>"}
            };

            this.HasRequiredOption("requiredOption=", "Required string argument also requiring a value.", s => { });
            this.HasOption("anotherOptional=", "Another way to specify optional arguments", s => {});

            HasAdditionalArguments(2, "<Argument1> <Argument2>");
        }

        public string Argument1;
        public string Argument2;
        public string OptionalArgument1;
        public string OptionalArgument2;
        public bool BooleanOption;
        public List<string> OptionalArgumentList = new List<string>();

        public override int Run(string[] remainingArguments)
        {
            Argument1 = remainingArguments[0];
            Argument2 = remainingArguments[1];

            Console.WriteLine(@"Called Example command - Argument1 = ""{0}"" Argument2 = ""{1}"" BooleanOption: {2}", Argument1, Argument2, BooleanOption);

            OptionalArgumentList.ForEach((item) => Console.WriteLine(@"List Item {0} = ""{1}""", OptionalArgumentList.IndexOf(item), item));

            if (BooleanOption)
            {
                throw new Exception("Throwing unhandled exception because BooleanOption is true");
            }

            return 0;
        }
    }
}


================================================
FILE: SampleConsole/GetTimeCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    /// <summary>
    /// As an example of ManyConsole usage, get-time is meant to show the simplest case possible usage.
    /// </summary>
    public class GetTimeCommand : ConsoleCommand
    {
        public GetTimeCommand()
        {
            this.IsCommand("get-time", "Returns the current system time.");
        }

        public override int Run(string[] remainingArguments)
        {
            Console.WriteLine(DateTime.UtcNow);

            return 0;
        }
    }
}


================================================
FILE: SampleConsole/MattsCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    public class MattsCommand : ConsoleCommand
    {
        public string Baz;

        public MattsCommand()
        {
            this.IsCommand("matts");
            this.HasOption("b|baz=", "baz", v => Baz = v);
            AllowsAnyAdditionalArguments("<foo1> <foo2> <fooN> where N is bar");
        }
        public override int Run(string[] remainingArguments)
        {
            Console.WriteLine("baz is " + (Baz ?? "<null>"));
            Console.WriteLine("foos are: " + String.Join(", ", remainingArguments));
            return 0;
        }
    }
}


================================================
FILE: SampleConsole/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using ManyConsole;

namespace SampleConsole
{
    class Program
    {
        static int Main(string[] args)
        {
            // locate any commands in the assembly (or use an IoC container, or whatever source)
            var commands = GetCommands();

            // then run them.
            return ConsoleCommandDispatcher.DispatchCommand(commands, args, Console.Out);
        }

        public static IEnumerable<ConsoleCommand> GetCommands()
        {
            return ConsoleCommandDispatcher.FindCommandsInSameAssemblyAs(typeof(Program));
        }
    }
}


================================================
FILE: SampleConsole/SampleConsole.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{4ACACC34-FEC3-432C-8EC1-4D07586EC948}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>SampleConsole</RootNamespace>
    <AssemblyName>SampleConsole</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Mono.Options, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Mono.Options.5.3.0.1\lib\net4-client\Mono.Options.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json">
      <HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="Sasa.Net">
      <HintPath>..\lib\Sasa-v0.9.3\Sasa.Net.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="DumpEmlFilesCommand.cs" />
    <Compile Include="EchoStringsCommand.cs" />
    <Compile Include="ExampleCommand.cs" />
    <Compile Include="GetTimeCommand.cs" />
    <Compile Include="MattsCommand.cs" />
    <Compile Include="Program.cs" />
    <Compile Include="SimpleConsoleModeCommand.cs" />
    <Compile Include="StatefulConsoleModeCommand.cs" />
    <Compile Include="ThrowException.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\ManyConsoleModeCommand\ManyConsoleModeCommand.csproj">
      <Project>{b983a1f4-5a01-494a-969a-72fd67fcc49a}</Project>
      <Name>ManyConsoleModeCommand</Name>
    </ProjectReference>
    <ProjectReference Include="..\ManyConsole\ManyConsole.csproj">
      <Project>{18205c5d-97c7-4314-94cc-8dcf0bca0673}</Project>
      <Name>ManyConsole</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <None Include="app.config" />
    <None Include="packages.config" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
  </PropertyGroup>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>

================================================
FILE: SampleConsole/SimpleConsoleModeCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    public class SimpleConsoleModeCommand : ConsoleModeCommand
    {
        public SimpleConsoleModeCommand()
        {
            this.IsCommand("console-mode", "Starts a console interface that allows multiple commands to be run.");
        }

        public override IEnumerable<ConsoleCommand> GetNextCommands()
        {
            return Program.GetCommands().Where(c => !(c is ConsoleModeCommand));
        }
    }
}


================================================
FILE: SampleConsole/StatefulConsoleModeCommand.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    public class StatefulConsoleModeCommand : ConsoleModeCommand
    {
        public int Count = 0;

        public StatefulConsoleModeCommand()
        {
            this.IsCommand("stateful", "Starts a stateful console interface that allows multiple commands to be run.");
        }

        public override void WritePromptForCommands()
        {
            Console.WriteLine("You have seen this console {0} times.", Count++);

            base.WritePromptForCommands();
        }

        public override IEnumerable<ConsoleCommand> GetNextCommands()
        {
            return new ConsoleCommand[] {new GetTimeCommand(), new MattsCommand(), new DumpEmlFilesCommand(), new DumpEmlFilesCommand()};
        }
    }
}


================================================
FILE: SampleConsole/ThrowException.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ManyConsole;

namespace SampleConsole
{
    public class ThrowException : ConsoleCommand
    {
        public ThrowException()
        {
            this.IsCommand("throw-exception", "Throws an exception.");
            this.HasOption("m=", "Error message to be thrown.", v => Message = v);
        }

        public string Message = "Command ThrowException threw an exception with this message.";

        public override int Run(string[] remainingArguments)
        {
            throw new Exception(Message);
        }
    }
}


================================================
FILE: SampleConsole/app.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup></configuration>


================================================
FILE: SampleConsole/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Mono.Options" version="5.3.0.1" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40-Client" />
</packages>

================================================
FILE: default.ps1
================================================
properties {
    $baseDirectory  = resolve-path .
    $buildDirectory = ($buildDirectory, "$baseDirectory\build") | select -first 1
    $version = "2.0.2"

    $shortDescription = "A library for writing console applications.  Extends Mono.Options to support separate commands from one console application."
}

import-module .\tools\PSUpdateXML.psm1
. .\psake_ext.ps1

task default -depends Build,RunTests,BuildNuget

task Cleanup {
    if (test-path $buildDirectory) {
        rm $buildDirectory -recurse
    }
}

task GenerateAssemblyInfo {

    $trimmedVersion = $version;

    if ($trimmedVersion.indexOf("-") -gt -1) {
        $trimmedVersion = $trimmedVersion.Substring(0, $trimmedVersion.indexOf("-"));
    }
	
	$projectFiles = ls -path $base_dir -include *.csproj -recurse

    $projectFiles | write-host
	foreach($projectFile in $projectFiles) {
		
        $projectDir = [System.IO.Path]::GetDirectoryName($projectFile)
        
		$projectName = [System.IO.Path]::GetFileName($projectDir)
		$asmInfo = [System.IO.Path]::Combine($projectDir, [System.IO.Path]::Combine("Properties", "AssemblyInfo.cs"))
				
		Generate-Assembly-Info `
			-file $asmInfo `
			-title "$projectName $version" `
			-description $shortDescription `
			-company "n/a" `
			-product "ManyConsole $version" `
			-version "$trimmedVersion" `
			-fileversion "$trimmedVersion" `
			-copyright "Copyright Frank Schwieterman 2019" `
			-clsCompliant "false"
	}
}

task Build -depends Cleanup,GenerateAssemblyInfo {
    exec { & dotnet build ManyConsole -o "$buildDirectory\ManyConsole" -c Release }    
    exec { & dotnet build ManyConsoleModeCommand -o "$buildDirectory\ManyConsoleModeCommand" -c Release }   
}

task RunTests {
    exec { & dotnet test --logger trx }
}

task BuildNuget -depends Build {

    $nugetTarget = "$buildDirectory\nuget"

    $null = mkdir "$nugetTarget\"
    cp .\ManyConsole.nuspec "$nugetTarget\"

    $old = pwd
    cd $nugetTarget

    update-xml "ManyConsole.nuspec" {

        for-xml "//package/metadata" {
            set-xml -exactlyOnce "//version" "$version"
            set-xml -exactlyOnce "//description" $shortDescription
        }
    }

    ..\..\tools\nuget pack "ManyConsole.nuspec"

    cd $old
}


================================================
FILE: lib/Sasa-v0.9.3/CHANGELOG.txt
================================================
= v0.9.3 =

 * added a new parameter to compact serializer to indicate whether to ignore the
   NonSerializable attribute for fields.
 * added a DeepCopy extension method based on round-trip serialization.
 * fixed: Compact serializer was only saving the private fields of the top-level
   type.
 * Compact serializer no longer relies on maintained field order; fields are
   identified by the hash of their names.
 * only declared fields of each type are serialized at each level, which removes
   some serialization redundancy.
 * added strongly typed enum Values() and Names() extension methods,
   corresponding to untyped Enum.GetValues and Enum.GetNames() framework methods.
 * added full set of System.Enum type constraints to Sasa.Enum.Enums type parameter
   to maximally reduce possibility of using a non-enum type.
 * renamed EnumExt to Enums and EnumerableExt to Enumerables.
 * added futures and promises.
 * added interfaces specifying the contract between any implementations of futures
   and promises.
 * moved concurrent futures under Sasa.Concurrency.
 * added functions for asynchronously calling delegates and reading/writing
   streams.
 * Events.Clear clears an event list in a thread-safe way, and returns the prior
   contents.
 * Events.Add, Events.AddAny, Events.Remove and Events.RemoveAny to manage
   MulticastDelegates in a thread-safe way without resorting to local lock objects.
 * moved media type handling into a separate Sasa.Mime assembly.
 * added functions to map between media types and file extensions.
 * added some convenient enum parsing functions.
 * added a simple search-and-replace CIL rewriter used to replace method bodies
   with custom IL.
 * added Sasa.Operators which exposes the numeric and logical operators via a
   generic class; this assembly is not verifiable, so it is packaged in a separate
   dll.
 * added a simple string tokenizer which searches an input string for a list of
   tokens and returns a stream of matches.
 * unsafe BinarySerializer and BinaryDeserializer are no longer sealed to permit
   clients to extend the language of serializable types.
 * renamed Sasa.StringExt to Sasa.Strings.
 * added a DEBUG mode to the ilrewriter to generate debug assemblies.
 * added a Pratt-style extensible parser which includes a lexer. Calculator
   programs are provided, including one with lexically scoped variables.
 * restructured all extension classes to a more sensible naming convention.
 * added a structured IO path object with convenient operator overloads.
 * added Enumerables.Single for converting a single value to an enumerable.
 * renamed Sasa.CodeContracts and Sasa.CodeContracts.Contract to Sasa.Contracts
   and Sasa.Contracts.Contract respectively, to mimic Microsoft's changes.
 * moved URL64 encoding under the Sasa project.
 * Either type now uses standard type param naming conventions.
 * Either<,,,>.First was erroneously returning an Either<,,>.
 * added a function to coerce one delegate type to another.
 * changed termination condition for Sasa.IO.Streams.CopyTo to better conform to
   abstract Stream guarantees.
 * added an explicit Void type to represent empty return values.
 * many FxCop suggested fixes.
 * added various operator overloads to tuples, weak references and other structs.
 * added serialization overloads to allow clients to provide a lookup cache; this
   permits instance caching across serialization boundaries.
 * more comprehensive serialization tests, and time/space comparisons with
   BinaryFormatter.
 * fixed bug where empty e-mail header values ran into subsequent header lines.
 * Strings.Lines now splits along both \r and \n and eliminates empty lines.
 * added a purely functional/persistent queue, PQueue<T>.
 * added a general persistent collection interface ISeq<TCollection, TItem>.
 * Seq<T> and Set<T> now implement ISeq<T>.
 * Seq<T> is now a struct-based persistent collection.
 * Renamed Dictionary extensions to better identify their usage.
 * added tests for Weak<T> and Sasa.Func extensions.
 * added Sasa.Func extension to lift Action<...> into Func<..., Empty>.
 * expanded Option<T> features, made it a cheap struct, restricted it to class
   types, matched interface to Nullable<T>, added equality testing, added LINQ
   interface for chaining computations.
 * simplified NonNull<T> hashcode.
 * added NonNull<T> constructor, equality test overloads, and convenience
   extension method.
 * added a proper Append operation to Seq<T>.
 * added a Next property to traverse a Seq<T>.
 * now that Compact serializer accepts a dictionary cache, customTags are no
   longer necessary; just initialize the dictionary with the appropriate types.
 * added Endian conversions for base types.
 * added BinaryReader/BinaryWriter implementations that encode primitive values
   in Big-Endian encoding for portability.
 * added a simple reactive programming framework, Sasa.Reactive, which wraps
   the Reactive.NET framework in a concrete type with some implicit coercions.
 * added a simple shared reference interface, IRef<T>.
 * some convenience extensions for composing LINQ lambda expressions,
   Sasa.Linq.Expressions.
 * added a IVolatile interface indicating a reference may change unexpectedly.
 * Weak<T> now implements IVolatile<T>.
 * Events.AddAny/RemoveAny are no longer unsound (ref Delegate could never be
   used with any concrete delegate type due to type unsoundness).
 * added Linq expression combinators.
 * added a simple purely functional map type used for lexical environments.
 * added fixed point lambda functions.
 * renamed IEnumerable.Cons to Push to reflect standard terminology.
 * added Seq atomic swap function, and Seq.Remove operation.
 * added Var.Equals overload to fix parsing unit test failure.
 * added IEnumerable.CopyTo to copy elements to an existing array.
 * disabled broken serialization for now.
 * replaced unsafe reflection facilities with a completely safe and
   efficient reflection abstraction based on lightweight code generation.
 * extended ilrewrite to erase types; this is particularly useful for erasing
   TypeConstraint<T> which is used to specify type constraints that C# normally
   would not permit.
 * use ilrewrite to simplify interface to event handler extensions.
 * added Enumerables.Consume extension which is used to force eager evaluation.
 * added proper enum type constraint on enum extensions.
 * added an IEnumerable<T>.Transpose() extension method which swaps columns
   and rows.
 * added a safe, efficient dynamic reflection facility.
 * added global, thread-safe type and method caches using a user-provided key
   type.
 * ilrewrite: added support for .NET 4.0 toolchain.
 * Lazy<T> now implements IOptional<T> semantics, so clients can test the
   current state of the lazy value, ie. whether it's been forced yet.
 * removed dangerous implicit conversion from Lazy<T> to T.
 * Enumerables.Single removed, use Enumerable.Repeat.
 * Strings.Char removed, string already implements IEnumerable<char>.
 * Sasa.Web.Asp.Page<T> now implements IValue<T>.
 * renamed ToShortName extension to ShortName.
 * added Sasa.Arrow, which adds an Arrow computation abstraction, including
   LINQ query syntax support.
 * added full assembly and namespace documentation
 * Sasa.Operators assembly now also has Sasa.Operators namespace.

= v0.9.2 =

 * fixed bug where quoted printable encoding failed when = was the last character.
 * added Pop3Session.Reset method.
 * compact serializer no longer uses stream positions to track cached objects, so
   non-indexable streams, like DeflateStream, are now usable.
 * ISerializing interface generalized to support serializing non-primitive field
   values.
 * added e-mail subject decoding.
 * fixed boundary condition on QuotedPrintableEncoding.
 * added extension methods to support safely raising events.
 * added an extension method to safely generate field and property names as strings.
 * added parameter to Compact serializer to indicate whether SerializableAttribute
   should be respected.
 * added a boundary check for SliceEquals.
 * added a event Raise overload for any event handlers whose arg inherits from
   EventArgs, which enables safe event raising within an object.
 * MailAddressCollection already handles parsing comma-delimited e-mail address
   strings, so don't attempt to split them manually.
 * added a test for an e-mail address that contains a comma.
 * default to us-ascii charset if none provided.
 * NonNull now throws a ArgumentNullException with a proper description.
 * many FxCop-related fixes and CLS compliance improvements.
 * added usage restrictions on Sasa.CodeContracts attributes.

= v0.9.1 =

 * Properly split header values for multiple addresses.
 * Fixed assembly version number scheme.

= v0.9 =

 * Added a strongly typed Weak<T> wrapper for WeakReference.
 * Tuple types now implement IComparable<T>.
 * Fixed concurrent bug in Lazy<T>.
 * int, double, decimal and float now have a Bound() extension method
   which ensures the value is within a specified range.
 * Added parameterless constructors to core types to support medium
   trust serialization.
 * Added strongly typed char enumeration over a string.
 * Changed the return type on DictionaryExt.Insert to make it more
   usable.
 * Added some selection functions to Option<T>.
 * Added MIME decoding to mail parser.
 * POP3 client now more closely conforms to RFC.
 * renamed List<T> to Seq<T> to avoid clashes with System.Collections.Generic.List<T>.
 * added more convenient string splitting functions.
 * reversed sense of & operator for Seq<T> to make it chainable.
 * added & overload for concatenating two Seq<T>.
 * removed Seq<T> | operator because unlike ?? operator, it's eagerly evaluated
   which limits its usefulness.
 * added string.SliceEquals extension method, to compare a substrings without
   calling string.Substring.
 * added a Set<T> type based on Seq<T>
 * added Array extension methods
 * added safe reflection abstraction
 * added an empty _ struct type to use as a generic type param wherever
   void would normally be used, aka the unit type.
 * added Sasa.Dynamics assembly to group polytypic code.
 * added safe reflection functions and interface, ITypeFunc<R>.
 * added convenience functions for copying a stream into memory, and
   copying one stream to another, under Sasa.IO.
 * changed Arrays.Append to accept a variable argument list.
 * renamed Sasa.Linq.Enumerable to avoid clashes with System.Linq.Enumerable.
 * added MailMessage.ToRaw(), which generates a string representation
   of an e-mail similar to what is sent over the wire.
 * added a function to convert a media type to a file extension.
 * no longer assumes RFC822 header values are separated by commas.
 * added a base64 encoder suitable for embedding in URLs
 * added an ASP.NET project with a Page class providing a strongly typed
   URL-based "session state"; using this page should theoretically make
   clients immune to CSRF and clickjacking
 * added numerous Array extensions, including Slice, Dup, Fill, Repeat, Bound.

= v0.8 =

 * Initial release

================================================
FILE: lib/Sasa-v0.9.3/Sasa.Arrow.xml
================================================
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sasa.Arrow</name>
    </assembly>
    <members>
        <member name="T:Sasa.Arrow.Arrow`2">
            <summary>
            Represents a computation from <typeparamref name="T"/> to <typeparamref name="U"/>.
            </summary>
            <typeparam name="T">The type of the input.</typeparam>
            <typeparam name="R">The type of the output.</typeparam>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.First``1">
            <summary>
            Given a computation from <typeparamref name="T"/> to <typeparamref name="R"/>, construct
            a computation that transforms the first argument and passes the second argument with no change.
            </summary>
            <typeparam name="U">The type of the second argument.</typeparam>
            <returns>A computation that transforms the first argument.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.Second``1">
            <summary>
            Given a computation from <typeparamref name="T"/> to <typeparamref name="R"/>, construct
            a computation that transforms the second argument and passes the first argument with no change.
            </summary>
            <typeparam name="U">The type of the first argument.</typeparam>
            <returns>A computation that transforms the second argument.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.Select``1(System.Func{`1,``0})">
            <summary>
            Transforms the computation from <typeparamref name="T"/> to <typeparamref name="R"/>, to
            <typeparamref name="T"/> to <typeparamref name="U"/>.
            </summary>
            <typeparam name="U">The new result type.</typeparam>
            <param name="selector">The transformation function.</param>
            <returns>A new computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.SelectMany``1(System.Func{`1,Sasa.Arrow.Arrow{`0,``0}})">
            <summary>
            Project result <typeparamref name="R"/> into a new computation.
            </summary>
            <typeparam name="U">The result type.</typeparam>
            <param name="selector">The projection function.</param>
            <returns>A new computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.SelectMany``2(System.Func{`1,Sasa.Arrow.Arrow{`0,``0}},System.Func{`1,``0,``1})">
            <summary>
            Project result <typeparamref name="R"/> into a new computation of type <typeparamref name="U"/>,
            and collect and project into a final computation of type <typeparamref name="V"/>.
            </summary>
            <typeparam name="U">The intermediate result type.</typeparam>
            <typeparam name="V">The final result type.</typeparam>
            <param name="selector">The intermediate projection.</param>
            <param name="resultSelector">The final projection.</param>
            <returns>A new computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.Do(System.Action{`1},System.Func{System.Exception,`1})">
            <summary>
            Return a computation that executes in an exception handler.
            </summary>
            <param name="onNext">The computation that runs in the try block.</param>
            <param name="onError">The computation that runs if an exception is thrown.</param>
            <returns>A new computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.Concat(System.Collections.Generic.IEnumerable{Sasa.Arrow.Arrow{`0,`1}})">
            <summary>
            Collects the results of a series of computations.
            </summary>
            <param name="sources">The sequence of computations.</param>
            <returns>A computation returning a sequence of results.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.SplitCombine``1(Sasa.Arrow.Arrow{`0,``0})">
            <summary>
            Merges two computation results.
            </summary>
            <typeparam name="U">The return type of the other computation.</typeparam>
            <param name="other">The computation to merge with.</param>
            <returns>A combined computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.Fanout``2(Sasa.Arrow.Arrow{``0,``1})">
            <summary>
            Combines two computations into a computation that accepts a pair that is split,
            fed to each computation separately, then combined.
            </summary>
            <typeparam name="U">The input of the other computation.</typeparam>
            <typeparam name="V">The output of the other computation.</typeparam>
            <param name="other">The other computation.</param>
            <returns>A combined computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.If(System.Predicate{`0},Sasa.Arrow.Arrow{`0,`1})">
            <summary>
            Runs one computation or the other based on a condition.
            </summary>
            <param name="condition">The conditional.</param>
            <param name="_else">The computation to run if the conditional returns false.</param>
            <returns>A new computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow`2.op_Implicit(System.Func{`0,`1})~Sasa.Arrow.Arrow{`0,`1}">
            <summary>
            Implicitly convert delegates to arrows.
            </summary>
            <param name="thunk">The delegate to convert.</param>
            <returns>A new arrow.</returns>
        </member>
        <member name="P:Sasa.Arrow.Arrow`2.Value">
            <summary>
            The encapsulated computation.
            </summary>
        </member>
        <member name="T:Sasa.Arrow.Arrow">
            <summary>
            Utility functions on arrows.
            </summary>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Return``2(System.Func{``0,``1})">
            <summary>
            Return an arrow from <typeparamref name="T"/> to <typeparamref name="R"/>.
            </summary>
            <typeparam name="T">The input type.</typeparam>
            <typeparam name="R">The return type.</typeparam>
            <param name="thunk">The delegate representing the computation.</param>
            <returns>A computation arrow.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Return``1(System.Func{``0})">
            <summary>
            Return an arrow for a zero-argument computation.
            </summary>
            <typeparam name="R">The return type.</typeparam>
            <param name="thunk">The delegate representing the computation.</param>
            <returns>A computation arrow.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Return``1(System.Action{``0})">
            <summary>
            Return an arrow for a computation that returns no value.
            </summary>
            <typeparam name="T">The argument type.</typeparam>
            <param name="thunk">The delegate representing the computation.</param>
            <returns>A computation arrow.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Run``2(Sasa.Arrow.Arrow{``0,``1},``0)">
            <summary>
            Run the computation with the given input.
            </summary>
            <param name="arrow">The computation to run.</param>
            <param name="value">The input value.</param>
            <returns>The result of the computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Run``3(Sasa.Arrow.Arrow{Sasa.Pair{``0,``1},``2},``0,``1)">
            <summary>
            Run the computation with the given input.
            </summary>
            <param name="arrow">The computation to run.</param>
            <param name="value">The input value.</param>
            <returns>The result of the computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Run``1(Sasa.Arrow.Arrow{Sasa.Empty,``0})">
            <summary>
            Run the computation with the given input.
            </summary>
            <param name="arrow">The computation to run.</param>
            <returns>The result of the computation.</returns>
        </member>
        <member name="M:Sasa.Arrow.Arrow.Loop``4(Sasa.Arrow.Arrow{Sasa.Pair{``0,``1},Sasa.Pair{``2,``3}})">
            <summary>
            
            </summary>
            <typeparam name="T"></typeparam>
            <typeparam name="U"></typeparam>
            <typeparam name="R"></typeparam>
            <typeparam name="V"></typeparam>
            <param name="arrow"></param>
            <returns></returns>
        </member>
    </members>
</doc>


================================================
FILE: lib/Sasa-v0.9.3/Sasa.Contracts.xml
================================================
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sasa.Contracts</name>
    </assembly>
    <members>
        <member name="T:System.Diagnostics.Contracts.Contract">
            <summary>
            Microsoft-compatible Contracts class.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean)">
            <summary>
            Requires the condition to be true, throws RequiresException otherwise.
            </summary>
            <param name="cond">The required condition.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.RequiresException">Throws RequiresException if the condition fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean,System.String)">
            <summary>
            Requires the condition to be true, throws RequiresException otherwise with the given message.
            </summary>
            <param name="cond">The required condition.</param>
            <param name="msg">The message thrown in the exception.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.RequiresException">Throws RequiresException if the condition fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.RequiresAlways(System.Boolean)">
            <summary>
            Requires the condition to be true, throws RequiresException otherwise.
            </summary>
            <param name="cond">The required condition.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.RequiresException">Throws RequiresException if the condition fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.RequiresAlways(System.Boolean,System.String)">
            <summary>
            Requires the condition to be true, throws RequiresException otherwise with the given message.
            </summary>
            <param name="cond">The required condition.</param>
            <param name="msg">The message thrown in the exception.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.RequiresException">Throws RequiresException if the condition fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Assume(System.Boolean)">
            <summary>
            At runtime the behaviour is the same as an assertion. At static verification time, these conditions are
            added to the list of facts. Throws AssumeException if the assumption is ever violated.
            </summary>
            <param name="cond">The assumed condition.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.AssumeException">Throws AssumeException if the condition fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Assume(System.Boolean,System.String)">
            <summary>
            At runtime the behaviour is the same as an assertion. At static verification time, these conditions are
            added to the list of facts. Throws AssumeException with the given message if the assumption is ever
            violated.
            </summary>
            <param name="cond">The assumed condition.</param>
            <param name="msg">The message thrown in the exception.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.AssumeException">Throws AssumeException if the condition fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Assert(System.Boolean)">
            <summary>
            Checks a condition at the given program point, throws AssertException if 
            </summary>
            <param name="cond">The asserted condition.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.AssertException">Throws AssertException if the assertion fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Assert(System.Boolean,System.String)">
            <summary>
            Requires the condition to be true, throws RequiresException otherwise with the given message.
            </summary>
            <param name="msg">The message thrown in the exception.</param>
            <param name="cond">The asserted condition.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.AssertException">Throws AssertException if the assertion fails.</exception>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Invariant(System.Boolean)">
            <summary>
            Specifies an invariant property of a class. Throws Invariant exception if violated.
            </summary>
            <param name="cond">The invariant condition.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.InvariantException">Throws InvariantException if the condition is ever violated.</exception>
            <remarks>This contract function works but is not automatically inserted after each public method as described
            in the MS documention. IL rewriting is required to function as described.</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Invariant(System.Boolean,System.String)">
            <summary>
            Requires the condition to be true, throws RequiresException otherwise with the given message.
            </summary>
            <param name="msg">The message thrown in the exception.</param>
            <param name="cond">The invariant condition.</param>
            <remarks>This contract function works but is not automatically inserted after each public method as described
            in the MS documention. IL rewriting is required to function as described.</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Ensures(System.Boolean)">
            <summary>
            Ensures the given condition is true at method termination, throws EnsuresException otherwise.
            </summary>
            <param name="cond">The condition that must hold.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.EnsuresException">Throws EnsuresException if the condition is violated at the end of the method.</exception>
            <remarks>This contract function is currently a no-op since it requires IL rewriting to function properly.</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Ensures(System.Boolean,System.String)">
            <summary>
            Ensures the given condition is true at method termination, throws EnsuresException otherwise with the given message.
            </summary>
            <param name="msg">The message to throw.</param>
            <param name="cond">The condition that must hold.</param>
            <exception cref="T:System.Diagnostics.Contracts.Contract.EnsuresException">Throws EnsuresException if the condition is violated at the end of the method.</exception>
            <remarks>This contract function is currently a no-op since it requires IL rewriting to function properly.</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.EnsuresOnThrow``1(System.Boolean)">
            <summary>
            Ensures the given condition is true at method termination, throws EnsuresException otherwise.
            </summary>
            <param name="cond">Condition</param>
            <remarks>This contract function is currently a no-op since it requires IL rewriting to function properly.</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.EnsuresOnThrow``1(System.Boolean,System.String)">
            <summary>
            Ensures the given condition is true at method termination, throws EnsuresException otherwise with the given message.
            </summary>
            <param name="cond">The condition that must hold.</param>
            <param name="msg">The error message to throw if cond does not hold.</param>
            <remarks>This contract function is currently a no-op since it requires IL rewriting to function properly.</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.EndContractBlock">
            <summary>
            A marker function to indicate the end of a legacy contract block.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.ForAll``1(System.Collections.Generic.IEnumerable{``0},System.Predicate{``0})">
            <summary>
            Ensures the given predicate is satisfied for all elements of the collection.
            </summary>
            <typeparam name="T">The type of the element in the collection.</typeparam>
            <param name="x">The collection.</param>
            <param name="cond">The predicate that must be satisfied.</param>
            <returns>Returns true if all elements satisfy the predicate, false otherwise.</returns>
            <remarks>public int [] Foo&lt;T&gt;(T[] xs){
              CodeContract.Requires(CodeContract.ForAll(xs , (T x) =&gt; x != null) );</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.ForAll(System.Int32,System.Int32,System.Predicate{System.Int32})">
            <summary>
            Ensure the predicate is true over the given range of integers. The integers provided range over: [inclusiveLowerBound, exclusiveUpperBound).
            </summary>
            <param name="inclusiveLowerBound">The lower bound of the range.</param>
            <param name="exclusiveUpperBound">The upper bound of the range (excluding this value).</param>
            <param name="cond">The predicate that must be true over the given range.</param>
            <returns>Returns true if the predicate is true over the range, false otherwise.</returns>
            <remarks>public int [] Foo(String [] xs){
              CodeContract.Requires(CodeContract.ForAll(0, xs .Length, index =&gt; xs[index] ! = null ));</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Exists``1(System.Collections.Generic.IEnumerable{``0},System.Predicate{``0})">
            <summary>
            Ensures the given predicate is satisfied for at least one element of the collection.
            </summary>
            <typeparam name="T">The type of the element in the collection.</typeparam>
            <param name="x">The collection.</param>
            <param name="cond">The predicate that must be satisfied.</param>
            <returns>Returns true if any element satisfies the predicate, false otherwise.</returns>
            <remarks>public int [] Foo&lt;T&gt;(T[] xs){
              CodeContract.Requires(!CodeContract.Exists(xs , (T x) =&gt; x == null) );</remarks>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.Exists(System.Int32,System.Int32,System.Predicate{System.Int32})">
            <summary>
            Ensure the predicate is true over the given range of integers. The integers provided range over: [inclusiveLowerBound, exclusiveUpperBound).
            </summary>
            <param name="inclusiveLowerBound">The lower bound of the range.</param>
            <param name="exclusiveUpperBound">The upper bound of the range (excluding this value).</param>
            <param name="cond">The predicate to test over the given range.</param>
            <returns>Returns true if the predicate is true for any value in the range, false otherwise.</returns>
            <remarks>public int [] Foo(String [] xs){
              CodeContract.Requires(!CodeContract.Exists(0, xs .Length, index =&gt; xs[index] == null ));</remarks>
        </member>
        <member name="T:System.Diagnostics.Contracts.Contract.RequiresException">
            <summary>
            Exception thrown by Requires* functions.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.RequiresException.#ctor(System.String)">
            <summary>
            Construct an instance with the given message.
            </summary>
            <param name="msg">The error message.</param>
        </member>
        <member name="T:System.Diagnostics.Contracts.Contract.AssumeException">
            <summary>
            Exception thrown by Assume* functions.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.AssumeException.#ctor(System.String)">
            <summary>
            Construct an instance with the given message.
            </summary>
            <param name="msg">The error message.</param>
        </member>
        <member name="T:System.Diagnostics.Contracts.Contract.AssertException">
            <summary>
            Exception thrown by Assert* functions.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.AssertException.#ctor(System.String)">
            <summary>
            Construct an instance with the given message.
            </summary>
            <param name="msg">The error message.</param>
        </member>
        <member name="T:System.Diagnostics.Contracts.Contract.InvariantException">
            <summary>
            Exception thrown by Invariant* functions.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.InvariantException.#ctor(System.String)">
            <summary>
            Construct an instance with the given message.
            </summary>
            <param name="msg">The error message.</param>
        </member>
        <member name="T:System.Diagnostics.Contracts.Contract.EnsuresException">
            <summary>
            Exception thrown by Ensures* functions.
            </summary>
        </member>
        <member name="M:System.Diagnostics.Contracts.Contract.EnsuresException.#ctor(System.String)">
            <summary>
            Construct an instance with the given message.
            </summary>
            <param name="msg">The error message.</param>
        </member>
        <member name="T:System.Diagnostics.Contracts.PureAttribute">
            <summary>
            Marks a method as being "pure", with no side-effects.
            </summary>
        </member>
        <member name="T:System.Diagnostics.Contracts.ContractInvariantMethodAttribute">
            <summary>
            Marks a method as an object invariant. When IL rewriting is supported,
            this method will be called at the end of every public method and getter.
            </summary>
        </member>
        <member name="T:System.Diagnostics.Contracts.RuntimeContractsAttribute">
            <summary>
            This assembly-level attribute is added to an assembly after the
            rewriter has processed it.
            </summary>
        </member>
    </members>
</doc>


================================================
FILE: lib/Sasa-v0.9.3/Sasa.Core.xml
================================================
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sasa.Core</name>
    </assembly>
    <members>
        <member name="T:Sasa.IO.Streams">
            <summary>
            Extension methods to System.IO.Stream
            </summary>
        </member>
        <member name="M:Sasa.IO.Streams.CopyTo(System.IO.Stream,System.IO.Stream)">
            <summary>
            Copy one stream to another.
            </summary>
            <param name="input">The input stream.</param>
            <param name="output">The output stream.</param>
        </member>
        <member name="M:Sasa.IO.Streams.ToArray(System.IO.Stream)">
            <summary>
            Read the full stream into a byte array.
            </summary>
            <param name="s">The stream to read.</param>
            <returns>The contents of the stream.</returns>
        </member>
        <member name="M:Sasa.IO.Streams.SpawnRead(System.IO.Stream,System.Int32)">
            <summary>
            Perform an async read on the given stream and return a promise.
            </summary>
            <param name="stream">The stream to read.</param>
            <param name="read">The number of bytes to read.</param>
            <returns>A promise for the bytes.</returns>
            <remarks>This function must be used very carefully, because there is no guarantee that
            previous calls to this function complete before later ones. Therefore futures may
            resolve out of order to what one might expect.</remarks>
        </member>
        <member name="M:Sasa.IO.Streams.SpawnRead(System.IO.Stream,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Perform an async read on the given stream into the given buffer.
            </summary>
            <param name="stream">The stream to read.</param>
            <param name="buffer">The buffer to read into.</param>
            <param name="offset">The offset into the buffer at which to begin writing.</param>
            <param name="read">The number of bytes to read.</param>
            <returns>A promise for the bytes.</returns>
            <remarks>This function must be used very carefully, because there is no guarantee that
            previous calls to this function complete before later ones. Therefore futures may
            resolve out of order to what one might expect.</remarks>
        </member>
        <member name="M:Sasa.IO.Streams.SpawnWrite(System.IO.Stream,System.Byte[])">
            <summary>
            Perform an async write on the given stream.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="buffer">The buffer to read from.</param>
            <returns>A promise for the completion of the write operation.</returns>
            <remarks>This function must be used very carefully, because there is no guarantee that
            previous calls to this function complete before later ones. Therefore futures may
            resolve out of order to what one might expect.</remarks>
        </member>
        <member name="M:Sasa.IO.Streams.SpawnWrite(System.IO.Stream,System.Byte[],System.Int32,System.Int32)">
            <summary>
            Perform an async write on the given stream.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="buffer">The buffer to read from.</param>
            <param name="offset">The offset into the buffer to begin reading.</param>
            <param name="read">The number of bytes to write.</param>
            <returns>A promise for the completion of the write operation.</returns>
            <remarks>This function must be used very carefully, because there is no guarantee that
            previous calls to this function complete before later ones. Therefore futures may
            resolve out of order to what one might expect.</remarks>
        </member>
        <member name="T:Sasa.IO.FsPath">
            <summary>
            A structured file system path.
            </summary>
            <remarks>
            This module ensures that all paths containing "." and ".." are rewritten to equivalent forms without
            directory change operations, where possible.
            
            In some cases, this is not possible, such as when ".." precedes the rest of the path, ie. ../foo. In such
            cases, the directory change operations are retained, under the assumption that a future path combination
            will permit full resolution.
            </remarks>
        </member>
        <member name="M:Sasa.IO.FsPath.#ctor(System.String)">
            <summary>
            Construct a structured file system path.
            </summary>
            <param name="path">The root path.</param>
        </member>
        <member name="M:Sasa.IO.FsPath.#ctor(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Construct a structured path from a series of path components.
            </summary>
            <param name="parts">Path fragments making up the full path.</param>
        </member>
        <member name="M:Sasa.IO.FsPath.Normalize(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Ensure each string in the untrusted sequence has been split into path components.
            </summary>
            <param name="untrusted">The untrusted sequence.</param>
            <returns>A trustued sequence of path components.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Parse(System.Collections.Generic.IEnumerator{System.String})">
            <summary>
            Traverse the sequence of path fragments and construct a path fragment list,
            stripping out any directory change fragments.
            </summary>
            <param name="seq">The stream of fragments to process.</param>
            <returns>A trusted sequence of path fragments</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Tokenize(System.String)">
            <summary>
            Take a string assumed to be a path, and split it along directory separators.
            </summary>
            <param name="path">The presumed path.</param>
            <returns>An enumerator returning each fragment of the path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Combine(Sasa.IO.FsPath)">
            <summary>
            Construct a combined path from two paths.
            </summary>
            <param name="file">The path to combine with this one.</param>
            <returns>The combined path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Combine(Sasa.Collections.Seq{System.String},Sasa.Collections.Seq{System.String})">
            <summary>
            Combine two fragment lists, while performing directory change operations.
            </summary>
            <param name="left">The left path.</param>
            <param name="right">The right path.</param>
            <returns>A combined path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.GetEnumerator">
            <summary>
            Returns an enumerator over the file path components.
            </summary>
            <returns>An enumerator that can be used to iterate through the collection.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Root(System.String)">
            <summary>
            Declare the root path.
            </summary>
            <param name="path">The root path.</param>
            <returns>A path encapsulating the given root.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Equals(Sasa.IO.FsPath)">
            <summary>
            Compare two paths for equality.
            </summary>
            <param name="other">The path to compare to.</param>
            <returns>True if the paths are equal.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.Equals(System.Object)">
            <summary>
            Compare two paths for equality.
            </summary>
            <param name="obj">The path to compare to.</param>
            <returns>True if the paths are equal.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.GetHashCode">
            <summary>
            Compute hash code of path.
            </summary>
            <returns>Hash code for path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.CompareTo(Sasa.IO.FsPath)">
            <summary>
            Order two paths.
            </summary>
            <param name="other">Other path to compare against.</param>
            <returns>Returns zero if equal, less than zero if this path
            is less than <paramref name="other"/>, else returns greater than
            zero.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.ToString">
            <summary>
            Return a string representation of the path.
            </summary>
            <returns>A string representation of the path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Division(Sasa.IO.FsPath,System.String)">
            <summary>
            Combine the given path and string component.
            </summary>
            <param name="path">A structured path.</param>
            <param name="part">An unstructured path string.</param>
            <returns>The combined structured path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Division(System.String,Sasa.IO.FsPath)">
            <summary>
            Combine the given path and string component.
            </summary>
            <param name="path">A structured path.</param>
            <param name="part">An unstructured path string.</param>
            <returns>The combined structured path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Division(Sasa.IO.FsPath,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Combine the given path and string components.
            </summary>
            <param name="path">The structured path.</param>
            <param name="parts">The components of a path.</param>
            <returns>A combined structured path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Division(System.Collections.Generic.IEnumerable{System.String},Sasa.IO.FsPath)">
            <summary>
            Combine the given path and string components.
            </summary>
            <param name="path">The structured path.</param>
            <param name="parts">The components of a path.</param>
            <returns>A combined structured path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Division(System.String[],Sasa.IO.FsPath)">
            <summary>
            Combine the given path and string components.
            </summary>
            <param name="path">The structured path.</param>
            <param name="parts">The components of a path.</param>
            <returns>A combined structured path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Division(Sasa.IO.FsPath,Sasa.IO.FsPath)">
            <summary>
            Combine the given path and string components.
            </summary>
            <param name="path1">The first structured path.</param>
            <param name="path2">The second structured path.</param>
            <returns>The combined structured path.</returns>
        </member>
        <member name="M:Sasa.IO.FsPath.op_Implicit(System.String)~Sasa.IO.FsPath">
            <summary>
            Implicitly convert a string to a structured path.
            </summary>
            <param name="path">The path contained in an unstructured string.</param>
            <returns>A structured path.</returns>
        </member>
        <member name="T:Sasa.IPromise`3">
            <summary>
            Contract for promises, which are used to resolve or fail a future.
            </summary>
            <typeparam name="TFuture">The type of unresolved futures.</typeparam>
            <typeparam name="TResolved">The type of resolved futures.</typeparam>
            <typeparam name="T">The type of the future's value.</typeparam>
        </member>
        <member name="M:Sasa.IPromise`3.Fulfill(`2)">
            <summary>
            Resolve the future to a legitimate value.
            </summary>
            <param name="value">Resolve this future to the given value.</param>
        </member>
        <member name="M:Sasa.IPromise`3.Fail(System.Exception)">
            <summary>
            Future failed with an exception.
            </summary>
            <param name="reason">The reason the future failed to resolve.</param>
        </member>
        <member name="P:Sasa.IPromise`3.Future">
            <summary>
            The future value.
            </summary>
        </member>
        <member name="T:Sasa.IFuture`2">
            <summary>
            A future value.
            </summary>
            <typeparam name="TFuture">The type of the future.</typeparam>
            <typeparam name="T">The type of the future's value.</typeparam>
        </member>
        <member name="M:Sasa.IFuture`2.ContinueWith(System.Action{`0})">
            <summary>
            Register a continuation to be invoked on future resolution.
            </summary>
            <param name="continuation">Continuation invoked when the future resolves to a value.</param>
        </member>
        <member name="T:Sasa.PromiseResolvedException">
            <summary>
            Exception thrown when attempting to resolve a promise that has already been resolved.
            </summary>
        </member>
        <member name="M:Sasa.PromiseResolvedException.#ctor">
            <summary>
            Initialize a PromiseResolvedException.
            </summary>
        </member>
        <member name="T:Sasa.Resolved`1">
            <summary>
            A resolved future.
            </summary>
            <typeparam name="T">The type of the future value.</typeparam>
        </member>
        <member name="T:Sasa.Future`1">
            <summary>
            A future value.
            </summary>
            <typeparam name="T">The type of the future value.</typeparam>
        </member>
        <member name="M:Sasa.Future`1.TryGetValue(`0@)">
            <summary>
            Attempt to extract the value.
            </summary>
            <param name="value">The value encapsulated in this future, or default(T) if it's not yet resolved.</param>
            <returns>Returns true if the future has resolved.</returns>
            <remarks>
            This method is thread-safe. If the future has resolved to an exception, this method will return false.
            </remarks>
        </member>
        <member name="M:Sasa.Future`1.Wait">
            <summary>
            Explicitly wait on the given future.
            </summary>
            <remarks>This is generally not recommended as it inhibits a program's scalability.</remarks>
        </member>
        <member name="M:Sasa.Future`1.op_Implicit(System.Exception)~Sasa.Future{`0}">
            <summary>
            Implicitly convert an exception into a failed future.
            </summary>
            <param name="reason">The reason the future failed.</param>
            <returns>A failed future.</returns>
        </member>
        <member name="M:Sasa.Future`1.ContinueWith(System.Action{Sasa.Resolved{`0}})">
            <summary>
            Register a continuation to be invoked on future resolution.
            </summary>
            <param name="continuation">Continuation invoked when the future resolves to a value.</param>
        </member>
        <member name="P:Sasa.Future`1.HasValue">
            <summary>
            Returns true if this future has resolved to a value.
            </summary>
        </member>
        <member name="P:Sasa.Future`1.HasError">
            <summary>
            Returns trye if this future has resolved to an error.
            </summary>
        </member>
        <member name="P:Sasa.Future`1.Resolved">
            <summary>
            Returns the resolved future for this abstract future.
            </summary>
        </member>
        <member name="T:Sasa.Future`1.Fulfilled">
            <summary>
            A resolved value.
            </summary>
        </member>
        <member name="T:Sasa.Resolved`1">
            <summary>
            A resolved future.
            </summary>
            <typeparam name="T">The type of the future value.</typeparam>
        </member>
        <member name="M:Sasa.Resolved`1.op_Implicit(System.Exception)~Sasa.Resolved{`0}">
            <summary>
            Implicitly convert an exception into a failed future.
            </summary>
            <param name="reason">The reason the future failed.</param>
            <returns>A failed future.</returns>
        </member>
        <member name="P:Sasa.Resolved`1.Value">
            <summary>
            The value computed by this future. If the future failed,
            accessing this property will throw the exception that 
            caused the failure.
            </summary>
            <exception cref="T:System.Exception">
            If the future fails, then the exception thrown is the reason for failure.
            </exception>
        </member>
        <member name="T:Sasa.Future`1.Failed">
            <summary>
            A failed future.
            </summary>
        </member>
        <member name="T:Sasa.Future`1.Pending">
            <summary>
            A potentially unresolved future.
            </summary>
        </member>
        <member name="F:Sasa.Future`1.Pending.settled">
            <summary>
            The settled value of the future.
            </summary>
        </member>
        <member name="F:Sasa.Future`1.Pending.queue">
            <summary>
            Threads can manually block.
            </summary>
        </member>
        <member name="M:Sasa.Future`1.Pending.OnSettle">
            <summary>
            Invoked once the future is resolved.
            </summary>
        </member>
        <member name="M:Sasa.Future`1.Pending.Block">
            <summary>
            Block current thread until the wait handler fires.
            </summary>
        </member>
        <member name="M:Sasa.Future`1.Pending.Wait(System.Action{Sasa.Resolved{`0}})">
            <summary>
            Register a continuation to be invoked on future resolution.
            </summary>
            <param name="continuation">Continuation invoked when the future resolves to a value.</param>
        </member>
        <member name="M:Sasa.Future`1.Pending.Settle(Sasa.Resolved{`0})">
            <summary>
            Used internally to set the value of the future and trigger
            the evaluation of the observers.
            </summary>
            <param name="fut">The settled future value.</param>
            <returns>The settled future value.</returns>
        </member>
        <member name="M:Sasa.Future`1.Pending.ToString">
            <summary>
            Returns a string representation of the future.
            </summary>
            <returns>String representation of the current future.</returns>
        </member>
        <member name="M:Sasa.Future`1.Pending.async(System.IAsyncResult)">
            <summary>
            The AsyncCallback invoked on async completion.
            </summary>
            <param name="result">The result of an asynchronous operation.</param>
        </member>
        <member name="T:Sasa.Promise`1">
            <summary>
            Used to resolve or fail a future.
            </summary>
            <typeparam name="T">The type of the promised future.</typeparam>
        </member>
        <member name="M:Sasa.Promise`1.#ctor">
            <summary>
            Constructs a new Promise bound to an unresolved future.
            </summary>
        </member>
        <member name="M:Sasa.Promise`1.Fulfill(`0)">
            <summary>
            Resolve the future to a legitimate value.
            </summary>
            <param name="value">Resolve this future to the given value.</param>
            <exception cref="T:Sasa.PromiseResolvedException">Thrown if the promise is already resolved.</exception>
        </member>
        <member name="M:Sasa.Promise`1.EnsureNotResolved">
            <summary>
            Checks whether the current promise is already resolved. If so, it releases
            the current lock on the object and throws an exception.
            </summary>
            <exception cref="T:Sasa.PromiseResolvedException">Thrown if the promise is already resolved.</exception>
        </member>
        <member name="M:Sasa.Promise`1.Fail(System.Exception)">
            <summary>
            Future failed with an exception.
            </summary>
            <param name="reason">The reason the future failed to resolve.</param>
            <exception cref="T:Sasa.PromiseResolvedException">Thrown if the promise is already resolved.</exception>
        </member>
        <member name="P:Sasa.Promise`1.Future">
            <summary>
            The future this promise is bound to.
            </summary>
        </member>
        <member name="T:Sasa.Future">
            <summary>
            Functions on Future values.
            </summary>
        </member>
        <member name="M:Sasa.Future.Do``2(Sasa.Future{``0},System.Func{Sasa.Future{``0},Sasa.Future{``1}})">
            <summary>
            Creates a new future of type <typeparamref name="U"/> which will be computed from the result of
            the future of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The current future's type.</typeparam>
            <typeparam name="U">The new future's type.</typeparam>
            <param name="future">The future to transform.</param>
            <param name="selector">The function creating the new future's type.</param>
            <returns>A new future constructed from the existing future.</returns>
        </member>
        <member name="M:Sasa.Future.Select``2(Sasa.Future{``0},System.Func{``0,``1},System.Func{System.Exception,``1})">
            <summary>
            Project a future of type <typeparamref name="T"/> to a future of type <typeparamref name="U"/>. This
            overload specifies an exception handler.
            </summary>
            <typeparam name="T">The current future's type.</typeparam>
            <typeparam name="U">The new future's type.</typeparam>
            <param name="future">The future to transform.</param>
            <param name="selector">The selection function.</param>
            <param name="handler">The function invoked if the future resolved to an exception.</param>
            <returns>A new future constructed from the existing future.</returns>
        </member>
        <member name="M:Sasa.Future.Select``2(Sasa.Future{``0},System.Func{``0,``1})">
            <summary>
            Project a future of type <typeparamref name="T"/> to a future of type <typeparamref name="U"/>.
            </summary>
            <typeparam name="T">The current future's type.</typeparam>
            <typeparam name="U">The new future's type.</typeparam>
            <param name="future">The future to transform.</param>
            <param name="selector">The selection function.</param>
            <returns>A new future constructed from the existing future.</returns>
        </member>
        <member name="M:Sasa.Future.SelectMany``2(Sasa.Future{``0},System.Func{Sasa.Future{``0},Sasa.Future{``1}})">
            <summary>
            Project a future to another future.
            </summary>
            <typeparam name="T">The type of the source future.</typeparam>
            <typeparam name="U">The type of the returned future.</typeparam>
            <param name="future">The source future.</param>
            <param name="selector">
            A selection function used to map values of type <typeparamref name="T"/>
            to futures of type <typeparamref name="U"/>.
            </param>
            <returns>A new future of type <typeparamref name="U"/>.</returns>
        </member>
        <member name="M:Sasa.Future.SelectMany``3(Sasa.Future{``0},System.Func{Sasa.Future{``0},Sasa.Future{``1}},System.Func{``0,``1,``2})">
            <summary>
            Projects a sequence of futures to a final future.
            </summary>
            <typeparam name="T">The type of the first future.</typeparam>
            <typeparam name="U">The type of the intermediate future.</typeparam>
            <typeparam name="R">The type of the returned future.</typeparam>
            <param name="future ">The first future.</param>
            <param name="selector">The selector for the intermediate future.</param>
            <param name="result">The selector for the resulting future.</param>
            <returns>A future for a value of type <typeparamref name="R"/>.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``1(System.Func{System.AsyncCallback,System.Object,System.IAsyncResult},System.Func{System.IAsyncResult,``0})">
            <summary>
            Begin an async operation given the begin and end calls.
            </summary>
            <typeparam name="T">The type of value to generate.</typeparam>
            <param name="begin">The BeginAsync operation.</param>
            <param name="end">The EndAsync operation.</param>
            <returns>A promise.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``1(System.Func{``0})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="T">The function's return value.</typeparam>
            <param name="call">The function to call.</param>
            <returns>A promise for the function's return value.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``2(``0,System.Func{``0,``1})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg">The type of the function's first argument.</typeparam>
            <typeparam name="T">The type of the function's return value.</typeparam>
            <param name="call">The function to call.</param>
            <param name="arg0">The function's first argument.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``3(``0,``1,System.Func{``0,``1,``2})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg0">The type of the function's first argument.</typeparam>
            <typeparam name="TArg1">The type of the function's second argument.</typeparam>
            <typeparam name="T">The type of the function's return value.</typeparam>
            <param name="call">The function to call.</param>
            <param name="arg0">The function's first argument.</param>
            <param name="arg1">The function's second argument.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``4(``0,``1,``2,System.Func{``0,``1,``2,``3})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg0">The type of the function's first argument.</typeparam>
            <typeparam name="TArg1">The type of the function's second argument.</typeparam>
            <typeparam name="TArg2">The type of the function's third argument.</typeparam>
            <typeparam name="T">The type of the function's return value.</typeparam>
            <param name="call">The function to call.</param>
            <param name="arg0">The function's first argument.</param>
            <param name="arg1">The function's second argument.</param>
            <param name="arg2">The function's third argument.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``5(``0,``1,``2,``3,System.Func{``0,``1,``2,``3,``4})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg0">The type of the function's first argument.</typeparam>
            <typeparam name="TArg1">The type of the function's second argument.</typeparam>
            <typeparam name="TArg2">The type of the function's third argument.</typeparam>
            <typeparam name="TArg3">The type of the function's fourth argument.</typeparam>
            <typeparam name="T">The type of the function's return value.</typeparam>
            <param name="call">The function to call.</param>
            <param name="arg0">The function's first argument.</param>
            <param name="arg1">The function's second argument.</param>
            <param name="arg2">The function's third argument.</param>
            <param name="arg3">The function's fourth argument.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn(System.Action)">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <param name="call">The function to execute.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``1(``0,System.Action{``0})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg">The type of the function's first argument.</typeparam>
            <param name="call">The function to execute.</param>
            <param name="arg0">The first argument to the function.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``2(``0,``1,System.Action{``0,``1})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg0">The type of the function's first argument.</typeparam>
            <typeparam name="TArg1">The type of the function's second argument.</typeparam>
            <param name="call">The function to execute.</param>
            <param name="arg0">The first argument to the function.</param>
            <param name="arg1">The second argument to the function.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.SpawnRaise``1(System.Delegate,System.Object,``0)">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg">The type of the event's EventArgs parameter.</typeparam>
            <param name="call">The function to execute.</param>
            <param name="sender">The sender argument of the event.</param>
            <param name="args">The EventArgs for the event.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``3(``0,``1,``2,System.Action{``0,``1,``2})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg0">The type of the function's first argument.</typeparam>
            <typeparam name="TArg1">The type of the function's second argument.</typeparam>
            <typeparam name="TArg2">The type of the function's third argument.</typeparam>
            <param name="call">The function to execute.</param>
            <param name="arg0">The function's first argument.</param>
            <param name="arg1">The function's second argument.</param>
            <param name="arg2">The function's third argument.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Spawn``4(``0,``1,``2,``3,System.Action{``0,``1,``2,``3})">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <typeparam name="TArg0">The type of the function's first argument.</typeparam>
            <typeparam name="TArg1">The type of the function's second argument.</typeparam>
            <typeparam name="TArg2">The type of the function's third argument.</typeparam>
            <typeparam name="TArg3">The type of the function's fourth argument.</typeparam>
            <param name="call">The function to execute.</param>
            <param name="arg0">The function's first argument.</param>
            <param name="arg1">The function's second argument.</param>
            <param name="arg2">The function's third argument.</param>
            <param name="arg3">The function's fourth argument.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.SpawnAny``1(``0,System.Object[])">
            <summary>
            Execute the given function asynchronously.
            </summary>
            <param name="call">The function to execute.</param>
            <param name="args">The function arguments.</param>
            <returns>A future for the function call's result.</returns>
        </member>
        <member name="M:Sasa.Future.Pending``1">
            <summary>
            Construct a pending future.
            </summary>
            <typeparam name="T">The type of the future.</typeparam>
            <returns>A pending future.</returns>
        </member>
        <member name="M:Sasa.Future.Fulfill``1(``0)">
            <summary>
            Construct a resolved future.
            </summary>
            <param name="value">The value of the future.</param>
            <returns>A resolved future.</returns>
        </member>
        <member name="M:Sasa.Future.Promise``1(System.Action{Sasa.Promise{``0}})">
            <summary>
            Convenience function for starting a computation that explicitly sets a promise.
            </summary>
            <typeparam name="T">The value of the future being constructed.</typeparam>
            <param name="body">The computation to start with the given promise.</param>
            <returns>The future for the result of the computation.</returns>
        </member>
        <member name="M:Sasa.Future.Fail``1(System.Exception)">
            <summary>
            Construct a failed future.
            </summary>
            <param name="reason">The reason for failure.</param>
            <returns>A failed future.</returns>
        </member>
        <member name="T:Sasa.IO.PortableWriter">
            <summary>
            A BinaryWriter that encodes values from host to big-endian encoding.
            </summary>
        </member>
        <member name="M:Sasa.IO.PortableWriter.#ctor(System.IO.Stream)">
            <summary>
            Construct a PortableWriter given the output stream.
            </summary>
            <param name="output">The output stream to write to.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.#ctor(System.IO.Stream,System.Text.Encoding)">
            <summary>
            Construct a PortableWriter given an output stream and an encoding.
            </summary>
            <param name="output">The output stream to write to.</param>
            <param name="encoding">The character encoding to use.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.Int16)">
            <summary>
            Write a 16-bit signed value.
            </summary>
            <param name="value">A 16-bit signed value.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.UInt16)">
            <summary>
            Write a 16-bit unsigned value.
            </summary>
            <param name="value">A 16-bit unsigned value.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.Int32)">
            <summary>
            Write a 32-bit signed value.
            </summary>
            <param name="value"></param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.UInt32)">
            <summary>
            Write a 32-bit unsigned value.
            </summary>
            <param name="value">Write a 32-bit unsigned value.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.Int64)">
            <summary>
            Write a 64-bit signed value.
            </summary>
            <param name="value">The 64-bit signed value.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.UInt64)">
            <summary>
            Write a 64-bit unsigned value.
            </summary>
            <param name="value">A 64-bit unsigned value.</param>
        </member>
        <member name="M:Sasa.IO.PortableWriter.Write(System.Decimal)">
            <summary>
            Write a 128-bit decimal value.
            </summary>
            <param name="value">The decimal to write.</param>
        </member>
        <member name="T:Sasa.IO.PortableReader">
            <summary>
            A BinaryReader that decodes values from big-endian to host encoding.
            </summary>
        </member>
        <member name="M:Sasa.IO.PortableReader.#ctor(System.IO.Stream)">
            <summary>
            Construct a PortableReader that reads from the given stream.
            </summary>
            <param name="input">The stream to read from.</param>
        </member>
        <member name="M:Sasa.IO.PortableReader.#ctor(System.IO.Stream,System.Text.Encoding)">
            <summary>
            Construct a PortableReader that reads from the given stream with the given encoding.
            </summary>
            <param name="input">The stream to read from.</param>
            <param name="encoding">The encoding to use when reading.</param>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadInt16">
            <summary>
            Read a signed 16-bit value.
            </summary>
            <returns>A signed 16-bit value.</returns>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadUInt16">
            <summary>
            Read an unsigned 16-bit value.
            </summary>
            <returns>An unsigned 16-bit value.</returns>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadInt32">
            <summary>
            Read a signed 32-bit value.
            </summary>
            <returns>A signed 32-bit value.</returns>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadUInt32">
            <summary>
            Read an unsigned 32-bit value.
            </summary>
            <returns>An unsigned 32-bit value</returns>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadInt64">
            <summary>
            Read a signed 64-bit value.
            </summary>
            <returns>A signed 64-bit value</returns>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadUInt64">
            <summary>
            Read an unsigned 64-bit value.
            </summary>
            <returns>An unsigned 64-bit value.</returns>
        </member>
        <member name="M:Sasa.IO.PortableReader.ReadDecimal">
            <summary>
            Read a 128-bit decimal value.
            </summary>
            <returns>A 128-bit decimal value.</returns>
        </member>
    </members>
</doc>


================================================
FILE: lib/Sasa-v0.9.3/Sasa.Dynamics.xml
================================================
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sasa.Dynamics</name>
    </assembly>
    <members>
        <member name="T:Sasa.Dynamics.IReflector">
            <summary>
            Statically-typed, safe reflection.
            </summary>
            <remarks>
            This interface provides implementors the ability to efficiently view and modify
            objects via reflection, with complete type safety. 
            </remarks>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Bool(System.Boolean@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Bool field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Int16(System.Int16@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Int16 field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.UInt16(System.UInt16@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.UInt16 field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Int32(System.Int32@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Int32 field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.UInt32(System.UInt32@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.UInt32 field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Int64(System.Int64@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Int64 field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.UInt64(System.UInt64@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.UInt64 field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Char(System.Char@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Char field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Byte(System.Byte@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Byte field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.SByte(System.SByte@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.SByte field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.String(System.String@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.String field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Float(System.Single@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Single field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Double(System.Double@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Double field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Decimal(System.Decimal@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Decimal field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.DateTime(System.DateTime@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.DateTime field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.DBNull(System.DBNull@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.DBNull field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Nullable``1(System.Nullable{``0}@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Nullable field of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Type(System.Type@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Type handle.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Delegate``1(``0@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Delegate field.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Array``1(``0[]@,System.Reflection.FieldInfo)">
            <summary>
            Designates a System.Array field.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="M:Sasa.Dynamics.IReflector.Object``1(``0@,System.Reflection.FieldInfo)">
            <summary>
            Designates a field of type <typeparam name="T" />.
            </summary>
            <param name="field">The field reference.</param>
            <param name="info">The field information.</param>
        </member>
        <member name="T:Sasa.Dynamics.IReflected">
            <summary>
            Any objects implementing this interface are assumed to
            provide their own reflection callback.
            </summary>
        </member>
        <member name="M:Sasa.Dynamics.IReflected.Reflect(Sasa.Dynamics.IReflector,System.Reflection.FieldInfo)">
            <summary>
            Inspect the internals of this object.
            </summary>
            <param name="reflector">The reflector.</param>
            <param name="field">The field information.</param>
        </member>
        <member name="T:Sasa.Dynamics.Reflector">
            <summary>
            Caches the IReflector MethodInfo references.
            </summary>
        </member>
        <member name="T:Sasa.Dynamics.Type`1">
            <summary>
            A reflector generator.
            </summary>
            <typeparam name="T">The type of object to inspect.</typeparam>
        </member>
        <member name="M:Sasa.Dynamics.Type`1.Generate">
            <summary>
            Generate the reflector function.
            </summary>
            <returns>A reflector function.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Type`1.Constructor">
            <summary>
            Generate a parameterless constructor delegate.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Sasa.Dynamics.Type`1.Reflect">
            <summary>
            Return a function that can efficiently inspect and/or modify the internals
            of any object of type <typeparamref name="T"/>.
            </summary>
            <returns>A function that can inspect a <typeparamref name="T"/>'s internals.</returns>
        </member>
        <member name="P:Sasa.Dynamics.Type`1.Create">
            <summary>
            Return a parameterless constructor for <typeparamref name="T"/>.
            </summary>
        </member>
        <member name="T:Sasa.Dynamics.Methods`1">
            <summary>
            A thread-safe, user-controlled method cache.
            </summary>
            <typeparam name="K">The type of key used to track methods.</typeparam>
            <remarks>
            Only static methods are currently supported.
            
            All methods are cached as one of either Action&lt;*&gt; or Func&lt;*&gt; overloads.
            </remarks>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.Cache(`0,System.Reflection.MethodInfo)">
            <summary>
            Generate the appropriate delegate from the given MethodInfo and
            cache it.
            </summary>
            <param name="key"></param>
            <param name="method"></param>
            <returns></returns>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.TypeCheck``1(System.Delegate)">
            <summary>
            Throws an InvalidCastException if the cached delegate is not of the proper type.
            </summary>
            <typeparam name="R"></typeparam>
            <param name="func"></param>
            <returns></returns>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.FuncType(System.Int32,System.Boolean)">
            <summary>
            Return the appropriate delegate type to create for the given number of
            arguments and the return type.
            </summary>
            <param name="argn">Number of delegate arguments.</param>
            <param name="isFunc">True if return type is not null.</param>
            <returns>The type of delegate to create.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.Method``1(`0,System.Func{`0,System.Reflection.MethodInfo})">
            <summary>
            Load a delegate by key.
            </summary>
            <typeparam name="R">The type of the return delegate.</typeparam>
            <param name="key">The key under which this delegate is cached.</param>
            <param name="find">A callback to find the MethodInfo for the corresponding key.</param>
            <returns>A delegate for the static method.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.Instance``1(`0,System.Func{`0,``0})">
            <summary>
            Load a delegate by key.
            </summary>
            <typeparam name="R">The type of the return delegate.</typeparam>
            <param name="key">The key under which this delegate is cached.</param>
            <param name="find">A callback to find the MethodInfo for the corresponding key.</param>
            <returns>A delegate for the static method.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.Cache``1(`0,``0)">
            <summary>
            Explicitly cache the corresponding delegate.
            </summary>
            <typeparam name="R">The delegate type to cache.</typeparam>
            <param name="key">The key under which to cache the delegate.</param>
            <param name="value">The delegate instance.</param>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.Contains(`0)">
            <summary>
            Returns true if the cache contains an entry with the specified key.
            </summary>
            <param name="key">The key to check.</param>
            <returns>True if an entry with the key exists.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Methods`1.Create">
            <summary>
            Construct a new instance of the method cache.
            </summary>
            <returns></returns>
        </member>
        <member name="T:Sasa.Dynamics.Types`1">
            <summary>
            A thread-safe, user-controlled cache of types.
            </summary>
            <typeparam name="K">The key to map to types.</typeparam>
        </member>
        <member name="M:Sasa.Dynamics.Types`1.Get(`0,System.Func{`0,System.Type})">
            <summary>
            Get the type saved under the given key.
            </summary>
            <param name="key">The key the type is saved under.</param>
            <param name="find">A callback to load the type for the given key.</param>
            <returns>The type saved under <paramref name="key"/>.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Types`1.Set(`0,System.Type)">
            <summary>
            Explicitly set the type stored under the given key.
            </summary>
            <param name="key">The key to save the type under.</param>
            <param name="type">The Type to cache.</param>
            <returns>The type that was cached.</returns>
        </member>
        <member name="M:Sasa.Dynamics.Types`1.Contains(`0)">
            <summary>
            Returns true if the cache contains an entry with the specified key.
            </summary>
            <param name="key">The key to check.</param>
            <returns>True if an entry with the key exists.</returns>
        </member>
        <member name="T:Sasa.Dynamics.DynamicType">
            <summary>
            Operations on the dynamic type of an object.
            </summary>
        </member>
        <member name="M:Sasa.Dynamics.DynamicType.Reflect(System.Object)">
            <summary>
            Reflect on the dynamic type of the reference.
            </summary>
            <param name="obj">The object with unknown type.</param>
        </member>
        <member name="M:Sasa.Dynamics.DynamicType.Reflect(System.Type)">
            <summary>
            Reflect on the dynamic type of the reference.
            </summary>
            <param name="objType">The unknown object type.</param>
            <returns>A function that can be used to reflect on any instance of the given type.</returns>
        </member>
        <member name="M:Sasa.Dynamics.DynamicType.Create(System.Type)">
            <summary>
            Reflect on the dynamic type of the reference.
            </summary>
            <param name="objType">The unknown object type.</param>
            <returns>A function that can be used to construct uninitialized instances of the given type.</returns>
        </member>
        <member name="F:Sasa.Dynamics.DynamicType.DynamicCreate">
            <summary>
            A delegate that creates constructors by dispatching into the static reflector.
            </summary>
        </member>
        <member name="F:Sasa.Dynamics.DynamicType.DynamicDispatch">
            <summary>
            Construct a method for dynamically reflecting on the given type.
            </summary>
        </member>
    </members>
</doc>


================================================
FILE: lib/Sasa-v0.9.3/Sasa.Linq.xml
================================================
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Sasa.Linq</name>
    </assembly>
    <members>
        <member name="T:Sasa.Linq.IdentityVisitor">
            <summary>
            A visitor that simply returns the expression as-is. Clients must simply override the
            nodes they wish to transform.
            </summary>
        </member>
        <member name="T:Sasa.Linq.ExpressionVisitor`1">
            <summary>
            An expression visitor base class. Each ExpressionType has a corresponding
            abstract method to ensure all node types are handled.
            </summary>
            <remarks>Base on mattwar's excellent series:
            http://blogs.msdn.com/mattwar/pages/linq-links.aspx</remarks>
        </member>
        <member name="M:Sasa.Linq.ExpressionVisitor`1.Visit(System.Linq.Expressions.Expression)">
            <summary>
            Processes the given expression by dispatching to the appropriate expression handler.
            </summary>
            <param name="e">The expression to process.</param>
            <returns>The value compu
Download .txt
gitextract_i8ldszcx/

├── .gitignore
├── .nuget/
│   └── packages.config
├── LICENSE.txt
├── ManyConsole/
│   ├── ConsoleCommand.cs
│   ├── ConsoleCommandDispatcher.cs
│   ├── ConsoleHelpAsException.cs
│   ├── Internal/
│   │   ├── ConsoleHelp.cs
│   │   ├── ConsoleRedirectionDetection.cs
│   │   ├── ConsoleUtil.cs
│   │   └── RequiredOptionRecord.cs
│   └── ManyConsole.csproj
├── ManyConsole.Tests/
│   ├── Can_consume_variable_number_of_arguments.cs
│   ├── Can_define_commands_with_aliases.cs
│   ├── Can_have_required_parameters.cs
│   ├── Can_modify_command_behavior_after_parsing_and_before_running.cs
│   ├── Can_overwrite_options_property.cs
│   ├── Can_verify_number_of_arguments_passed_to_command.cs
│   ├── ConsoleModeCommandSpecs/
│   │   └── StatusEchoCommand.cs
│   ├── Console_interface_is_simplified_when_there_is_only_one_command.cs
│   ├── ManyConsole.Tests.csproj
│   ├── Multiple_dispatch_calls_dont_interfere_with_each_other.cs
│   ├── MyStringAssert.cs
│   ├── Show_useful_error_information.cs
│   ├── TestCommand.cs
│   ├── abstract_commands_arent_loaded.cs
│   ├── lets_user_browse_command_help.cs
│   └── show_useful_command_summary.cs
├── ManyConsole.nuspec
├── ManyConsole.sln
├── ManyConsoleModeCommand/
│   ├── ConsoleModeCommand.cs
│   ├── Internal/
│   │   └── CommandLineParser.cs
│   └── ManyConsoleModeCommand.csproj
├── ManyConsoleModeCommand.Test/
│   ├── ConsoleModeCommandSpecs/
│   │   ├── ConsoleModeCommandSpecification.cs
│   │   ├── Should_fail_strictly_on_error_when_running_noninteractive.cs
│   │   ├── Should_give_user_prompt_in_interactive_mode.cs
│   │   ├── Should_interpret_quotes_properly.cs
│   │   └── StatusEchoCommand.cs
│   └── ManyConsoleModeCommand.Test.csproj
├── RunTestsInGUI.ps1
├── SampleConsole/
│   ├── DumpEmlFilesCommand.cs
│   ├── EchoStringsCommand.cs
│   ├── ExampleCommand.cs
│   ├── GetTimeCommand.cs
│   ├── MattsCommand.cs
│   ├── Program.cs
│   ├── SampleConsole.csproj
│   ├── SimpleConsoleModeCommand.cs
│   ├── StatefulConsoleModeCommand.cs
│   ├── ThrowException.cs
│   ├── app.config
│   └── packages.config
├── default.ps1
├── lib/
│   ├── Sasa-v0.9.3/
│   │   ├── CHANGELOG.txt
│   │   ├── Sasa.Arrow.xml
│   │   ├── Sasa.Contracts.xml
│   │   ├── Sasa.Core.xml
│   │   ├── Sasa.Dynamics.xml
│   │   ├── Sasa.Linq.xml
│   │   ├── Sasa.Mime.xml
│   │   ├── Sasa.Net.xml
│   │   ├── Sasa.Operators.xml
│   │   ├── Sasa.Parsing.xml
│   │   ├── Sasa.Serialization.xml
│   │   ├── Sasa.Statistics.xml
│   │   └── Sasa.xml
│   └── Sasa-v0.9.3-docs/
│       ├── CSS/
│       │   ├── Contents.css
│       │   ├── TableOfContents.css
│       │   └── TreeView.css
│       ├── Contents/
│       │   ├── 0/
│       │   │   ├── 0.html
│       │   │   └── 1.html
│       │   ├── 1/
│       │   │   ├── 1.html
│       │   │   ├── 10.html
│       │   │   ├── 100.html
│       │   │   ├── 101.html
│       │   │   ├── 102.html
│       │   │   ├── 103.html
│       │   │   ├── 104.html
│       │   │   ├── 105.html
│       │   │   ├── 106.html
│       │   │   ├── 107.html
│       │   │   ├── 108.html
│       │   │   ├── 109.html
│       │   │   ├── 11.html
│       │   │   ├── 110.html
│       │   │   ├── 111.html
│       │   │   ├── 112.html
│       │   │   ├── 113.html
│       │   │   ├── 114.html
│       │   │   ├── 115.html
│       │   │   ├── 116.html
│       │   │   ├── 117.html
│       │   │   ├── 118.html
│       │   │   ├── 119.html
│       │   │   ├── 12.html
│       │   │   ├── 120.html
│       │   │   ├── 121.html
│       │   │   ├── 122.html
│       │   │   ├── 123.html
│       │   │   ├── 124.html
│       │   │   ├── 125.html
│       │   │   ├── 126.html
│       │   │   ├── 127.html
│       │   │   ├── 128.html
│       │   │   ├── 129.html
│       │   │   ├── 13.html
│       │   │   ├── 130.html
│       │   │   ├── 131.html
│       │   │   ├── 132.html
│       │   │   ├── 133.html
│       │   │   ├── 134.html
│       │   │   ├── 135.html
│       │   │   ├── 136.html
│       │   │   ├── 137.html
│       │   │   ├── 138.html
│       │   │   ├── 139.html
│       │   │   ├── 14.html
│       │   │   ├── 140.html
│       │   │   ├── 141.html
│       │   │   ├── 142.html
│       │   │   ├── 143.html
│       │   │   ├── 144.html
│       │   │   ├── 145.html
│       │   │   ├── 146.html
│       │   │   ├── 147.html
│       │   │   ├── 148.html
│       │   │   ├── 149.html
│       │   │   ├── 15.html
│       │   │   ├── 150.html
│       │   │   ├── 151.html
│       │   │   ├── 152.html
│       │   │   ├── 153.html
│       │   │   ├── 154.html
│       │   │   ├── 155.html
│       │   │   ├── 156.html
│       │   │   ├── 157.html
│       │   │   ├── 158.html
│       │   │   ├── 159.html
│       │   │   ├── 16.html
│       │   │   ├── 160.html
│       │   │   ├── 161.html
│       │   │   ├── 162.html
│       │   │   ├── 163.html
│       │   │   ├── 164.html
│       │   │   ├── 165.html
│       │   │   ├── 166.html
│       │   │   ├── 167.html
│       │   │   ├── 168.html
│       │   │   ├── 169.html
│       │   │   ├── 17.html
│       │   │   ├── 170.html
│       │   │   ├── 171.html
│       │   │   ├── 172.html
│       │   │   ├── 173.html
│       │   │   ├── 174.html
│       │   │   ├── 175.html
│       │   │   ├── 176.html
│       │   │   ├── 177.html
│       │   │   ├── 178.html
│       │   │   ├── 179.html
│       │   │   ├── 18.html
│       │   │   ├── 180.html
│       │   │   ├── 181.html
│       │   │   ├── 182.html
│       │   │   ├── 183.html
│       │   │   ├── 184.html
│       │   │   ├── 185.html
│       │   │   ├── 186.html
│       │   │   ├── 187.html
│       │   │   ├── 188.html
│       │   │   ├── 189.html
│       │   │   ├── 19.html
│       │   │   ├── 190.html
│       │   │   ├── 191.html
│       │   │   ├── 192.html
│       │   │   ├── 193.html
│       │   │   ├── 194.html
│       │   │   ├── 195.html
│       │   │   ├── 196.html
│       │   │   ├── 197.html
│       │   │   ├── 198.html
│       │   │   ├── 199.html
│       │   │   ├── 2.html
│       │   │   ├── 20.html
│       │   │   ├── 200.html
│       │   │   ├── 201.html
│       │   │   ├── 202.html
│       │   │   ├── 203.html
│       │   │   ├── 204.html
│       │   │   ├── 205.html
│       │   │   ├── 206.html
│       │   │   ├── 207.html
│       │   │   ├── 208.html
│       │   │   ├── 209.html
│       │   │   ├── 21.html
│       │   │   ├── 210.html
│       │   │   ├── 211.html
│       │   │   ├── 212.html
│       │   │   ├── 213.html
│       │   │   ├── 214.html
│       │   │   ├── 215.html
│       │   │   ├── 216.html
│       │   │   ├── 217.html
│       │   │   ├── 218.html
│       │   │   ├── 219.html
│       │   │   ├── 22.html
│       │   │   ├── 220.html
│       │   │   ├── 221.html
│       │   │   ├── 222.html
│       │   │   ├── 223.html
│       │   │   ├── 224.html
│       │   │   ├── 225.html
│       │   │   ├── 226.html
│       │   │   ├── 227.html
│       │   │   ├── 228.html
│       │   │   ├── 229.html
│       │   │   ├── 23.html
│       │   │   ├── 230.html
│       │   │   ├── 231.html
│       │   │   ├── 232.html
│       │   │   ├── 233.html
│       │   │   ├── 234.html
│       │   │   ├── 235.html
│       │   │   ├── 236.html
│       │   │   ├── 237.html
│       │   │   ├── 238.html
│       │   │   ├── 239.html
│       │   │   ├── 24.html
│       │   │   ├── 240.html
│       │   │   ├── 241.html
│       │   │   ├── 242.html
│       │   │   ├── 243.html
│       │   │   ├── 244.html
│       │   │   ├── 245.html
│       │   │   ├── 246.html
│       │   │   ├── 247.html
│       │   │   ├── 248.html
│       │   │   ├── 249.html
│       │   │   ├── 25.html
│       │   │   ├── 250.html
│       │   │   ├── 251.html
│       │   │   ├── 252.html
│       │   │   ├── 253.html
│       │   │   ├── 254.html
│       │   │   ├── 255.html
│       │   │   ├── 256.html
│       │   │   ├── 257.html
│       │   │   ├── 258.html
│       │   │   ├── 259.html
│       │   │   ├── 26.html
│       │   │   ├── 260.html
│       │   │   ├── 261.html
│       │   │   ├── 262.html
│       │   │   ├── 263.html
│       │   │   ├── 264.html
│       │   │   ├── 265.html
│       │   │   ├── 266.html
│       │   │   ├── 267.html
│       │   │   ├── 268.html
│       │   │   ├── 269.html
│       │   │   ├── 27.html
│       │   │   ├── 270.html
│       │   │   ├── 271.html
│       │   │   ├── 272.html
│       │   │   ├── 273.html
│       │   │   ├── 274.html
│       │   │   ├── 275.html
│       │   │   ├── 276.html
│       │   │   ├── 277.html
│       │   │   ├── 278.html
│       │   │   ├── 279.html
│       │   │   ├── 28.html
│       │   │   ├── 280.html
│       │   │   ├── 281.html
│       │   │   ├── 282.html
│       │   │   ├── 283.html
│       │   │   ├── 284.html
│       │   │   ├── 285.html
│       │   │   ├── 286.html
│       │   │   ├── 287.html
│       │   │   ├── 288.html
│       │   │   ├── 289.html
│       │   │   ├── 29.html
│       │   │   ├── 290.html
│       │   │   ├── 291.html
│       │   │   ├── 292.html
│       │   │   ├── 293.html
│       │   │   ├── 294.html
│       │   │   ├── 295.html
│       │   │   ├── 296.html
│       │   │   ├── 297.html
│       │   │   ├── 298.html
│       │   │   ├── 299.html
│       │   │   ├── 3.html
│       │   │   ├── 30.html
│       │   │   ├── 300.html
│       │   │   ├── 301.html
│       │   │   ├── 302.html
│       │   │   ├── 303.html
│       │   │   ├── 304.html
│       │   │   ├── 305.html
│       │   │   ├── 306.html
│       │   │   ├── 307.html
│       │   │   ├── 308.html
│       │   │   ├── 309.html
│       │   │   ├── 31.html
│       │   │   ├── 310.html
│       │   │   ├── 311.html
│       │   │   ├── 312.html
│       │   │   ├── 313.html
│       │   │   ├── 314.html
│       │   │   ├── 315.html
│       │   │   ├── 316.html
│       │   │   ├── 317.html
│       │   │   ├── 318.html
│       │   │   ├── 319.html
│       │   │   ├── 32.html
│       │   │   ├── 320.html
│       │   │   ├── 321.html
│       │   │   ├── 322.html
│       │   │   ├── 323.html
│       │   │   ├── 324.html
│       │   │   ├── 325.html
│       │   │   ├── 326.html
│       │   │   ├── 327.html
│       │   │   ├── 328.html
│       │   │   ├── 329.html
│       │   │   ├── 33.html
│       │   │   ├── 330.html
│       │   │   ├── 331.html
│       │   │   ├── 332.html
│       │   │   ├── 333.html
│       │   │   ├── 334.html
│       │   │   ├── 335.html
│       │   │   ├── 336.html
│       │   │   ├── 337.html
│       │   │   ├── 338.html
│       │   │   ├── 339.html
│       │   │   ├── 34.html
│       │   │   ├── 340.html
│       │   │   ├── 341.html
│       │   │   ├── 342.html
│       │   │   ├── 343.html
│       │   │   ├── 344.html
│       │   │   ├── 345.html
│       │   │   ├── 346.html
│       │   │   ├── 347.html
│       │   │   ├── 348.html
│       │   │   ├── 349.html
│       │   │   ├── 35.html
│       │   │   ├── 350.html
│       │   │   ├── 351.html
│       │   │   ├── 352.html
│       │   │   ├── 353.html
│       │   │   ├── 354.html
│       │   │   ├── 355.html
│       │   │   ├── 356.html
│       │   │   ├── 357.html
│       │   │   ├── 358.html
│       │   │   ├── 359.html
│       │   │   ├── 36.html
│       │   │   ├── 360.html
│       │   │   ├── 361.html
│       │   │   ├── 362.html
│       │   │   ├── 363.html
│       │   │   ├── 364.html
│       │   │   ├── 365.html
│       │   │   ├── 366.html
│       │   │   ├── 367.html
│       │   │   ├── 368.html
│       │   │   ├── 369.html
│       │   │   ├── 37.html
│       │   │   ├── 370.html
│       │   │   ├── 371.html
│       │   │   ├── 372.html
│       │   │   ├── 373.html
│       │   │   ├── 374.html
│       │   │   ├── 375.html
│       │   │   ├── 376.html
│       │   │   ├── 377.html
│       │   │   ├── 378.html
│       │   │   ├── 379.html
│       │   │   ├── 38.html
│       │   │   ├── 380.html
│       │   │   ├── 381.html
│       │   │   ├── 382.html
│       │   │   ├── 383.html
│       │   │   ├── 384.html
│       │   │   ├── 385.html
│       │   │   ├── 386.html
│       │   │   ├── 387.html
│       │   │   ├── 388.html
│       │   │   ├── 389.html
│       │   │   ├── 39.html
│       │   │   ├── 390.html
│       │   │   ├── 391.html
│       │   │   ├── 392.html
│       │   │   ├── 393.html
│       │   │   ├── 394.html
│       │   │   ├── 395.html
│       │   │   ├── 396.html
│       │   │   ├── 397.html
│       │   │   ├── 398.html
│       │   │   ├── 399.html
│       │   │   ├── 4.html
│       │   │   ├── 40.html
│       │   │   ├── 400.html
│       │   │   ├── 401.html
│       │   │   ├── 402.html
│       │   │   ├── 403.html
│       │   │   ├── 404.html
│       │   │   ├── 405.html
│       │   │   ├── 406.html
│       │   │   ├── 407.html
│       │   │   ├── 408.html
│       │   │   ├── 409.html
│       │   │   ├── 41.html
│       │   │   ├── 410.html
│       │   │   ├── 411.html
│       │   │   ├── 412.html
│       │   │   ├── 413.html
│       │   │   ├── 414.html
│       │   │   ├── 415.html
│       │   │   ├── 416.html
│       │   │   ├── 417.html
│       │   │   ├── 418.html
│       │   │   ├── 419.html
│       │   │   ├── 42.html
│       │   │   ├── 420.html
│       │   │   ├── 421.html
│       │   │   ├── 422.html
│       │   │   ├── 423.html
│       │   │   ├── 424.html
│       │   │   ├── 425.html
│       │   │   ├── 426.html
│       │   │   ├── 427.html
│       │   │   ├── 428.html
│       │   │   ├── 429.html
│       │   │   ├── 43.html
│       │   │   ├── 430.html
│       │   │   ├── 431.html
│       │   │   ├── 432.html
│       │   │   ├── 433.html
│       │   │   ├── 434.html
│       │   │   ├── 435.html
│       │   │   ├── 436.html
│       │   │   ├── 437.html
│       │   │   ├── 438.html
│       │   │   ├── 439.html
│       │   │   ├── 44.html
│       │   │   ├── 440.html
│       │   │   ├── 441.html
│       │   │   ├── 442.html
│       │   │   ├── 443.html
│       │   │   ├── 444.html
│       │   │   ├── 445.html
│       │   │   ├── 446.html
│       │   │   ├── 447.html
│       │   │   ├── 448.html
│       │   │   ├── 449.html
│       │   │   ├── 45.html
│       │   │   ├── 450.html
│       │   │   ├── 451.html
│       │   │   ├── 452.html
│       │   │   ├── 453.html
│       │   │   ├── 454.html
│       │   │   ├── 455.html
│       │   │   ├── 456.html
│       │   │   ├── 457.html
│       │   │   ├── 458.html
│       │   │   ├── 459.html
│       │   │   ├── 46.html
│       │   │   ├── 460.html
│       │   │   ├── 461.html
│       │   │   ├── 462.html
│       │   │   ├── 463.html
│       │   │   ├── 464.html
│       │   │   ├── 465.html
│       │   │   ├── 466.html
│       │   │   ├── 467.html
│       │   │   ├── 468.html
│       │   │   ├── 469.html
│       │   │   ├── 47.html
│       │   │   ├── 470.html
│       │   │   ├── 471.html
│       │   │   ├── 472.html
│       │   │   ├── 473.html
│       │   │   ├── 474.html
│       │   │   ├── 475.html
│       │   │   ├── 476.html
│       │   │   ├── 477.html
│       │   │   ├── 478.html
│       │   │   ├── 479.html
│       │   │   ├── 48.html
│       │   │   ├── 480.html
│       │   │   ├── 481.html
│       │   │   ├── 482.html
│       │   │   ├── 483.html
│       │   │   ├── 484.html
│       │   │   ├── 485.html
│       │   │   ├── 486.html
│       │   │   ├── 487.html
│       │   │   ├── 488.html
│       │   │   ├── 489.html
│       │   │   ├── 49.html
│       │   │   ├── 490.html
│       │   │   ├── 491.html
│       │   │   ├── 492.html
│       │   │   ├── 493.html
│       │   │   ├── 494.html
│       │   │   ├── 495.html
│       │   │   ├── 496.html
│       │   │   ├── 497.html
│       │   │   ├── 498.html
│       │   │   ├── 499.html
│       │   │   ├── 5.html
│       │   │   ├── 50.html
│       │   │   ├── 500.html
│       │   │   ├── 51.html
│       │   │   ├── 52.html
│       │   │   ├── 53.html
│       │   │   ├── 54.html
│       │   │   ├── 55.html
│       │   │   ├── 56.html
│       │   │   ├── 57.html
│       │   │   ├── 58.html
│       │   │   ├── 59.html
│       │   │   ├── 6.html
│       │   │   ├── 60.html
│       │   │   ├── 61.html
│       │   │   ├── 62.html
│       │   │   ├── 63.html
│       │   │   ├── 64.html
│       │   │   ├── 65.html
│       │   │   ├── 66.html
│       │   │   ├── 67.html
│       │   │   ├── 68.html
│       │   │   ├── 69.html
│       │   │   ├── 7.html
│       │   │   ├── 70.html
│       │   │   ├── 71.html
│       │   │   ├── 72.html
│       │   │   ├── 73.html
│       │   │   ├── 74.html
│       │   │   ├── 75.html
│       │   │   ├── 76.html
│       │   │   ├── 77.html
│       │   │   ├── 78.html
│       │   │   ├── 79.html
│       │   │   ├── 8.html
│       │   │   ├── 80.html
│       │   │   ├── 81.html
│       │   │   ├── 82.html
│       │   │   ├── 83.html
│       │   │   ├── 84.html
│       │   │   ├── 85.html
│       │   │   ├── 86.html
│       │   │   ├── 87.html
│       │   │   ├── 88.html
│       │   │   ├── 89.html
│       │   │   ├── 9.html
│       │   │   ├── 90.html
│       │   │   ├── 91.html
│       │   │   ├── 92.html
│       │   │   ├── 93.html
│       │   │   ├── 94.html
│       │   │   ├── 95.html
│       │   │   ├── 96.html
│       │   │   ├── 97.html
│       │   │   ├── 98.html
│       │   │   └── 99.html
│       │   ├── 2/
│       │   │   ├── 1.html
│       │   │   ├── 10.html
│       │   │   ├── 100.html
│       │   │   ├── 101.html
│       │   │   ├── 102.html
│       │   │   ├── 103.html
│       │   │   ├── 104.html
│       │   │   ├── 105.html
│       │   │   ├── 106.html
│       │   │   ├── 107.html
│       │   │   ├── 108.html
│       │   │   ├── 109.html
│       │   │   ├── 11.html
│       │   │   ├── 110.html
│       │   │   ├── 111.html
│       │   │   ├── 112.html
│       │   │   ├── 113.html
│       │   │   ├── 114.html
│       │   │   ├── 115.html
│       │   │   ├── 116.html
│       │   │   ├── 117.html
│       │   │   ├── 118.html
│       │   │   ├── 119.html
│       │   │   ├── 12.html
│       │   │   ├── 120.html
│       │   │   ├── 121.html
│       │   │   ├── 122.html
│       │   │   ├── 123.html
│       │   │   ├── 124.html
│       │   │   ├── 125.html
│       │   │   ├── 126.html
│       │   │   ├── 127.html
│       │   │   ├── 128.html
│       │   │   ├── 129.html
│       │   │   ├── 13.html
│       │   │   ├── 130.html
│       │   │   ├── 131.html
│       │   │   ├── 132.html
│       │   │   ├── 133.html
│       │   │   ├── 134.html
│       │   │   ├── 135.html
│       │   │   ├── 136.html
│       │   │   ├── 137.html
│       │   │   ├── 138.html
│       │   │   ├── 139.html
│       │   │   ├── 14.html
│       │   │   ├── 140.html
│       │   │   ├── 141.html
│       │   │   ├── 142.html
│       │   │   ├── 143.html
│       │   │   ├── 144.html
│       │   │   ├── 145.html
│       │   │   ├── 146.html
│       │   │   ├── 147.html
│       │   │   ├── 148.html
│       │   │   ├── 149.html
│       │   │   ├── 15.html
│       │   │   ├── 150.html
│       │   │   ├── 151.html
│       │   │   ├── 152.html
│       │   │   ├── 153.html
│       │   │   ├── 154.html
│       │   │   ├── 155.html
│       │   │   ├── 156.html
│       │   │   ├── 157.html
│       │   │   ├── 158.html
│       │   │   ├── 159.html
│       │   │   ├── 16.html
│       │   │   ├── 160.html
│       │   │   ├── 161.html
│       │   │   ├── 162.html
│       │   │   ├── 163.html
│       │   │   ├── 164.html
│       │   │   ├── 165.html
│       │   │   ├── 166.html
│       │   │   ├── 167.html
│       │   │   ├── 168.html
│       │   │   ├── 169.html
│       │   │   ├── 17.html
│       │   │   ├── 170.html
│       │   │   ├── 171.html
│       │   │   ├── 172.html
│       │   │   ├── 173.html
│       │   │   ├── 174.html
│       │   │   ├── 175.html
│       │   │   ├── 176.html
│       │   │   ├── 177.html
│       │   │   ├── 178.html
│       │   │   ├── 179.html
│       │   │   ├── 18.html
│       │   │   ├── 180.html
│       │   │   ├── 181.html
│       │   │   ├── 182.html
│       │   │   ├── 183.html
│       │   │   ├── 184.html
│       │   │   ├── 185.html
│       │   │   ├── 186.html
│       │   │   ├── 187.html
│       │   │   ├── 188.html
│       │   │   ├── 189.html
│       │   │   ├── 19.html
│       │   │   ├── 190.html
│       │   │   ├── 191.html
│       │   │   ├── 192.html
│       │   │   ├── 193.html
│       │   │   ├── 194.html
│       │   │   ├── 195.html
│       │   │   ├── 196.html
│       │   │   ├── 197.html
│       │   │   ├── 198.html
│       │   │   ├── 199.html
│       │   │   ├── 2.html
│       │   │   ├── 20.html
│       │   │   ├── 200.html
│       │   │   ├── 201.html
│       │   │   ├── 202.html
│       │   │   ├── 203.html
│       │   │   ├── 204.html
│       │   │   ├── 205.html
│       │   │   ├── 206.html
│       │   │   ├── 207.html
│       │   │   ├── 208.html
│       │   │   ├── 209.html
│       │   │   ├── 21.html
│       │   │   ├── 210.html
│       │   │   ├── 211.html
│       │   │   ├── 212.html
│       │   │   ├── 213.html
│       │   │   ├── 214.html
│       │   │   ├── 215.html
│       │   │   ├── 216.html
│       │   │   ├── 217.html
│       │   │   ├── 218.html
│       │   │   ├── 219.html
│       │   │   ├── 22.html
│       │   │   ├── 220.html
│       │   │   ├── 221.html
│       │   │   ├── 222.html
│       │   │   ├── 223.html
│       │   │   ├── 224.html
│       │   │   ├── 225.html
│       │   │   ├── 226.html
│       │   │   ├── 227.html
│       │   │   ├── 228.html
│       │   │   ├── 229.html
│       │   │   ├── 23.html
│       │   │   ├── 230.html
│       │   │   ├── 231.html
│       │   │   ├── 232.html
│       │   │   ├── 233.html
│       │   │   ├── 234.html
│       │   │   ├── 235.html
│       │   │   ├── 236.html
│       │   │   ├── 237.html
│       │   │   ├── 238.html
│       │   │   ├── 239.html
│       │   │   ├── 24.html
│       │   │   ├── 240.html
│       │   │   ├── 241.html
│       │   │   ├── 242.html
│       │   │   ├── 243.html
│       │   │   ├── 244.html
│       │   │   ├── 245.html
│       │   │   ├── 246.html
│       │   │   ├── 247.html
│       │   │   ├── 248.html
│       │   │   ├── 249.html
│       │   │   ├── 25.html
│       │   │   ├── 250.html
│       │   │   ├── 251.html
│       │   │   ├── 252.html
│       │   │   ├── 253.html
│       │   │   ├── 254.html
│       │   │   ├── 255.html
│       │   │   ├── 256.html
│       │   │   ├── 257.html
│       │   │   ├── 258.html
│       │   │   ├── 259.html
│       │   │   ├── 26.html
│       │   │   ├── 260.html
│       │   │   ├── 261.html
│       │   │   ├── 262.html
│       │   │   ├── 263.html
│       │   │   ├── 264.html
│       │   │   ├── 265.html
│       │   │   ├── 266.html
│       │   │   ├── 267.html
│       │   │   ├── 268.html
│       │   │   ├── 269.html
│       │   │   ├── 27.html
│       │   │   ├── 270.html
│       │   │   ├── 271.html
│       │   │   ├── 272.html
│       │   │   ├── 273.html
│       │   │   ├── 274.html
│       │   │   ├── 275.html
│       │   │   ├── 276.html
│       │   │   ├── 277.html
│       │   │   ├── 278.html
│       │   │   ├── 279.html
│       │   │   ├── 28.html
│       │   │   ├── 280.html
│       │   │   ├── 281.html
│       │   │   ├── 282.html
│       │   │   ├── 283.html
│       │   │   ├── 284.html
│       │   │   ├── 285.html
│       │   │   ├── 286.html
│       │   │   ├── 287.html
│       │   │   ├── 288.html
│       │   │   ├── 289.html
│       │   │   ├── 29.html
│       │   │   ├── 290.html
│       │   │   ├── 291.html
│       │   │   ├── 292.html
│       │   │   ├── 293.html
│       │   │   ├── 294.html
│       │   │   ├── 295.html
│       │   │   ├── 296.html
│       │   │   ├── 297.html
│       │   │   ├── 298.html
│       │   │   ├── 299.html
│       │   │   ├── 3.html
│       │   │   ├── 30.html
│       │   │   ├── 300.html
│       │   │   ├── 301.html
│       │   │   ├── 302.html
│       │   │   ├── 303.html
│       │   │   ├── 304.html
│       │   │   ├── 305.html
│       │   │   ├── 306.html
│       │   │   ├── 307.html
│       │   │   ├── 308.html
│       │   │   ├── 309.html
│       │   │   ├── 31.html
│       │   │   ├── 310.html
│       │   │   ├── 311.html
│       │   │   ├── 312.html
│       │   │   ├── 313.html
│       │   │   ├── 314.html
│       │   │   ├── 315.html
│       │   │   ├── 316.html
│       │   │   ├── 317.html
│       │   │   ├── 318.html
│       │   │   ├── 319.html
│       │   │   ├── 32.html
│       │   │   ├── 320.html
│       │   │   ├── 321.html
│       │   │   ├── 322.html
│       │   │   ├── 323.html
│       │   │   ├── 324.html
│       │   │   ├── 325.html
│       │   │   ├── 326.html
│       │   │   ├── 327.html
│       │   │   ├── 328.html
│       │   │   ├── 329.html
│       │   │   ├── 33.html
│       │   │   ├── 330.html
│       │   │   ├── 331.html
│       │   │   ├── 332.html
│       │   │   ├── 333.html
│       │   │   ├── 334.html
│       │   │   ├── 335.html
│       │   │   ├── 336.html
│       │   │   ├── 337.html
│       │   │   ├── 338.html
│       │   │   ├── 339.html
│       │   │   ├── 34.html
│       │   │   ├── 340.html
│       │   │   ├── 341.html
│       │   │   ├── 342.html
│       │   │   ├── 343.html
│       │   │   ├── 344.html
│       │   │   ├── 345.html
│       │   │   ├── 346.html
│       │   │   ├── 347.html
│       │   │   ├── 348.html
│       │   │   ├── 349.html
│       │   │   ├── 35.html
│       │   │   ├── 350.html
│       │   │   ├── 351.html
│       │   │   ├── 352.html
│       │   │   ├── 353.html
│       │   │   ├── 354.html
│       │   │   ├── 355.html
│       │   │   ├── 356.html
│       │   │   ├── 357.html
│       │   │   ├── 358.html
│       │   │   ├── 359.html
│       │   │   ├── 36.html
│       │   │   ├── 360.html
│       │   │   ├── 361.html
│       │   │   ├── 362.html
│       │   │   ├── 363.html
│       │   │   ├── 364.html
│       │   │   ├── 365.html
│       │   │   ├── 366.html
│       │   │   ├── 367.html
│       │   │   ├── 368.html
│       │   │   ├── 369.html
│       │   │   ├── 37.html
│       │   │   ├── 370.html
│       │   │   ├── 371.html
│       │   │   ├── 372.html
│       │   │   ├── 373.html
│       │   │   ├── 374.html
│       │   │   ├── 375.html
│       │   │   ├── 376.html
│       │   │   ├── 377.html
│       │   │   ├── 378.html
│       │   │   ├── 379.html
│       │   │   ├── 38.html
│       │   │   ├── 380.html
│       │   │   ├── 381.html
│       │   │   ├── 382.html
│       │   │   ├── 383.html
│       │   │   ├── 384.html
│       │   │   ├── 385.html
│       │   │   ├── 386.html
│       │   │   ├── 387.html
│       │   │   ├── 388.html
│       │   │   ├── 389.html
│       │   │   ├── 39.html
│       │   │   ├── 390.html
│       │   │   ├── 391.html
│       │   │   ├── 392.html
│       │   │   ├── 393.html
│       │   │   ├── 394.html
│       │   │   ├── 395.html
│       │   │   ├── 396.html
│       │   │   ├── 397.html
│       │   │   ├── 398.html
│       │   │   ├── 399.html
│       │   │   ├── 4.html
│       │   │   ├── 40.html
│       │   │   ├── 400.html
│       │   │   ├── 401.html
│       │   │   ├── 402.html
│       │   │   ├── 403.html
│       │   │   ├── 404.html
│       │   │   ├── 405.html
│       │   │   ├── 406.html
│       │   │   ├── 407.html
│       │   │   ├── 408.html
│       │   │   ├── 409.html
│       │   │   ├── 41.html
│       │   │   ├── 410.html
│       │   │   ├── 411.html
│       │   │   ├── 412.html
│       │   │   ├── 413.html
│       │   │   ├── 414.html
│       │   │   ├── 415.html
│       │   │   ├── 416.html
│       │   │   ├── 417.html
│       │   │   ├── 418.html
│       │   │   ├── 419.html
│       │   │   ├── 42.html
│       │   │   ├── 420.html
│       │   │   ├── 421.html
│       │   │   ├── 422.html
│       │   │   ├── 423.html
│       │   │   ├── 424.html
│       │   │   ├── 425.html
│       │   │   ├── 426.html
│       │   │   ├── 427.html
│       │   │   ├── 428.html
│       │   │   ├── 429.html
│       │   │   ├── 43.html
│       │   │   ├── 430.html
│       │   │   ├── 431.html
│       │   │   ├── 432.html
│       │   │   ├── 433.html
│       │   │   ├── 434.html
│       │   │   ├── 435.html
│       │   │   ├── 436.html
│       │   │   ├── 437.html
│       │   │   ├── 438.html
│       │   │   ├── 439.html
│       │   │   ├── 44.html
│       │   │   ├── 440.html
│       │   │   ├── 441.html
│       │   │   ├── 442.html
│       │   │   ├── 443.html
│       │   │   ├── 444.html
│       │   │   ├── 445.html
│       │   │   ├── 446.html
│       │   │   ├── 447.html
│       │   │   ├── 448.html
│       │   │   ├── 449.html
│       │   │   ├── 45.html
│       │   │   ├── 450.html
│       │   │   ├── 451.html
│       │   │   ├── 452.html
│       │   │   ├── 453.html
│       │   │   ├── 454.html
│       │   │   ├── 455.html
│       │   │   ├── 456.html
│       │   │   ├── 457.html
│       │   │   ├── 458.html
│       │   │   ├── 459.html
│       │   │   ├── 46.html
│       │   │   ├── 460.html
│       │   │   ├── 461.html
│       │   │   ├── 462.html
│       │   │   ├── 463.html
│       │   │   ├── 464.html
│       │   │   ├── 465.html
│       │   │   ├── 466.html
│       │   │   ├── 467.html
│       │   │   ├── 468.html
│       │   │   ├── 469.html
│       │   │   ├── 47.html
│       │   │   ├── 470.html
│       │   │   ├── 471.html
│       │   │   ├── 472.html
│       │   │   ├── 473.html
│       │   │   ├── 474.html
│       │   │   ├── 475.html
│       │   │   ├── 476.html
│       │   │   ├── 477.html
│       │   │   ├── 478.html
│       │   │   ├── 479.html
│       │   │   ├── 48.html
│       │   │   ├── 480.html
│       │   │   ├── 481.html
│       │   │   ├── 482.html
│       │   │   ├── 483.html
│       │   │   ├── 484.html
│       │   │   ├── 485.html
│       │   │   ├── 486.html
│       │   │   ├── 487.html
│       │   │   ├── 488.html
│       │   │   ├── 489.html
│       │   │   ├── 49.html
│       │   │   ├── 490.html
│       │   │   ├── 491.html
│       │   │   ├── 492.html
│       │   │   ├── 493.html
│       │   │   ├── 494.html
│       │   │   ├── 495.html
│       │   │   ├── 496.html
│       │   │   ├── 497.html
│       │   │   ├── 498.html
│       │   │   ├── 499.html
│       │   │   ├── 5.html
│       │   │   ├── 50.html
│       │   │   ├── 500.html
│       │   │   ├── 51.html
│       │   │   ├── 52.html
│       │   │   ├── 53.html
│       │   │   ├── 54.html
│       │   │   ├── 55.html
│       │   │   ├── 56.html
│       │   │   ├── 57.html
│       │   │   ├── 58.html
│       │   │   ├── 59.html
│       │   │   ├── 6.html
│       │   │   ├── 60.html
│       │   │   ├── 61.html
│       │   │   ├── 62.html
│       │   │   ├── 63.html
│       │   │   ├── 64.html
│       │   │   ├── 65.html
│       │   │   ├── 66.html
│       │   │   ├── 67.html
│       │   │   ├── 68.html
│       │   │   ├── 69.html
│       │   │   ├── 7.html
│       │   │   ├── 70.html
│       │   │   ├── 71.html
│       │   │   ├── 72.html
│       │   │   ├── 73.html
│       │   │   ├── 74.html
│       │   │   ├── 75.html
│       │   │   ├── 76.html
│       │   │   ├── 77.html
│       │   │   ├── 78.html
│       │   │   ├── 79.html
│       │   │   ├── 8.html
│       │   │   ├── 80.html
│       │   │   ├── 81.html
│       │   │   ├── 82.html
│       │   │   ├── 83.html
│       │   │   ├── 84.html
│       │   │   ├── 85.html
│       │   │   ├── 86.html
│       │   │   ├── 87.html
│       │   │   ├── 88.html
│       │   │   ├── 89.html
│       │   │   ├── 9.html
│       │   │   ├── 90.html
│       │   │   ├── 91.html
│       │   │   ├── 92.html
│       │   │   ├── 93.html
│       │   │   ├── 94.html
│       │   │   ├── 95.html
│       │   │   ├── 96.html
│       │   │   ├── 97.html
│       │   │   ├── 98.html
│       │   │   └── 99.html
│       │   └── 3/
│       │       ├── 1.html
│       │       ├── 10.html
│       │       ├── 100.html
│       │       ├── 101.html
│       │       ├── 102.html
│       │       ├── 103.html
│       │       ├── 104.html
│       │       ├── 105.html
│       │       ├── 106.html
│       │       ├── 107.html
│       │       ├── 108.html
│       │       ├── 109.html
│       │       ├── 11.html
│       │       ├── 110.html
│       │       ├── 111.html
│       │       ├── 112.html
│       │       ├── 113.html
│       │       ├── 114.html
│       │       ├── 115.html
│       │       ├── 116.html
│       │       ├── 117.html
│       │       ├── 118.html
│       │       ├── 119.html
│       │       ├── 12.html
│       │       ├── 120.html
│       │       ├── 121.html
│       │       ├── 122.html
│       │       ├── 123.html
│       │       ├── 124.html
│       │       ├── 125.html
│       │       ├── 126.html
│       │       ├── 127.html
│       │       ├── 128.html
│       │       ├── 129.html
│       │       ├── 13.html
│       │       ├── 130.html
│       │       ├── 131.html
│       │       ├── 132.html
│       │       ├── 133.html
│       │       ├── 134.html
│       │       ├── 135.html
│       │       ├── 136.html
│       │       ├── 137.html
│       │       ├── 138.html
│       │       ├── 139.html
│       │       ├── 14.html
│       │       ├── 140.html
│       │       ├── 141.html
│       │       ├── 142.html
│       │       ├── 143.html
│       │       ├── 144.html
│       │       ├── 145.html
│       │       ├── 146.html
│       │       ├── 147.html
│       │       ├── 148.html
│       │       ├── 149.html
│       │       ├── 15.html
│       │       ├── 150.html
│       │       ├── 151.html
│       │       ├── 152.html
│       │       ├── 153.html
│       │       ├── 154.html
│       │       ├── 155.html
│       │       ├── 156.html
│       │       ├── 157.html
│       │       ├── 158.html
│       │       ├── 159.html
│       │       ├── 16.html
│       │       ├── 160.html
│       │       ├── 161.html
│       │       ├── 162.html
│       │       ├── 163.html
│       │       ├── 164.html
│       │       ├── 165.html
│       │       ├── 166.html
│       │       ├── 167.html
│       │       ├── 168.html
│       │       ├── 169.html
│       │       ├── 17.html
│       │       ├── 170.html
│       │       ├── 171.html
│       │       ├── 172.html
│       │       ├── 173.html
│       │       ├── 174.html
│       │       ├── 175.html
│       │       ├── 176.html
│       │       ├── 177.html
│       │       ├── 178.html
│       │       ├── 179.html
│       │       ├── 18.html
│       │       ├── 180.html
│       │       ├── 181.html
│       │       ├── 182.html
│       │       ├── 183.html
│       │       ├── 184.html
│       │       ├── 185.html
│       │       ├── 186.html
│       │       ├── 187.html
│       │       ├── 188.html
│       │       ├── 189.html
│       │       ├── 19.html
│       │       ├── 190.html
│       │       ├── 191.html
│       │       ├── 192.html
│       │       ├── 193.html
│       │       ├── 194.html
│       │       ├── 195.html
│       │       ├── 196.html
│       │       ├── 197.html
│       │       ├── 198.html
│       │       ├── 199.html
│       │       ├── 2.html
│       │       ├── 20.html
│       │       ├── 200.html
│       │       ├── 201.html
│       │       ├── 202.html
│       │       ├── 203.html
│       │       ├── 204.html
│       │       ├── 205.html
│       │       ├── 206.html
│       │       ├── 207.html
│       │       ├── 208.html
│       │       ├── 209.html
│       │       ├── 21.html
│       │       ├── 210.html
│       │       ├── 211.html
│       │       ├── 212.html
│       │       ├── 213.html
│       │       ├── 214.html
│       │       ├── 215.html
│       │       ├── 216.html
│       │       ├── 217.html
│       │       ├── 218.html
│       │       ├── 219.html
│       │       ├── 22.html
│       │       ├── 220.html
│       │       ├── 221.html
│       │       ├── 222.html
│       │       ├── 223.html
│       │       ├── 224.html
│       │       ├── 225.html
│       │       ├── 226.html
│       │       ├── 227.html
│       │       ├── 228.html
│       │       ├── 229.html
│       │       ├── 23.html
│       │       ├── 230.html
│       │       ├── 231.html
│       │       ├── 232.html
│       │       ├── 233.html
│       │       ├── 234.html
│       │       ├── 235.html
│       │       ├── 236.html
│       │       ├── 237.html
│       │       ├── 238.html
│       │       ├── 239.html
│       │       ├── 24.html
│       │       ├── 240.html
│       │       ├── 241.html
│       │       ├── 242.html
│       │       ├── 243.html
│       │       ├── 244.html
│       │       ├── 245.html
│       │       ├── 246.html
│       │       ├── 247.html
│       │       ├── 248.html
│       │       ├── 249.html
│       │       ├── 25.html
│       │       ├── 250.html
│       │       ├── 251.html
│       │       ├── 252.html
│       │       ├── 253.html
│       │       ├── 254.html
│       │       ├── 255.html
│       │       ├── 256.html
│       │       ├── 257.html
│       │       ├── 258.html
│       │       ├── 259.html
│       │       ├── 26.html
│       │       ├── 260.html
│       │       ├── 261.html
│       │       ├── 262.html
│       │       ├── 263.html
│       │       ├── 264.html
│       │       ├── 265.html
│       │       ├── 266.html
│       │       ├── 267.html
│       │       ├── 268.html
│       │       ├── 269.html
│       │       ├── 27.html
│       │       ├── 270.html
│       │       ├── 271.html
│       │       ├── 272.html
│       │       ├── 273.html
│       │       ├── 274.html
│       │       ├── 275.html
│       │       ├── 276.html
│       │       ├── 277.html
│       │       ├── 278.html
│       │       ├── 279.html
│       │       ├── 28.html
│       │       ├── 280.html
│       │       ├── 281.html
│       │       ├── 282.html
│       │       ├── 283.html
│       │       ├── 284.html
│       │       ├── 285.html
│       │       ├── 286.html
│       │       ├── 287.html
│       │       ├── 288.html
│       │       ├── 289.html
│       │       ├── 29.html
│       │       ├── 290.html
│       │       ├── 291.html
│       │       ├── 292.html
│       │       ├── 293.html
│       │       ├── 294.html
│       │       ├── 295.html
│       │       ├── 296.html
│       │       ├── 297.html
│       │       ├── 298.html
│       │       ├── 299.html
│       │       ├── 3.html
│       │       ├── 30.html
│       │       ├── 300.html
│       │       ├── 301.html
│       │       ├── 302.html
│       │       ├── 303.html
│       │       ├── 304.html
│       │       ├── 305.html
│       │       ├── 306.html
│       │       ├── 307.html
│       │       ├── 308.html
│       │       ├── 309.html
│       │       ├── 31.html
│       │       ├── 310.html
│       │       ├── 311.html
│       │       ├── 312.html
│       │       ├── 313.html
│       │       ├── 314.html
│       │       ├── 315.html
│       │       ├── 316.html
│       │       ├── 317.html
│       │       ├── 318.html
│       │       ├── 319.html
│       │       ├── 32.html
│       │       ├── 320.html
│       │       ├── 321.html
│       │       ├── 322.html
│       │       ├── 323.html
│       │       ├── 324.html
│       │       ├── 325.html
│       │       ├── 326.html
│       │       ├── 327.html
│       │       ├── 328.html
│       │       ├── 329.html
│       │       ├── 33.html
│       │       ├── 330.html
│       │       ├── 331.html
│       │       ├── 332.html
│       │       ├── 333.html
│       │       ├── 334.html
│       │       ├── 335.html
│       │       ├── 336.html
│       │       ├── 337.html
│       │       ├── 338.html
│       │       ├── 339.html
│       │       ├── 34.html
│       │       ├── 340.html
│       │       ├── 341.html
│       │       ├── 342.html
│       │       ├── 343.html
│       │       ├── 344.html
│       │       ├── 345.html
│       │       ├── 346.html
│       │       ├── 347.html
│       │       ├── 348.html
│       │       ├── 349.html
│       │       ├── 35.html
│       │       ├── 350.html
│       │       ├── 351.html
│       │       ├── 352.html
│       │       ├── 353.html
│       │       ├── 354.html
│       │       ├── 355.html
│       │       ├── 356.html
│       │       ├── 357.html
│       │       ├── 358.html
│       │       ├── 359.html
│       │       ├── 36.html
│       │       ├── 360.html
│       │       ├── 361.html
│       │       ├── 362.html
│       │       ├── 363.html
│       │       ├── 364.html
│       │       ├── 365.html
│       │       ├── 366.html
│       │       ├── 367.html
│       │       ├── 368.html
│       │       ├── 369.html
│       │       ├── 37.html
│       │       ├── 370.html
│       │       ├── 371.html
│       │       ├── 372.html
│       │       ├── 373.html
│       │       ├── 374.html
│       │       ├── 375.html
│       │       ├── 376.html
│       │       ├── 377.html
│       │       ├── 378.html
│       │       ├── 379.html
│       │       ├── 38.html
│       │       ├── 380.html
│       │       ├── 381.html
│       │       ├── 382.html
│       │       ├── 383.html
│       │       ├── 384.html
│       │       ├── 385.html
│       │       ├── 386.html
│       │       ├── 387.html
│       │       ├── 388.html
│       │       ├── 389.html
│       │       ├── 39.html
│       │       ├── 390.html
│       │       ├── 391.html
│       │       ├── 392.html
│       │       ├── 393.html
│       │       ├── 394.html
│       │       ├── 395.html
│       │       ├── 396.html
│       │       ├── 397.html
│       │       ├── 398.html
│       │       ├── 399.html
│       │       ├── 4.html
│       │       ├── 40.html
│       │       ├── 400.html
│       │       ├── 401.html
│       │       ├── 402.html
│       │       ├── 403.html
│       │       ├── 41.html
│       │       ├── 42.html
│       │       ├── 43.html
│       │       ├── 44.html
│       │       ├── 45.html
│       │       ├── 46.html
│       │       ├── 47.html
│       │       ├── 48.html
│       │       ├── 49.html
│       │       ├── 5.html
│       │       ├── 50.html
│       │       ├── 51.html
│       │       ├── 52.html
│       │       ├── 53.html
│       │       ├── 54.html
│       │       ├── 55.html
│       │       ├── 56.html
│       │       ├── 57.html
│       │       ├── 58.html
│       │       ├── 59.html
│       │       ├── 6.html
│       │       ├── 60.html
│       │       ├── 61.html
│       │       ├── 62.html
│       │       ├── 63.html
│       │       ├── 64.html
│       │       ├── 65.html
│       │       ├── 66.html
│       │       ├── 67.html
│       │       ├── 68.html
│       │       ├── 69.html
│       │       ├── 7.html
│       │       ├── 70.html
│       │       ├── 71.html
│       │       ├── 72.html
│       │       ├── 73.html
│       │       ├── 74.html
│       │       ├── 75.html
│       │       ├── 76.html
│       │       ├── 77.html
│       │       ├── 78.html
│       │       ├── 79.html
│       │       ├── 8.html
│       │       ├── 80.html
│       │       ├── 81.html
│       │       ├── 82.html
│       │       ├── 83.html
│       │       ├── 84.html
│       │       ├── 85.html
│       │       ├── 86.html
│       │       ├── 87.html
│       │       ├── 88.html
│       │       ├── 89.html
│       │       ├── 9.html
│       │       ├── 90.html
│       │       ├── 91.html
│       │       ├── 92.html
│       │       ├── 93.html
│       │       ├── 94.html
│       │       ├── 95.html
│       │       ├── 96.html
│       │       ├── 97.html
│       │       ├── 98.html
│       │       └── 99.html
│       ├── JS/
│       │   ├── Common.js
│       │   ├── ImmJSLib.js
│       │   └── TreeView.js
│       └── index.html
├── packages/
│   ├── Castle.Core.3.0.0.4001/
│   │   ├── ASL - Apache Software Foundation License.txt
│   │   ├── BreakingChanges.txt
│   │   ├── Castle.Core.3.0.0.4001.nupkg
│   │   ├── Changes.txt
│   │   ├── Committers.txt
│   │   ├── lib/
│   │   │   ├── net35/
│   │   │   │   └── Castle.Core.xml
│   │   │   ├── net40-client/
│   │   │   │   └── Castle.Core.xml
│   │   │   └── sl4/
│   │   │       └── Castle.Core.xml
│   │   └── readme.txt
│   ├── FakeItEasy.1.7.4507.61/
│   │   ├── FakeItEasy.1.7.4507.61.nupkg
│   │   └── lib/
│   │       ├── NET35/
│   │       │   └── FakeItEasy.xml
│   │       ├── NET40/
│   │       │   └── FakeItEasy.xml
│   │       ├── SL3/
│   │       │   └── FakeItEasy.XML
│   │       └── SL4/
│   │           └── FakeItEasy.xml
│   ├── Mono.Options.5.3.0.1/
│   │   ├── Mono.Options.5.3.0.1.nupkg
│   │   └── THIRD-PARTY-NOTICES.txt
│   ├── NJasmine.0.3.2.0/
│   │   ├── NJasmine.0.3.2.0.nupkg
│   │   ├── lib/
│   │   │   └── NJasmine.pdb
│   │   └── tools/
│   │       └── readme.txt
│   ├── NJasmine.NUnit.0.3.2.0/
│   │   ├── NJasmine.NUnit.0.3.2.0.nupkg
│   │   ├── lib/
│   │   │   ├── NJasmine.NUnit.pdb
│   │   │   └── NJasmine.pdb
│   │   └── tools/
│   │       ├── install.ps1
│   │       └── readme.txt
│   ├── NUnit.2.6.1/
│   │   ├── NUnit.2.6.1.nupkg
│   │   ├── lib/
│   │   │   └── nunit.framework.xml
│   │   └── license.txt
│   ├── NUnit.Runners.2.6.1/
│   │   ├── NUnit.Runners.2.6.1.nupkg
│   │   ├── license.txt
│   │   └── tools/
│   │       ├── addins/
│   │       │   ├── NJasmine.NUnit.pdb
│   │       │   └── NJasmine.pdb
│   │       ├── agent.conf
│   │       ├── agent.log.conf
│   │       ├── launcher.log.conf
│   │       ├── nunit-agent-x86.exe.config
│   │       ├── nunit-agent.exe.config
│   │       ├── nunit-console-x86.exe.config
│   │       ├── nunit-console.exe.config
│   │       ├── nunit-x86.exe.config
│   │       ├── nunit.exe.config
│   │       ├── pnunit-agent.exe.config
│   │       ├── pnunit-launcher.exe.config
│   │       ├── runpnunit.bat
│   │       └── test.conf
│   ├── Newtonsoft.Json.4.5.11/
│   │   ├── Newtonsoft.Json.4.5.11.nupkg
│   │   └── lib/
│   │       ├── net20/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── net35/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── net40/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── portable-net40+sl4+wp7+win8/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── sl3-wp/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── sl4/
│   │       │   └── Newtonsoft.Json.xml
│   │       ├── sl4-windowsphone71/
│   │       │   └── Newtonsoft.Json.xml
│   │       └── winrt45/
│   │           └── Newtonsoft.Json.xml
│   ├── PowerAssert.1.0.2/
│   │   └── PowerAssert.1.0.2.nupkg
│   ├── psake.4.6.0/
│   │   ├── psake.4.6.0.nupkg
│   │   └── tools/
│   │       ├── README.markdown
│   │       ├── chocolateyInstall.ps1
│   │       ├── en-US/
│   │       │   └── psake.psm1-help.xml
│   │       ├── examples/
│   │       │   ├── checkvariables.ps1
│   │       │   ├── continueonerror.ps1
│   │       │   ├── default.ps1
│   │       │   ├── formattaskname_scriptblock.ps1
│   │       │   ├── formattaskname_string.ps1
│   │       │   ├── msbuild40.ps1
│   │       │   ├── nested/
│   │       │   │   ├── nested1.ps1
│   │       │   │   └── nested2.ps1
│   │       │   ├── nested.ps1
│   │       │   ├── paralleltasks.ps1
│   │       │   ├── parameters.ps1
│   │       │   ├── passingParametersString/
│   │       │   │   ├── build.Release.Version.bat
│   │       │   │   └── parameters.ps1
│   │       │   ├── preandpostaction.ps1
│   │       │   ├── preandpostcondition.ps1
│   │       │   ├── properties.ps1
│   │       │   ├── requiredvariables.ps1
│   │       │   └── tasksetupandteardown.ps1
│   │       ├── init.ps1
│   │       ├── license.txt
│   │       ├── psake-config.ps1
│   │       ├── psake.cmd
│   │       ├── psake.ps1
│   │       ├── psake.psd1
│   │       └── psake.psm1
│   └── repositories.config
├── psake.ps1
├── psake_ext.ps1
├── readme.md
└── tools/
    └── PSUpdateXml.psm1
Download .txt
SYMBOL INDEX (215 symbols across 41 files)

FILE: ManyConsole.Tests/Can_consume_variable_number_of_arguments.cs
  class Can_consume_variable_number_of_arguments (line 7) | public class Can_consume_variable_number_of_arguments
    method Expecting2CalledWith0 (line 9) | [Test]
    method Expecting2CalledWith1 (line 16) | [Test]
    method Expecting2CalledWith2 (line 23) | [Test]
    method Expecting2CalledWith5 (line 30) | [Test]
    method Expecting2To5CalledWith0 (line 37) | [Test]
    method Expecting2To5CalledWith1 (line 44) | [Test]
    method Expecting2To5CalledWith2 (line 51) | [Test]
    method Expecting2To5CalledWith4 (line 58) | [Test]
    method Expecting2To5CalledWith5 (line 65) | [Test]
    method Expecting2To5CalledWith6 (line 72) | [Test]
    class CommandWithAtLeast2Parameters (line 80) | public class CommandWithAtLeast2Parameters : ConsoleCommand
      method CommandWithAtLeast2Parameters (line 82) | public CommandWithAtLeast2Parameters()
      method Run (line 88) | public override int Run(string[] remainingArguments)
    class CommandWith2To5Parameters (line 94) | public class CommandWith2To5Parameters : ConsoleCommand
      method CommandWith2To5Parameters (line 96) | public CommandWith2To5Parameters()
      method Run (line 102) | public override int Run(string[] remainingArguments)
    method run_command_with_parameters (line 108) | private string run_command_with_parameters(string[] parameters)

FILE: ManyConsole.Tests/Can_define_commands_with_aliases.cs
  class Can_define_commands_with_aliases (line 7) | public class Can_define_commands_with_aliases
    method CommandWithTwoAliasesDirect (line 9) | [Test]
    method CommandWithTwoAliasesFirst (line 16) | [Test]
    method CommandWithTwoAliasesSecond (line 23) | [Test]
    class CommandWith2Aliases (line 31) | public class CommandWith2Aliases: ConsoleCommand
      method CommandWith2Aliases (line 33) | public CommandWith2Aliases()
      method Run (line 40) | public override int Run(string[] remainingArguments)
    method run_command_with_parameters (line 46) | private string run_command_with_parameters(string[] parameters)

FILE: ManyConsole.Tests/Can_have_required_parameters.cs
  class Can_have_required_parameters (line 6) | public class Can_have_required_parameters
    method CommandRunWithoutParameters (line 8) | [Test]
    method CommandRunWithIntegerParameters (line 31) | [Test]
    method when_the_command_is_run_without_the_parameter_then_the_console_gives_error_output (line 54) | void when_the_command_is_run_without_the_parameter_then_the_console_gi...

FILE: ManyConsole.Tests/Can_modify_command_behavior_after_parsing_and_before_running.cs
  class Can_modify_command_behavior_after_parsing_and_before_running (line 10) | public class Can_modify_command_behavior_after_parsing_and_before_running
    class OverridingCommand (line 12) | public class OverridingCommand : ConsoleCommand
      method OverridingCommand (line 14) | public OverridingCommand()
      method OverrideAfterHandlingArgumentsBeforeRun (line 22) | public override int? OverrideAfterHandlingArgumentsBeforeRun(string[...
      method Run (line 27) | public override int Run(string[] remainingArguments)
    method ReturnCodeAndHalt (line 33) | [Test]

FILE: ManyConsole.Tests/Can_overwrite_options_property.cs
  class Can_overwrite_options_property (line 9) | public class Can_overwrite_options_property
    class OverwriteCommand (line 11) | public class OverwriteCommand : ConsoleCommand
      method OverwriteCommand (line 17) | public OverwriteCommand()
      method Run (line 28) | public override int Run(string[] remainingArguments)
    method DoNotLooseOtherArgumentsWhenPropertyOptionsAreOverwritten (line 34) | [Test]

FILE: ManyConsole.Tests/Can_verify_number_of_arguments_passed_to_command.cs
  class Can_verify_number_of_arguments_passed_to_command (line 7) | public class Can_verify_number_of_arguments_passed_to_command
    method Expecting5CalledWith0 (line 9) | [Test]
    method Expecting5CalledWith8 (line 16) | [Test]
    method Expecting5CalledWith5 (line 23) | [Test]
    class CommandWith5Parameters (line 31) | public class CommandWith5Parameters : ConsoleCommand
      method CommandWith5Parameters (line 33) | public CommandWith5Parameters()
      method Run (line 39) | public override int Run(string[] remainingArguments)
    method run_command_with_parameters (line 45) | private string run_command_with_parameters(string[] parameters)

FILE: ManyConsole.Tests/ConsoleModeCommandSpecs/StatusEchoCommand.cs
  class StatusEchoCommand (line 5) | public class StatusEchoCommand : ConsoleCommand
    method StatusEchoCommand (line 9) | public StatusEchoCommand()
    method Run (line 17) | public override int Run(string[] remainingArguments)

FILE: ManyConsole.Tests/Console_interface_is_simplified_when_there_is_only_one_command.cs
  class Console_interface_is_simplified_when_there_is_only_one_command (line 6) | public class Console_interface_is_simplified_when_there_is_only_one_command
    class ExampleCommand (line 10) | public class ExampleCommand : ConsoleCommand
      method ExampleCommand (line 12) | public ExampleCommand()
      method Run (line 19) | public override int Run(string[] remainingArguments)
    method NoParametersSpecified (line 27) | [Test]
    method OnlyCommandIsSpecified (line 39) | [Test]
    method OnlyParameterIsNotCommand (line 51) | [Test]
    method CommandAndParameterSpecified (line 63) | [Test]
    method then_the_command_runs_without_tracing_parameter_information (line 75) | private void then_the_command_runs_without_tracing_parameter_informati...

FILE: ManyConsole.Tests/Multiple_dispatch_calls_dont_interfere_with_each_other.cs
  class Multiple_dispatch_calls_dont_interfere_with_each_other (line 7) | public class Multiple_dispatch_calls_dont_interfere_with_each_other
    method RepeatedlyDispatchingCommand (line 9) | [Test]
    class SomeProgram (line 28) | public class SomeProgram
      method GetCommands (line 30) | public static CoordinateCommand[] GetCommands(StringWriter trace)
    class CoordinateCommand (line 39) | public class CoordinateCommand : ConsoleCommand
      method CoordinateCommand (line 43) | public CoordinateCommand(TextWriter recorder)
      method Run (line 58) | public override int Run(string[] remainingArguments)

FILE: ManyConsole.Tests/MyStringAssert.cs
  class MyStringAssert (line 6) | static class MyStringAssert
    method ContainsInOrder (line 8) | public static void ContainsInOrder(string actual, params string[] args)

FILE: ManyConsole.Tests/Show_useful_error_information.cs
  class Show_useful_error_information (line 7) | public class Show_useful_error_information
    method UserTypesInputRejectedByNDeskOptions (line 11) | [Test]
    class SomeCommandWithAParameter (line 37) | class SomeCommandWithAParameter : ConsoleCommand
      method SomeCommandWithAParameter (line 39) | public SomeCommandWithAParameter()
      method Run (line 45) | public override int Run(string[] remainingArguments)
    class SomeCommandThrowingAnException (line 51) | class SomeCommandThrowingAnException : ConsoleCommand
      method SomeCommandThrowingAnException (line 53) | public SomeCommandThrowingAnException()
      method Run (line 58) | public override int Run(string[] remainingArguments)

FILE: ManyConsole.Tests/TestCommand.cs
  class TestCommand (line 8) | public class TestCommand : ConsoleCommand
    method Run (line 12) | public override int Run(string[] remainingArguments)

FILE: ManyConsole.Tests/abstract_commands_arent_loaded.cs
  class abstract_commands_arent_loaded (line 6) | public class abstract_commands_arent_loaded
    class AbstractCommand (line 8) | public abstract class AbstractCommand : ConsoleCommand
    class AnotherAbstractCommand (line 12) | public abstract class AnotherAbstractCommand : AbstractCommand
      method AnotherAbstractCommand (line 14) | public AnotherAbstractCommand() {}
    class NonabstractCommand (line 17) | public class NonabstractCommand : AnotherAbstractCommand
      method NonabstractCommand (line 19) | public NonabstractCommand()
      method Run (line 24) | public override int Run(string[] remainingArguments)
    method AbstractCommandArentLoaded (line 30) | [Test]

FILE: ManyConsole.Tests/lets_user_browse_command_help.cs
  class lets_user_browse_command_help (line 9) | public class lets_user_browse_command_help
    method TestCommandDescriptions (line 11) | [Test]
    method WhenTheUserDoesNotSpecifyACommandThenShowAvailableCommands (line 32) | private void WhenTheUserDoesNotSpecifyACommandThenShowAvailableCommand...
    method ShouldShowHelpWhenRequested (line 48) | private void ShouldShowHelpWhenRequested(List<ConsoleCommand> commands...

FILE: ManyConsole.Tests/show_useful_command_summary.cs
  class show_useful_command_summary (line 8) | public class show_useful_command_summary
    class SomeCommand (line 10) | class SomeCommand : ConsoleCommand
      method SomeCommand (line 12) | public SomeCommand()
      method Run (line 23) | public override int Run(string[] remainingArguments)
    method RunSimpleCommand (line 29) | [Test]

FILE: ManyConsole/ConsoleCommand.cs
  class ConsoleCommand (line 11) | public abstract class ConsoleCommand : ConsoleUtil
    method ConsoleCommand (line 13) | public ConsoleCommand()
    method IsCommand (line 53) | public ConsoleCommand IsCommand(string command, string oneLineDescript...
    method HasAlias (line 59) | public ConsoleCommand HasAlias(string alias)
    method HasLongDescription (line 72) | public ConsoleCommand HasLongDescription(string longDescription)
    method HasAdditionalArguments (line 78) | public ConsoleCommand HasAdditionalArguments(int? count = 0, string he...
    method HasAdditionalArgumentsBetween (line 84) | public ConsoleCommand HasAdditionalArgumentsBetween(int? min, int? max...
    method AllowsAnyAdditionalArguments (line 92) | public ConsoleCommand AllowsAnyAdditionalArguments(string helpText = "")
    method SkipsCommandSummaryBeforeRunning (line 98) | public ConsoleCommand SkipsCommandSummaryBeforeRunning()
    method SkipsPropertyInCommandSummary (line 104) | public ConsoleCommand SkipsPropertyInCommandSummary(string propertyName)
    method HasOption (line 110) | public ConsoleCommand HasOption(string prototype, string description, ...
    method HasRequiredOption (line 117) | public ConsoleCommand HasRequiredOption(string prototype, string descr...
    method HasOption (line 124) | public ConsoleCommand HasOption<T>(string prototype, string descriptio...
    method HasRequiredOption (line 130) | public ConsoleCommand HasRequiredOption<T>(string prototype, string de...
    method HasOption (line 151) | public ConsoleCommand HasOption(string prototype, string description, ...
    method HasOption (line 157) | public ConsoleCommand HasOption<TKey, TValue>(string prototype, string...
    method CheckRequiredArguments (line 163) | public virtual void CheckRequiredArguments()
    method OverrideAfterHandlingArgumentsBeforeRun (line 174) | public virtual int? OverrideAfterHandlingArgumentsBeforeRun(string[] r...
    method Run (line 179) | public abstract int Run(string[] remainingArguments);
    method GetActualOptions (line 181) | public OptionSet GetActualOptions()

FILE: ManyConsole/ConsoleCommandDispatcher.cs
  class ConsoleCommandDispatcher (line 11) | public class ConsoleCommandDispatcher
    method DispatchCommand (line 13) | public static int DispatchCommand(ConsoleCommand command, string[] arg...
    method DispatchCommand (line 18) | public static int DispatchCommand(IEnumerable<ConsoleCommand> commands...
    method DealWithException (line 94) | private static int DealWithException(Exception e, TextWriter console, ...
    method GetMatchingCommand (line 110) | private static ConsoleCommand GetMatchingCommand(IEnumerable<ConsoleCo...
    method CommandMatchesArgument (line 115) | private static bool CommandMatchesArgument(ConsoleCommand command, str...
    method ValidateConsoleCommand (line 137) | private static void ValidateConsoleCommand(ConsoleCommand command)
    method CheckRemainingArguments (line 147) | private static void CheckRemainingArguments(List<string> remainingArgu...
    method FindCommandsInSameAssemblyAs (line 153) | public static IEnumerable<ConsoleCommand> FindCommandsInSameAssemblyAs...
    method FindCommandsInAllLoadedAssemblies (line 161) | public static IEnumerable<ConsoleCommand> FindCommandsInAllLoadedAssem...
    method FindCommandsInAssembly (line 166) | public static IEnumerable<ConsoleCommand> FindCommandsInAssembly(Assem...

FILE: ManyConsole/ConsoleHelpAsException.cs
  class ConsoleHelpAsException (line 9) | public class ConsoleHelpAsException : Exception
    method ConsoleHelpAsException (line 11) | public ConsoleHelpAsException(string message) : base(message)

FILE: ManyConsole/Internal/ConsoleHelp.cs
  class ConsoleHelp (line 11) | public class ConsoleHelp
    method ShowSummaryOfCommands (line 13) | public static void ShowSummaryOfCommands(IEnumerable<ConsoleCommand> c...
    method ShowCommandHelp (line 34) | public static void ShowCommandHelp(ConsoleCommand selectedCommand, Tex...
    method ShowParsedCommand (line 78) | public static void ShowParsedCommand(ConsoleCommand consoleCommand, Te...
    method MakeObjectReadable (line 120) | static string MakeObjectReadable(object value)

FILE: ManyConsole/Internal/ConsoleRedirectionDetection.cs
  type IConsoleRedirectionDetection (line 7) | public interface IConsoleRedirectionDetection
    method IsOutputRedirected (line 9) | bool IsOutputRedirected();
    method IsInputRedirected (line 10) | bool IsInputRedirected();
    method IsErrorRedirected (line 11) | bool IsErrorRedirected();
  class ConsoleRedirectionDetection (line 14) | public class ConsoleRedirectionDetection : IConsoleRedirectionDetection
    method IsOutputRedirected (line 16) | public bool IsOutputRedirected()
    method IsInputRedirected (line 20) | public bool IsInputRedirected()
    method IsErrorRedirected (line 24) | public bool IsErrorRedirected()

FILE: ManyConsole/Internal/ConsoleUtil.cs
  class ConsoleUtil (line 5) | public abstract class ConsoleUtil
    method VerifyNumberOfArguments (line 7) | public static void VerifyNumberOfArguments(string[] args, int? expecte...

FILE: ManyConsole/Internal/RequiredOptionRecord.cs
  class RequiredOptionRecord (line 8) | public class RequiredOptionRecord

FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/ConsoleModeCommandSpecification.cs
  class ConsoleModeCommandSpecification (line 8) | public abstract class ConsoleModeCommandSpecification
    method RunConsoleModeCommand (line 10) | public Func<int> RunConsoleModeCommand(string[] lines, bool inputIsFro...

FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_fail_strictly_on_error_when_running_noninteractive.cs
  class Should_fail_strictly_on_error_when_running_noninteractive (line 5) | public class Should_fail_strictly_on_error_when_running_noninteractive :...
    method ConsoleInputFromUserSuccess (line 7) | [Test]
    method ConsoleInputFromUserFail (line 26) | [Test]
    method ConsoleInputNotFromUserSuccess (line 43) | [Test]

FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_give_user_prompt_in_interactive_mode.cs
  class Should_give_user_prompt_in_interactive_mode (line 6) | public class Should_give_user_prompt_in_interactive_mode : ConsoleModeCo...
    method ConsoleModeCommandIsRunningForTheUser (line 8) | [Test]
    method ConsoleModeCommandIsNotRunningForTheUser (line 25) | [Test]

FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_interpret_quotes_properly.cs
  class Should_interpret_quotes_properly (line 6) | public class Should_interpret_quotes_properly : ConsoleModeCommandSpecif...
    class AccumulateStringsCommand (line 8) | public class AccumulateStringsCommand : ConsoleCommand
      method AccumulateStringsCommand (line 13) | public AccumulateStringsCommand()
      method Run (line 20) | public override int Run(string[] remainingArguments)
    method CommandRunWithQuotedInput (line 27) | [Test]

FILE: ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/StatusEchoCommand.cs
  class StatusEchoCommand (line 5) | public class StatusEchoCommand : ConsoleCommand
    method StatusEchoCommand (line 9) | public StatusEchoCommand()
    method Run (line 17) | public override int Run(string[] remainingArguments)

FILE: ManyConsoleModeCommand/ConsoleModeCommand.cs
  class ConsoleModeCommand (line 10) | public class ConsoleModeCommand : ConsoleCommand
    method ConsoleModeCommand (line 19) | public ConsoleModeCommand(
    method ConsoleModeCommand (line 28) | [Obsolete("Its preferred to override methods on ConsoleModeCommand and...
    method WritePromptForCommands (line 56) | public virtual void WritePromptForCommands()
    method GetNextCommands (line 66) | public virtual IEnumerable<ConsoleCommand> GetNextCommands()
    method Run (line 71) | public override int Run(string[] remainingArguments)
    method SetConsoleRedirectionDetection (line 121) | public void SetConsoleRedirectionDetection(IConsoleRedirectionDetectio...

FILE: ManyConsoleModeCommand/Internal/CommandLineParser.cs
  class CommandLineParser (line 6) | public static class CommandLineParser
    method Parse (line 15) | public static string[] Parse(string commandLine)
    method CommandLineToArgvW (line 39) | [DllImport("shell32.dll", SetLastError = true)]

FILE: SampleConsole/DumpEmlFilesCommand.cs
  class DumpEmlFilesCommand (line 10) | public class DumpEmlFilesCommand : ConsoleCommand
    method DumpEmlFilesCommand (line 12) | public DumpEmlFilesCommand()
    method Run (line 26) | public override int Run(string[] remainingArguments)
    method PrintEmlDirectory (line 46) | private void PrintEmlDirectory(string directory)
    method PrintEmlFile (line 63) | private void PrintEmlFile(string filepath)

FILE: SampleConsole/EchoStringsCommand.cs
  class EchoStringsCommand (line 9) | public class EchoStringsCommand : ConsoleCommand
    method EchoStringsCommand (line 13) | public EchoStringsCommand()
    method Run (line 25) | public override int Run(string[] remainingArguments)

FILE: SampleConsole/ExampleCommand.cs
  class ExampleCommand (line 11) | public class ExampleCommand : ConsoleCommand
    method ExampleCommand (line 37) | public ExampleCommand()
    method Run (line 65) | public override int Run(string[] remainingArguments)

FILE: SampleConsole/GetTimeCommand.cs
  class GetTimeCommand (line 12) | public class GetTimeCommand : ConsoleCommand
    method GetTimeCommand (line 14) | public GetTimeCommand()
    method Run (line 19) | public override int Run(string[] remainingArguments)

FILE: SampleConsole/MattsCommand.cs
  class MattsCommand (line 9) | public class MattsCommand : ConsoleCommand
    method MattsCommand (line 13) | public MattsCommand()
    method Run (line 19) | public override int Run(string[] remainingArguments)

FILE: SampleConsole/Program.cs
  class Program (line 8) | class Program
    method Main (line 10) | static int Main(string[] args)
    method GetCommands (line 19) | public static IEnumerable<ConsoleCommand> GetCommands()

FILE: SampleConsole/SimpleConsoleModeCommand.cs
  class SimpleConsoleModeCommand (line 9) | public class SimpleConsoleModeCommand : ConsoleModeCommand
    method SimpleConsoleModeCommand (line 11) | public SimpleConsoleModeCommand()
    method GetNextCommands (line 16) | public override IEnumerable<ConsoleCommand> GetNextCommands()

FILE: SampleConsole/StatefulConsoleModeCommand.cs
  class StatefulConsoleModeCommand (line 9) | public class StatefulConsoleModeCommand : ConsoleModeCommand
    method StatefulConsoleModeCommand (line 13) | public StatefulConsoleModeCommand()
    method WritePromptForCommands (line 18) | public override void WritePromptForCommands()
    method GetNextCommands (line 25) | public override IEnumerable<ConsoleCommand> GetNextCommands()

FILE: SampleConsole/ThrowException.cs
  class ThrowException (line 9) | public class ThrowException : ConsoleCommand
    method ThrowException (line 11) | public ThrowException()
    method Run (line 19) | public override int Run(string[] remainingArguments)

FILE: lib/Sasa-v0.9.3-docs/JS/Common.js
  function SetSectionVisibility (line 39) | function SetSectionVisibility(sectionIndex, value)
  function ToggleSectionVisibility (line 67) | function ToggleSectionVisibility(sectionIndex)
  function ToggleAllSectionsVisibility (line 116) | function ToggleAllSectionsVisibility()
  function SetExpandCollapseAllToCollapseAll (line 153) | function SetExpandCollapseAllToCollapseAll()
  function SetExpandCollapseAllToExpandAll (line 169) | function SetExpandCollapseAllToExpandAll()
  function ReplaceFileName (line 185) | function ReplaceFileName(filePath, fileName)
  function ToggleLeftFrame (line 206) | function ToggleLeftFrame()

FILE: lib/Sasa-v0.9.3-docs/JS/ImmJSLib.js
  function MouseEventArgs (line 27) | function MouseEventArgs(e)
  function GetStyleValue (line 49) | function GetStyleValue(obj, propertyName)

FILE: lib/Sasa-v0.9.3-docs/JS/TreeView.js
  function TV_Node_Clicked (line 23) | function TV_Node_Clicked(subtreePath)
  function TV_ToggleSubtreeVisibility (line 44) | function TV_ToggleSubtreeVisibility(subtreeDiv, iconImg, value)
  function TV_NodeLink_Clicked (line 62) | function TV_NodeLink_Clicked(aElement, subtreePath)
Copy disabled (too large) Download .json
Condensed preview — 1565 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,775K chars).
[
  {
    "path": ".gitignore",
    "chars": 207,
    "preview": "bin/\r\nobj/\r\nbuild/\r\n_ReSharper.*\r\n.vscode\r\n*.ncb\r\n*.aps\r\n*.suo\r\n*.sln.cache\r\n*.dotCover\r\n*.user\r\n.vs\r\nManyConsole.Tests/"
  },
  {
    "path": ".nuget/packages.config",
    "chars": 108,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"psake\" version=\"4.2.0.1\" />\r\n</packages>"
  },
  {
    "path": "LICENSE.txt",
    "chars": 1062,
    "preview": "Copyright (c) 2010 Frank Schwieterman\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of t"
  },
  {
    "path": "ManyConsole/ConsoleCommand.cs",
    "chars": 6647,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Xml.Linq;\r\nusing M"
  },
  {
    "path": "ManyConsole/ConsoleCommandDispatcher.cs",
    "chars": 7326,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.IO;\r\nusing System.Linq;\r\nu"
  },
  {
    "path": "ManyConsole/ConsoleHelpAsException.cs",
    "chars": 300,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace"
  },
  {
    "path": "ManyConsole/Internal/ConsoleHelp.cs",
    "chars": 5153,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusin"
  },
  {
    "path": "ManyConsole/Internal/ConsoleRedirectionDetection.cs",
    "chars": 785,
    "preview": "namespace ManyConsole.Internal\r\n{\r\n    using System;\r\n\r\n    // implementation from http://stackoverflow.com/questions/3"
  },
  {
    "path": "ManyConsole/Internal/ConsoleUtil.cs",
    "chars": 810,
    "preview": "using System.Linq;\r\n\r\nnamespace ManyConsole.Internal\r\n{\r\n    public abstract class ConsoleUtil\r\n    {\r\n        public s"
  },
  {
    "path": "ManyConsole/Internal/RequiredOptionRecord.cs",
    "chars": 247,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace ManyConsole.Inter"
  },
  {
    "path": "ManyConsole/ManyConsole.csproj",
    "chars": 848,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n  <PropertyGroup>\r\n    <TargetFramework>netstandard2.0</TargetFramework>\r\n    <Gen"
  },
  {
    "path": "ManyConsole.Tests/Can_consume_variable_number_of_arguments.cs",
    "chars": 4734,
    "preview": "using NUnit.Framework;\nusing System.IO;\nusing System.Text;\n\nnamespace ManyConsole.Tests\n{\n    public class Can_consume_"
  },
  {
    "path": "ManyConsole.Tests/Can_define_commands_with_aliases.cs",
    "chars": 1886,
    "preview": "using NUnit.Framework;\nusing System.IO;\nusing System.Text;\n\nnamespace ManyConsole.Tests\n{\n    public class Can_define_c"
  },
  {
    "path": "ManyConsole.Tests/Can_have_required_parameters.cs",
    "chars": 2756,
    "preview": "using System.IO;\r\nusing NUnit.Framework;\r\n\r\nnamespace ManyConsole.Tests\r\n{\r\n    public class Can_have_required_paramete"
  },
  {
    "path": "ManyConsole.Tests/Can_modify_command_behavior_after_parsing_and_before_running.cs",
    "chars": 1320,
    "preview": "using NUnit.Framework;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing S"
  },
  {
    "path": "ManyConsole.Tests/Can_overwrite_options_property.cs",
    "chars": 1614,
    "preview": "using System;\r\nusing System.IO;\r\nusing System.Text;\r\nusing Mono.Options;\r\nusing NUnit.Framework;\r\n\r\nnamespace ManyConso"
  },
  {
    "path": "ManyConsole.Tests/Can_verify_number_of_arguments_passed_to_command.cs",
    "chars": 2057,
    "preview": "using NUnit.Framework;\r\nusing System.IO;\r\nusing System.Text;\r\n\r\nnamespace ManyConsole.Tests\r\n{\r\n    public class Can_ve"
  },
  {
    "path": "ManyConsole.Tests/ConsoleModeCommandSpecs/StatusEchoCommand.cs",
    "chars": 602,
    "preview": "using System;\r\n\r\nnamespace ManyConsole.Tests.ConsoleModeCommandSpecs\r\n{\r\n    public class StatusEchoCommand : ConsoleCo"
  },
  {
    "path": "ManyConsole.Tests/Console_interface_is_simplified_when_there_is_only_one_command.cs",
    "chars": 2880,
    "preview": "using NUnit.Framework;\r\nusing System.IO;\r\n\r\nnamespace ManyConsole.Tests\r\n{\r\n    public class Console_interface_is_simpl"
  },
  {
    "path": "ManyConsole.Tests/ManyConsole.Tests.csproj",
    "chars": 1388,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n  <PropertyGroup>\r\n    <TargetFramework>netcoreapp2.2</TargetFramework>\r\n\r\n    <Is"
  },
  {
    "path": "ManyConsole.Tests/Multiple_dispatch_calls_dont_interfere_with_each_other.cs",
    "chars": 2552,
    "preview": "using System.IO;\r\nusing Mono.Options;\r\nusing NUnit.Framework;\r\n\r\nnamespace ManyConsole.Tests\r\n{\r\n    public class Multi"
  },
  {
    "path": "ManyConsole.Tests/MyStringAssert.cs",
    "chars": 537,
    "preview": "\nusing NUnit.Framework;\n\nnamespace ManyConsole.Tests\n{\n    static class MyStringAssert\n    {\n        public static void"
  },
  {
    "path": "ManyConsole.Tests/Show_useful_error_information.cs",
    "chars": 2190,
    "preview": "using System.ComponentModel;\r\nusing System.IO;\r\nusing NUnit.Framework;\r\n\r\nnamespace ManyConsole.Tests\r\n{\r\n    public cl"
  },
  {
    "path": "ManyConsole.Tests/TestCommand.cs",
    "chars": 364,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace ManyConsole.Tests"
  },
  {
    "path": "ManyConsole.Tests/abstract_commands_arent_loaded.cs",
    "chars": 1325,
    "preview": "using NUnit.Framework;\r\nusing System.Linq;\r\n\r\nnamespace ManyConsole.Tests\r\n{\r\n    public class abstract_commands_arent_"
  },
  {
    "path": "ManyConsole.Tests/lets_user_browse_command_help.cs",
    "chars": 3671,
    "preview": "using NUnit.Framework;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\n\r\nnamespace ManyConsol"
  },
  {
    "path": "ManyConsole.Tests/show_useful_command_summary.cs",
    "chars": 1472,
    "preview": "using NUnit.Framework;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Text;\r\n\r\nnamespace ManyConsol"
  },
  {
    "path": "ManyConsole.nuspec",
    "chars": 1630,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>ManyConsole</id>\n    <version>$version$</version>\n    <authors>Fran"
  },
  {
    "path": "ManyConsole.sln",
    "chars": 7900,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.2"
  },
  {
    "path": "ManyConsoleModeCommand/ConsoleModeCommand.cs",
    "chars": 4298,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing ManyConsole.Internal;\nusing M"
  },
  {
    "path": "ManyConsoleModeCommand/Internal/CommandLineParser.cs",
    "chars": 1526,
    "preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace ManyConsole.Internal\n{\n    public static class CommandLi"
  },
  {
    "path": "ManyConsoleModeCommand/ManyConsoleModeCommand.csproj",
    "chars": 920,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net461</TargetFramework>\n    <GenerateAssembl"
  },
  {
    "path": "ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/ConsoleModeCommandSpecification.cs",
    "chars": 1535,
    "preview": "using System;\nusing System.IO;\nusing FakeItEasy;\nusing ManyConsole.Internal;\n\nnamespace ManyConsole.Tests.ConsoleModeCom"
  },
  {
    "path": "ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_fail_strictly_on_error_when_running_noninteractive.cs",
    "chars": 1755,
    "preview": "using NUnit.Framework;\n\nnamespace ManyConsole.Tests.ConsoleModeCommandSpecs\n{\n    public class Should_fail_strictly_on_"
  },
  {
    "path": "ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_give_user_prompt_in_interactive_mode.cs",
    "chars": 1369,
    "preview": "using NUnit.Framework;\nusing System.IO;\n\nnamespace ManyConsole.Tests.ConsoleModeCommandSpecs\n{\n    public class Should_"
  },
  {
    "path": "ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/Should_interpret_quotes_properly.cs",
    "chars": 1471,
    "preview": "using System.Collections.Generic;\nusing NUnit.Framework;\n\nnamespace ManyConsole.Tests.ConsoleModeCommandSpecs\n{\n    pub"
  },
  {
    "path": "ManyConsoleModeCommand.Test/ConsoleModeCommandSpecs/StatusEchoCommand.cs",
    "chars": 580,
    "preview": "using System;\n\nnamespace ManyConsole.Tests.ConsoleModeCommandSpecs\n{\n    public class StatusEchoCommand : ConsoleComman"
  },
  {
    "path": "ManyConsoleModeCommand.Test/ManyConsoleModeCommand.Test.csproj",
    "chars": 1312,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net461</TargetFramework>\n\n    <IsPackable>fals"
  },
  {
    "path": "RunTestsInGUI.ps1",
    "chars": 98,
    "preview": ".\\packages\\NUnit.Runners.2.6.1\\tools\\nunit.exe .\\ManyConsole.Tests\\bin\\Debug\\ManyConsole.Tests.dll"
  },
  {
    "path": "SampleConsole/DumpEmlFilesCommand.cs",
    "chars": 2669,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing ManyC"
  },
  {
    "path": "SampleConsole/EchoStringsCommand.cs",
    "chars": 1176,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing ManyConsole;\r\n\r\nnamespa"
  },
  {
    "path": "SampleConsole/ExampleCommand.cs",
    "chars": 3482,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing ManyConsole;\r\nusing Mono.Options;\r\n\r\nnamespace MC.AX.DataUtilit"
  },
  {
    "path": "SampleConsole/GetTimeCommand.cs",
    "chars": 644,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing ManyConsole;\r\n\r\nnamespa"
  },
  {
    "path": "SampleConsole/MattsCommand.cs",
    "chars": 725,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing ManyConsole;\r\n\r\nnamespa"
  },
  {
    "path": "SampleConsole/Program.cs",
    "chars": 665,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing ManyConsole;\r\n\r\nnamespace SampleConsole\r\n{\r"
  },
  {
    "path": "SampleConsole/SampleConsole.csproj",
    "chars": 3973,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "SampleConsole/SimpleConsoleModeCommand.cs",
    "chars": 580,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing ManyConsole;\r\n\r\nnamespa"
  },
  {
    "path": "SampleConsole/StatefulConsoleModeCommand.cs",
    "chars": 886,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing ManyConsole;\r\n\r\nnamespa"
  },
  {
    "path": "SampleConsole/ThrowException.cs",
    "chars": 623,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing ManyConsole;\n\nnamespace Sam"
  },
  {
    "path": "SampleConsole/app.config",
    "chars": 160,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Vers"
  },
  {
    "path": "SampleConsole/packages.config",
    "chars": 224,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"Mono.Options\" version=\"5.3.0.1\" targetFramework=\"net"
  },
  {
    "path": "default.ps1",
    "chars": 2307,
    "preview": "properties {\r\n    $baseDirectory  = resolve-path .\r\n    $buildDirectory = ($buildDirectory, \"$baseDirectory\\build\") | s"
  },
  {
    "path": "lib/Sasa-v0.9.3/CHANGELOG.txt",
    "chars": 11317,
    "preview": "= v0.9.3 =\r\n\r\n * added a new parameter to compact serializer to indicate whether to ignore the\r\n   NonSerializable attri"
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Arrow.xml",
    "chars": 8972,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Arrow</name>\r\n    </assembly>\r\n    <members>\r\n        <"
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Contracts.xml",
    "chars": 15282,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Contracts</name>\r\n    </assembly>\r\n    <members>\r\n     "
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Core.xml",
    "chars": 40653,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Core</name>\r\n    </assembly>\r\n    <members>\r\n        <m"
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Dynamics.xml",
    "chars": 16566,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Dynamics</name>\r\n    </assembly>\r\n    <members>\r\n      "
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Linq.xml",
    "chars": 23227,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Linq</name>\r\n    </assembly>\r\n    <members>\r\n        <m"
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Mime.xml",
    "chars": 11743,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Mime</name>\r\n    </assembly>\r\n    <members>\r\n        <m"
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Net.xml",
    "chars": 23769,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Net</name>\r\n    </assembly>\r\n    <members>\r\n        <me"
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Operators.xml",
    "chars": 3789,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Operators</name>\r\n    </assembly>\r\n    <members>\r\n     "
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Parsing.xml",
    "chars": 20084,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Parsing</name>\r\n    </assembly>\r\n    <members>\r\n       "
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Serialization.xml",
    "chars": 19219,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Serialization</name>\r\n    </assembly>\r\n    <members>\r\n "
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.Statistics.xml",
    "chars": 3528,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa.Statistics</name>\r\n    </assembly>\r\n    <members>\r\n    "
  },
  {
    "path": "lib/Sasa-v0.9.3/Sasa.xml",
    "chars": 204329,
    "preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n    <assembly>\r\n        <name>Sasa</name>\r\n    </assembly>\r\n    <members>\r\n        <member"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/CSS/Contents.css",
    "chars": 8861,
    "preview": "/*\r\n * Copyright 2007 - 2009 Marek St�j\r\n * \r\n * This file is part of ImmDoc .NET.\r\n *\r\n * ImmDoc .NET is free software;"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/CSS/TableOfContents.css",
    "chars": 2336,
    "preview": "/*\r\n * Copyright 2007 - 2009 Marek St�j\r\n * \r\n * This file is part of ImmDoc .NET.\r\n *\r\n * ImmDoc .NET is free software;"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/CSS/TreeView.css",
    "chars": 1905,
    "preview": "/*\r\n * Copyright 2007 - 2009 Marek St�j\r\n * \r\n * This file is part of ImmDoc .NET.\r\n *\r\n * ImmDoc .NET is free software;"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/0/0.html",
    "chars": 109230,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.or"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/0/1.html",
    "chars": 4945,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/1.html",
    "chars": 4092,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/10.html",
    "chars": 2624,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/100.html",
    "chars": 3012,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/101.html",
    "chars": 2773,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/102.html",
    "chars": 3877,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/103.html",
    "chars": 4236,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/104.html",
    "chars": 3880,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/105.html",
    "chars": 4221,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/106.html",
    "chars": 5606,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/107.html",
    "chars": 2872,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/108.html",
    "chars": 2777,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/109.html",
    "chars": 2889,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/11.html",
    "chars": 2888,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/110.html",
    "chars": 2878,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/111.html",
    "chars": 2655,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/112.html",
    "chars": 2564,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/113.html",
    "chars": 4236,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/114.html",
    "chars": 2833,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/115.html",
    "chars": 2754,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/116.html",
    "chars": 2592,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/117.html",
    "chars": 2626,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/118.html",
    "chars": 2731,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/119.html",
    "chars": 2763,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/12.html",
    "chars": 2392,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/120.html",
    "chars": 2768,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/121.html",
    "chars": 2960,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/122.html",
    "chars": 2960,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/123.html",
    "chars": 3017,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/124.html",
    "chars": 3017,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/125.html",
    "chars": 2966,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/126.html",
    "chars": 2972,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/127.html",
    "chars": 3749,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/128.html",
    "chars": 2930,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/129.html",
    "chars": 4355,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/13.html",
    "chars": 2786,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/130.html",
    "chars": 2689,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/131.html",
    "chars": 2889,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/132.html",
    "chars": 2660,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/133.html",
    "chars": 2667,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/134.html",
    "chars": 2663,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/135.html",
    "chars": 2667,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/136.html",
    "chars": 2659,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/137.html",
    "chars": 2664,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/138.html",
    "chars": 2667,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/139.html",
    "chars": 5313,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/14.html",
    "chars": 3140,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/140.html",
    "chars": 2966,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/141.html",
    "chars": 2600,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/142.html",
    "chars": 2588,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/143.html",
    "chars": 2586,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/144.html",
    "chars": 2586,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/145.html",
    "chars": 2598,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/146.html",
    "chars": 2595,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/147.html",
    "chars": 2597,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/148.html",
    "chars": 2690,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/149.html",
    "chars": 2902,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/15.html",
    "chars": 3569,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/150.html",
    "chars": 3136,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/151.html",
    "chars": 3418,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/152.html",
    "chars": 3404,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/153.html",
    "chars": 3209,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/154.html",
    "chars": 3455,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/155.html",
    "chars": 3736,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/156.html",
    "chars": 4046,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/157.html",
    "chars": 1709,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/158.html",
    "chars": 5446,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/159.html",
    "chars": 2444,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/16.html",
    "chars": 6718,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/160.html",
    "chars": 2831,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/161.html",
    "chars": 2866,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/162.html",
    "chars": 3608,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/163.html",
    "chars": 3309,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/164.html",
    "chars": 2619,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/165.html",
    "chars": 2618,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/166.html",
    "chars": 4675,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/167.html",
    "chars": 2452,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/168.html",
    "chars": 2874,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/169.html",
    "chars": 3639,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/17.html",
    "chars": 2968,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/170.html",
    "chars": 4855,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/171.html",
    "chars": 2473,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/172.html",
    "chars": 3716,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/173.html",
    "chars": 3707,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/174.html",
    "chars": 2615,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/175.html",
    "chars": 6859,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/176.html",
    "chars": 3576,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/177.html",
    "chars": 2971,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/178.html",
    "chars": 2959,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/179.html",
    "chars": 3155,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/18.html",
    "chars": 3121,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/180.html",
    "chars": 3324,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/181.html",
    "chars": 3603,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/182.html",
    "chars": 3875,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/183.html",
    "chars": 2802,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/184.html",
    "chars": 3395,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/185.html",
    "chars": 3074,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/186.html",
    "chars": 3135,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/187.html",
    "chars": 3191,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/188.html",
    "chars": 4431,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/189.html",
    "chars": 3405,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/19.html",
    "chars": 3327,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/190.html",
    "chars": 3602,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/191.html",
    "chars": 3745,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/192.html",
    "chars": 3425,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/193.html",
    "chars": 3333,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/194.html",
    "chars": 3017,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/195.html",
    "chars": 3233,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/196.html",
    "chars": 3367,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/197.html",
    "chars": 3600,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/198.html",
    "chars": 3729,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/199.html",
    "chars": 3940,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/2.html",
    "chars": 2394,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/20.html",
    "chars": 3028,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/200.html",
    "chars": 4079,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/201.html",
    "chars": 4292,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/202.html",
    "chars": 4090,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/203.html",
    "chars": 2894,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/204.html",
    "chars": 2885,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/205.html",
    "chars": 2655,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/206.html",
    "chars": 2727,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/207.html",
    "chars": 2840,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/208.html",
    "chars": 13017,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/209.html",
    "chars": 5428,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/21.html",
    "chars": 3084,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/210.html",
    "chars": 2516,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/211.html",
    "chars": 2577,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/212.html",
    "chars": 2828,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/213.html",
    "chars": 2776,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/214.html",
    "chars": 2571,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  },
  {
    "path": "lib/Sasa-v0.9.3-docs/Contents/1/215.html",
    "chars": 3151,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<!-- This comment will force IE7 to go into quirks mode. -->\r\n<!DOCTYPE html PUB"
  }
]

// ... and 1365 more files (download for full content)

About this extraction

This page contains the full source code of the fschwiet/ManyConsole GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1565 files (10.4 MB), approximately 2.8M tokens, and a symbol index with 215 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!