Notices: This section not yet converted to new layout. Download stats are rolling back out.

This is not the latest version of Boxstarter Chocolatey Module available.

Boxstarter Chocolatey Module

2.11.0

Package test results are passing.

This package was approved by moderator AdmiringWorm on 5/16/2018.

Creates a fresh developer (or non developer) environment from a bare OS utilizing PowerShell and Chocolatey. Installs Chocolatey, cutomizes windows settings, installs windows updates, handles reboots, installs windows features and your favorite applications.

To install Boxstarter Chocolatey Module, run the following command from the command line or from PowerShell:

C:\> choco install boxstarter.chocolatey --version 2.11.0

To upgrade Boxstarter Chocolatey Module, run the following command from the command line or from PowerShell:

C:\> choco upgrade boxstarter.chocolatey --version 2.11.0

Files

Hide
  • tools\boxlogo.ico
  • tools\BoxStarter.bat Show
    @echo off
    
    powershell -NoProfile -ExecutionPolicy bypass -command "Import-Module '%~dp0Boxstarter.Chocolatey\Boxstarter.Chocolatey.psd1';Invoke-ChocolateyBoxstarter %*"
    
  • tools\Boxstarter.Chocolatey\Boxstarter.Chocolatey.psd1 Show
    @{
    Description = 'Provides a robust environment capable of automatic reboots and several windows customization functions ideal for installing Chocolatey packages on a new machine'
    # Script module or binary module file associated with this manifest.
    ModuleToProcess = './boxstarter.chocolatey.psm1'
    
    # Version number of this module.
    ModuleVersion = '2.11.0'
    
    # ID used to uniquely identify this module
    GUID = 'bbdb3e8b-9daf-4c00-a553-4f3f88fb6e51'
    
    # Author of this module
    Author = 'Chocolatey Software, Inc'
    
    # Copyright statement for this module
    Copyright = "(c) 2018 Chocolatey Software, Inc, 2012 - 2018 Matt Wrock."
    
    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion = '2.0'
    
    # Minimum version of the .NET Framework required by this module
    DotNetFrameworkVersion = '2.0'
    
    # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
    NestedModules = @('..\Boxstarter.Common\Boxstarter.Common.psd1')
    
    # Functions to export from this module
    FunctionsToExport = '*'
    
    # Cmdlets to export from this module
    CmdletsToExport = '*'
    
    # Variables to export from this module
    VariablesToExport = '*'
    
    # Aliases to export from this module
    AliasesToExport = '*'
    
    # List of all modules packaged with this module.
    # ModuleList = @()
    
    # List of all files packaged with this module
    # FileList = @()
    
    # Private data to pass to the module specified in RootModule/ModuleToProcess
    PrivateData = 'e1ebff7035337cd12e74f577817ccb137f2871d4'
    
    # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
    # DefaultCommandPrefix = ''
    
    }
    
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAQRbry8H8tN4Xa
    # DjtMjwQz21tNwWGbCHBI6HervesVeqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgzDq/EsPB6tAlpSDjO8i4M4BmsWO5IX4i3uuV
    # 6s2VtGAwDQYJKoZIhvcNAQEBBQAEggEAt3Qd/blMHWRl4oVDQN/EZBPmN00RJh4v
    # 5SdihwcyFS9CIH+Tb05nNRq6eQDEintT2HJvfx91+nILV14l6khtxlyWVjts93Hz
    # Z/fR/uhqLY0nKPbTW5ld3uXic32jjRwv6r1unfJf151nd/HnXMsWSWWpxNJM47qU
    # 5rtlOXjvAhMIvJH30hXOou//O7LFeSZSlVkZFHEXRL2sejvYA9n/ZgLBosSLs0yQ
    # 2Ax0LyrwzvEzLIu7C+S9QxP87jAVwTAZF1pm+qQGUNTmUn6h5+qg8tnGGuTFuNH7
    # T2P+Vq4+Ejmgx+spazJwaiDDJS3vcGDorR6OiU1H8Rwl/PGRUnyaFqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTExWjAjBgkqhkiG9w0BCQQxFgQU8Nbf9iQCtdM7jz0S
    # iHeBJrzX3n4wDQYJKoZIhvcNAQEBBQAEggEAGrnq5humg0AoXgngqK0PSEFciZhJ
    # GH/Ww7uWnZV+J2n9pbn1ZflnCivC29zUGuYB6gZ517voJR9BzWCm5lZSB7MoRwsi
    # 1av8CQB5tPg/B8XgQZUrPih71eKnoQzLxrJCHvQlahxSyaUAfstglMoi9ch+QUoe
    # Tw+1ByJt+wWuq2KuZSojm9E0tj7F8x/ydagpA+Hjch4Y2a2qgdYOmfjKbUVNL6VW
    # 96S4he/9ZDgw6BEZbfk5yPXlzeXIq6aitw4h2xvP1SVbV7kLKTu3irzEgYUXAXO4
    # tAafvnxvfb5P33vG0s8njOdbSiI4DBaY7mDGyX9W25WyhJx1uvT/9QoTCw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Boxstarter.Chocolatey.psm1 Show
    param(
        [parameter(Position=0,Mandatory=$false)][boolean]$ExportCommands=$false
    )
    if(!$Global:Boxstarter) { $Global:Boxstarter = @{} }
    if(!$Boxstarter.ContainsKey('RebootOk')) { $Boxstarter.RebootOk=$true }
    
    $unNormalized=(Get-Item "$PSScriptRoot\..\Boxstarter.Bootstrapper\Boxstarter.Bootstrapper.psd1")
    Import-Module $unNormalized.FullName -global -DisableNameChecking
    Resolve-Path $PSScriptRoot\*.ps1 |
        % { . $_.ProviderPath }
    
    if($ExportCommands) {
        Import-BoxstarterVars
        Export-ModuleMember cinst, cup, choco
    }
    
    Export-ModuleMember Get-BoxstarterConfig,`
                        Get-PackageRoot,`
                        Enable-BoxstarterClientRemoting,`
                        Enable-BoxstarterCredSSP,`
                        Export-BoxstarterVars,`
                        Install-ChocolateyInstallPackageOverride,`
                        Invoke-BoxstarterBuild,`
                        Invoke-BoxstarterFromTask,`
                        Invoke-Chocolatey,`
                        Invoke-ChocolateyBoxstarter,`
                        Install-BoxstarterPackage,`
                        New-BoxstarterPackage,`
                        New-PackageFromScript,`
                        Register-ChocolateyInterception,`
                        Resolve-VMPlugin,`
                        Set-BoxstarterConfig,`
                        Set-BoxstarterShare,`
                        Write-HostOverride
    
    Export-ModuleMember -alias `
                        Enable-BoxstarterVM,`
                        Install-ChocolateyInstallPackage,`
                        Write-Host
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBSY6En3sIbm6Np
    # DL51X7Yyb7Hax22rpClJ0ofJUNYf6KCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgwFJpxY3MRtvDpDrXd/mEkOU4ehwYnnka0GsQ
    # mys9TFcwDQYJKoZIhvcNAQEBBQAEggEAHsYZq7RTVap+NKCW+oVd2Bthay2dD9J5
    # KOr2nIMCCTr//Ut1xqSS9S3o38lBY8Xw+mf6mzYizvk74OG3KHgEsvSZ5RhZs2kJ
    # Rmumpysqc8XelppOj7ZkyDS3BUDughfXcFX8KIdiXb8g345nGpe+ik1jFqESBtSr
    # G2VfyuuAa2v6Q9g7fTQOAMJ9kSVZSVdvruor/X9Q9Wb9hMz8nX9X8vPRLeVbFQTx
    # k4fS2ElBR4U1YWi57Ov1Lk18HyAt5V0vTD1vtcrd+fhGIpWzEBG3SQWt56G6JxfH
    # KL7RY7WTIQLFPtjKXYctbPICOCQ1Z9JZ53FGZBoqfgf/ykMFyy2GMqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTEyWjAjBgkqhkiG9w0BCQQxFgQUFkcZ4wWvO4voRnJh
    # Hirm4FI4pY8wDQYJKoZIhvcNAQEBBQAEggEAlZWyhGmvoIyOkKxs09NmW1Ju1jFX
    # dn/JfQfMCQV9d6H6IB+1BxxhQPPPqT88nCKN0X5yCNbnk0TklKlwCjB5wPMpC/AE
    # F03x2ywZE6587Bc9Z0HyYSiPwAR5utjTQoBOENsZGR2s/meVBN3xn1IQw7QMBgfl
    # 9sZI+/vjKWu6lHYgvs/G1sfK0PrvsP7y053Bcf04VkF7+J8A2mY4Ut2PVzEm/U+r
    # RS+c7vUB8ywKj+VzH1A96w42Hcd2ffVIYqdh8FZk6pQnliU7zuqnzoaNAeNJj5NB
    # zd1eViwaBQUg1J4DM5wsccgE+SqszcUlv3D2AWbhCufthx9jPvDVYZCGQw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Boxstarter.Chocolatey.pssproj
  • tools\Boxstarter.Chocolatey\Set-BoxstarterConfig.ps1 Show
    function Set-BoxStarterConfig {
    <#
    .SYNOPSIS
    Sets persist-able Boxstarter configuration settings.
    
    .DESCRIPTION
    Boxstarter stores configuration data in an xml file in the Boxstarter base
    directory. The Set-BoxstarterConfig function is a convenience function
    for changing those settings.
    
    .Parameter LocalRepo
    The path where Boxstarter will search for local packages.
    
    .Parameter NugetSources
    A semicolon delimited list of NuGet Feed URLs where Boxstarter will search for packages
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    about_boxstarter_variable_in_chocolatey
    Get-BoxstarterConfig
    #>
        [CmdletBinding()]
        param([string]$LocalRepo, [string]$NugetSources)
    
        [xml]$configXml = Get-Content (Join-Path $Boxstarter.BaseDir BoxStarter.config)
    
        if($NugetSources){
            $boxstarter.NugetSources = $configXml.config.NugetSources = $NugetSources
        }
        if($LocalRepo){
            if($configXml.config.LocalRepo -eq $null) {
                $localRepoElement = $configXml.CreateElement("LocalRepo")
                $configXml.config.AppendChild($localRepoElement) | Out-Null
            }
            $boxstarter.LocalRepo = $configXml.config.LocalRepo = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($LocalRepo)
        }
    
        $configXml.Save((Join-Path $Boxstarter.BaseDir BoxStarter.config))
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCjQUZp+434YEKE
    # M/3s5XQlPCzhLiaHu6z2803sNtrK26CCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgtI2WmL7pzhlTElEMQ1TaN4UbGzWVim4kNqJN
    # XUmgHXkwDQYJKoZIhvcNAQEBBQAEggEABoX3Ml4HOxBZyHb98XA4/12lhaIfj6B+
    # MIxkGZqEzzAbbXe3ZUZHwdH/QivnfOz+WUP1BwyhhkCDbMLKAs9rgaOZKHpuHcz6
    # sN2twcsUi+FsGtILbCHdbra7U3x5nCfHpu9Vkzqk6Y7Fth6BQt6r2LFBbyF63ocj
    # eQoEyZDg/tjAT5ejGHpf4bwVk9ZbvjdDM660xWdBYGB/j6lq9CcoCVLl/zyo2iT7
    # NyrzfLEDlVpxIz8oq1lAfZNO3c7cvIZ0xVnfv+/G2NP/aTDXnf7hElgRhEBQzg0z
    # huj80pBTLu4FAkq/0j7jscwo1CG/HmQo1kFiw4w4Y/zLlW3dAOl0lKGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTM3WjAjBgkqhkiG9w0BCQQxFgQUiYedBtW1/7uhK+mK
    # XWHwNcarZ5kwDQYJKoZIhvcNAQEBBQAEggEAkU30x5DUkNJr6pa2uXDPHRpanu9c
    # WqD+GyOJrkuX4c3BZ1HvjgniTOr7HNjFznBddeH9y/FuBQnioy5Yw2gSp/HRvssI
    # X8fOAk/ra79VETHlwtVlHGUcCXfKjZlg5xpz7jTURONOGB7XwfQ0PRPEv+14AlIl
    # swjpVWoQ2QuQJigg65el4EXPm8dZkHWwg8qXL+YbMxeuYLwiP8uha1l5saw7Z8nB
    # +sRLZXIStPq8PeU5Yy964Tu0DPmBTPvTQySZjDJXaHvSAET+I8k16pePfYiD3D+Y
    # lxVsM/gYrL/5W8793HTyMpv58xdK3xwdBDD4GJYgGPRj0ABQLjzlLZMlPg==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Set-BoxstarterShare.ps1 Show
    function Set-BoxstarterShare {
    <#
    .SYNOPSIS
    Shares the Boxstarter root directory - $Boxstarter.BaseDir
    
    .DESCRIPTION
    Shares the Boxstarter root directory - $Boxstarter.BaseDir - so that
    it can be accessed remotely. This allows remote machines to Invoke
    ChocolateyBoxstarter via \\server\shareName\Boxstarter.bat. Unless
    specified otherwise, the share name is Boxstarter and Everyone is
    given Read permissions.
    
    .PARAMETER ShareName
    The name to give to the share. This is the name by which other
    machines can access it. Boxstarter is the default.
    
    .PARAMETER Accounts
    A list of accounts to be given read access to the share. Everyone is
    the default.
    
    .EXAMPLE
    Set-BoxstarterShare
    
    Shares the Boxstarter root as Boxstarter to everyone.
    
    .EXAMPLE
    Set-BoxstarterShare BuildRepo
    
    Shares the Boxstarter Root as BuildRepo to everyone.
    
    .EXAMPLE
    Set-BoxstarterShare -Accounts "corp\mwrock","corp\gmichaels"
    
    Shares the Boxstarter root as Boxstarter to mwrock and gmichaels in the corp domain.
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    Invoke-ChocolateyBoxstarter
    New-BoxstarterPackage
    Invoke-BoxstarterBuild
    #>
        param(
            [string]$shareName="Boxstarter",
            [string[]][email protected]("Everyone")
        )
        if(!(Test-Admin)) {
            $unNormalized=(Get-Item "$($Boxstarter.Basedir)\Boxstarter.Chocolatey\BoxStarter.Chocolatey.psd1")
            $command = "-ExecutionPolicy bypass -command Import-Module `"$($unNormalized.FullName)`";Set-BoxstarterShare @PSBoundParameters"
            Start-Process powershell -verb runas -argumentlist $command
            return
        }
    
        foreach($account in $accounts){
            $acctOption += "/GRANT:'$account,READ' "
        }
        IEX "net share $shareName='$($Boxstarter.BaseDir)' $acctOption"
        if($LastExitCode -ne 0) {
            Throw "Sharing $shareName on $($Boxstarter.BaseDir) to $acctOption was not successful. Use NET SHARE $ShareName to see if share already exists. To Delete the share use NET SHARE $ShareName /DELETE."
        }
    }
    
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDmcOr9uGIpxCUN
    # sLIdQVGSUmvUGJtkDh/AcbGmwVP96qCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgx/JLgoWdFRoed3nbhrPMZV8pVDSNUOI3iMKi
    # rIi5l4kwDQYJKoZIhvcNAQEBBQAEggEAPvLkq+5bNrTWDQdK88QQBiB4vP0Bw1jC
    # cLoUKqwKa9zgoyh7Aosdx/ASUNBa9qC34zHD3SIARVNktd2hBGPh/9+QDKJhQj78
    # TWzmitYSjSkrbgi6c2nrK9DpOxBsheEV1Us+YEaE9rdc7WWrUqDIpL/A5NfBEBtP
    # yuQ0cY1vSRZZuzyrbx2b5tpZkH/mamRSWS8/RXPmKAZlOQG+JoH495CPwvJS8aTD
    # mgSWOirB6gfwns+NhT9qOEI81WaSgE+zeoTUCYeknqO+Q9dvFWtOvFxtw68DTQzx
    # 0zl+ip6rNheHBp5IrQbibfISXadpwvQULyLBZqmZ3X+ka9ICuplH/qGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTM5WjAjBgkqhkiG9w0BCQQxFgQUKmo/8cHF6p8CV4Vw
    # I4Bj8LZ3DfcwDQYJKoZIhvcNAQEBBQAEggEAh9Ry703D97Mcnf7trxhFIfBdyRku
    # saWBKWwbPkusSe+7MtJL0OaZsf+Y2rMFHEyIsorEnVbQqSJEV4VpBFduxWg8plNo
    # 7ZZMFv8Dj4BSgB+EbEoTxerLzq/lipt8RKxMSShMSBXjm2peHEF4zcKExRROHsfU
    # 5uGqnpER2BggkvrSDqPB7JbXRYUBjdChqXmzWxLGCuD2aiqIZqQ+jS5zh27KnpMR
    # y1JQ1f0hwp3eyam39zZUZruMM2CZKa8l8RDXIpMlbRwyfDf+okbp3oskdAyAYtks
    # C0EcSykWunBbC7oQokYg1sIZr3SggVgz4Ph9h8gACPsb5TY/o1ncrxiT9w==
    # SIG # End signature block
    
  • tools\boxstarter.config Show
    <config>
      <ChocolateyPackage>https://chocolatey.org/api/v2/package/chocolatey/0.9.8.33</ChocolateyPackage>
      <ChocolateyRepo>https://chocolatey.org/install.ps1</ChocolateyRepo>
      <NugetSources>https://chocolatey.org/api/v2</NugetSources>
    </config>
    
  • tools\BoxstarterShell.ps1 Show
    $here = Split-Path -parent $MyInvocation.MyCommand.Definition
    
    # Import the Chocolatey module first so that $Boxstarter properties
    # are initialized correctly and then import everything else.
    Import-Module $here\Boxstarter.Chocolatey\Boxstarter.Chocolatey.psd1 -DisableNameChecking -ErrorAction SilentlyContinue
    Resolve-Path $here\Boxstarter.*\*.psd1 |
        % { Import-Module $_.ProviderPath -DisableNameChecking -ErrorAction SilentlyContinue }
    Import-Module $here\Boxstarter.Common\Boxstarter.Common.psd1 -Function Test-Admin
    
    if(!(Test-Admin)) {
        Write-BoxstarterMessage "Not running with administrative rights. Attempting to elevate..."
        $command = "-ExecutionPolicy bypass -noexit -command &'$here\BoxstarterShell.ps1'"
        Start-Process powershell -verb runas -argumentlist $command
        Exit
    }
    
    $Host.UI.RawUI.WindowTitle="Boxstarter Shell"
    cd $env:SystemDrive\
    Write-Output @"
    Welcome to the Boxstarter shell!
    The Boxstarter commands have been imported from $here and are available for you to run in this shell.
    You may also import them into the shell of your choice.
    
    Here are some commands to get you started:
    Install a Package:   Install-BoxstarterPackage
    Create a Package:    New-BoxstarterPackage
    Build a Package:     Invoke-BoxstarterBuild
    Enable a VM:         Enable-BoxstarterVM
    For Command help:    Get-Help <Command Name> -Full
    
    For Boxstarter documentation, source code, to report bugs or participate in discussions, please visit https://boxstarter.org
    "@
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCh3CL60d8er+PJ
    # Zw+Rr7rMbmXvKeXEcAxPx67D7qEyNKCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQg0qnTX493vF5y7O35ET3UziMpANvxJ0U8Pctp
    # xtTooTQwDQYJKoZIhvcNAQEBBQAEggEAqxrBUUSNRP00YBxh4nWPdT8k8/cR1GgJ
    # VlzTKVRmuenxkV4keNqrnjnkMNSHiwyG2GvD0bguYnbeXdEKZ35itNtlxG28aGfe
    # QQXQBLN0J2NTyi1WZyowLD8wuZOzd0Efh3avmecr1PGI2xSH9tWUyEhl1RaOWRmn
    # fi2VYEWwc6+DvdZs7Hbo9grBvp3dL5+kyAD+OQNjOWWEyM4Q/iWZc8Fib63WG5li
    # yMN3oWEwx4O1yeDEW9hwZuhrLzCEMFOs13Pey3UGVid0Knj/fNr2AnZpN6kxf9RW
    # KksJvlZr3Sa3daK82KaHJz5qkesYY4ZN3XbvTatrNM6i+MdohY0HKqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI1MTA0WjAjBgkqhkiG9w0BCQQxFgQU0bzfwy00NqyAMn9t
    # hLwGXkMV48QwDQYJKoZIhvcNAQEBBQAEggEAOdIc3t/Znq9X+X+/RZu9Hl6ZZ+iI
    # m0A4BqzEpKkNNGR0PSNI13f7oKICzk3Ub1vCUYwyTtPihaWZ3pj1TgsJUAZ/JcfV
    # QH0DRv6TgRQPncZlbJnN0INuHcdKos9T3A11Gh3gMXl6dg/CEnYSxHXlngwz/wcp
    # HjmvyKdqC2Mv+ffPyzFh2kWiawAttQy9a3H/1h3yMc3h/877wi56S7FUzPWvsc+r
    # y4ZiWeqPUGak6dnwX/oqWp4JLXB9LDUilYs4zGwLM+GBfVDrxP9FF9kKmv+tvEQK
    # m+2FzebcYvpZxUu64304SaUTlScxpWOn3azXL+XYhswrG/Bno4JgfQKG8A==
    # SIG # End signature block
    
  • tools\chocolateyinstall.ps1 Show
    $tools = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
    . (Join-Path $tools Setup.ps1)
    try {
        $ModuleName = (Get-ChildItem $tools | ?{ $_.PSIsContainer }).BaseName
        $preInstall = Join-Path $tools "$modulename.preinstall.ps1"
        if(Test-Path $preInstall) { .$preInstall }
        Install-Boxstarter $tools $ModuleName $env:chocolateyPackageParameters
    } catch {
        write-output $_ | fl * -force
        throw $_.Exception
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBzeJ1fI33frlr5
    # 1YBWo4AbaBAtR8LwsLqYQHBbpsVxvqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQg9hm1BCDpV2P7F/QYOVZqaAzheFrH15FSUvz/
    # gygXSicwDQYJKoZIhvcNAQEBBQAEggEAn+9z+poOlZgJhuKJz5ss71n3TqzbX234
    # GvhHU7pjSqNu0yH/LG+J9vl1CcRBkPQPLiNME/p6jJei8ZRl6Fd1a2LEi3kaM3v/
    # 7lCcJ3dRpQLNlo0yyD3Eu5iEW7mdseYFvNvswlJgIsB1s/hokO8VggoAo4I63kTL
    # CwDrA2MhJ165yE85prTARBmiOEQcLr6/P3CJGjiih3sPYsBm/9KrykyAGHYQW+JA
    # VmLgXgS5dT3vtrEEF2MNzzaYyJZ64v0BjRhT1f/wMedIonGwtw3T0FKqtu05NDOo
    # XMC8wHuTwJ+SF1kcceAflDAsBqLTbCqXq3lAiZt2hn/uJtGwKifg+KGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI1MTA1WjAjBgkqhkiG9w0BCQQxFgQUuuUSewiCtwRARlju
    # ILt5wTurKEIwDQYJKoZIhvcNAQEBBQAEggEAmJA56QqTVK/keNmxRwLl8kTcgctL
    # yjkmerwz0dDbd0352DGG42r650zQXKrL6ox3EBipTvl7eftt7l73GP6k73DqUrMS
    # 6pWlKMuC2bqOHCMXx9m7E+UB+lcGTGvt4nRvbKghQBKS1kzK5Z1ChDtjAlbfDD1V
    # FrroSixFBqliK85TXvBv6piO+D9bPEFLC7XElyTBN6e/+Micv31tJrd+eSB0/tAp
    # 2WmIgW2RUcuGB4Ynge9cNM5YcKksFLFh2gNJOM38VYJNh6r5Y6kSxask4yddkmyu
    # wjH+ONbYj0kxx6wbojI3H7hF5XYkeoPQhUgOvwguXdWUseVcM0iUmBsXlA==
    # SIG # End signature block
    
  • tools\LICENSE.txt Show
                                     Apache License
                               Version 2.0, January 2004
                            https://www.apache.org/licenses/
    
       TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
    
       1. Definitions.
    
          "License" shall mean the terms and conditions for use, reproduction,
          and distribution as defined by Sections 1 through 9 of this document.
    
          "Licensor" shall mean the copyright owner or entity authorized by
          the copyright owner that is granting the License.
    
          "Legal Entity" shall mean the union of the acting entity and all
          other entities that control, are controlled by, or are under common
          control with that entity. For the purposes of this definition,
          "control" means (i) the power, direct or indirect, to cause the
          direction or management of such entity, whether by contract or
          otherwise, or (ii) ownership of fifty percent (50%) or more of the
          outstanding shares, or (iii) beneficial ownership of such entity.
    
          "You" (or "Your") shall mean an individual or Legal Entity
          exercising permissions granted by this License.
    
          "Source" form shall mean the preferred form for making modifications,
          including but not limited to software source code, documentation
          source, and configuration files.
    
          "Object" form shall mean any form resulting from mechanical
          transformation or translation of a Source form, including but
          not limited to compiled object code, generated documentation,
          and conversions to other media types.
    
          "Work" shall mean the work of authorship, whether in Source or
          Object form, made available under the License, as indicated by a
          copyright notice that is included in or attached to the work
          (an example is provided in the Appendix below).
    
          "Derivative Works" shall mean any work, whether in Source or Object
          form, that is based on (or derived from) the Work and for which the
          editorial revisions, annotations, elaborations, or other modifications
          represent, as a whole, an original work of authorship. For the purposes
          of this License, Derivative Works shall not include works that remain
          separable from, or merely link (or bind by name) to the interfaces of,
          the Work and Derivative Works thereof.
    
          "Contribution" shall mean any work of authorship, including
          the original version of the Work and any modifications or additions
          to that Work or Derivative Works thereof, that is intentionally
          submitted to Licensor for inclusion in the Work by the copyright owner
          or by an individual or Legal Entity authorized to submit on behalf of
          the copyright owner. For the purposes of this definition, "submitted"
          means any form of electronic, verbal, or written communication sent
          to the Licensor or its representatives, including but not limited to
          communication on electronic mailing lists, source code control systems,
          and issue tracking systems that are managed by, or on behalf of, the
          Licensor for the purpose of discussing and improving the Work, but
          excluding communication that is conspicuously marked or otherwise
          designated in writing by the copyright owner as "Not a Contribution."
    
          "Contributor" shall mean Licensor and any individual or Legal Entity
          on behalf of whom a Contribution has been received by Licensor and
          subsequently incorporated within the Work.
    
       2. Grant of Copyright License. Subject to the terms and conditions of
          this License, each Contributor hereby grants to You a perpetual,
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
          copyright license to reproduce, prepare Derivative Works of,
          publicly display, publicly perform, sublicense, and distribute the
          Work and such Derivative Works in Source or Object form.
    
       3. Grant of Patent License. Subject to the terms and conditions of
          this License, each Contributor hereby grants to You a perpetual,
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
          (except as stated in this section) patent license to make, have made,
          use, offer to sell, sell, import, and otherwise transfer the Work,
          where such license applies only to those patent claims licensable
          by such Contributor that are necessarily infringed by their
          Contribution(s) alone or by combination of their Contribution(s)
          with the Work to which such Contribution(s) was submitted. If You
          institute patent litigation against any entity (including a
          cross-claim or counterclaim in a lawsuit) alleging that the Work
          or a Contribution incorporated within the Work constitutes direct
          or contributory patent infringement, then any patent licenses
          granted to You under this License for that Work shall terminate
          as of the date such litigation is filed.
    
       4. Redistribution. You may reproduce and distribute copies of the
          Work or Derivative Works thereof in any medium, with or without
          modifications, and in Source or Object form, provided that You
          meet the following conditions:
    
          (a) You must give any other recipients of the Work or
              Derivative Works a copy of this License; and
    
          (b) You must cause any modified files to carry prominent notices
              stating that You changed the files; and
    
          (c) You must retain, in the Source form of any Derivative Works
              that You distribute, all copyright, patent, trademark, and
              attribution notices from the Source form of the Work,
              excluding those notices that do not pertain to any part of
              the Derivative Works; and
    
          (d) If the Work includes a "NOTICE" text file as part of its
              distribution, then any Derivative Works that You distribute must
              include a readable copy of the attribution notices contained
              within such NOTICE file, excluding those notices that do not
              pertain to any part of the Derivative Works, in at least one
              of the following places: within a NOTICE text file distributed
              as part of the Derivative Works; within the Source form or
              documentation, if provided along with the Derivative Works; or,
              within a display generated by the Derivative Works, if and
              wherever such third-party notices normally appear. The contents
              of the NOTICE file are for informational purposes only and
              do not modify the License. You may add Your own attribution
              notices within Derivative Works that You distribute, alongside
              or as an addendum to the NOTICE text from the Work, provided
              that such additional attribution notices cannot be construed
              as modifying the License.
    
          You may add Your own copyright statement to Your modifications and
          may provide additional or different license terms and conditions
          for use, reproduction, or distribution of Your modifications, or
          for any such Derivative Works as a whole, provided Your use,
          reproduction, and distribution of the Work otherwise complies with
          the conditions stated in this License.
    
       5. Submission of Contributions. Unless You explicitly state otherwise,
          any Contribution intentionally submitted for inclusion in the Work
          by You to the Licensor shall be under the terms and conditions of
          this License, without any additional terms or conditions.
          Notwithstanding the above, nothing herein shall supersede or modify
          the terms of any separate license agreement you may have executed
          with Licensor regarding such Contributions.
    
       6. Trademarks. This License does not grant permission to use the trade
          names, trademarks, service marks, or product names of the Licensor,
          except as required for reasonable and customary use in describing the
          origin of the Work and reproducing the content of the NOTICE file.
    
       7. Disclaimer of Warranty. Unless required by applicable law or
          agreed to in writing, Licensor provides the Work (and each
          Contributor provides its Contributions) on an "AS IS" BASIS,
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
          implied, including, without limitation, any warranties or conditions
          of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
          PARTICULAR PURPOSE. You are solely responsible for determining the
          appropriateness of using or redistributing the Work and assume any
          risks associated with Your exercise of permissions under this License.
    
       8. Limitation of Liability. In no event and under no legal theory,
          whether in tort (including negligence), contract, or otherwise,
          unless required by applicable law (such as deliberate and grossly
          negligent acts) or agreed to in writing, shall any Contributor be
          liable to You for damages, including any direct, indirect, special,
          incidental, or consequential damages of any character arising as a
          result of this License or out of the use or inability to use the
          Work (including but not limited to damages for loss of goodwill,
          work stoppage, computer failure or malfunction, or any and all
          other commercial damages or losses), even if such Contributor
          has been advised of the possibility of such damages.
    
       9. Accepting Warranty or Additional Liability. While redistributing
          the Work or Derivative Works thereof, You may choose to offer,
          and charge a fee for, acceptance of support, warranty, indemnity,
          or other liability obligations and/or rights consistent with this
          License. However, in accepting such obligations, You may act only
          on Your own behalf and on Your sole responsibility, not on behalf
          of any other Contributor, and only if You agree to indemnify,
          defend, and hold each Contributor harmless for any liability
          incurred by, or claims asserted against, such Contributor by reason
          of your accepting any such warranty or additional liability.
    
  • tools\NOTICE.txt Show
    Copyright (c) 2018 Chocolatey Software, Inc.
    Copyright (c) 2012 - 2018 Matt Wrock
    
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    
        http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    
  • tools\setup.ps1 Show
    function Install-Boxstarter($here, $ModuleName, $installArgs = "") {
        $boxstarterPath = Join-Path $env:ProgramData Boxstarter
        if(!(test-Path $boxstarterPath)){
            mkdir $boxstarterPath
        }
        $packagePath=Join-Path $boxstarterPath BuildPackages
        if(!(test-Path $packagePath)){
            mkdir $packagePath
        }
        foreach($ModulePath in (Get-ChildItem $here | ?{ $_.PSIsContainer })){
            $target=Join-Path $boxstarterPath $modulePath.BaseName
            if(test-Path $target){
                Remove-Item $target -Recurse -Force
            }
        }
        Copy-Item "$here\*" $boxstarterPath -Recurse -Force -Exclude ChocolateyInstall.ps1, Setup.*
    
        PersistBoxStarterPathToEnvironmentVariable "PSModulePath" $boxstarterPath
        PersistBoxStarterPathToEnvironmentVariable "Path" $boxstarterPath
        $binPath =  "$here\..\..\..\bin"
        $boxModule=Get-Module Boxstarter.Chocolatey
        if($boxModule) {
            if($boxModule.Path -like "$env:LOCALAPPDATA\Apps\*") {
                $clickonce=$true
            }
        }
        if(!$clickonce){
            Import-Module "$boxstarterPath\$ModuleName" -DisableNameChecking -Force -ErrorAction SilentlyContinue
        }
        $successMsg = @"
    The $ModuleName Module has been copied to $boxstarterPath and added to your Module path.
    You will need to open a new console for the path to be visible.
    Use 'Get-Module Boxstarter.* -ListAvailable' to list all Boxstarter Modules.
    To list all available Boxstarter Commands, use:
    PS:>Import-Module $ModuleName
    PS:>Get-Command -Module Boxstarter.*
    
    To find more info visit https://Boxstarter.org or use:
    PS:>Import-Module $ModuleName
    PS:>Get-Help Boxstarter
    "@
        Write-Host $successMsg
    
        if($ModuleName -eq "Boxstarter.Chocolatey" -and !$env:appdata.StartsWith($env:windir)) {
            $desktop = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::CommonDesktopDirectory)
            $startMenu = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::CommonStartMenu)
            $startMenu += "\Programs\Boxstarter"
            if(!(Test-Path $startMenu)){
                mkdir $startMenu
            }
            $target="powershell.exe"
            $targetArgs="-ExecutionPolicy bypass -NoExit -Command `"&'$boxstarterPath\BoxstarterShell.ps1'`""
    
    		if($installArgs -inotcontains "nodesktopicon") {
    			$link = Join-Path $desktop "Boxstarter Shell.lnk"
    			Create-Shortcut $link $target $targetArgs $boxstarterPath
    		}
            $link = Join-Path $startMenu "Boxstarter Shell.lnk"
            Create-Shortcut $link $target $targetArgs $boxstarterPath
    
            Set-Content -Path "$binPath\BoxstarterShell.bat" -Force -Value "$target $TargetArgs"
        }
    }
    
    function Create-Shortcut($location, $target, $targetArgs, $boxstarterPath) {
        $wshshell = New-Object -ComObject WScript.Shell
        $lnk = $wshshell.CreateShortcut($location)
        $lnk.TargetPath = $target
        $lnk.Arguments = "$targetArgs"
        $lnk.WorkingDirectory = $boxstarterPath
        $lnk.IconLocation="$boxstarterPath\BoxLogo.ico"
        $lnk.Save()
    
        #This adds a bit to the shortcut link that causes it to open with admin privileges
    	$tempFile = "$env:temp\TempShortcut.lnk"
    
    	$writer = new-object System.IO.FileStream $tempFile, ([System.IO.FileMode]::Create)
    	$reader = new-object System.IO.FileStream $location, ([System.IO.FileMode]::Open)
    
    	while ($reader.Position -lt $reader.Length)
    	{
    		$byte = $reader.ReadByte()
    		if ($reader.Position -eq 22) {
    			$byte = 34
    		}
    		$writer.WriteByte($byte)
    	}
    
    	$reader.Close()
    	$writer.Close()
    
    	Move-Item -Path $tempFile $location -Force
    }
    function PersistBoxStarterPathToEnvironmentVariable($variableName, $boxstarterPath){
        # Remove user scoped vars from previous releases
        $userValue = [Environment]::GetEnvironmentVariable($variableName, 'User')
        if($userValue){
            $userValues=($userValue -split ';' | ?{ !($_.ToLower() -match "\\boxstarter$")}) -join ';'
        }
        elseif($variableName -eq "PSModulePath") {
            $userValues = [environment]::getfolderpath("mydocuments")
            $userValues +="\WindowsPowerShell\Modules"
        }
        [Environment]::SetEnvironmentVariable($variableName, $userValues, 'User')
    
        $value = [Environment]::GetEnvironmentVariable($variableName, 'Machine')
        if($value){
            $values=($value -split ';' | ?{ !($_.ToLower() -match "\\boxstarter$")}) -join ';'
            $values="$boxstarterPath;$values"
        }
        elseif($variableName -eq "PSModulePath") {
            $values = "$boxstarterPath;"
            $values += [environment]::getfolderpath("ProgramFiles")
            $values +="\WindowsPowerShell\Modules"
        }
        else {
            $values ="$boxstarterPath"
        }
    
        [Environment]::SetEnvironmentVariable($variableName, $values, 'Machine')
        $varValue = Get-Content env:\$variableName
        $varValue = "$boxstarterPath;$varValue"
        Set-Content env:\$variableName -value $varValue
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB6A5ZLbeH/Z/pm
    # xyqjcXF5TpUle4TysChIAlvc0LnPSKCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQg1DLSpgPukV5imrkCAgabL61hZYmoG162W0MJ
    # Bx+ZFpQwDQYJKoZIhvcNAQEBBQAEggEAWv7e4TNlaxKdeEdEBvo9mU3lMp92+V9S
    # hxOLlSws8lIyC2Xdzt3yj8MDX7EK6BeL6+Lm5uzmRL/nNXk9TULvsBZRb3jZnhZm
    # pSM1Czbui7s0r/uYJUfp289bG3tW0ZqvCbsnvswMvjJeDzVPdQemWWbcky4Pv7gU
    # yuje5M74zU2Kj9a5C+woJgZVKFPMm6BiDXh/5EngXucA9//C0LJnU4u04eeWPNwu
    # enSvl8tMMdeZAOBDWR75ILPx1i+3MFN215nULPIFYC0n1wfgWDGJ0Q9lFbQ9vpLv
    # GwAIO/04ShApCpihDjHQ2sKU2iXgrflY8I8MeURpgzmwNAvcDRbL+KGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI1MTA1WjAjBgkqhkiG9w0BCQQxFgQUQvkSllZ2yaHyr/Uk
    # XLN0q70ecKowDQYJKoZIhvcNAQEBBQAEggEAhAN9oMbGoiS7HbO9bgrZvmpSkWrs
    # NZy+kCEy+BlGYZ9XWVk8pydfvGnnbsc89fkF9SRe8I49d/L1AY4qKIugQMd5VLMg
    # knh11N7U2VUUV5wZRWtfjAzK+h/7R2RlGKV5yxNhOta5PAdZnBrCBJTroL6sdBK7
    # 4xrcGYHblw0C2dz96ydRDDcPUshG4Kyy216lWI8lX0ORhC6H5w8YxGa35O5xVtNd
    # khCmRotEGj2Fvs06tRqt6SEJBlpKexEu4yWfne9iNJ+/zb//GSvPV5p7c/EXpBpa
    # P2enBmI6hBqQNR2bnb3oFM73/RI1O4K53dYAlniV2OzZFp65ZEcivXw9Qw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Send-File.ps1 Show
    function Send-File {
    ##############################################################################
    ##
    ## Send-File
    ##
    ## From Windows PowerShell Cookbook (O'Reilly)
    ## by Lee Holmes (http://www.leeholmes.com/guide)
    ##
    ##############################################################################
    
    <#
    
    .SYNOPSIS
    
    Sends a file to a remote session.
    
    .EXAMPLE
    
    PS >$session = New-PsSession leeholmes1c23
    PS >Send-File c:\temp\test.exe c:\temp\test.exe $session
    
    #>
    
    param(
        ## The path on the local computer
        [Parameter(Mandatory = $true)]
        $Source,
    
        ## The target path on the remote computer
        [Parameter(Mandatory = $true)]
        $Destination,
    
        ## The session that represents the remote computer
        [Parameter(Mandatory = $true)]
        [System.Management.Automation.Runspaces.PSSession] $Session
    )
    
    Set-StrictMode -Version Latest
    
    ## Get the source file, and then get its content
    $sourcePath = (Resolve-Path $source).Path
    $sourceBytes = [IO.File]::ReadAllBytes($sourcePath)
    $streamChunks = @()
    
    ## Now break it into chunks to stream
    $streamSize = 1MB
    for($position = 0; $position -lt $sourceBytes.Length;
        $position += $streamSize)
    {
        $remaining = $sourceBytes.Length - $position
        $remaining = [Math]::Min($remaining, $streamSize)
    
        $nextChunk = New-Object byte[] $remaining
        [Array]::Copy($sourcebytes, $position, $nextChunk, 0, $remaining)
        $streamChunks += ,$nextChunk
    }
    
    $remoteScript = {
        param($destination, $length)
    
        ## Convert the destination path to a full file system path (to support
        ## relative paths)
        $Destination = $executionContext.SessionState.`
            Path.GetUnresolvedProviderPathFromPSPath("$env:temp\$Destination")
    
        ## Create a new array to hold the file content
        $destBytes = New-Object byte[] $length
        $position = 0
    
        ## Go through the input, and fill in the new array of file content
        foreach($chunk in $input)
        {
            [GC]::Collect()
            [Array]::Copy($chunk, 0, $destBytes, $position, $chunk.Length)
            $position += $chunk.Length
        }
    
        ## Write the content to the new file
        [IO.File]::WriteAllBytes($destination, $destBytes)
    
        [GC]::Collect()
    }
    
    ## Stream the chunks into the remote script
    $streamChunks | Invoke-Command -Session $session $remoteScript `
        -ArgumentList $destination,$sourceBytes.Length -ErrorAction Stop
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCwsCePddCijOc2
    # E5Ymxuu+7gekMi79kZz/9CUKGlcdCKCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgixpbWydRH890w3q0w3aaBB/WEwt1ZeU1QRDT
    # lIC1Pl8wDQYJKoZIhvcNAQEBBQAEggEAP6Tf671t1/NaeSAhk5tRVtHf5h6QJRUa
    # CPe0I1Qb/eV738uFeZzqIWjQmdTlkpFEILs4L9bF55ERlOyR3IWC4OX3c2UDcbfI
    # nuxV6lWZ0GQuusfF1Mg/dnKjNuQs6kN1ItkMzkdOp3hHY4bVaFqaQ5Tu1wPuuXur
    # g9o7qnT0I4w2JI7O/mOoaiBZAvAjpxpOitQqIzd5iWwAEptaqZAeY9f7pIp+h/k7
    # T0MxyzCcPvKMeRpJm/Bhv3nus6HrtH6MaUIYT8d7RdDgIFTCOjyew4ZNYa550uT3
    # r8znTBBQ3wN40vZ8C5GmQZV92MREFIAQYhHN17ikROGD5ZPq6fgdvKGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTM2WjAjBgkqhkiG9w0BCQQxFgQUmqHsxG6fsA7509oX
    # lEKKTFsiNjMwDQYJKoZIhvcNAQEBBQAEggEAi9imRiwpyJCxEzJ5OIW0rbKFVmxW
    # OF29vYdXXtZ0OBk5BSutbEu4K9B20nEu/rw7V3ueFWL3I+k/Wk3raqtNiTcFXrjm
    # lYQgRDAV+9VdT2vlQ27/VDlyLvGkf6T4ZGNPOc343AE4MqRe4loN/k4bjRzmDGu4
    # JkMtJRzlFYHn/KntFFgyWBOPmObyMfxRlPxbPlJhw1Eppjm76U0HgR53quPv2Cva
    # x9zkcSZHFlyREhCeU1JGnCklyOhbXvLFMr56Q6QlCpBQOThFK+P+2YcCyK1RA2QO
    # n3zV4Ei8/VmJcznhiO69aLZoKWGfDEBj+nCCvV/eu1zbI5uwPIDYblgJEQ==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Resolve-VMPlugin.ps1 Show
    function Resolve-VMPlugin {
        [CmdletBinding()]
        [OutputType([BoxstarterConnectionConfig])]
        param(
            $Provider
        )
    
        DynamicParam {
            if($provider -eq $null -or $Provider.Length -eq 0){$provider="HyperV"}
            $unNormalized=(Get-Item "$PSScriptRoot\..\Boxstarter.$provider\Boxstarter.$provider.psd1")
            Import-Module $unNormalized.FullName -global -DisableNameChecking -Force -ErrorAction SilentlyContinue | Out-Null
            $module=Get-Module "Boxstarter.$provider"
            if($module) {
                $command = Get-Command "$module\Enable-BoxstarterVM"
                $metadata=New-Object System.Management.Automation.CommandMetaData($command)
                $paramDictionary = new-object `
                            -Type System.Management.Automation.RuntimeDefinedParameterDictionary
    
                $metadata.Parameters.Keys | % {
                    $param=$metadata.Parameters[$_]
                    $attr = $param.Attributes | ? { $_.TypeId -eq [System.Management.Automation.ParameterAttribute] }
                    $dynParam = new-object `
                            -Type System.Management.Automation.RuntimeDefinedParameter($param.Name, $param.ParameterType, $attr)
                    $paramDictionary.Add($param.Name, $dynParam)
                }
    
                return $paramDictionary
            }
        }
        Process{
            if($provider -eq $null -or $Provider.Length -eq 0){$provider="HyperV"}
            $module=Get-Module "Boxstarter.$provider"
            if($module) {
                $command = Get-Command "$module\Enable-BoxstarterVM"
                $PSBoundParameters.Remove("Provider") | Out-Null
                &($command) @PSBoundParameters
            }
        }
    }
    
    new-alias Enable-BoxstarterVM Resolve-VMPlugin -force
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDF6ivAzy3/4u4L
    # 5Y82C6yCxv2rZwd849Z2+y9CCQgEtqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgTc1gXvdNmdPrfrke2xu6JPS865CXwfxjnne6
    # DWd2BMAwDQYJKoZIhvcNAQEBBQAEggEANhDofxKftIv+TOchxh+AdFEQy87t2951
    # caI8S4MWjBMEaIa92/RtIAHXNEhkyn5ZGCRGEbCDQKdIhHlohXQzM7y8wTpjt/zs
    # jpQF67OhiuFnzlcaWNM5PvQ75IPLHSxEYuoeHL20cxIqgckdzdBnd/8LcyNecaoY
    # TCDdj+yMAmUSwPUo95Vmsq4LLB78cYhsKwb5zmo8FbysZg+TbAYeQzElb+18LJb6
    # sSsEG4sg++FUh/lKB4evAyjTHEldE4hIPLMWZHwWOubuPgigqCXKp/PsOrusvASe
    # QnZg8CC4bRm2Da88QRm4HbZh3Q5B2QusYtrAEfjVx5Yke3UF9x/OcqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTM1WjAjBgkqhkiG9w0BCQQxFgQUK3tWyuJXgRmW3XH0
    # 8tY4bzgo3EswDQYJKoZIhvcNAQEBBQAEggEASee0l3pXSIW6iYxJZml2Uv7L0QsQ
    # gWfgajHiUhf65GOtAx3W1bz/fcE/Hy39bPIvzrJXDwvgPAsAPuciIoDmBm+WuH0+
    # bgtpXtnCoaT0iNSigIjbNhoQtqYeFn/0hCHlcQEbMcoAYF4ErQLTW1n6H5FVmhUl
    # irZTfRtyDD9X2sUtVTWw/e/jN2mNaN5Wt4y4kpig84NvpDP4AtGvGMQR07/3Bacn
    # gEIyjRjL0R4+3TUcHBeoqHzo4sdmV26gzC2T+kJxQapBa+xL+FRLngcptZPI7M3w
    # O8c2HG+JEvOqNmnKRArvq7mXeUJaoWYxLTxskqmwUlunhSfilz7lTBs0aA==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\New-PackageFromScript.ps1 Show
    function New-PackageFromScript {
    <#
    .SYNOPSIS
    Creates a NuGet package from a Chocolatey script
    
    .DESCRIPTION
    This creates a .nupkg file from a script file. It adds a dummy nuspec
    and packs the nuspec and script to a NuGet package saved to
    $Boxstarter.LocalRepo. The function returns a string that is the
    Package Name of the package.
    
     .PARAMETER Source
     Either a file path or URI pointing to a resource containing a script.
    
     .PARAMETER PackageName
     The name of the package. If not provided, this will be "temp_BoxstarterPackage"
    
    .EXAMPLE
    $packageName = New-PackageFromScript myScript.ps1
    
    Creates a Package from the myScript.ps1 file in the current directory.
    
    .EXAMPLE
    $packageName = New-PackageFromScript myScript.ps1 MyPackage
    
    Creates a Package named "MyPackage" from the myScript.ps1 file in the current directory.
    
    .EXAMPLE
    $packageName = New-PackageFromScript c:\path\myScript.ps1
    
    Creates a Package from the myScript.ps1 file in c:\path\myScript.ps1.
    
    .EXAMPLE
    $packageName = New-PackageFromScript \\server\share\myScript.ps1
    
    Creates a Package from the myScript.ps1 file the share at \\server\share\myScript.ps1.
    
    .EXAMPLE
    $packageName = New-PackageFromScript https://gist.github.com/mwrock/6771863/raw/b579aa269c791a53ee1481ad01711b60090db1e2/gistfile1.txt
    
    Creates a Package from the gist located at
    https://gist.github.com/mwrock/6771863/raw/b579aa269c791a53ee1481ad01711b60090db1e2/gistfile1.txt
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    #>
        [CmdletBinding()]
    	param (
            [Parameter(Mandatory=1)]
            [string] $Source,
            [string] $PackageName="temp_BoxstarterPackage"
        )
    
        $chocoInstall = [System.Environment]::GetEnvironmentVariable('ChocolateyInstall', 'MACHINE')
        if($chocoInstall -eq $null) {
            # Simply Installs choco repo and helpers
            Call-Chocolatey
            $chocoInstall = [System.Environment]::GetEnvironmentVariable('ChocolateyInstall', 'MACHINE')
        }
        if($source -like "*://*"){
            try {$text = Get-HttpResource -url $Source -passthru } catch{
                throw "Unable to retrieve script from $source `r`nInner Exception is:`r`n$_"
            }
        }
        else {
            if(!(Test-Path $source)){
                throw "Path $source does not exist."
            }
            $text=Get-Content $source
        }
    
        if(Test-Path "$($boxstarter.LocalRepo)\$PackageName"){
            Remove-Item "$($boxstarter.LocalRepo)\$PackageName" -recurse -force
        }
        New-BoxstarterPackage $PackageName -quiet | Out-Null
        Set-Content "$($boxstarter.LocalRepo)\$PackageName\tools\ChocolateyInstall.ps1" -value $text
        Invoke-BoxstarterBuild $PackageName -quiet
    
        Write-BoxstarterMessage "Created a temporary package $PackageName from $source in $($boxstarter.LocalRepo)"
        return $PackageName
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBF7DXLWlbaKX2n
    # jAvFRHYQMLoNVyFV5lEddu3Mt9xFU6CCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgWULofV0Xb1jy2x4JsVN4JUznSj8CqQYyQdmT
    # Je+UhkwwDQYJKoZIhvcNAQEBBQAEggEAVzbBExAIRq79Hxq9bF97Sb0GqD7WT2y/
    # 07gREFQxLU6cWV1w48PPhckeF6fPEJoSBS/g4SFRfxBSUJStzuJeMHM4k/RA8ndB
    # B7T7jzmv74E07LxcPuuv8sSs/zJ43Tkynx/NKnnWIgrEbygJmvcCM5u67W5U+b3R
    # UGpFlySRf0YBwOEC5XBuuItAAkEpmVgIKQhyH3jP0k68ipz6/eZX4ATcHEwkmVT4
    # vsKzsF132e12zpP2n8ytIcuWyjbeon7suLLUjHHLOOeG2zg+g8MXcVU1Nilku+WZ
    # ory+x3HHImZa6lajqx1oK8LWz8HudCUhFURsWb1/6illva9UYITXP6GCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTMzWjAjBgkqhkiG9w0BCQQxFgQUdR4c2frlpobhIlmW
    # oTOs9JsiAPEwDQYJKoZIhvcNAQEBBQAEggEAX43XkXilTTnk9krl3AyPu/i/py7H
    # k/zs+fKxYAgZ0eomfsBLMKdZEKacL5LlzfYqmvPGfPWsP4CnL6quPgwloF1JBNFc
    # QXC+fMVhQPu+dlOIDHlwJK7VXJ2kUsws1SWUGVi1AwJhJqkglwx+evzQYky2DOB4
    # Z1NBmd7+jyh7F18+n5ArxYlN8vAVWdcTzzQmzEIoA1TfARwP1qI35PFvaapyqxxQ
    # 7crFY8CeMjdEwY5HSTTB164NgkNbgecHzlsq2DMAO5H9h84BnGwVxnHDWrPMuCHh
    # 7MpQcRlolwd7oc+QnJNMWEz77AHwkx0VnznOWsa6nBhu8oDs3NhjMvoRNw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\New-BoxstarterPackage.ps1 Show
    function New-BoxstarterPackage {
    <#
    .SYNOPSIS
    Creates a new Chocolatey package source directory intended for a Boxstarter Install
    
    .DESCRIPTION
    New-BoxstarterPackage creates a new Directory in your local
    Boxstarter repository located at $Boxstarter.LocalRepo. If no path is
    provided, Boxstarter creates a minimal nuspec and
    ChocolateyInstall.ps1 file. If a path is provided, Boxstarter will
    copy the contents of the path to the new package directory. If the
    path does not include a nuspec or ChocolateyInstall.ps1, Boxstarter
    will create one. You can use Invoke-BoxstarterBuild to pack the
    repository directory to a Chocolatey nupkg. If your path includes
    subdirectories, you can use Get-PackageRoot inside
    ChocolateyInstall.ps1 to reference the parent directory of the copied
    content.
    
    .PARAMETER Name
    The name of the package to create
    
    .PARAMETER Description
    Description of the package to be written to the nuspec
    
    .PARAMETER Path
    Optional path whose contents will be copied to the repository
    
    .LINK
    https://boxstarter.org
    New-PackageFromScript
    about_boxstarter_chocolatey
    about_boxstarter_variable_in_chocolatey
    Invoke-BoxstarterBuild
    Get-PackageRoot
    #>
        [CmdletBinding()]
        param(
            [string]$Name,
            [string]$description,
            [string]$path,
            [switch]$quiet
        )
        if(!$boxstarter -or !$boxstarter.LocalRepo){
            throw "No Local Repository has been set in `$Boxstarter.LocalRepo."
        }
        if(!($name -match "^\w+(?:[_.-]\w+)*$") -or ($name.length -gt 100)){
            throw "Invalid Package ID"
        }
        $pkgDir = Join-Path $Boxstarter.LocalRepo $Name
        if(test-path $pkgDir) {
            throw "A LocalRepo already exists at $($boxstarter.LocalRepo)\$name. Delete the directory before calling New-BoxstarterPackage"
        }
        MkDir $pkgDir | out-null
        Pushd $pkgDir
        if($path){
            if(!(test-path $Path)){
                popd
                throw "$path could not be found"
            }
            if(test-path "$Path\$Name.nuspec") {
                Copy-Item "$path\*" . -recurse
            }
            else { Copy-Item $path . -recurse }
        }
        $pkgFile = Join-Path $pkgDir "$name.nuspec"
        if(!(test-path $pkgFile)){
            $nuspec = @"
    <?xml version="1.0"?>
    <package >
      <metadata>
        <id></id>
        <version>1.0.0</version>
        <authors></authors>
        <owners></owners>
        <description>Package description</description>
        <tags>Tag1 Tag2</tags>
      </metadata>
    </package>
    "@
    
            Invoke-RetriableScript {
                [xml]$xml = $args[1]
                $metadata = $xml.package.metadata
                # Why ToString()? I have no idea but psv2 breaks without it
                # What I do know is I can't wait for psv2 to die
                $metadata.id = $args[2].ToString()
                if($args[3]){$metadata.Description=$args[3]}
                $metadata.authors = $env:USERNAME
                $metadata.owners = $env:USERNAME
                $metadata.tags="Boxstarter"
                $xml.Save($args[0])
            } $pkgFile $nuspec $Name $description
        }
        if(!(test-path "tools")){
            Mkdir "tools" | out-null
        }
        [email protected]"
    try {
    
        Write-ChocolateySuccess '$name'
    } catch {
      Write-ChocolateyFailure '$name' `$(`$_.Exception.Message)
      throw
    }
    "@
        if(!(test-path "tools\ChocolateyInstall.ps1")){
            new-Item "tools\ChocolateyInstall.ps1" -type file -value $installScript| out-null
        }
        Popd
    
        if(!$quiet){
            Write-BoxstarterMessage "A new Chocolatey package has been created at $pkgDir." -nologo
            Write-BoxstarterMessage "You may now edit the files in this package and build the final .nupkg using Invoke-BoxstarterBuild." -nologo
        }
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCHUd2ifG2dVH2r
    # fNGCEu/h4QtePrnWHIXwpFn7KSKQgaCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgt8j0psz9IqYaR4OggWtPOc0DJ4l31in1d/Ks
    # o/fYE9owDQYJKoZIhvcNAQEBBQAEggEAIyckvTjHkmEmXlw0ncWRy3QwBZORvQ1L
    # e2qsJz8kqTf66bYkvovXvU2oTSDiwkZKMVC0o6jZ11kMmClF5F0s5Nvo6w7PHIbD
    # sLDh2HFRw1NaP7bY7i5dnVQ9IY/+kY09PWBAVFynRHOBY5to43Hy4R/7tMDCePlk
    # /3mrSahIktwNoMKpyRCal2BW1V7dLrT0Xc9HasTYXha4MWnXMSv7Zgng37i5SmNt
    # L8N8W/JA78zIdCJTiDX/7Xp6X2JJgsppY28dUTfDQT7B4OL45n/tmJpmN903Sepj
    # azyR1Z2xyAR76YMFwc94+9Qcph4XrLHV7bpixLMzXq+yf8PQhCAPt6GCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTMyWjAjBgkqhkiG9w0BCQQxFgQUl6dIFDGKeHnmDzix
    # vc+FQokv6OIwDQYJKoZIhvcNAQEBBQAEggEAcEBKBcj9fFJ0h2uy74Jhjsok+7C7
    # IyORqRJY3Qtl5jn7NnsBXKIF/5Veb2HmbhTtOEIIvcNqtlJo4d2YOKIYA5IqD1lw
    # in5eFsxMD7eulio7ADlUYHZbhF9pZ2m1ARZE6CQ4iTr3ud/ROq80nQf8tqkvM/Rh
    # f7Tv4IAV3iZfZndsWEZ8VaGQPbPQOOLEkB/m9L52TU3DcukyZqy2VTVcBhNN5Sjr
    # 4biXU6Kdh16A2wo6XdRsqcSv7j0C2tqp/34P7BRQWFXU+9m9axqimWQKVV9h4c2+
    # reC7/zx4L6QGdk6kUm1K06S04g6nasbVGb2BxNWas2UfbMbOkK5QB1awHw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Invoke-ChocolateyBoxstarter.ps1 Show
    function Invoke-ChocolateyBoxstarter{
    <#
    .SYNOPSIS
    Invokes the installation of a Boxstarter package
    
    .DESCRIPTION
    This essentially wraps Chocolatey Install and provides these additional features
     - Installs Chocolatey if it is not already installed
     - Installs the .net 4.5 framework if it is not installed which is a Chocolatey requirement
     - Disables windows update service during installation to prevent installation conflicts and minimize the need for reboots
     - Imports the Boxstarter.WinConfig module that provides functions for customizing windows
     - Detects pending reboots and restarts the machine when necessary to avoid installation failures
     - Provides Reboot Resiliency by ensuring the package installation is immediately restarted up on reboot if there is a reboot during the installation.
     - Ensures everything runs under administrator permissions
    
     The .nupkg file for the provided package name is searched in the following locations and order:
     - .\BuildPackages relative to the parent directory of the module file
     - The Chocolatey community feed
     This can be configured by editing $($Boxstarter.BaseDir)\Boxstarter.Config
    
     If the package name provided is a URL or resolves to a file. Then
     it is assumed that this contains the Chocolatey install script and
     a .nupkg file will be created using the script.
    
     .PARAMETER BootstrapPackage
     The names of one or more NuGet Packages to be installed or URIs or
     file paths pointing to a Chocolatey script. If using package names,
     the .nupkg file for the provided package names are searched in the
     following locations and order:
     - .\BuildPackages relative to the parent directory of the module file
     - The Chocolatey community feed
    
    .Parameter LocalRepo
    This is the path to the local boxstarter repository where boxstarter
    should look for .nupkg files to install. By default this is located
    in the BuildPackages directory just under the root Boxstarter
    directory but can be changed with Set-BoxstarterConfig.
    
    .PARAMETER DisableReboots
    If set, reboots are suppressed.
    
    .PARAMETER Password
    User's password as a Secure string to be used for reboot autologon's.
    This will suppress the password prompt at the beginning of the
    Boxstarter installer.
    
    .PARAMETER KeepWindowOpen
    Enabling this switch will prevent the command window from closing and
    prompt the user to pres the Enter key before the window closes. This
    is ideal when not invoking boxstarter from a console.
    
    .PARAMETER NoPassword
    When set, Boxstarter will never prompt for logon. Use this if using
    an account without password validation.
    
    .NOTES
    If specifying only one package, Boxstarter calls Chocolatey with the
    -force argument and deletes the previously installed package directory.
    This means that regardless of whether or not the package had been
    installed previously, Boxstarter will attempt to download and reinstall it.
    This only holds true for the outer package. If the package contains calls
    to CINST for additional packages, those installs will not reinstall if
    previously installed.
    
    If an array of package names are passed to Invoke-ChocolateyBoxstarter,
    Boxstarter will NOT apply the above reinstall logic and will skip the
    install for any package that had been previously installed.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter "example1","example2"
    
    This invokes boxstarter and installs the example1 and example2 .nupkg
    files. If pending reboots are detected, boxstarter will restart the
    machine. Boxstarter will prompt the user to enter a password which will
    be used for automatic logins in the event a restart is required.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter https://gist.github.com/mwrock/6771863/raw/b579aa269c791a53ee1481ad01711b60090db1e2/gistfile1.txt
    
    This invokes boxstarter and installs the script uploaded to the github gist.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter script.ps1
    
    This invokes boxstarter and installs the script located at script.ps1
    in the command line's current directory.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter \\server\share\script.ps1
    
    This invokes boxstarter and installs the script located at the
    specified share.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter win8Install -LocalRepo \\server\share\boxstarter
    
    This installs the Win8Install .nupkg and specifies that it is OK to
    reboot the machine if a pending reboot is needed. Boxstarter will look
    for the Win8Install .nupkg file in the \\serer\share\boxstarter
    directory.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter example -Password (ConvertTo-SecureString "mypassword" -AsPlainText -Force)
    
    This installs the example package and uses "mypassword" for any reboot
    autologon's. The user is now not prompted for a password.
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    about_boxstarter_variable_in_chocolatey
    Set-BoxstarterConfig
    #>
        [CmdletBinding()]
        param(
          [string[]]$BootstrapPackage=$null,
          [string]$LocalRepo,
          [switch]$DisableReboots,
          [System.Security.SecureString]$Password,
          [switch]$KeepWindowOpen,
          [switch]$NoPassword,
          [switch]$DisableRestart
        )
        try{
            if($DisableReboots){
                Write-BoxstarterMessage "Disabling reboots" -Verbose
                $Boxstarter.RebootOk=$false
            }
            if($Boxstarter.ScriptToCall -eq $null){
                if($bootstrapPackage -ne $null -and $bootstrapPackage.length -gt 0){
                    write-BoxstarterMessage "Installing package $($bootstrapPackage -join ', ')" -Color Cyan
                }
                else{
                    write-BoxstarterMessage "Installing Chocolatey" -Color Cyan
                }
                [email protected]{}
                if($bootstrapPackage){$scriptArgs.bootstrapPackage=$bootstrapPackage}
                if($LocalRepo){$scriptArgs.Localrepo=$localRepo}
                if($DisableReboots){$scriptArgs.DisableReboots = $DisableReboots}
                [email protected]"
    Import-Module (Join-Path "$($Boxstarter.baseDir)" BoxStarter.Chocolatey\Boxstarter.Chocolatey.psd1) -global -DisableNameChecking;
    Invoke-ChocolateyBoxstarter $(if($bootstrapPackage){"-bootstrapPackage '$($bootstrapPackage -join ''',''')'"}) $(if($LocalRepo){"-LocalRepo $localRepo"})  $(if($DisableReboots){"-DisableReboots"})
    "@
                Invoke-Boxstarter ([ScriptBlock]::Create($script)) -RebootOk:$Boxstarter.RebootOk -password $password -KeepWindowOpen:$KeepWindowOpen -NoPassword:$NoPassword -DisableRestart:$DisableRestart
                return
            }
            if(${env:ProgramFiles(x86)} -ne $null){ $programFiles86 = ${env:ProgramFiles(x86)} } else { $programFiles86 = $env:ProgramFiles }
            $Boxstarter.ProgramFiles86="$programFiles86"
            $Boxstarter.LocalRepo=Resolve-LocalRepo $localRepo
            if($bootstrapPackage -ne $null){
                Download-Package $bootstrapPackage
            }
        }
        finally {
            $Boxstarter.ScriptToCall = $null
        }
    }
    
    function Resolve-LocalRepo([string]$localRepo) {
        if($localRepo){
            $localRepo = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($localRepo)
        } else {$Localrepo = $Boxstarter.Localrepo}
        write-BoxstarterMessage "LocalRepo is at $localRepo" -Verbose
        return $localRepo
    }
    
    function Download-Package([string[]]$bootstrapPackage) {
        $BootstrapPackage = $BootstrapPackage | % {
            if($_ -like "*://*" -or (Test-Path $_ -PathType Leaf)){
                New-PackageFromScript -Source $_ -PackageName $( split-path -leaf ([System.IO.Path]::GetTempFileName()))
            }
            else {
                $_
            }
        }
        $Boxstarter.Package=$bootstrapPackage
        $force=$false
        if($bootstrapPackage.Count -eq 1){
            Write-BoxstarterMessage "Deleting previous $bootstrapPackage package" -Verbose
            $chocoRoot = $env:ChocolateyInstall
            if($chocoRoot -eq $null) {
                $chocoRoot = "$env:programdata\chocolatey"
            }
            if(Test-Path "$chocoRoot\lib"){
                @(
                    "$chocoRoot\lib\$bootstrapPackage.*",
                    "$chocoRoot\lib\$bootstrapPackage"
                ) | % {
                    if(Test-Path $_){
                        del $_ -recurse -force -ErrorAction SilentlyContinue
                        Write-BoxstarterMessage "Deleted $_" -verbose
                    }
                }
            }
            $force=$true
        }
        $source = "$($Boxstarter.LocalRepo);$((Get-BoxstarterConfig).NugetSources)"
        write-BoxstarterMessage "Installing $($bootstrapPackage.Count) packages from $source" -Verbose
        Chocolatey install $bootstrapPackage -source $source -force:$force -execution-timeout 86400
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBzBcNbRwdgNRpj
    # JwIRYmCClHc+/XEQkEamMyfuV0mqjqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgA2QhTUzJtFb1bSy9OdXrAIxErwGTVMGPAFp1
    # c7z1dskwDQYJKoZIhvcNAQEBBQAEggEALWoGXiMAtxoP+/imhbyrHteAIesPJUYt
    # eqnLc2brCatd6xKFPDEdQOGaL/xe4Ic/IQnB5xUkKqnda2igWqcf9QVnc7riSP19
    # TeoVxcbSArvC0kIch3CRxMPogayS0t2AgL2Dg6C2NtM2mP3lRt71UicfcMGsKKO2
    # rTwCcRfa4vY/+62YvEHWNQ3IZqoyfsZhKyNTZG+FUpmPHBksvdOiXI7Yitj59Nmt
    # LCyhLzbMHpUAzNYgYym5UhYHcgJlEt/afYMGPr6To/YLTOoRLqJ7G/0W+skx8+4I
    # RCKqaeDM+5DlYWag/bQ3+yp0CU0cO5sMgcBFc8wUiJzNvzHYiKcGpqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTMwWjAjBgkqhkiG9w0BCQQxFgQUKZJ9/4ep9dMCMd0n
    # 6vsDHFJtouQwDQYJKoZIhvcNAQEBBQAEggEAcjXy2GwEYrUZrmsvu0ku1IePlYIV
    # Mhw+8dvzdDqlOMO46GH+8MG+5ha3anDZpmEgjvLYX/WyT19dz2h4hW7Yf2e79AF2
    # I01i0E3mgoknWoJfvyO0JZ1TLY7fELWbdkjfI/NbW+uStI5CyAxl3Namn2Pb2XeM
    # Ba0kA7TNI3kqQuPwiT853O8CH0hSBjlgli0cD9DqchzdordHi+bNesNlKp1fR9YW
    # hAcBZA1bQ6IG9bkk6ZF6MM9VAWKb9Cc57jyD4M8x0eKimh/kZxJFE401aXucujg6
    # fni2tSquVHBkIGSG+HOZx6dh42JTPD5jA78q6uuG8NCJCQuwFOkS9Suq0A==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\invoke-chocolatey.ps1 Show
    function Invoke-Chocolatey($chocoArgs) {
        Write-BoxstarterMessage "Current runtime is $($PSVersionTable.CLRVersion)" -Verbose
        $refs = @(
            "$($Boxstarter.BaseDir)/boxstarter.chocolatey/chocolatey/log4net.dll",
            "$($Boxstarter.BaseDir)/boxstarter.chocolatey/chocolatey/chocolatey.dll"
        )
        $refs | % {
            Write-BoxstarterMessage "Adding types from $_" -Verbose
            if($env:TestingBoxstarter) {
                Write-BoxstarterMessage "loading choco bytes" -Verbose
                [System.Reflection.Assembly]::Load([io.file]::ReadAllBytes($_))
            }
            else {
                Write-BoxstarterMessage "loading choco from path" -Verbose
                Add-Type -Path $_
            }
        }
        $cpar = New-Object System.CodeDom.Compiler.CompilerParameters
        $cpar.ReferencedAssemblies.Add([System.Reflection.Assembly]::Load('System.Management.Automation').location) | Out-Null
        $refs | % { $cpar.ReferencedAssemblies.Add($_) | Out-Null }
        Write-BoxstarterMessage "Adding boxstarter choco wrapper types..." -Verbose
        Add-Type @"
    namespace Boxstarter
    {
        using chocolatey;
        using chocolatey.infrastructure.app.services;
        using chocolatey.infrastructure.filesystem;
        using chocolatey.infrastructure.logging;
        using System;
        using System.IO;
        using System.Management.Automation.Host;
    
        public class ChocolateyWrapper
        {
            private static GetChocolatey _choco;
    
            public ChocolateyWrapper(string boxstarterSetup, PSHostUserInterface ui, bool logDebug, bool logVerbose, string logPath, bool quiet) {
                if (_choco == null) {
                    _choco = Lets.GetChocolatey();
                    var psService = new PowershellService(new DotNetFileSystem(), boxstarterSetup);
                    _choco.RegisterContainerComponent<IPowershellService>(() => psService);
                }
                _choco.SetCustomLogging(new PsLogger(ui, logDebug, logVerbose, logPath, quiet));
            }
    
            public void Run(string[] args) {
                _choco.RunConsole(args);
            }
        }
    
        public class PsLogger : ILog
        {
            private PSHostUserInterface _ui;
            private string _path;
            private bool _logDebug;
            private bool _logVerbose;
            private bool _quiet;
    
            public PsLogger(PSHostUserInterface ui, bool logDebug, bool logVerbose, string path, bool quiet)
            {
                _ui = ui;
                _logDebug = logDebug;
                _logVerbose = logVerbose;
                _path = path;
                _quiet = quiet;
            }
    
            public void InitializeFor(string loggerName)
            {
            }
    
            public void Debug(string message, params object[] formatting)
            {
                WriteLog(
                    message,
                    x => { if(_logDebug) _ui.WriteDebugLine(x); },
                    formatting
                );
            }
    
            public void Debug(Func<string> message)
            {
                WriteLog(
                    message,
                    x => { if(_logDebug) _ui.WriteDebugLine(x); }
                );
            }
    
            public void Info(string message, params object[] formatting)
            {
                WriteLog(
                    message,
                    x => {
                            if(x.Trim().StartsWith("Boxstarter: ") || x.Replace("+","").Trim().StartsWith("Boxstarter ")){
                                _ui.RawUI.ForegroundColor = ConsoleColor.Green;
                            }
                            else {
                                _ui.RawUI.ForegroundColor = ConsoleColor.White;
                            }
                            if(x.Trim().StartsWith("VERBOSE: ")) {
                                if(_logVerbose) _ui.WriteVerboseLine(x);
                            }
                            else {
                                _ui.WriteLine(x);
                            }
                        },
                    formatting
                );
            }
    
            public void Info(Func<string> message)
            {
                WriteLog(
                    message,
                    x => {
                            if(x.Trim().StartsWith("Boxstarter: ") || x.Replace("+","").Trim().StartsWith("Boxstarter ")){
                                _ui.RawUI.ForegroundColor = ConsoleColor.Green;
                            }
                            else {
                                _ui.RawUI.ForegroundColor = ConsoleColor.White;
                            }
                            if(x.Trim().StartsWith("VERBOSE: ")) {
                                if(_logVerbose) _ui.WriteVerboseLine(x);
                            }
                            else {
                                _ui.WriteLine(x);
                            }
                        }
                );
            }
    
            public void Warn(string message, params object[] formatting)
            {
                WriteLog(
                    message,
                    x => {
                            _ui.RawUI.ForegroundColor = ConsoleColor.Yellow;
                            _ui.WriteLine(x);
                        },
                    formatting
                );
            }
    
            public void Warn(Func<string> message)
            {
                WriteLog(
                    message,
                    x => {
                            _ui.RawUI.ForegroundColor = ConsoleColor.Yellow;
                            _ui.WriteLine(x);
                        }
                );
            }
    
            public void Error(string message, params object[] formatting)
            {
                WriteLog(
                    message,
                    x => _ui.WriteErrorLine(x),
                    formatting
                );
            }
    
            public void Error(Func<string> message)
            {
                WriteLog(
                    message,
                    x => _ui.WriteErrorLine(x)
                );
            }
    
            public void Fatal(string message, params object[] formatting)
            {
                WriteLog(
                    message,
                    x => _ui.WriteErrorLine(x),
                    formatting
                );
            }
    
            public void Fatal(Func<string> message)
            {
                WriteLog(
                    message,
                    x => _ui.WriteErrorLine(x)
                );
            }
    
            private void WriteLog(string message, Action<String> logAction, params object[] formatting)
            {
                WriteFormattedLog(() => String.Format(message, formatting), logAction);
            }
    
            private void WriteLog(Func<string> message, Action<String> logAction)
            {
                WriteFormattedLog(() => message.Invoke(), logAction);
            }
    
            private void WriteFormattedLog(Func<string> formatMessage, Action<String> logAction)
            {
                if(_quiet) return;
                var origColor = _ui.RawUI.ForegroundColor;
                try {
                    var msg = formatMessage.Invoke();
                    logAction.Invoke(msg);
                    WriteRaw(msg);
                }
                catch(Exception e) {
                    WriteRaw(e.ToString());
                }
                finally{
                    _ui.RawUI.ForegroundColor = origColor;
                }
            }
    
            private void WriteRaw(string message)
            {
                if(String.IsNullOrEmpty(_path))
                    return;
                try {
                    using (FileStream fs = new FileStream(_path, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
                    {
                        using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
                        {
                            sw.WriteLine(message);
                        }
                    }
                }
                catch(Exception e)
                {
                    _ui.WriteErrorLine(e.ToString());
                }
            }
        }
    }
    "@ -CompilerParameters $cpar
        Write-BoxstarterMessage "Types added..." -Verbose
    
        if(!$env:ChocolateyInstall) {
            [System.Environment]::SetEnvironmentVariable('ChocolateyInstall', "$env:programdata\chocolatey", 'Machine')
            $env:ChocolateyInstall = "$env:programdata\chocolatey"
        }
    
        if(!(Test-Path "$env:ChocolateyInstall\lib")) {
            mkdir "$env:ChocolateyInstall\lib" | Out-Null
        }
    
        if(!$global:choco) {
            Write-BoxstarterMessage "instantiating choco wrapper..." -Verbose
            $global:choco = New-Object -TypeName boxstarter.ChocolateyWrapper -ArgumentList `
              (Get-BoxstarterSetup),`
              $host.UI,`
              ($global:DebugPreference -eq "Continue"),`
              ($global:VerbosePreference -eq "Continue"),`
              $boxstarter.log,`
              $boxstarter.SuppressLogging
        }
    
        Enter-BoxstarterLogable {
            Write-BoxstarterMessage "calling choco now with $chocoArgs" -Verbose
            $cd = [System.IO.Directory]::GetCurrentDirectory()
            try {
                # Chocolatey.dll uses GetCurrentDirectory which is not quite right
                # when calling via PowerShell. so we set it here
                Write-BoxstarterMessage "setting current directory location to $((Get-Location).Path)" -Verbose
                [System.IO.Directory]::SetCurrentDirectory("$(Convert-Path (Get-Location).Path)")
                $choco.Run($chocoArgs)
            }
            finally {
                Write-BoxstarterMessage "restoring current directory location to $cd" -Verbose
                [System.IO.Directory]::SetCurrentDirectory($cd)
            }
        }
    }
    
    function Get-BoxstarterSetup {
    "Import-Module '$($boxstarter.BaseDir)\Boxstarter.chocolatey\Boxstarter.chocolatey.psd1' -DisableNameChecking -ArgumentList `$true"
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCCZ8QMThBlNufU
    # +7tiHEXDysOxsy7td+SgmMgfrKU3FqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgPA7EOzrLkbutk7N0mQf9E00G352gffn10YSP
    # dZEP1DkwDQYJKoZIhvcNAQEBBQAEggEAB10s2H8djqfmpEiCOony76ecjK372wdC
    # uwK/4pBeuoa66YDA0bUNxI6WjfRRTO3R9EmnaRzjRnKcrroScpZAlJLdhvzLZI1y
    # VzgvByJN3fnQ8h75A+s0EP7fcG55sPkoeu5XCJGIJFp0J2b8iEmIk5S0VCi7EjWh
    # nsUsOVJt3mb5TgXApSc9kI2fuKWxSAw4W06PtIZB7Cqgmtu7LHWUSjfOonj+Jo7j
    # DkP3yCSgIVBOeFMjqZ5w+ZWJ/xCpiOO73Z6Fx/ddVOHih+XDestvtKZQg99FZ70j
    # zn/DCobkgtRlb75M7WKIlw30NXsbOVFRGPxoAxE22ADR8edSoFO5zqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTI5WjAjBgkqhkiG9w0BCQQxFgQU12c5O1dgx6dl71hS
    # F4bGOY6YvoQwDQYJKoZIhvcNAQEBBQAEggEAX8Up1hXxwlfQ2S8I0P4hP9Hu6CXr
    # nUQR2OCC3JT+L01lSkXg/TAFTgUQMQdgruPaIO0/utuUlBBO2PbmB3VqeTclXe0O
    # zM9y3ZbxEWvzLgoZmUsJYDQOO+9/D3SP4OhnsGUWp8FU6BJGzoq9/pr9Dnur8F6V
    # UQv0TfKGXHQ7g7gU32rTkSBknK3/d3W2jiy0WY2YrSeDwWZIbSPD1MTLxJTKhTqH
    # axAcqGcevk7/6zRltNnPCEftl+4ocA+4+vMUMw7BzswSmeTnIZvLMio9Hvm55p0l
    # TCu/fViwA36dv0pxegV5YELZ5ZwCWjkKTQP5r/PL4nWjy9JjtXimpgYISw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Invoke-BoxstarterFromTask.ps1 Show
    function Invoke-BoxstarterFromTask($Command) {
    <#
    .SYNOPSIS
    Runs the normal Chocolatey command as a scheduled task.
    
    .DESCRIPTION
    Creates the script necessary for a scheduled task to run the given command. The scheduled
    task will run immediately.
    
    .PARAMETER Command
    A Chocolatey command to execute within a scheduled task. For example "cinst fiddler".
    
    .EXAMPLE
    A Chocolatey command
    
    Invoke-BoxstarterFromTask "cinst rsat"
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    about_boxstarter_variable_in_chocolatey
    Invoke-Chocolatey
    #>
        Invoke-FromTask @"
            Import-Module $($boxstarter.BaseDir)\boxstarter.chocolatey\Boxstarter.chocolatey.psd1 -DisableNameChecking
            $(Serialize-BoxstarterVars)
            `$global:Boxstarter.Log = `$null
            `$global:Boxstarter.DisableRestart = `$true
            Export-BoxstarterVars
            `$env:BoxstarterSourcePID = $PID
            . $Command
    "@ -DotNetVersion "v4.0.30319"
    }
    
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAnueo79cSQt1PZ
    # E1iW/CIKHIkIEJDQIdGqTmwzVqbmJ6CCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgzAIc2fJIgsiR2YOp5eV22KqoFQeFOgU3h26Y
    # 29ra78EwDQYJKoZIhvcNAQEBBQAEggEAsnh7jTr+1mLnpRcn21ybaNuskJmpn6vj
    # 26UugSbKGLjrmkmZFc5a0AeyWE9lJRW8oPjb0XitxsidyXQ6dfEFNxzaQH4l3cW7
    # 576CGjDN4fGjDmmqTcpn/iB6SswX8rh9UNbUkkLng2pl1HNWP0cqmRp2oYOl27+K
    # 9mVe+qSuc6FKyDVgEXr98krb8HLT6BZevcAD8IogQ/TJ9LlpzcwCn9mETWJjbpqf
    # tNhZa/bvoCOrm0UcocJhcKsdqw7V3k9rviUx0G0olD/gK6dJlSdDR8NMU9Ai16cr
    # 1VjJn2pRoo64+9PWbUCwF+YmG+pVCesOihdP4XO3TtW9Ayo2oio616GCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTI4WjAjBgkqhkiG9w0BCQQxFgQUO98SBvKII3mjIWMy
    # VyeduPu+q+MwDQYJKoZIhvcNAQEBBQAEggEAO92uTEt8UpaZKJvP7OKJLDuUf57Y
    # FH9l9CrTF8+Y+58VZ5nDB7z4iIhM6vFMt+DL6Xk1zF8/06mjgGOEVYEl4HXOvMXG
    # jZ9O9yQ9pyN8khMT3yEEv93/Y6PwI6aXTu+MX4fcIqpA5war8FKKBKvStHSvU2x1
    # /XkjUGh5NWv+zwOApw+nUqsSzT/PppWM1VWT5NzWVhij0Fcl+oUSPninHAKF2alH
    # /HWYvh3Juh4LgiF9P+MwG6qJ3Ptr7H//hnA6ixKUXyvPJNsBtQY0ebWaQU2bKxoy
    # ChTn97nVZ/q1ac+dfYmyoZUK74Ofp5lYLU3bYmTBISOOA4YBcK9R++UKHw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Invoke-BoxstarterBuild.ps1 Show
    function Invoke-BoxStarterBuild {
    <#
    .SYNOPSIS
    Packs a specific package or all packages in the Boxstarter Repository
    
    .DESCRIPTION
    Invoke-BoxStarterBuild packs either a single package or all packages
    in the local repository. The packed .nupkg is placed in the root of
    the LocalRepo and is then able to be consumed by
    Invoke-ChocolateyBoxstarter.
    
    .PARAMETER Name
    The name of the package to pack
    
    .PARAMETER All
    Indicates that all package directories in the repository should be packed
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    Invoke-BoxstarterBuild
    New-BoxstarterPackage
    #>
        [CmdletBinding()]
        param(
            [Parameter(Position=0,ParameterSetName='name')]
            [string]$name,
            [Parameter(Position=0,ParameterSetName='all')]
            [switch]$all,
            [switch]$quiet
        )
        if(!$boxstarter -or !$boxstarter.LocalRepo){
            throw "No Local Repository has been set in `$Boxstarter.LocalRepo."
        }
        pushd $Boxstarter.LocalRepo
        try{
            if($name){
                $searchPath = join-path $name "$name.nuspec"
                Write-BoxstarterMessage "Searching for $searchPath" -Verbose
                if(!(Test-Path $searchPath)){
                    throw "Cannot find $($Boxstarter.LocalRepo)\$searchPath"
                }
                Call-Chocolatey Pack (join-path $name "$name.nuspec") | out-null
                if(!$quiet){
                    Write-BoxstarterMessage "Your package has been built. Using Boxstarter.bat $name or Install-BoxstarterPackage $name will run this package." -nologo
                }
            } else {
                 if($all){
                    Write-BoxstarterMessage "Scanning $($Boxstarter.LocalRepo) for package folders"
                    Get-ChildItem . | ? { $_.PSIsContainer } | % {
                        $directoriesExist=$true
                        Write-BoxstarterMessage "Found directory $($_.name). Looking for $($_.name).nuspec"
                        if(Test-Path (join-path $_.name "$($_.name).nuspec")){
                            Call-Chocolatey Pack (join-path . "$($_.Name)\$($_.Name).nuspec") | out-null
                            if(!$quiet){
                                Write-BoxstarterMessage "Your package has been built. Using Boxstarter.bat $($_.Name) or Install-BoxstarterPackage $($_.Name) will run this package." -nologo
                            }
                        }
                    }
                    if($directoriesExist -eq $null){
                        Write-BoxstarterMessage "No Directories exist under $($boxstarter.LocalRepo)"
                    }
                }
            }
        }
        finally {
            popd
        }
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA55V2rxvGA7LQw
    # 0TgQlZX/abOpbID1YVQEGOQ0FIMIXqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQg73ROx3Pvncr1u57c6Bn3/SteM+wRV64EVU/h
    # 2JW5RcwwDQYJKoZIhvcNAQEBBQAEggEATT/+PC4QoxJh43MShMKAti5CAuzOmm5v
    # bTQHc+RD87qRY+dt/90m/Nwh0JkweGtXbSA6js8Sgf53AXBUpLZx6YsKOcKnMIhH
    # Lvhuj592jIp6l2rFUsa0uH5XmIua4F8UA8GB8rhfCWfJVUx2Z672kD1dmUtGxSTR
    # ukaZdRVV9R7XPhTr4r9pxMh+VvbPb8UfoYFW/Xn7KMMvdQkGBbANBDTJnjN2uIVI
    # FM6qCVFT3mDeSncg6MPmzl+WheYjO6oGcZmlIRzV+5klKZR8R0f3LrTpjnsVQohA
    # NhpOwofGdwMI0QRIzx/6b6+0SNFwbAVLuKEht7ODMZi6oza9ycnMaaGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTI3WjAjBgkqhkiG9w0BCQQxFgQUHMHPULSMo4cpADv3
    # pGXSag308EEwDQYJKoZIhvcNAQEBBQAEggEAeaS4rn91Oif0s+b1FLSqmuY5JF+e
    # q9+NCdV9qUADLOz0v4bLoH6gq/X78ZhS55KJV/5l+gvg5nBj+JKpDB6iqV8N7tMm
    # yJw/z6Y84TMC92myN1IPbcxnwhe3iitTVQMxgvWeikRksaZlXNFagcciyNj1GrlS
    # zNlskRUN1xtNWMDrTC2zHQtGaxuNcs4CUPy5vCcU86/E2vMEm6Ojh36goUzYvUBS
    # eKdCjkZjHU8ZE3GA/tbQUl54U2qJgyDiMa0kB3h89OcFaOhH29A0s6USJCrbUCNo
    # qzf/L41//OKY3Q3wXwM0ubRfktzjLmIclDMU4pOnYXMYc5CJ6ct1z/Sfug==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Install-BoxstarterPackage.ps1 Show
    function Install-BoxstarterPackage {
    <#
    .SYNOPSIS
    Installs a Boxstarter package
    
    .DESCRIPTION
    This function wraps a Chocolatey Install and provides these additional features
     - Installs Chocolatey if it is not already installed
     - Installs the .net 4.5 framework if it is not installed which is a Chocolatey requirement
     - Disables windows update service during installation to prevent installation conflicts and minimize the need for reboots
     - Imports the Boxstarter.WinConfig module that provides functions for customizing windows
     - Detects pending reboots and restarts the machine when necessary to avoid installation failures
     - Provides Reboot Resiliency by ensuring the package installation is immediately restarted up on reboot if there is a reboot during the installation.
     - Ensures Installation runs under administrator permissions
     - Supports remote installations allowing packages to be installed on a remote machine
    
     The .nupkg file for the provided package name is searched in the following locations and order:
     - .\BuildPackages relative to the parent directory of the module file
     - The Chocolatey community feed
     This can be configured by editing $($Boxstarter.BaseDir)\Boxstarter.Config
    
     If the package name provided is a URL or resolves to a file, then
     it is assumed that this contains the Chocolatey install script and
     a .nupkg file will be created using the script.
    
     Boxstarter can install packages onto a remote machine. To accomplish this,
     use either the ComputerName, Session or ConnectionURI parameters. Boxstarter uses
     PowerShell remoting to establish an interactive session on the remote computer.
     Boxstarter configures all the necessary client side remoting settings necessary if
     they are not already configured. Boxstarter will prompt the user to verify that
     this is OK. Using the -Force switch will suppress the prompt. Boxstarter also ensures
     that CredSSP authentication is enabled so that any network calls made by a package will
     forward the users credentials.
    
     PowerShell Remoting must be enabled on the target machine in order to establish a connection.
     If that machine's WMI ports are accessible, Boxstarter can enable PowerShell remoting
     on the remote machine on its own. Otherwise, it can be manually enabled by entering
    
     Enable-PSRemoting -Force
    
     In an administrative PowerShell console on the remote machine.
    
     .PARAMETER ComputerName
     If provided, Boxstarter will install the specified package name on all computers.
     Boxstarter will create a Remote Session on each computer using the Credentials
     given in the Credential parameter.
    
     .PARAMETER ConnectionURI
     Specifies one or more Uniform Resource Identifiers (URI) that Boxstarter will use
     to establish a connection with the remote computers upon which the package should
     be installed. Use this parameter if you need to use a non default PORT or SSL.
    
     .PARAMETER Session
     If provided, Boxstarter will install the specified package in all given Windows
     PowerShell sessions. Note that these sessions may be closed by the time
     Install-BoxstarterPackage finishes. If Boxstarter needs to restart the remote
     computer, the session will be discarded and a new session will be created using
     the ConnectionURI of the original session.
    
     .PARAMETER BoxstarterConnectionConfig
     If provided, Boxstarter will install the specified package name on all computers
     included in the BoxstarterConnectionConfig. This object contains a ComputerName
     and a PSCredential. Use this object if you need to pass different computers
     requiring different credentials.
    
     .PARAMETER PackageName
     The names of one or more NuGet Packages to be installed or URIs or
     file paths pointing to a Chocolatey script. If using package names,
     the .nupkg file for the provided package names are searched in the
     following locations and order:
     - .\BuildPackages relative to the parent directory of the module file
     - The Chocolatey community feed
    
    .PARAMETER DisableReboots
    If set, reboots are suppressed.
    
    .PARAMETER Credential
    The credentials to use for auto logins after reboots. If installing on
    a remote machine, this credential will also be used to establish the
    connection to the remote machine and also for any scheduled task that
    boxstarter needs to create and run under a local context.
    
    .PARAMETER KeepWindowOpen
    Enabling this switch will prevent the command window from closing and
    prompt the user to pres the Enter key before the window closes. This
    is ideal when not invoking boxstarter from a console.
    
    .Parameter LocalRepo
    This is the path to the local boxstarter repository where boxstarter
    should look for .nupkg files to install. By default this is located
    in the BuildPackages directory just under the root Boxstarter
    directory but can be changed with Set-BoxstarterConfig.
    
    .NOTES
    If specifying only one package, Boxstarter calls Chocolatey with the
    -force argument and deletes the previously installed package directory.
    This means that regardless of whether or not the package had been
    installed previously, Boxstarter will attempt to download and reinstall it.
    This only holds true for the outer package. If the package contains calls
    to CINST for additional packages, those installs will not reinstall if
    previously installed.
    
    If an array of package names are passed to Install-BoxstarterPackage,
    Boxstarter will NOT apply the above reinstall logic and will skip the
    install for any package that had been previously installed.
    
    When establishing a remote connection, Boxstarter uses CredSSP
    authentication so that the session can access any network resources
    normally accessible to the Credential. If necessary, Boxstarter
    configures CredSSP authentication on both the local and remote
    machines as well as the necessary Group Policy and WSMan settings
    for credential delegation. When the installation completes,
    Boxstarter rolls back all settings that it changed to their original
    state.
    
    If Boxstarter is not running in an elevated console, it will not attempt
    to enable CredSSP locally if it is not already enabled. It will also not
    try to enable PowerShell remoting if not running as administrator.
    
    When using a Windows PowerShell session instead of ComputerName or
    ConnectionURI, Boxstarter will use the authentication mechanism of the
    existing session and will not configure CredSSP if the session provided
    is not using CredSSP. If the session is not using CredSSP, it may be
    denied access to network resources normally accessible to the Credential
    being used. If you do need to access network resources external to the
    session, you should use CredSSP when establishing the connection.
    
    .INPUTS
    ComputerName, ConnrectionURI and Session may all be specified on the
    pipeline.
    
    .OUTPUTS
    Returns a PSObject for each session, ComputerName or ConnectionURI or a
    single PSObject for local installations. The PSObject has the following
    properties:
    
    ComputerName: The name of the computer where the package was installed
    
    StartTime: The time that the installation began
    
    FinishTime: The time that Boxstarter finished the installation
    
    Completed: True or False indicating if Boxstarter was able to complete
    the installation without a terminating exception interrupting the install.
    Even if this value is True, it does not mean that all components installed
    in the package succeeded. Boxstarter will not terminate an installation if
    individual Chocolatey packages fail. Use the Errors property to discover
    errors that were raised throughout the installation.
    
    Errors: An array of all errors encountered during the duration of the
    installation.
    
    .EXAMPLE
    Invoke-ChocolateyBoxstarter "example1","example2"
    
    This installs the example1 and example2 .nupkg files. If pending
    reboots are detected, boxstarter will restart the machine. Boxstarter
    will not perform automatic logins after restart since no Credential
    was given.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage -Package https://gist.github.com/mwrock/6771863/raw/b579aa269c791a53ee1481ad01711b60090db1e2/gistfile1.txt `
       -Credential $cred
    
    This installs the script uploaded to the github gist. The credentials
    of the user mwrock are used to automatically login the user if
    boxstarter needs to reboot the machine.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage -ComputerName MyOtherComputer.mydomain.com -Package MyPackage -Credential $cred
    
    This installs the MyPackage package on MyOtherComputer.mydomain.com.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    $session=New-PSSession SomeComputer -Credential $cred
    Install-BoxstarterPackage -Session $session -Package MyPackage -Credential $cred
    
    This installs the MyPackage package on an existing session established with
    SomeComputer. A Credential is still passed to Boxstarter even though it is
    also used to establish the session because Boxstarter will need it for logons
    and creating Scheduled Tasks on SomeComputer. If Boxstarter does need to
    reboot SomeComputer, it will need to create a new session after SomeComputer
    has rebooted and then $session will no longer be in an Available state when
    Install-BoxstarterPackage completes.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage -ConnectionURI http://RemoteComputer:59876/wsman -Package MyPackage -Credential $cred
    
    This installs the MyPackage package on RemoteComputer which does not
    listen on the default wsman port but has been configured to listen
    on port 59876.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage -ComputerName MyOtherComputer.mydomain.com -Package MyPackage -Credential $cred -Force
    
    This installs the MyPackage package on MyOtherComputer.mydomain.com.
    Because the -Force parameter is used, Boxstarter will not prompt the
    user to confirm that it is OK to enable PowerShell remoting if it is
    not already enabled. It will attempt to enable it without prompts.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    "computer1","computer2" | Install-BoxstarterPackage -Package MyPackage -Credential $cred -Force
    
    This installs the MyPackage package on computer1 and computer2
    Because the -Force parameter is used, Boxstarter will not prompt the
    user to confirm that it is OK to enable PowerShell remoting if it is
    not already enabled. It will attempt to enable it without prompts.
    
    Using -Force is especially advisable when installing packages on multiple
    computers because otherwise, if one computer is not accessible, the command
    will prompt the user if it is OK to try and configure the computer before
    proceeding to the other computers.
    
    .EXAMPLE
    $cred1=Get-Credential mwrock
    $cred2=Get-Credential domain\mwrock
    (New-Object -TypeName BoxstarterConnectionConfig -ArgumentList "computer1",$cred1), `
    (New-Object -TypeName BoxstarterConnectionConfig -ArgumentList "computer2",$cred2) |
    Install-BoxstarterPackage -Package MyPackage
    
    This installs the MyPackage package on computer1 and computer2 and uses
    different credentials for each computer.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage script.ps1 -Credential $cred
    
    This installs the script located at script.ps1
    in the command line's current directory.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage \\server\share\script.ps1 -Credential $cred
    
    This invokes boxstarter and installs the script located at the
    specified share.
    
    .EXAMPLE
    $cred=Get-Credential mwrock
    Install-BoxstarterPackage win8Install -LocalRepo \\server\share\boxstarter -Credential $cred
    
    This installs the Win8Install .nupkg. Boxstarter will look
    for the Win8Install .nupkg file in the \\serer\share\boxstarter
    directory.
    
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    #>
        [CmdletBinding(DefaultParameterSetName="Package")]
    	param(
            [parameter(Mandatory=$true, Position=0, ValueFromPipeline=$True, ParameterSetName="BoxstarterConnectionConfig")]
            [BoxstarterConnectionConfig[]]$BoxstarterConnectionConfig,
            [parameter(Mandatory=$true, Position=0, ValueFromPipeline=$True, ParameterSetName="ComputerName")]
            [string[]]$ComputerName,
            [parameter(Mandatory=$true, Position=0, ValueFromPipeline=$True, ParameterSetName="ConnectionUri")]
            [Uri[]]$ConnectionUri,
            [parameter(Mandatory=$true, Position=0, ValueFromPipeline=$True, ParameterSetName="Session")]
            [System.Management.Automation.Runspaces.PSSession[]]$Session,
            [parameter(Mandatory=$true, Position=0, ParameterSetName="Package")]
            [parameter(Mandatory=$true, Position=1, ParameterSetName="ComputerName")]
            [parameter(Mandatory=$true, Position=1, ParameterSetName="ConnectionUri")]
            [parameter(Mandatory=$true, Position=1, ParameterSetName="Session")]
            [parameter(Mandatory=$true, Position=1, ParameterSetName="BoxstarterConnectionConfig")]
            [string[]]$PackageName,
            [Management.Automation.PsCredential]$Credential,
            [switch]$Force,
            [switch]$DisableReboots,
            [parameter(ParameterSetName="Package")]
            [switch]$KeepWindowOpen,
            [string]$LocalRepo,
            [switch]$DisableRestart
        )
        $CurrentVerbosity=$global:VerbosePreference
        try {
    
            if($PSBoundParameters["Verbose"] -eq $true) {
                $global:VerbosePreference="Continue"
            }
    
            #If no PSRemoting based param's are present, we just run locally
            if($PsCmdlet.ParameterSetName -eq "Package"){
                Invoke-Locally @PSBoundParameters
                return
            }
    
            #me me me!
            Write-BoxstarterLogo
    
            #Convert pipeline to array
            [email protected]($input)
            if($list.Count){
                Set-Variable -Name $PsCmdlet.ParameterSetName -Value $list
            }
    
            [email protected]{}
            if($Credential){
                $sessionArgs.Credential=$Credential
            }
    
            #If $sessions are being provided we assume remoting is setup on both ends
            #and don't need to test, configure and tear down
            if($Session -ne $null){
                Process-Sessions $Session $sessionArgs
                return
            }
    
            #We need the computer names to configure remoting
            if(!$ComputerName){
                if($BoxstarterConnectionConfig){
                    $uris = $BoxstarterConnectionConfig | % { $_.ConnectionURI }
                }
                else{
                    $uris = $ConnectionUri
                }
                $ComputerName = Get-ComputerNames $uris
            }
    
            try{
                #Enable remoting settings if necessary on client
                $ClientRemotingStatus=Enable-BoxstarterClientRemoting $ComputerName
    
                #If unable to enable remoting on the client, abort
                if(!$ClientRemotingStatus.Success){return}
    
                $CredSSPStatus=Enable-BoxstarterCredSSP $ComputerName
    
                if($ConnectionURI){
                    $ConnectionUri | %{
                        $sessionArgs.ConnectionURI = $_
                        Write-BoxstarterMessage "Installing $packageName on $($_.ToString())"
                        Install-BoxstarterPackageOnComputer $_.Host $sessionArgs $PackageName $DisableReboots $CredSSPStatus
                    }
                }
                elseif($BoxstarterConnectionConfig) {
                    $BoxstarterConnectionConfig | %{
                        $sessionArgs.ConnectionURI = $_.ConnectionURI
                        if($_.Credential){
                            $sessionArgs.Credential = $_.Credential
                        }
                        if($_.PSSessionOption){
                            $sessionArgs.SessionOption = $_.PSSessionOption
                        }
                        Install-BoxstarterPackageOnComputer $_.ConnectionURI.Host $sessionArgs $PackageName $DisableReboots $CredSSPStatus
                    }
                }
                else {
                    $ComputerName | %{
                        $sessionArgs.ComputerName = $_
                        Install-BoxstarterPackageOnComputer $_ $sessionArgs $PackageName $DisableReboots $CredSSPStatus
                    }
                }
            }
            finally{
                #Client settings should be as they were when we started
                Rollback-ClientRemoting $ClientRemotingStatus $CredSSPStatus
            }
        }
        finally{
            $global:VerbosePreference=$CurrentVerbosity
        }
    }
    
    function Get-ComputerNames([URI[]]$ConnectionUris) {
        $computerNames = @()
    
        Write-BoxstarterMessage "resolving URIs to computer names..." -Verbose
        $ConnectionUris | %{
            if($_ -eq $null) {
                Write-BoxstarterMessage "Tried to resolve Null URI" -Verbose
            }
            else {
                Write-BoxstarterMessage "$($_ -is [uri]) found $($_.Host) for $($_.ToString())" -Verbose
                $computerNames+=$_.Host
            }
        }
        return $computerNames
    }
    
    function Process-Sessions($sessions, $sessionArgs){
        $Sessions | %{
            Write-BoxstarterMessage "Processing Session..." -Verbose
            Set-SessionArgs $_ $sessionArgs
            $record = Start-Record $_.ComputerName
            try {
                if(-not (Install-BoxstarterPackageForSession $_ $PackageName $DisableReboots $sessionArgs)){
                    $record.Completed=$false
                }
            }
            catch {
                $record.Completed=$false
            }
            finally{
                Finish-Record $record
            }
        }
    }
    
    function Start-Record($computerName) {
        $global:error.Clear()
        $props = @{
            StartTime = Get-Date
            Completed = $true
            ComputerName = $computerName
            Errors = @()
            FinishTime = $null
        }
        return (New-Object PSObject -Prop $props)
    }
    
    function Finish-Record($obj) {
        Write-BoxstarterMessage "Composing record for pipeline..." -Verbose
        $obj.FinishTime = Get-Date
        $global:error | %{
            if($_.CategoryInfo -ne $null -and $_.CategoryInfo.Category -eq "OperationStopped"){
                Log-BoxstarterMessage $_
            }
            else {
                $obj.Errors += $_
            }
        }
        Write-BoxstarterMessage "writing object..." -Verbose
        Write-Output $obj
        Write-BoxstarterMessage "object written..." -Verbose
    }
    
    function Install-BoxstarterPackageOnComputer ($ComputerName, $sessionArgs, $PackageName, $DisableReboots, $CredSSPStatus){
        $record = Start-Record $ComputerName
        try {
            if(!(Enable-RemotingOnRemote $sessionArgs $ComputerName)){
                Write-Error "Unable to access remote computer via PowerShell Remoting or WMI. You can enable it by running: Enable-PSRemoting -Force from an Administrator PowerShell console on the remote computer."
                $record.Completed=$false
                return
            }
    
            if($CredSSPStatus.Success){
                $enableCredSSP = Should-EnableCredSSP $sessionArgs $computerName
            }
    
            write-BoxstarterMessage "Creating a new session with $computerName..." -Verbose
            $session = New-PSSession @sessionArgs -Name Boxstarter
    
            if(-not (Install-BoxstarterPackageForSession $session $PackageName $DisableReboots $sessionArgs $enableCredSSP)){
                $record.Completed=$false
            }
        }
        catch {
            $record.Completed=$false
            Write-Error $_
        }
        finally{
            Finish-Record $record
        }
    }
    
    function Install-BoxstarterPackageForSession($session, $PackageName, $DisableReboots, $sessionArgs, $enableCredSSP) {
        try{
            if($session.Availability -ne "Available"){
                write-Error (New-Object -TypeName ArgumentException -ArgumentList "The Session is not Available")
                return $false
            }
    
            for($count = 1; $count -le 5; $count++) {
                try {
                    Write-BoxstarterMessage "Attempt #$count to copy Boxstarter modules to $($session.ComputerName)" -Verbose
                    Setup-BoxstarterModuleAndLocalRepo $session
                    break
                }
                catch {
                    if($global:Error.Count -gt 0){$global:Error.RemoveAt(0)}
                    if($count -eq 5) { throw $_ }
                }
            }
    
            if($enableCredSSP){
                $credSSPSession = Enable-RemoteCredSSP $sessionArgs
                if($session -ne $null -and $credSSPSession -ne $null){
                    Write-BoxstarterMessage "CredSSP session succeeded. Replacing sessions..."
                    Remove-PSSession $session -ErrorAction SilentlyContinue
                    $session=$credSSPSession
                }
            }
    
            Invoke-Remotely ([ref]$session) $PackageName $DisableReboots $sessionArgs
            return $true
        }
        finally {
            Write-BoxstarterMessage "checking if session should be removed..." -Verbose
            if($session -ne $null -and $session.Name -eq "Boxstarter") {
                Write-BoxstarterMessage "Removing session $($session.id)..." -Verbose
                Remove-PSSession $Session
                Write-BoxstarterMessage "Session removed..." -Verbose
                $Session = $null
            }
    
            if($sessionArgs.Authentication){
                $sessionArgs.Remove("Authentication")
            }
            if($enableCredSSP){
                Disable-RemoteCredSSP $sessionArgs
            }
        }
    }
    
    function Invoke-Locally {
        param(
            [string[]]$PackageName,
            [Management.Automation.PsCredential]$Credential,
            [switch]$Force,
            [switch]$DisableReboots,
            [switch]$KeepWindowOpen,
            [switch]$DisableRestart,
            [string]$LocalRepo
        )
        if($PSBoundParameters.ContainsKey("Credential")){
            if($Credential -ne $null) {
                $PSBoundParameters.Add("Password",$PSBoundParameters["Credential"].Password)
            }
            $PSBoundParameters.Remove("Credential") | out-Null
        }
        else {
            $PSBoundParameters.Add("NoPassword",$True)
        }
        if($PSBoundParameters.ContainsKey("Force")){
            $PSBoundParameters.Remove("Force") | out-Null
        }
        $PSBoundParameters.Add("BootstrapPackage", $PSBoundParameters.PackageName)
        $PSBoundParameters.Remove("PackageName") | out-Null
    
        $record = Start-Record 'localhost'
        try {
            Invoke-ChocolateyBoxstarter @PSBoundParameters
        }
        catch {
            $record.Completed=$false
            throw
        }
        finally{
            Finish-Record $record
        }
    }
    
    function Enable-RemotingOnRemote ($sessionArgs, $ComputerName){
        Write-BoxstarterMessage "Testing remoting access on $ComputerName..."
        try {
            $remotingTest = Invoke-Command @sessionArgs { Get-WmiObject Win32_ComputerSystem } -ErrorAction Stop
        }
        catch {
            Write-BoxstarterMessage $_.ToString() -Verbose
            $sessionArgs.Keys | % {
                Write-BoxstarterMessage "session arg key: $_ has value $($sessionArgs[$_])" -Verbose
            }
            Write-BoxstarterMessage "using credential username $($sessionArgs.Credential.UserName)" -Verbose
            $global:error.RemoveAt(0)
        }
        if($remotingTest -eq $null){
            Write-BoxstarterMessage "PowerShell Remoting is not enabled or accessible on $ComputerName" -Verbose
            if(Test-Admin) {
                $wmiTest=Invoke-WmiMethod -ComputerName $ComputerName -Credential $sessionArgs.Credential Win32_Process Create -Args "cmd.exe" -ErrorAction SilentlyContinue
            }
            if($wmiTest -eq $null){
                if($global:Error.Count -gt 0){ $global:Error.RemoveAt(0) }
                return $false
            }
            if($Force -or (Confirm-Choice "PowerShell Remoting is not enabled on Remote computer. Should Boxstarter enable PowerShell remoting? This will also change the Network Location type on the remote machine to PRIVATE if it is currently PUBLIC.")){
                Write-BoxstarterMessage "Enabling PowerShell Remoting on $ComputerName"
                Enable-RemotePSRemoting $ComputerName $sessionArgs.Credential
            }
            else {
                Write-BoxstarterMessage "Not enabling local PowerShell Remoting on $ComputerName. Aborting package install"
                return $False
            }
        }
        else {
            Write-BoxstarterMessage "Remoting is accessible on $ComputerName"
        }
        return $True
    }
    
    function Setup-BoxstarterModuleAndLocalRepo($session){
        if($LocalRepo){$Boxstarter.LocalRepo=$LocalRepo}
        Write-BoxstarterMessage "Copying Boxstarter Modules and LocalRepo packages at $($Boxstarter.BaseDir) to $env:temp on $($Session.ComputerName)..."
        Invoke-Command -Session $Session { mkdir $env:temp\boxstarter\BuildPackages -Force  | out-Null }
        Send-File "$($Boxstarter.BaseDir)\Boxstarter.Chocolatey\Boxstarter.zip" "Boxstarter\boxstarter.zip" $session
        Get-ChildItem "$($Boxstarter.LocalRepo)\*.nupkg" | % {
            Write-BoxstarterMessage "Copying $($_.Name) to $($Session.ComputerName)" -Verbose
            Send-File "$($_.FullName)" "Boxstarter\BuildPackages\$($_.Name)" $session
        }
        Write-BoxstarterMessage "Expanding modules on $($Session.ComputerName)" -Verbose
        Invoke-Command -Session $Session {
            Set-ExecutionPolicy Bypass -Force
            if ($PSVersionTable.PSVersion.Major -ge 4) {
                try
                {
                    Add-Type -AssemblyName System.IO.Compression.FileSystem
                    $archive = [System.IO.Compression.ZipFile]::OpenRead("$env:temp\Boxstarter\Boxstarter.zip")
    
                    foreach ($entry in $archive.Entries)
                    {
                        $entryTargetFilePath = [System.IO.Path]::Combine("$env:temp\boxstarter", $entry.FullName)
                        $entryDir = [System.IO.Path]::GetDirectoryName($entryTargetFilePath)
    
                        if(!(Test-Path $entryDir))
                        {
                            New-Item -ItemType Directory -Path $entryDir -Force | Out-Null
                        }
    
                        if(!$entryTargetFilePath.EndsWith("/"))
                        {
                            [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $entryTargetFilePath, $true);
                        }
                    }
                }
                catch
                {
                    throw $_
                }
            }
            else {
                #original method
                $shellApplication = new-object -com shell.application
                $zipPackage = $shellApplication.NameSpace("$env:temp\Boxstarter\Boxstarter.zip")
                $destinationFolder = $shellApplication.NameSpace("$env:temp\boxstarter")
                $destinationFolder.CopyHere($zipPackage.Items(),0x10)
            }
    
            [xml]$configXml = Get-Content (Join-Path $env:temp\Boxstarter BoxStarter.config)
            if($configXml.config.LocalRepo -ne $null) {
                $configXml.config.RemoveChild(($configXml.config.ChildNodes | ? { $_.Name -eq "LocalRepo"}))
                $configXml.Save((Join-Path $env:temp\Boxstarter BoxStarter.config))
            }
        }
    }
    
    function Invoke-RemoteBoxstarter($Package, $Credential, $DisableReboots, $session) {
        Write-BoxstarterMessage "Running remote install..."
        $remoteResult = Invoke-Command -session $session {
            param($SuppressLogging,$pkg,$Credential,$DisableReboots, $verbosity, $ProgressArgs, $debug)
            $global:VerbosePreference=$verbosity
            $global:DebugPreference=$debug
            Import-Module $env:temp\Boxstarter\Boxstarter.Common\Boxstarter.Common.psd1 -DisableNameChecking
            if($Credential -eq $null){
                $currentUser = Get-CurrentUser
                $credential = (New-Object Management.Automation.PsCredential ("$($currentUser.Domain)\$($currentUser.Name)", (New-Object System.Security.SecureString)))
            }
            Create-BoxstarterTask $Credential
            Import-Module $env:temp\Boxstarter\Boxstarter.Chocolatey\Boxstarter.Chocolatey.psd1
            $Boxstarter.SuppressLogging=$SuppressLogging
            $global:Boxstarter.ProgressArgs=$ProgressArgs
            $result=$null
            try {
                $resultToReturn = @{}
                $result = Invoke-ChocolateyBoxstarter $pkg -Password $Credential.password -DisableReboots:$DisableReboots
                if($Boxstarter.IsRebooting){
                    $resultToReturn.Result="Rebooting"
                }
                elseif($result=$true){
                    $resultToReturn.Result="Completed"
                }
                $resultToReturn.Errors = $Global:Error
                return $resultToReturn
            }
            catch{
                throw $_
            }
        } -ArgumentList $Boxstarter.SuppressLogging, $Package, $Credential, $DisableReboots, $global:VerbosePreference, $global:Boxstarter.ProgressArgs, $global:DebugPreference
        if($remoteResult.Errors -ne $null) {
            $global:Error.AddRange($remoteResult.Errors)
        }
        Write-BoxstarterMessage "Result from Remote Boxstarter: $($remoteResult.Result)" -Verbose
        return $remoteResult
    }
    
    function Test-RebootingOrDisconnected($RemoteResult) {
        if($remoteResult -eq $null -or $remoteResult.Result -eq $null -or $remoteResult.Result -eq "Rebooting") {
            return $true
        }
        else {
            return $false
        }
    }
    
    function Wait-ForSessionToClose($session) {
        Write-BoxstarterMessage "Waiting for $($session.ComputerName) to sever remote session..."
        $timeout=0
        while($session.State -eq "Opened" -and $timeout -lt 120){
            $timeout += 2
            start-sleep -seconds 2
        }
    }
    
    function Test-ShutDownInProgress($Session) {
        $response=Invoke-Command -Session $Session {
            try {
            $systemMetrics = Add-Type -TypeDefinition @"
    using System;
    using System.Runtime.InteropServices;
    public static class SystemMetrics
    {
        private const int SM_SHUTTINGDOWN = 0x2000;
    
        [DllImport("user32.dll")]
        public static extern int GetSystemMetrics(int smIndex);
    
        public static bool IsShuttingdown()
        {
            return (GetSystemMetrics(SM_SHUTTINGDOWN) != 0);
        }
    
    }
    "@ -PassThru
            } catch {}
            if ($systemMetrics){
                return $systemMetrics::IsShuttingdown()
            }
        }
    
        if($response -eq $false) {
            Write-BoxstarterMessage "System Shutdown not in progress" -Verbose
        }
        else {
            Write-BoxstarterMessage "System Shutdown in progress" -Verbose
        }
    
        return $response
    }
    
    function Test-Reconnection($Session, $sessionPID) {
        $reconnected = $false
    
        #If there is a pending reboot then session is in the middle of a restart
        try{
            $response=Invoke-Command -Session $session {
                Import-Module $env:temp\Boxstarter\Boxstarter.Chocolatey\Boxstarter.Chocolatey.psd1
                return Test-PendingReboot
            } -ErrorAction Stop
        } catch {
            Write-BoxstarterMessage "Failed to test pending reboot : $($global:Error[0])" -Verbose
            $global:Error.RemoveAt(0)
        }
        Write-BoxstarterMessage "Reboot check returned $response" -Verbose
    
    
        if($response -ne $null -and $response -eq $false){
            #Check for a system shutdown in progress
            $response = Test-ShutDownInProgress $session
    
            if($response -eq $false) {
                $reconnected = $true #Session is connectible
                try{
                    #In case previous session's task is still alive kill it so it does not lock anything
                    Write-BoxstarterMessage "Killing $sessionPID" -Verbose
                    Invoke-Command -Session $session {
                        param($p)
                        if(Get-Process -Id $p -ErrorAction SilentlyContinue){
                            KILL $p -ErrorAction Stop -Force
                        }
                        else {
                            $global:Error.RemoveAt(0)
                        }
                    } -ArgumentList $sessionPID
                } catch{
                    Write-BoxstarterMessage "Failed to kill $sessionPID : $($global:Error[0])" -Verbose
                    $global:Error.RemoveAt(0)
                }
            }
        }
        #if the session is pending a reboot but not in the middle of a system shutdown,
        #try to invoke a reboot to prevent us from hanging while waiting
        elseif($response -eq $true -and !(Test-ShutDownInProgress $session)){
            Write-BoxstarterMessage "Attempting to restart $($session.ComputerName)" -Verbose
            Invoke-Command -Session $session {
                Import-Module $env:temp\Boxstarter\Boxstarter.Chocolatey\Boxstarter.Chocolatey.psd1
                $Boxstarter.RebootOK=$true
                if(Test-PendingReboot){restart-Computer -Force }
            } -ErrorAction SilentlyContinue
        }
    
        return $reconnected
    }
    
    function Invoke-Remotely([ref]$session,$Package,$DisableReboots,$sessionArgs){
        Write-BoxstarterMessage "Invoking remote install" -verbose
        while($session.value.Availability -eq "Available") {
            $sessionPID = try { Invoke-Command -Session $session.value { return $PID } } catch { $global:Error.RemoveAt(0) }
            Write-BoxstarterMessage "Session's process ID is $sessionPID" -verbose
            if($sessionPID -ne $null) {
                $remoteResult = Invoke-RemoteBoxstarter $Package $sessionArgs.Credential $DisableReboots $session.value
            }
    
            if(Test-RebootingOrDisconnected $remoteResult) {
                Wait-ForSessionToClose $session.value
    
                $reconnected=$false
                Write-BoxstarterMessage "Waiting for $($session.value.ComputerName) to respond to remoting..."
                Do{
                    if($session.value -ne $null){
                        Write-BoxstarterMessage "removing session..." -verbose
                        try { Remove-PSSession $session.value } catch { $global:Error.RemoveAt(0) }
                        $session.value = $null
                        Write-BoxstarterMessage "session removed..." -verbose
                    }
                    $response=$null
                    start-sleep -seconds 2
                    Write-BoxstarterMessage "attempting to recreate session..." -verbose
                    $session.value = New-PSSession @sessionArgs -Name Boxstarter -ErrorAction SilentlyContinue
                    if($session.value -eq $null) {
                        Write-BoxstarterMessage "New session is null..." -verbose
                        $global:Error.RemoveAt(0)
                    }
                    elseif($session.value -ne $null -and $Session.value.Availability -eq "Available"){
                        Write-BoxstarterMessage "testing new session..." -verbose
                        if($remoteResult.Result -eq "Rebooting"){$sessionPID=-1}
                        $reconnected = Test-Reconnection $session.value $sessionPID
                    }
                    else {
                        Write-BoxstarterMessage "new session is not available..." -verbose
                    }
                }
                Until($reconnected -eq $true)
            }
            else {
                break
            }
        }
    }
    
    function Set-SessionArgs($session, $sessionArgs) {
        $uri = try { Invoke-Command $session {return $PSSenderInfo.ConnectionString} -ErrorAction SilentlyContinue } catch{}
        if($uri){
            $sessionArgs.ConnectionURI=$uri
        }
        else{
            $sessionArgs.ComputerName=$session.ComputerName
        }
    }
    
    function Should-EnableCredSSP($sessionArgs, $computerName) {
        Write-BoxstarterMessage "Testing remote CredSSP..." -Verbose
        if($sessionArgs.Credential){
            [email protected]{}
            if($sessionArgs.ConnectionURI){
                $uri = [URI]$sessionArgs.ConnectionURI
                $uriArgs = @{Port=$uri.port;UseSSL=($uri.scheme -eq "https")}
            }
            try {
                $credsspEnabled = Test-WsMan -ComputerName $ComputerName @uriArgs -Credential $SessionArgs.Credential -Authentication CredSSP -ErrorAction SilentlyContinue
            }
            catch {
                Write-BoxstarterMessage "Exception from testing WSMan for CredSSP access" -Verbose
                try { $xml=[xml]$_ } catch { $global:Error.RemoveAt(0) }
                if($xml -ne $null) {
                    Write-BoxstarterMessage "WSMan Fault Found" -Verbose
                    Write-BoxstarterMessage "$($xml.OuterXml)" -Verbose
                }
                else {
                    Write-BoxstarterMessage $_ -Verbose
                }
            }
            if($credsspEnabled -eq $null){
                Write-BoxstarterMessage "Need to enable CredSSP on server" -Verbose
                if($global:Error.Count -gt 0){ $global:Error.RemoveAt(0) }
                return $True
            }
            else{
                Write-BoxstarterMessage "CredSSP test response:" -Verbose
                [System.Xml.XmlElement]$xml=$credsspEnabled
                if($xml -ne $null) {
                    Write-BoxstarterMessage "WSMan XML Found..." -Verbose
                    Write-BoxstarterMessage "$($xml.OuterXml)" -Verbose
                }
                $sessionArgs.Authentication="CredSSP"
            }
        }
        Write-BoxstarterMessage "Do not need to enable CredSSP on server" -Verbose
        return $false
    }
    
    function Enable-RemoteCredSSP($sessionArgs) {
        Write-BoxstarterMessage "Creating a scheduled task to enable CredSSP Authentication on $ComputerName..."
        $n=Invoke-RetriableScript {
            $splat=$args[0]
            Invoke-Command @splat {
                param($Credential, $verbosity)
                $VerbosePreference = $verbosity
                Import-Module $env:temp\Boxstarter\Boxstarter.Common\Boxstarter.Common.psd1 -DisableNameChecking
                Create-BoxstarterTask $Credential
                Invoke-FromTask "Enable-WSManCredSSP -Role Server -Force | out-Null"
                Remove-BoxstarterTask
            } -ArgumentList @($args[0].Credential, $VerbosePreference)
        } $sessionArgs
        $sessionArgs.Authentication="CredSSP"
        Write-BoxstarterMessage "Creating New session with CredSSP Authentication..." -Verbose
        try {
            $session = Invoke-RetriableScript {
                $splat=$args[0]
                $s = New-PSSession @splat -Name Boxstarter -ErrorAction Stop
                return $s
            } $sessionArgs
        }
        catch {
            $sessionArgs.Remove("Authentication")
            $session=$null
            Write-BoxstarterMessage "Unable to create CredSSP session. Error was: $($_.ToString())" -Verbose
            $global:error.RemoveAt(0)
        }
        return $session
    }
    
    function Disable-RemoteCredSSP ($sessionArgs){
        Write-BoxstarterMessage "Disabling CredSSP Authentication on $ComputerName" -Verbose
        Invoke-Command @sessionArgs {
            param($Credential, $verbosity)
            $Global:VerbosePreference = $verbosity
            Import-Module $env:temp\Boxstarter\Boxstarter.Common\Boxstarter.Common.psd1 -DisableNameChecking
            Create-BoxstarterTask $Credential
            $taskResult = Invoke-FromTask "Disable-WSManCredSSP -Role Server"
            Write-BoxstarterMessage "result from disabling CredSSP is: $taskResult" -Verbose
            Remove-BoxstarterTask
        } -ArgumentList $sessionArgs.Credential, $Global:VerbosePreference
        Write-BoxstarterMessage "Finished disabling CredSSP Authentication on $ComputerName" -Verbose
    }
    
    function Rollback-ClientRemoting($ClientRemotingStatus, $CredSSPStatus) {
        Write-BoxstarterMessage "Rolling back remoting settings changed by Boxstarter..."
        if($ClientRemotingStatus.PreviousTrustedHosts -ne $null){
            $currentHosts=Get-Item "wsman:\localhost\client\trustedhosts"
            if($currentHosts.Value -ne $ClientRemotingStatus.PreviousTrustedHosts) {
                Write-BoxstarterMessage "Reseting wsman Trusted Hosts to $($ClientRemotingStatus.PreviousTrustedHosts)" -Verbose
                Set-Item "wsman:\localhost\client\trustedhosts" -Value "$($ClientRemotingStatus.PreviousTrustedHosts)" -Force
            }
        }
        if($CredSSPStatus -ne $null -and $CredSSPStatus.Success){
            try {Disable-WSManCredSSP -Role Client -ErrorAction SilentlyContinue } catch{ Write-BoxstarterMessage "Unable to disable CredSSP locally" }
            if($CredSSPStatus.PreviousCSSPTrustedHosts -ne $null){
                try{
                    Write-BoxstarterMessage "Reseting CredSSP Trusted Hosts to $($CredSSPStatus.PreviousCSSPTrustedHosts.Replace('wsman/',''))" -Verbose
                    Enable-WSManCredSSP -DelegateComputer ($CredSSPStatus.PreviousCSSPTrustedHosts.Replace("wsman/","").split(",") | Get-Unique) -Role Client -force | Out-Null
                }
                catch{}
            }
            Write-BoxstarterMessage "Reseting GroupPolicy for Credentials Delegation" -Verbose
            if(Test-Path "$(Get-CredentialDelegationKey)\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly") {
                (Get-Item "$(Get-CredentialDelegationKey)\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly").Property | % {
                    if([int]$_ -gt $CredSSPStatus["PreviousFreshNTLMCredDelegationHostCount"]) {
                        Remove-ItemProperty "$(Get-CredentialDelegationKey)\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly" -Name $_
                    }
                }
            }
    
            if(Test-Path "$(Get-CredentialDelegationKey)\CredentialsDelegation\AllowFreshCredentials") {
                (Get-Item "$(Get-CredentialDelegationKey)\CredentialsDelegation\AllowFreshCredentials").Property | % {
                    if([int]$_ -gt $CredSSPStatus["PreviousFreshCredDelegationHostCount"]) {
                        Remove-ItemProperty "$(Get-CredentialDelegationKey)\CredentialsDelegation\AllowFreshCredentials" -Name $_
                    }
                }
            }
        }
    }
    
    <# Support for expanding Boxstarter modules on Server Core by (C) 2017 United Parcel Service of America, Inc. #>
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBLpNCi1VN0g1EO
    # 0+zC4rcsgMbLVgNWFIFaSh2xG8IWqqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgmm+espKjh7v7SqJJUGyzAEGVd6vebwExkfjm
    # pk9EhXswDQYJKoZIhvcNAQEBBQAEggEAmc5ylJ83xJPsLG/5d6rLcxD9uxySFu0/
    # tZDgcfiAYJBgfCW6whblX+/m8bcgwHkJPLj1/y/rBrA/1G4zFZvBgFmnNiPxUSo7
    # iDOwO7ZDsPwuU7nXb0aru3zRUGLHJQinVfgXvWwr/Uzeq2QybKCe4K0pghRjS46I
    # TakJ/EYbeSFQvl8Xj5tXT+1zwIFzKA/9YWWuhGXaDJyvE0ellr3U28frOX+Fz1j8
    # V2zc14aDJ4IoC1nByW0hS0b2bQAkw079cCvBrj8t+AyrjEfLQGX6luBJEpMPqr14
    # FxnYMcGG66ooUqCiKfd+GKuUsRY9j6MZnD73qlxMJ1GKPC+5qKhjv6GCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTI2WjAjBgkqhkiG9w0BCQQxFgQUnYTAGg/8T9dt+/Td
    # 7/N7QP9B9wowDQYJKoZIhvcNAQEBBQAEggEAH+91jDNuzcUnqhh4J0Qe7jqw3zlF
    # FVm+6r1s9Ubjk9bWF+4IU+eqUnOCepC0O3YJqpA8nwBzsxyuIKbsG8wkVrbdIwKC
    # n7ob97b3ZRjCLJtHZoNRaF9UC1fVqiHGJ43EpVVLwEPr5KhXlXTdvCY0/+dLJRKF
    # enyPgcmdvqx/l7bembBw5ksKQ9Apm8y8BF+r0XfTRqihYiDkfMlZYfwbmP7ZS83c
    # frU6rByujEarfLkL9Bw4jdFoOD28t57qj7FCYYmlfYl+nJ8EYl1IGx58JfScQxEo
    # yCKVmoNXDyY9Z1IrOy5hNw5Cu0y9rBeLu0bd8/+La6E1n/hHj8j/I7kbwA==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Init-Settings.ps1 Show
    $config = Get-BoxstarterConfig
    if(!$BoxStarter.LocalRepo){
       $BoxStarter.LocalRepo=$config.LocalRepo
    }
    if($BoxStarter.LocalRepo.StartsWith("$env:windir")) {
       $BoxStarter.LocalRepo = Join-Path $(Get-BoxstarterTempDir) "BuildPackages"
       if(!(Test-Path $BoxStarter.LocalRepo)) { mkdir $BoxStarter.LocalRepo | Out-Null }
    }
    $Boxstarter.NugetSources=$config.NugetSources
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAHW26cxfzyi5zt
    # z3/WKAxrDSAOWYpem2orgCil42TIKqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgyxqRsuUrv8uliNnZ02ctykVhUapGx9Wcll5D
    # ZL71Sv4wDQYJKoZIhvcNAQEBBQAEggEAK0aWjUhbZH/lpC3EOQ/73MtmSUQmrCWE
    # 4Zk8myyeYq3/ThWXVIBeRjDeixM0NAadV3dblOq6QY07QOPENZoFWwi/2UoBEJgy
    # fWDv3B9X9M99cPaO8zOO+YCo9vGsPk0zyz5Dnn0QPeIyLgpZ44kC/AXm0xl8oS/S
    # oeQ+Gy8XMy5yqpk1YPSi8A9g4QqIIgII62VCaqqjRmPr/Lkgi/mAaTfEtZolwKFk
    # otWYJv28m6JMG/Zq5brhNjgvVoC0ch1BAZpdN+5jA8o8u34LTfBGpw76KBZQrRlh
    # eSq4u5CezpR/elbMVSL/g23UrygsitpLiivKZqoCyBumwiGbDYKBgaGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTI1WjAjBgkqhkiG9w0BCQQxFgQUkPbWRZAT4Zu1qZbf
    # qa8vbXNxqbMwDQYJKoZIhvcNAQEBBQAEggEAAaxwA8ihgvW9U6V4Rx2NV++DSRCi
    # nS4Pzbzp19ZS3w+S841fH5krQ5vIrhjvm2yff2j3p0BA+1hetFydZhKxaK5PSCYh
    # hIe1vKAVFwss2svCiUTkVvvp1HLC1EJsTvlyCt5uNIY/HuxImoEw5G2P3v1FP6Jj
    # 4Qg3/TEmYh0nQ5QV2QzlLlDz43CsahKAhEafXL8uKLh436ymCuoPxrOQGg0V9lnd
    # +CkD27sbTi6cIuFk65wPvfILwZPnSZllds6Xt7REklrOCAzAR2tjC3XSdL9yc7Vl
    # Tn2oLqJZBT25o5lVQ//GDopy5LXCNPzpFsyYpLB/Sl1Npa8+4sdy99lfzg==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Get-PackageRoot.ps1 Show
    function Get-PackageRoot{
    <#
    .SYNOPSIS
    Returns the Root path of a Boxstarter Package given the Chocolatey $MyInvocation
    
    .DESCRIPTION
    This function is intended to be called from inside a running
    ChocolateyInstall.ps1 file. It returns the root path of the package
    which is one level above the Tools directory. This can be helpful
    when you need to reference any files that you copied to your
    Boxstarter Repository which copies them to this location using
    New-BoxstarterPackage.
    
    .PARAMETER Invocation
    This is $MyInvocation instance accessible from ChocolateyInstall.ps1
    
    .EXAMPLE
    Copy-Item "$env:programfiles\Sublime Text 2\Data\*" Package\Sublime -recurse
    New_BoxstarterPackage MyPackage .\Package
    #Edit install script
    Notepad $($Boxstarter.LocalRepo)\MyPackage\Tools\chocolateyInstall.ps1
    Invoke-BoxstarterBuild MyPackage
    Invoke-ChocolateyBoxstarter MyPackage
    
    --ChocolateyInstall.ps1--
    try {
        cinst sublimetext2
        $sublimeDir = "$env:programfiles\Sublime Text 2"
        mkdir "$sublimeDir\data"
        copy-item (Join-Path Get-PackageRoot($MyInvocation) 'sublime\*') "$sublimeDir\data" -Force -Recurse
        Write-ChocolateySuccess 'MyPackage'
    } catch {
      Write-ChocolateyFailure 'MyPackage' $($_.Exception.Message)
      throw
    }
    
    .NOTES
    Get-PackageRoot is intended to be called from ChocolateyInstall.ps1
    and will throw if it is called from another file.
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    New_BoxstarterPackage
    Invoke-ChocolateyBoxstarter
    Invoke-BoxstarterBuild
    #>
        param(
            [Parameter(Mandatory=$true)]
            [System.Management.Automation.InvocationInfo]$invocation
        )
        if($invocation.MyCommand.Definition -eq $null -or !($invocation.MyCommand.Definition.ToLower().EndsWith("tools\chocolateyinstall.ps1"))){
            throw "Get-PackageRoot can only be used inside of chocolateyinstall.ps1. You Tried to call it from $($invocation.MyCommand.Definition)"
        }
        return (Split-Path -parent(Split-Path -parent $invocation.MyCommand.Definition))
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB5gioU4HUCG5ak
    # e0JfisWn5s1KpEt+PkNX4Zj88Z0mB6CCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgiB6hMfG5wZg4zvnElzX3uOGVsxvYH3eYWcLp
    # ShZupZ8wDQYJKoZIhvcNAQEBBQAEggEACv/LvhdLpCTYz3BoifHOM0dGNhdN8aJR
    # 2oeYhSR++eOVWkfgNzq15mP+oBsOiJZOj8nPS4X40N27xj69vIs4efETyrBMt27l
    # ljX87+gq3UI/uaoPZX6pEBV9N1VSPEZ2eyPOSihZ/7KYPgBC7Zp5iF5WA+Xos0Dd
    # iUfakZzxMN5LTZ+pbQg1uG1a0TOVWcQRDR3Bm4J8TfnZcHxq46tR7VmpFL+xQFaR
    # OY1rRSoX+lP/OlXXFO4hK8huR5inV+v6cAFjyJX9/HiJN114hZyqQUXtGcUjnaw/
    # qPKDPJRzS853dbZs3Nq/5DDcevWJJDf8gElE6Z2AEnETH6X1mHFpTKGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTI0WjAjBgkqhkiG9w0BCQQxFgQUfladBd5jC15b5DAg
    # NZe6fRPCnPEwDQYJKoZIhvcNAQEBBQAEggEAFHq7VkUxnOSkhm7ErPk9K5nHtsoM
    # H8oWk+t0bRHlUu8dJEdR5h/O4KPKBWj8t0aHI1mWylPXyB1e7KQprPs+af6gJgEm
    # texj45OmpD4M0FWARS5o5KOs0yQAif0dv/Rz+awMivxA05pBPY110MVyOQOx/sxt
    # Y/LiFrmztVng7ZntLcbwmYiTNYp3CNk47fFgOizGf33fLRlF3cTOyN23o4bWA4WK
    # ck34BWNX1vyHhzsZkE7lL10lt6av1oHeUMnihVcBQSOCZmYH2xGxw8E1EDN+0QQL
    # DjM3WCuax6L3bzCWxYYXNI5AuJGLQGNbHLRGqdrce1SFtd02JmltnBQApQ==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Get-BoxstarterConfig.ps1 Show
    function Get-BoxStarterConfig {
    <#
    .SYNOPSIS
    Retrieves persisted Boxstarter configuration settings.
    
    .DESCRIPTION
    Boxstarter stores configuration data in an xml file in the Boxstarter base
    directory. The Get-BoxstarterConfig function is a convenience function
    for reading those settings.
    
    .LINK
    https://boxstarter.org
    about_boxstarter_chocolatey
    about_boxstarter_variable_in_chocolatey
    Set-BoxstarterConfig
    #>
        [xml]$configXml = Get-Content (Join-Path $Boxstarter.BaseDir BoxStarter.config)
        if($configXml.config.LocalRepo -ne $null){
            $localRepo=$configXml.config.LocalRepo
        }
        else {
            if($Boxstarter.baseDir){
                $localRepo=(Join-Path $Boxstarter.baseDir BuildPackages)
            }
        }
        return @{
            LocalRepo=$localRepo;
            NugetSources=$configXml.config.NugetSources;
            ChocolateyRepo=$configXml.config.ChocolateyRepo;
            ChocolateyPackage=$configXml.config.ChocolateyPackage
        }
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB4JrwGvdQNU8E/
    # HKejny/I2Qy/ue1f2oo4RoR0IVb5GqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgjxWpDDd9ukT8zrhjpQqCL3Ug06Vy2z03OdeD
    # 4iLgZJ4wDQYJKoZIhvcNAQEBBQAEggEAkKUdw1eLAB7sMjDrhkl4aqmysyWsYQy6
    # jUVk86X+Qn6hX7BnX/BiEtaGVNifqc/tfX3siRv0mY0jgxLoZ1bb6SKj2kswCZEq
    # /YMD3FadD3aqELe9BlQClxvuGktiJCWPPTWqNsI47rMEvL1myLvyzyi0OuODlPvC
    # Lpu1QJ5nZA/RUscMFmIGZ99epbePq7+HsWrei60PABfz9T291KcQyg/nfzVd8Oja
    # vwbGAdN84HzPapFZ2iDlWBGFIMORWc/SErkobs14OhLtgsidCr6QXVlahqc26yxH
    # f4AdUbNPUtccNn3o4spVArfJuhbOEfa9KRkxbBp39T/qS3vV9RlzFqGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTIxWjAjBgkqhkiG9w0BCQQxFgQUS90EiGS9Y2Ky0UpF
    # lA+Q6JUMwlAwDQYJKoZIhvcNAQEBBQAEggEAigMrVbnI6OWu8+DHa9vOwnKlPcy5
    # wGVS4aI5wLmUn/tXdtFvrYZKmq3zPGvZuHEwjpLR7ky1r196ZCRBTSrYwdcZ9PJ7
    # 5xiy5F5x25fddHcZI1DtqWIy7GzlpuZcr84G+IXJAo608iAFE64wKQM7wWatKIas
    # mT02tEMAK4IVAiploy0jlpHN5rkmFfJ4fAzrgzKE4MZ8FrlxZtaFiL2uvuWAr2oS
    # XuobkRhDsFwPeANrW+g6/ApT6LWBPcEPoiGnBAan4b0ykcyyr6cGNN4vem6E9gP8
    # Eb6zv+Zz2OabNB/cM6O/0osthXfShP1P9UXb74DisUXs5QFlAB1Ogs/GXA==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Enable-RemotePsRemoting.ps1 Show
    function Enable-RemotePsRemoting {
    ##############################################################################
    ##
    ## Enable-RemotePsRemoting
    ##
    ## From Windows PowerShell Cookbook (O'Reilly)
    ## by Lee Holmes (http://www.leeholmes.com/guide)
    ##
    ##############################################################################
    
    <#
    
    .SYNOPSIS
    
    Enables PowerShell Remoting on a remote computer. Requires that the machine
    responds to WMI requests, and that its operating system is Windows Vista or
    later.
    
    .EXAMPLE
    
    Enable-RemotePsRemoting <Computer>
    
    #>
    
    param(
        ## The computer on which to enable remoting
        $Computername,
    
        ## The credential to use when connecting
        [Management.Automation.PsCredential]$Credential
    )
    
        $credential = Get-Credential $credential
        $username = $credential.Username
        $password = $credential.GetNetworkCredential().Password
    
        $script = @"
    
        `$log = Join-Path `$env:TEMP Enable-RemotePsRemoting.output.txt
        Remove-Item -Force `$log -ErrorAction SilentlyContinue
        Start-Transcript -Path `$log
    
        if(!(1,3,4,5 -contains (Get-WmiObject win32_computersystem).DomainRole)) {
            `$networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}'))
            `$connections = `$networkListManager.GetNetworkConnections()
    
            `$connections | % {`$_.GetNetwork().SetCategory(1)}
        }
    
        ## Create a task that will run with full network privileges.
        ## In this task, we call Enable-PsRemoting
        schtasks /CREATE /TN 'Temp Enable Remoting' /SC WEEKLY /RL HIGHEST ``
            /RU $username /RP "$password" ``
            /TR "powershell -noprofile -command Enable-PsRemoting -Force | Out-File (Join-Path `$env:TEMP Enable-PSRemoting.txt)" /F |
            Out-String
    
        ##Give task a normal priority
        `$taskFile = Join-Path `$env:TEMP RemotingTask.txt
        [xml]`$xml = schtasks /QUERY /TN 'Temp Enable Remoting' /XML
        `$xml.Task.Settings.Priority="4"
        `$xml.Save(`$taskFile)
        schtasks /CREATE /TN 'Enable Remoting' /RU $username /RP "$password" /XML "`$taskFile" /F | Out-String
        schtasks /DELETE /TN 'Temp Enable Remoting' /F | Out-String
    
        schtasks /RUN /TN 'Enable Remoting' | Out-String
    
        `$securePass = ConvertTo-SecureString "$password" -AsPlainText -Force
        `$credential =
            New-Object Management.Automation.PsCredential $username,`$securepass
    
        ## Wait for the remoting changes to come into effect
        for(`$count = 1; `$count -le 10; `$count++)
        {
            `$output = Invoke-Command localhost { 1 } -Cred `$credential ``
                -ErrorAction SilentlyContinue
            if(`$output -eq 1) { break; }
    
            "Attempt `$count : Not ready yet."
            Sleep 5
        }
    
        ## Delete the temporary task
        schtasks /DELETE /TN 'Enable Remoting' /F | Out-String
        Stop-Transcript
    
    "@
    
        $commandBytes = [System.Text.Encoding]::Unicode.GetBytes($script)
        $encoded = [Convert]::ToBase64String($commandBytes)
    
        Write-BoxstarterMessage "Configuring $computername" -Verbose
        $command = "powershell -NoProfile -EncodedCommand $encoded"
        $null = Invoke-WmiMethod -Computer $computername -Credential $credential `
            Win32_Process Create -Args $command
        Sleep 10
        Write-BoxstarterMessage "Testing connection" -Verbose
        for($count = 1; $count -le 100; $count++) {
            $wmiResult = Invoke-Command $computername {
                Get-WmiObject Win32_ComputerSystem } -Credential $credential -ErrorAction SilentlyContinue
            if($wmiResult -ne $Null){
                Write-BoxstarterMessage "PowerShell Remoting enabled successfully"
                break
            }
            else {
                Write-BoxstarterMessage "Attempt $count failed." -Verbose
            }
            if($global:Error.Count -gt 0){
                Write-BoxstarterMessage "$($global:Error[0])" -Verbose
                $global:Error.RemoveAt(0)
            }
        }
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDyHKfuWXpZtkA/
    # 2CWs8RTOLmuxhbIsJsDs4Wfmy3/QD6CCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgVKybP7uIsS6hnBSmwQugc4kllHdZ0s6wk/ia
    # Zc6SInswDQYJKoZIhvcNAQEBBQAEggEAtOFW3XklK6uWS59OCgri6HNOQ91g/usW
    # rXUjSxR9N1eLo2cQbNOqzD7K3A4q7KymZo73qZ8ZBmj2rFnbI/Kd00SOrh2+OtBD
    # nTZ8gA9BEEmXQCyQb+NnPcIyYOEnA11mCFOKZ/YnP6LAGmwDOWQ/ASq9g1fA7T9k
    # Yb8E/7TY3Os5JuTwSxy8jx+8g4LZp9i+1wO/XoVaVBjkTVTSqPnltHsyPfeFtLj8
    # 1sHJ7lD8KbrDwwVfpZISdXUpavqIvnpMDpMoayumRa08rlIFVdvXhcSGdcUzKju0
    # i1PluGv2Ld66NjWPD1Ya3nLUwYxxnhPzBKoZ9j26rZWWpJfOEArWHKGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTE4WjAjBgkqhkiG9w0BCQQxFgQUVz9SFQjrFhX60HHp
    # DHH77eI9B9cwDQYJKoZIhvcNAQEBBQAEggEAU9G2wnAJxHN57PsTP2JPpX+UQ+qT
    # SGcspasRfCXOSUtf/PoZgKLh5txLQDFykIDtjO7Ed9lSzuDaCk/Bas3bE1lUwL/s
    # BjnKcKds1J6GOxew8VvecBXf0BXXBLEdW3u5SGnKlpMkoGFu2BnVXGwSF2GSL+nU
    # CbOqcAivkKc+jYI/leATgCuIdVTKBPxW8ji7KdBrneErnlMZDvxClXr/Mi/6ZlnR
    # TwPlr21nS5WTtc0DUe9kUHU54B0P7wiDnIoxKqCSfJSpXl+leiJgk8rPs8Lq3M4j
    # 9aRu9tFAu74VCvpovYyOIWMXxVlzwk5g4n1IHuiJVy/M+T1olAjIw/FHXw==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Enable-BoxstarterCredSSP.ps1 Show
    function Enable-BoxstarterCredSSP {
    <#
    .SYNOPSIS
    Enables and configures CredSSP Authentication to be used in PowerShell remoting sessions
    
    .DESCRIPTION
    Enabling CredSSP allows a caller from one remote session to authenticate on other remote
    resources. This is known as credential delegation. By default, PowerShell sessions do not
    use credSSP and therefore cannot bake a "second hop" to use other remote resources that
    require their authentication token.
    
    Enable-BoxstarterCredSSP allows remote boxstarter installs to use credential delegation
    in the case where one might keep some resources on another remote machine that need to be
    installed into their current remote session.
    
    This command will enable CredSSP and add all RemoteHostsToTrust to the CredSSP trusted
    hosts list. It will also edit the users group policy to allow Fresh Credential Delegation.
    
    .PARAMETER RemoteHostsToTrust
    A list of ComputerNames to add to the CredSSP Trusted hosts list.
    
    .OUTPUTS
    A list of the original trusted hosts on the local machine.
    
    .EXAMPLE
    Enable-BoxstarterCredSSP box1,box2
    
    .LINK
    https://boxstarter.org
    Install-BoxstarterPackage
    
    #>
        param(
        [string[]] $RemoteHostsToTrust
        )
        [email protected]{
            Success=$False;
            PreviousCSSPTrustedHosts=$null;
            PreviousFreshCredDelegationHostCount=0
        }
        if(!(Test-Admin)) {
            return $result
        }
        Write-BoxstarterMessage "Configuring CredSSP settings..."
        $credssp = Get-WSManCredSSP
    
        $ComputersToAdd = @()
        $idxHosts=$credssp[0].IndexOf(": ")
        if($idxHosts -gt -1){
            $credsspEnabled=$True
            $Result.PreviousCSSPTrustedHosts=$credssp[0].substring($idxHosts+2)
            $hostArray=$Result.PreviousCSSPTrustedHosts.Split(",")
            $RemoteHostsToTrust | ? { $hostArray -notcontains "wsman/$_" } | % { $ComputersToAdd += $_ }
        }
        else {
            $ComputersToAdd = $RemoteHostsToTrust
        }
    
        if($ComputersToAdd.Count -gt 0){
            Write-BoxstarterMessage "Adding $($ComputersToAdd -join ',') to allowed credSSP hosts" -Verbose
            try {
                Enable-WSManCredSSP -DelegateComputer $ComputersToAdd -Role Client -Force -ErrorAction Stop | Out-Null
            }
            catch {
                Write-BoxstarterMessage "Enable-WSManCredSSP failed with: $_" -Verbose
                return $result
            }
        }
    
        $key = Get-CredentialDelegationKey
        if (!(Test-Path "$key\CredentialsDelegation")) {
            New-Item $key -Name CredentialsDelegation | Out-Null
        }
        $key = Join-Path $key "CredentialsDelegation"
        New-ItemProperty -Path "$key" -Name "ConcatenateDefaults_AllowFresh" -Value 1 -PropertyType Dword -Force | Out-Null
        New-ItemProperty -Path "$key" -Name "ConcatenateDefaults_AllowFreshNTLMOnly" -Value 1 -PropertyType Dword -Force | Out-Null
    
        $result.PreviousFreshNTLMCredDelegationHostCount = Set-CredentialDelegation $key 'AllowFreshCredentialsWhenNTLMOnly' $RemoteHostsToTrust
        $result.PreviousFreshCredDelegationHostCount = Set-CredentialDelegation $key 'AllowFreshCredentials' $RemoteHostsToTrust
    
        $Result.Success=$True
        return $Result
    }
    
    function Set-CredentialDelegation($key, $subKey, $allowed){
        New-ItemProperty -Path "$key" -Name $subKey -Value 1 -PropertyType Dword -Force | Out-Null
        $policyNode = Join-Path $key $subKey
        if (!(Test-Path $policyNode)) {
            md $policyNode | Out-Null
        }
        [email protected]()
        (Get-Item $policyNode).Property | % {
            $currentHostProps += (Get-ItemProperty -Path $policyNode -Name $_).($_)
        }
        $currentLength = $currentHostProps.Length
        $idx=$currentLength
        $allowed | ? { $currentHostProps -notcontains "wsman/$_"} | % {
            ++$idx
            New-ItemProperty -Path $policyNode -Name "$idx" -Value "wsman/$_" -PropertyType String -Force | Out-Null
        }
    
        return $currentLength
    }
    
    function Get-CredentialDelegationKey {
        return "HKLM:\SOFTWARE\Policies\Microsoft\Windows"
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCZ1xlFlfpH6Czz
    # 8SoFuX+Ky+pFhbwSNPBQ8fUTz3hydqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgkZ0tPKkQn+SimxLn18462tE+raMTHlus6SOQ
    # dZ+n6mgwDQYJKoZIhvcNAQEBBQAEggEAkC+HynLLwEvnnUn8WMcw+YEUUXGVADce
    # XmJZib+8D9ptG+79Ee5Q6DnyHr5100UuetRM4DCLk1Ar3y60FP17dJ9SBojG61uC
    # nsAC+vx5LcgPAcF5yunFSiOVNEvsJWVJEDsGxfJUhjZFCCvtNKVAP6NCKYWLNEda
    # lUeJvyqQrGCBaFEk3tralHwwXiu6QqidSa/Y4ndYy2M+c8a+GXeG5MMigbOYac5A
    # SGeK4AKgHI3WI4qeuykqH31RR3yFL/Jyim1iRo0jrhqFZVXoGs25G7+b5/ktWNJP
    # 4T8uCo5W8cuRUcMOys8JJjRUzymbRkb4TORllLQ08/hOJFZiyvSJTKGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTE4WjAjBgkqhkiG9w0BCQQxFgQUhYMO1+h54o2ZKXAU
    # e6aTX0Vk+q4wDQYJKoZIhvcNAQEBBQAEggEAdAHhYHIrBMFmrM9HmoRZm8UQ30yc
    # pG2DICS1x07ozeGO125AdyLN02db0lCTO+/MdFOMLAjL/6tvnluGhBUg5YynkbmG
    # 3ui9+kjYyXdfdHadPc+pvlMjseB/tqcHb+egT+raZYV5eLXrBgB/GLMIoUuSeAJ5
    # FJ5S5rrbMux7Ls5HBrXlvcu0Rtoir6B2AksAh1tzGzXtzFR7xkyc955YUVn9ZOYM
    # Yn2edKztxiumB5f3wnMU5QbF/wL4sAtZ7xt7VUUlHzy5WrQ2CYFaRHl7Tm59UIqP
    # XYTyFGGZt3TJQYQeYa8/cQhYHTXAInsOHmhSZSkAsez8Q1GaRz5QBu+Zkg==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\Enable-BoxstarterClientRemoting.ps1 Show
    function Enable-BoxstarterClientRemoting {
    <#
    .SYNOPSIS
    Enables and configures PowerShell remoting from the client
    
    .DESCRIPTION
    Enable-BoxstarterClientRemoting will check if PowerShell Remoting is enabled on the local
    machine. If not, it will enable it and it will also add all remote hosts to trust to the
    WSMAN trusted hosts list. The original trusted host list will be returned. When running
    Install-BoxstarterPackage, Boxstarter will roll back to the original trusted hosts when
    the package install is complete.
    
    .PARAMETER RemoteHostsToTrust
    A list of ComputerNames to add to the WSMAN Trusted hosts list.
    
    .OUTPUTS
    A list of the original trusted hosts on the local machine as well as a bool indicating
    if PowerShell Remoting was successfully completed.
    
    .EXAMPLE
    Enable-BoxstarterClientRemoting box1,box2
    
    .LINK
    https://boxstarter.org
    Install-BoxstarterPackage
    
    #>
        param(
        [string[]] $RemoteHostsToTrust
        )
        if(Test-Admin) { $elevated = $true }
    
        [email protected]{
            Success=$False;
            PreviousTrustedHosts=$null;
        }
        Write-BoxstarterMessage "Configuring local PowerShell Remoting settings..."
    
        if(!(Get-Command Test-WSMan -ErrorAction SilentlyContinue)) {
            #I have only seen this on VisualStudio.Com Hosted build servers
            $Result.Success=$True
            return $Result
        }
    
        try { $wsman = Test-WSMan -ErrorAction Stop } catch { $credssp = $_}
        if($credssp.Exception -ne $null){
            Write-BoxstarterMessage "Local PowerShell Remoting is not enabled" -Verbose
            Write-BoxstarterMessage "Error returned $($credssp.ToString())" -Verbose
            if($elevated -and ($Force -or (Confirm-Choice "PowerShell remoting is not enabled locally. Should Boxstarter enable PowerShell remoting?")))
            {
                Write-BoxstarterMessage "Enabling PowerShell Remoting on local machine"
                [email protected]{Force=$true}
                $command=Get-Command Enable-PSRemoting
                if($command.Parameters.Keys -contains "skipnetworkprofilecheck"){
                    $enableArgs.skipnetworkprofilecheck=$true
                }
                Enable-PSRemoting @enableArgs | Out-Null
            }else {
                Write-BoxstarterMessage "Not enabling local PowerShell Remoting aborting package install"
                return $Result
            }
        }
    
        $newHosts = @()
        $Result.PreviousTrustedHosts=(Get-Item "wsman:\localhost\client\trustedhosts").Value
        $hostArray=$Result.PreviousTrustedHosts.Split(",")
        if($hostArray -contains "*") {
            $Result.PreviousTrustedHosts = $null
        }
        else {
            $RemoteHostsToTrust | ? { $hostArray -NotContains $_ } | % { $newHosts += $_ }
            if($newHosts.Count -gt 0) {
                $strNewHosts = $newHosts -join ","
                if($Result.PreviousTrustedHosts.Length -gt 0){
                    $strNewHosts = $Result.PreviousTrustedHosts + "," + $strNewHosts
                }
                Write-BoxstarterMessage "Adding $strNewHosts to allowed wsman hosts" -Verbose
                Set-Item "wsman:\localhost\client\trustedhosts" -Value $strNewHosts -Force
            }
        }
    
        $Result.Success=$True
        return $Result
    }
    
    # SIG # Begin signature block
    # MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
    # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
    # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBUAsGN4JgkuJbS
    # tSQOxzvmfZ0YbHVWlr66t+LLRpFHkqCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
    # ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
    # Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
    # ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
    # DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
    # qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
    # eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
    # CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
    # bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
    # LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
    # yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
    # BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
    # Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
    # aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
    # eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
    # ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
    # Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
    # AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
    # BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
    # BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
    # DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
    # dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
    # r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
    # +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
    # sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
    # aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
    # CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
    # bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
    # IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
    # WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
    # MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
    # IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
    # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
    # mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
    # UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
    # e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
    # /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
    # 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
    # ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
    # FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
    # MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
    # ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
    # NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
    # MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
    # dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
    # hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
    # YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
    # bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
    # z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
    # B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
    # aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
    # QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
    # ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
    # kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
    # hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
    # MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
    # c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
    # MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
    # ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
    # ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
    # WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
    # ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
    # 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
    # jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
    # MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
    # BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
    # A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
    # cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
    # QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
    # YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
    # YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
    # UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
    # QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
    # YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
    # YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
    # LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
    # HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
    # Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
    # Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
    # cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
    # Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
    # ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
    # AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
    # FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
    # NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
    # Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
    # VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
    # wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
    # 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
    # BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
    # Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
    # dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
    # ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    # ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
    # FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
    # fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
    # Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
    # rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
    # t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
    # hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
    # BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
    # ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
    # LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
    # cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
    # bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
    # IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
    # IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
    # bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
    # dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
    # aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
    # /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
    # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
    # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
    # Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
    # RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
    # aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
    # BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    # pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
    # Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
    # uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
    # OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
    # OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
    # oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
    # ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
    # GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
    # QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
    # DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
    # hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
    # NwIBFTAvBgkqhkiG9w0BCQQxIgQgSqBtWza7v/JFdGwTgXdsTI3yTVSTIfwXfF/R
    # nftygEQwDQYJKoZIhvcNAQEBBQAEggEAmXSUrF0rJPipikb+B4Yx+Z2QR+XMm/9J
    # RcDC69X8461qZEvha4KNeUG26PGP7JjZEzt8Kx8ANmC1ChqxAQjywYmMDZR5p6pH
    # F1xGbY3hCsU/3P9znOtZPFEjT4LZZn62mn1Y/4p4xwTzYfwqacJyysHzlmimnRCr
    # 7EH7FUkpSABqVe1Xx+dasq25OUHUT64m63L/DfNS3Od3eFFQiKbBRIZagHwaOs4Z
    # nBL0cHAA4739CPDWRhP2x+PDaf6TM0W677rEg/j78ZKEaJYIh26lJxgosbrgGAbf
    # /oHWBzqVEe1BaSBkZZt1G4U4U9UKjZnpJ57UxEemTqTsz9EhTsRImKGCAg8wggIL
    # BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
    # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
    # BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
    # BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
    # CQUxDxcNMTgwNTE2MTI0OTE2WjAjBgkqhkiG9w0BCQQxFgQUJFzSeWaQkCnTx8tB
    # auIJeAO73qcwDQYJKoZIhvcNAQEBBQAEggEAGJBzA4+sUBQJI6TwZ2l7LZfN/RK6
    # +Ia94fVz9h/6OEKpaySrvmVrRe03O4ptFlH1jG6ik/cWgq2EzVpGlRABWD/ngACK
    # WSzNx893EuIXwzEKcLo2JdI6Qb/d3O0m5mfiRLZoKLaCXkZXlMdCyKwYJSggR5x8
    # +sNqblNgCI4VMtW6HOb59JlfaaRH1Q0FibnS0G5kuN7aZv6+gmbAEUGGs3OvN+Bs
    # MVOLQjZkoY/f25DOtYIRSCyJuSDRp/rdBkM4U2caARPRCee1OxDfRrDB5U/CB19L
    # veW2kOs7aGu99aPnPMD6gbTA6JTlfhf8I8Kg5vOaiCKQGH/xMCXZy1/vAA==
    # SIG # End signature block
    
  • tools\Boxstarter.Chocolatey\en-US\About_Boxstarter_Variable_In_Chocolatey.help.txt Show
    TOPIC
    	About_Boxstarter_Variable_In_Chocolatey
    
    SYNOPSIS
    	A Hashtable for persisting Boxstarter settings.
    
    DESCRIPTION
    	The Boxstarter variable is a hashtable that is globaly accesible.
    	Different Boxstarter modules may store different settings.
    	Some of the Chocolatey module settings available from the
    	Boxstarter variable can also be set from the
    	Invoke-ChocolateyBoxstarter Command.
    
    BOXSTARTER VARIABLE SETTINGS
    	ProgramFiles86
    		Unless the environment has been specilly conficured, this
    		points to the 'Program Files' folder in the system drive on
    		x86 machines and the 'Program Files (x86)' folder in the
    		system drive on 64 bit machines.
    
    	Package
    		The name of the bootstrapper package running in Boxstarter.
    
    	LocalRepo
    		Path to the local directory containing packages that
    		boxstarter will scan when looking for a package. By default
    		this is the BuildPackeged directory under the base Boxstarter
    		directory usually in the ProgramData directory. The
    		default can be changed by using the	Set-BoxstarterConfig
    		function with the -LocalRepo argument.
    
    	NugetSources
    		The NuGet feeds that Boxstarter checks for the Boxstarter
    		Bootstrap package. By default this is the Chocolatey community feed.
    		This can be changed by using the Set-BoxstarterConfig function with
    		the -NugetSources argument.
    
    SEE ALSO
    	https://boxstarter.org
    	About_Boxstarter_Variable_In_Bootstrapper
    	Invoke-ChocolateyBoxstarter
    	Set-BoxstarterConfig
    
  • tools\Boxstarter.Chocolatey\en-US\about_boxstarter_chocolatey.help.txt Show
    TOPIC
    	About_Boxstarter_Chocolatey
    
    SYNOPSIS
    	Describes how to use Boxstarter's Chocolatey module to setup a new
    	environment with your favorite Chocolatey packages.
    
    DESCRIPTION
    	Boxstarter's Chocolatey module compliments the Boxstarter Bootstrap
    	module by augmenting its unattended script execution environment
    	with Chocolatey goodness making it easy to setup a new box with
    	Chocolatey packages.
    
    Installing Chocolatey
    	Boxstarter will check to ensure if Chocolatey is installed. If
    	Chocolatey is not installed it will install it before running any
    	Chocolatey commands. Boxstarter will also check to see if the .Net
    	4.5 Framework is installed before installing Chocolatey since the
    	.Net 4 runtime is a prerequisite.
    
    Chocolatey Boxstarter Packages
    	When calling Install-BoxstarterPackage or just Boxstarter, a
    	Package name must be passed to the command. This is a
    	special Chocolatey package provided by the user that boxstarter asks
    	Chocolatey to install and it contains the script that is intended to
    	install all the applications and settings the user wants setup on the
    	target machine.
    
    	This package script has access to all of the Chocolatey helper
    	functions as well as all Boxstarter logging, WinConfig and
    	Bootstrapper commands. See About_Boxstarter_Bootstrapper and
    	About_Boxstarter_Logging for information regarding those comands.
    
    	This can also be a script file containing the Chocolatey install
    	script. If the package name provided is a URL or resolves to a file.
    	Then it is assumed that this contains the Chocolatey install
    	script and a .nupkg file will be created using the script.
    
    Creating Packages
    	Boxstarter provides some functions to make creation and deployment of
    	packages easy. Use New-BoxstarterPackage to either create a skeleton
    	package with a minimal nuspec and ChocolateyInstall.ps1 or to import an
    	existing package into boxstarter. This will put the package source files
    	in $($Boxstarter.LocalRepo)\<package name>. To pack these source files
    	use Invoke-BoxstarterBuild <package name>. You may also pack all
    	package	in your repo with Invoke-BoxstarterBuild -all. If you would like
    	to make	your local repo a network share, use Set-BoxstarterShare.
    
    Consuming Boxstarter Packages
    	The primary gateway to kicking off a Boxstarter.Chocolatey installation
    	session is Install-BoxstarterPackage. While you may use this
    	PowerShell function, you can also call Boxstarter.bat which takes the
    	exact same parameters as Invoke-CocolateyBoxstarter. If you installed
    	Boxstarter.Chocolatey via Chocolatey or the setup.bat installer,
    	boxstarter.bat is placed in your path. Boxstarter.bat will import the
    	Boxstarter.Chocolatey module and create a PowerShell session bypassing
    	ExecutionPolicy. Boxstarter.bat is ideal for calling Boxstarter
    	remotely. Simply share the Boxstarter base directory and you can access
    	it via \\serverName\Boxstarter\Boxstarter.bat.
    
    Package Sources
    	Install-BoxstarterPackage (or Boxstarter) expects just the name of the
    	bootstrapping package - just like CINST or NuGet. Boxstarter will search
    	the following locations in this order:
    
    	- $Boxstarter.LocalRepo: This is the local repository that by default is
    	in the BuildPackages directory in the Boxstarter Base Boxstarter Module
    	directory ($Boxstarter.BaseDir). You can change the default by using the
    	Set-BoxstarterConfig function with the -LocalRepo argument.
    
    	- Chocolatey.org: The public Chocolatey community feed at https://chocolatey.org/api/v2
    
    	The last remote source can be configured by editing
    	$($Boxstarter.BaseDir)\Boxstarter.Config.
    
    Running Boxstarter Remotely
    	When using the Computername, ConnectionURI or Session parameters of
    	Install-BoxstarterPackage, Boxstarter will attempt to install the package
    	the the remote maching it is directed at. Boxstarter will check to ensure
    	that all necessary client side PowerShell Remoting settings are correctly
    	configured. If they are not, Boxstarter will prompt to confirm whether it
    	should enable them unless the -Force parameter is used. The -Force
    	parameter will suppress prompts. As part of this configuration, Boxstarter
    	will enable CredSSP authentication to ensure that any network connection
    	that the package may try to establish will pass the users credentials.
    
    	Boxstarter will also attempt to enable PowerShell remoting on the target
    	machine if it is not already installed. Boxstarter can only do this if the
    	WMI firewall ports are open on the target computer. If they are not and
    	PowerShell remoting is not enabled on the target machine, the installation
    	will fail. Users can easily enable PowerShell remoting manually on the
    	target machine by opening an administrative PowerShell console on the remote
    	computer and then issuing 'Enable-PSRemoting -Force'.
    
    Reboot detection
    	Perhaps the most compelling feature of Boxstarter is its way to handle
    	reboots during an involved environment setup package. Especially when
    	you are running patches, installing services and downloading complex
    	applications. Boxstarter intercepts all calls to Chocolatey install
    	commands and checks for pending reboots prior to calling Chocolatey. If
    	a pending reboot exists, Boxstarter reboots the machine and automatically
    	logs on with the credentials you provided providing an unattended
    	installation session. After the Chocolatey package completes, if the
    	package fails and returns the common MSI reboot needed exit code of
    	3010, Boxstarter will reboot which will likely cause the package to
    	succeed on the next run. See about_boxstarter_bootstrapper for more
    	details about the rebooting logic and how you can disable or manually
    	invoke them.
    
    Package Authoring Considerations
    	Boxstarter can run any Chocolatey package and any valid PowerShell
    	inside that package. However, there are a few things to consider
    	that may make a Boxstarter Chocolatey package a better installation
    	experience.
    
    	- Boxstarter Chocolatey packages should be repeatable. This is
    	especially true if you anticipate the need to reboot. When Boxstarter
    	reboots, it starts running the package from the beginning. So ensure
    	that there is nothing that would cause the package to break if run
    	twice.
    
    	- If you have several Chocolatey packages that you want to install
    	during the Boxstarter session, it is preferable to call CINST
    	directly from inside your ChocolateyInstall instead of declaring
    	them as dependencies. This is because Boxstarter cannot intercept
    	Chocolatey dependencies so those packages will not have any reboot
    	protections.
    
    SEE ALSO
    
    	https://boxstarter.org
    	Install-BoxstarterPackage
    	Invoke-ChocolateyBoxstarter
    	about_boxstarter_logging
    	Invoke-Boxstarter
    	Invoke-Reboot
    	New-BoxstarterPackage
    	Invoke-BoxstarterBuild
    	Set-BoxstarterShare
    	about_boxstarter_variable_in_bootstrapper
    	about_boxstarter_logging
    	about_boxstarter_variable_in_chocolatey
    	Set-BoxstarterConfig
    
  • tools\Boxstarter.Chocolatey\chocolatey\log4net.xml Show
    <?xml version="1.0"?>
    <doc>
        <assembly>
            <name>log4net</name>
        </assembly>
        <members>
            <member name="T:log4net.Appender.AdoNetAppender">
                <summary>
                Appender that logs to a database.
                </summary>
                <remarks>
                <para>
                <see cref="T:log4net.Appender.AdoNetAppender"/> appends logging events to a table within a
                database. The appender can be configured to specify the connection 
                string by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionString"/> property. 
                The connection type (provider) can be specified by setting the <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/>
                property. For more information on database connection strings for
                your specific database see <a href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a>.
                </para>
                <para>
                Records are written into the database either using a prepared
                statement or a stored procedure. The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property
                is set to <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify a prepared statement
                or to <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify a stored
                procedure.
                </para>
                <para>
                The prepared statement text or the name of the stored procedure
                must be set in the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property.
                </para>
                <para>
                The prepared statement or stored procedure can take a number
                of parameters. Parameters are added using the <see cref="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)"/>
                method. This adds a single <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> to the
                ordered list of parameters. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/>
                type may be subclassed if required to provide database specific
                functionality. The <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> specifies
                the parameter name, database type, size, and how the value should
                be generated using a <see cref="T:log4net.Layout.ILayout"/>.
                </para>
                </remarks>
                <example>
                An example of a SQL Server table that could be logged to:
                <code lang="SQL">
                CREATE TABLE [dbo].[Log] ( 
                  [ID] [int] IDENTITY (1, 1) NOT NULL ,
                  [Date] [datetime] NOT NULL ,
                  [Thread] [varchar] (255) NOT NULL ,
                  [Level] [varchar] (20) NOT NULL ,
                  [Logger] [varchar] (255) NOT NULL ,
                  [Message] [varchar] (4000) NOT NULL 
                ) ON [PRIMARY]
                </code>
                </example>
                <example>
                An example configuration to log to the above table:
                <code lang="XML" escaped="true">
                <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
                  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                  <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa"/>
                  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
                  <parameter>
                    <parameterName value="@log_date"/>
                    <dbType value="DateTime"/>
                    <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
                  </parameter>
                  <parameter>
                    <parameterName value="@thread"/>
                    <dbType value="String"/>
                    <size value="255"/>
                    <layout type="log4net.Layout.PatternLayout" value="%thread"/>
                  </parameter>
                  <parameter>
                    <parameterName value="@log_level"/>
                    <dbType value="String"/>
                    <size value="50"/>
                    <layout type="log4net.Layout.PatternLayout" value="%level"/>
                  </parameter>
                  <parameter>
                    <parameterName value="@logger"/>
                    <dbType value="String"/>
                    <size value="255"/>
                    <layout type="log4net.Layout.PatternLayout" value="%logger"/>
                  </parameter>
                  <parameter>
                    <parameterName value="@message"/>
                    <dbType value="String"/>
                    <size value="4000"/>
                    <layout type="log4net.Layout.PatternLayout" value="%message"/>
                  </parameter>
                </appender>
                </code>
                </example>
                <author>Julian Biddle</author>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Lance Nehring</author>
            </member>
            <member name="T:log4net.Appender.BufferingAppenderSkeleton">
                <summary>
                Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/> that 
                buffers events in a fixed size buffer.
                </summary>
                <remarks>
                <para>
                This base class should be used by appenders that need to buffer a 
                number of events before logging them. For example the <see cref="T:log4net.Appender.AdoNetAppender"/> 
                buffers events and then submits the entire contents of the buffer to 
                the underlying database in one go.
                </para>
                <para>
                Subclasses should override the <see cref="M:SendBuffer(LoggingEvent[])"/>
                method to deliver the buffered events.
                </para>
                <para>The BufferingAppenderSkeleton maintains a fixed size cyclic 
                buffer of events. The size of the buffer is set using 
                the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> property.
                </para>
                <para>A <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> is used to inspect 
                each event as it arrives in the appender. If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> 
                triggers, then the current buffer is sent immediately 
                (see <see cref="M:SendBuffer(LoggingEvent[])"/>). Otherwise the event 
                is stored in the buffer. For example, an evaluator can be used to 
                deliver the events immediately when an ERROR event arrives.
                </para>
                <para>
                The buffering appender can be configured in a <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode. 
                By default the appender is NOT lossy. When the buffer is full all 
                the buffered events are sent with <see cref="M:SendBuffer(LoggingEvent[])"/>.
                If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property is set to <c>true</c> then the 
                buffer will not be sent when it is full, and new events arriving 
                in the appender will overwrite the oldest event in the buffer. 
                In lossy mode the buffer will only be sent when the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/>
                triggers. This can be useful behavior when you need to know about 
                ERROR events but not about events with a lower level, configure an 
                evaluator that will trigger when an ERROR event arrives, the whole 
                buffer will be sent which gives a history of events leading up to
                the ERROR event.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Appender.AppenderSkeleton">
                <summary>
                Abstract base class implementation of <see cref="T:log4net.Appender.IAppender"/>. 
                </summary>
                <remarks>
                <para>
                This class provides the code for common functionality, such 
                as support for threshold filtering and support for general filters.
                </para>
                <para>
                Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
                they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method
                be called after the appenders properties have been configured.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Appender.IAppender">
                <summary>
                Implement this interface for your own strategies for printing log statements.
                </summary>
                <remarks>
                <para>
                Implementors should consider extending the <see cref="T:log4net.Appender.AppenderSkeleton"/>
                class which provides a default implementation of this interface.
                </para>
                <para>
                Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
                they would require that the <see cref="M:IOptionHandler.ActivateOptions()"/> method
                be called after the appenders properties have been configured.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Appender.IAppender.Close">
                <summary>
                Closes the appender and releases resources.
                </summary>
                <remarks>
                <para>
                Releases any resources allocated within the appender such as file handles, 
                network connections, etc.
                </para>
                <para>
                It is a programming error to append to a closed appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)">
                <summary>
                Log the logging event in Appender specific way.
                </summary>
                <param name="loggingEvent">The event to log</param>
                <remarks>
                <para>
                This method is called to log a message into this appender.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.IAppender.Name">
                <summary>
                Gets or sets the name of this appender.
                </summary>
                <value>The name of the appender.</value>
                <remarks>
                <para>The name uniquely identifies the appender.</para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.IBulkAppender">
                <summary>
                Interface for appenders that support bulk logging.
                </summary>
                <remarks>
                <para>
                This interface extends the <see cref="T:log4net.Appender.IAppender"/> interface to
                support bulk logging of <see cref="T:log4net.Core.LoggingEvent"/> objects. Appenders
                should only implement this interface if they can bulk log efficiently.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.IBulkAppender.DoAppend(log4net.Core.LoggingEvent[])">
                <summary>
                Log the array of logging events in Appender specific way.
                </summary>
                <param name="loggingEvents">The events to log</param>
                <remarks>
                <para>
                This method is called to log an array of events into this appender.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.IOptionHandler">
                <summary>
                Interface used to delay activate a configured object.
                </summary>
                <remarks>
                <para>
                This allows an object to defer activation of its options until all
                options have been set. This is required for components which have
                related options that remain ambiguous until all are set.
                </para>
                <para>
                If a component implements this interface then the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions"/> method 
                must be called by the container after its all the configured properties have been set 
                and before the component can be used.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Core.IOptionHandler.ActivateOptions">
                <summary>
                Activate the options that were previously set with calls to properties.
                </summary>
                <remarks>
                <para>
                This allows an object to defer activation of its options until all
                options have been set. This is required for components which have
                related options that remain ambiguous until all are set.
                </para>
                <para>
                If a component implements this interface then this method must be called
                after its properties have been set before the component can be used.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferSize">
                <summary>
                Initial buffer size
                </summary>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.c_renderBufferMaxCapacity">
                <summary>
                Maximum buffer size before it is recycled
                </summary>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.#ctor">
                <summary>
                Default constructor
                </summary>
                <remarks>
                <para>Empty default constructor</para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.Finalize">
                <summary>
                Finalizes this appender by calling the implementation's 
                <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> method.
                </summary>
                <remarks>
                <para>
                If this appender has not been closed then the <c>Finalize</c> method
                will call <see cref="M:log4net.Appender.AppenderSkeleton.Close"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.ActivateOptions">
                <summary>
                Initialize the appender based on the options set
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.AppenderSkeleton.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.Close">
                <summary>
                Closes the appender and release resources.
                </summary>
                <remarks>
                <para>
                Release any resources allocated within the appender such as file handles, 
                network connections, etc.
                </para>
                <para>
                It is a programming error to append to a closed appender.
                </para>
                <para>
                This method cannot be overridden by subclasses. This method 
                delegates the closing of the appender to the <see cref="M:log4net.Appender.AppenderSkeleton.OnClose"/>
                method which must be overridden in the subclass.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)">
                <summary>
                Performs threshold checks and invokes filters before 
                delegating actual logging to the subclasses specific 
                <see cref="M:Append(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                This method cannot be overridden by derived classes. A
                derived class should override the <see cref="M:Append(LoggingEvent)"/> method
                which is called by this method.
                </para>
                <para>
                The implementation of this method is as follows:
                </para>
                <para>
                <list type="bullet">
                	<item>
                		<description>
                		Checks that the severity of the <paramref name="loggingEvent"/>
                		is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
                		appender.</description>
                	</item>
                	<item>
                		<description>
                		Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the 
                		<paramref name="loggingEvent"/>.
                		</description>
                	</item>
                	<item>
                		<description>
                		Calls <see cref="M:PreAppendCheck()"/> and checks that 
                		it returns <c>true</c>.</description>
                	</item>
                </list>
                </para>
                <para>
                If all of the above steps succeed then the <paramref name="loggingEvent"/>
                will be passed to the abstract <see cref="M:Append(LoggingEvent)"/> method.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent[])">
                <summary>
                Performs threshold checks and invokes filters before 
                delegating actual logging to the subclasses specific 
                <see cref="M:Append(LoggingEvent[])"/> method.
                </summary>
                <param name="loggingEvents">The array of events to log.</param>
                <remarks>
                <para>
                This method cannot be overridden by derived classes. A
                derived class should override the <see cref="M:Append(LoggingEvent[])"/> method
                which is called by this method.
                </para>
                <para>
                The implementation of this method is as follows:
                </para>
                <para>
                <list type="bullet">
                	<item>
                		<description>
                		Checks that the severity of the <paramref name="loggingEvents"/>
                		is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
                		appender.</description>
                	</item>
                	<item>
                		<description>
                		Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the 
                		<paramref name="loggingEvents"/>.
                		</description>
                	</item>
                	<item>
                		<description>
                		Calls <see cref="M:PreAppendCheck()"/> and checks that 
                		it returns <c>true</c>.</description>
                	</item>
                </list>
                </para>
                <para>
                If all of the above steps succeed then the <paramref name="loggingEvents"/>
                will be passed to the <see cref="M:Append(LoggingEvent[])"/> method.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.FilterEvent(log4net.Core.LoggingEvent)">
                <summary>
                Test if the logging event should we output by this appender
                </summary>
                <param name="loggingEvent">the event to test</param>
                <returns><c>true</c> if the event should be output, <c>false</c> if the event should be ignored</returns>
                <remarks>
                <para>
                This method checks the logging event against the threshold level set
                on this appender and also against the filters specified on this
                appender.
                </para>
                <para>
                The implementation of this method is as follows:
                </para>
                <para>
                <list type="bullet">
                	<item>
                		<description>
                		Checks that the severity of the <paramref name="loggingEvent"/>
                		is greater than or equal to the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> of this
                		appender.</description>
                	</item>
                	<item>
                		<description>
                		Checks that the <see cref="T:log4net.Filter.IFilter"/> chain accepts the 
                		<paramref name="loggingEvent"/>.
                		</description>
                	</item>
                </list>
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.AddFilter(log4net.Filter.IFilter)">
                <summary>
                Adds a filter to the end of the filter chain.
                </summary>
                <param name="filter">the filter to add to this appender</param>
                <remarks>
                <para>
                The Filters are organized in a linked list.
                </para>
                <para>
                Setting this property causes the new filter to be pushed onto the 
                back of the filter chain.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.ClearFilters">
                <summary>
                Clears the filter list for this appender.
                </summary>
                <remarks>
                <para>
                Clears the filter list for this appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.IsAsSevereAsThreshold(log4net.Core.Level)">
                <summary>
                Checks if the message level is below this appender's threshold.
                </summary>
                <param name="level"><see cref="T:log4net.Core.Level"/> to test against.</param>
                <remarks>
                <para>
                If there is no threshold set, then the return value is always <c>true</c>.
                </para>
                </remarks>
                <returns>
                <c>true</c> if the <paramref name="level"/> meets the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> 
                requirements of this appender.
                </returns>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.OnClose">
                <summary>
                Is called when the appender is closed. Derived classes should override 
                this method if resources need to be released.
                </summary>
                <remarks>
                <para>
                Releases any resources allocated within the appender such as file handles, 
                network connections, etc.
                </para>
                <para>
                It is a programming error to append to a closed appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent)">
                <summary>
                Subclasses of <see cref="T:log4net.Appender.AppenderSkeleton"/> should implement this method 
                to perform actual logging.
                </summary>
                <param name="loggingEvent">The event to append.</param>
                <remarks>
                <para>
                A subclass must implement this method to perform
                logging of the <paramref name="loggingEvent"/>.
                </para>
                <para>This method will be called by <see cref="M:DoAppend(LoggingEvent)"/>
                if all the conditions listed for that method are met.
                </para>
                <para>
                To restrict the logging of events in the appender
                override the <see cref="M:PreAppendCheck()"/> method.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.Append(log4net.Core.LoggingEvent[])">
                <summary>
                Append a bulk array of logging events.
                </summary>
                <param name="loggingEvents">the array of logging events</param>
                <remarks>
                <para>
                This base class implementation calls the <see cref="M:Append(LoggingEvent)"/>
                method for each element in the bulk array.
                </para>
                <para>
                A sub class that can better process a bulk array of events should
                override this method in addition to <see cref="M:Append(LoggingEvent)"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.PreAppendCheck">
                <summary>
                Called before <see cref="M:Append(LoggingEvent)"/> as a precondition.
                </summary>
                <remarks>
                <para>
                This method is called by <see cref="M:DoAppend(LoggingEvent)"/>
                before the call to the abstract <see cref="M:Append(LoggingEvent)"/> method.
                </para>
                <para>
                This method can be overridden in a subclass to extend the checks 
                made before the event is passed to the <see cref="M:Append(LoggingEvent)"/> method.
                </para>
                <para>
                A subclass should ensure that they delegate this call to
                this base class if it is overridden.
                </para>
                </remarks>
                <returns><c>true</c> if the call to <see cref="M:Append(LoggingEvent)"/> should proceed.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(log4net.Core.LoggingEvent)">
                <summary>
                Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string.
                </summary>
                <param name="loggingEvent">The event to render.</param>
                <returns>The event rendered as a string.</returns>
                <remarks>
                <para>
                Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to 
                a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/>
                set to render the <paramref name="loggingEvent"/> to 
                a string.
                </para>
                <para>If there is exception data in the logging event and 
                the layout does not process the exception, this method 
                will append the exception text to the rendered string.
                </para>
                <para>
                Where possible use the alternative version of this method
                <see cref="M:RenderLoggingEvent(TextWriter,LoggingEvent)"/>.
                That method streams the rendering onto an existing Writer
                which can give better performance if the caller already has
                a <see cref="T:System.IO.TextWriter"/> open and ready for writing.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AppenderSkeleton.RenderLoggingEvent(System.IO.TextWriter,log4net.Core.LoggingEvent)">
                <summary>
                Renders the <see cref="T:log4net.Core.LoggingEvent"/> to a string.
                </summary>
                <param name="loggingEvent">The event to render.</param>
                <param name="writer">The TextWriter to write the formatted event to</param>
                <remarks>
                <para>
                Helper method to render a <see cref="T:log4net.Core.LoggingEvent"/> to 
                a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/>
                set to render the <paramref name="loggingEvent"/> to 
                a string.
                </para>
                <para>If there is exception data in the logging event and 
                the layout does not process the exception, this method 
                will append the exception text to the rendered string.
                </para>
                <para>
                Use this method in preference to <see cref="M:RenderLoggingEvent(LoggingEvent)"/>
                where possible. If, however, the caller needs to render the event
                to a string then <see cref="M:RenderLoggingEvent(LoggingEvent)"/> does
                provide an efficient mechanism for doing so.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_layout">
                <summary>
                The layout of this appender.
                </summary>
                <remarks>
                See <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> for more information.
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_name">
                <summary>
                The name of this appender.
                </summary>
                <remarks>
                See <see cref="P:log4net.Appender.AppenderSkeleton.Name"/> for more information.
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_threshold">
                <summary>
                The level threshold of this appender.
                </summary>
                <remarks>
                <para>
                There is no level threshold filtering by default.
                </para>
                <para>
                See <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> for more information.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_errorHandler">
                <summary>
                It is assumed and enforced that errorHandler is never null.
                </summary>
                <remarks>
                <para>
                It is assumed and enforced that errorHandler is never null.
                </para>
                <para>
                See <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> for more information.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_headFilter">
                <summary>
                The first filter in the filter chain.
                </summary>
                <remarks>
                <para>
                Set to <c>null</c> initially.
                </para>
                <para>
                See <see cref="T:log4net.Filter.IFilter"/> for more information.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_tailFilter">
                <summary>
                The last filter in the filter chain.
                </summary>
                <remarks>
                See <see cref="T:log4net.Filter.IFilter"/> for more information.
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_closed">
                <summary>
                Flag indicating if this appender is closed.
                </summary>
                <remarks>
                See <see cref="M:log4net.Appender.AppenderSkeleton.Close"/> for more information.
                </remarks>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_recursiveGuard">
                <summary>
                The guard prevents an appender from repeatedly calling its own DoAppend method
                </summary>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.m_renderWriter">
                <summary>
                StringWriter used to render events
                </summary>
            </member>
            <member name="F:log4net.Appender.AppenderSkeleton.declaringType">
                <summary>
                The fully qualified type of the AppenderSkeleton class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="P:log4net.Appender.AppenderSkeleton.Threshold">
                <summary>
                Gets or sets the threshold <see cref="T:log4net.Core.Level"/> of this appender.
                </summary>
                <value>
                The threshold <see cref="T:log4net.Core.Level"/> of the appender. 
                </value>
                <remarks>
                <para>
                All log events with lower level than the threshold level are ignored 
                by the appender.
                </para>
                <para>
                In configuration files this option is specified by setting the
                value of the <see cref="P:log4net.Appender.AppenderSkeleton.Threshold"/> option to a level
                string, such as "DEBUG", "INFO" and so on.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AppenderSkeleton.ErrorHandler">
                <summary>
                Gets or sets the <see cref="T:log4net.Core.IErrorHandler"/> for this appender.
                </summary>
                <value>The <see cref="T:log4net.Core.IErrorHandler"/> of the appender</value>
                <remarks>
                <para>
                The <see cref="T:log4net.Appender.AppenderSkeleton"/> provides a default 
                implementation for the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/> property. 
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AppenderSkeleton.FilterHead">
                <summary>
                The filter chain.
                </summary>
                <value>The head of the filter chain filter chain.</value>
                <remarks>
                <para>
                Returns the head Filter. The Filters are organized in a linked list
                and so all Filters on this Appender are available through the result.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AppenderSkeleton.Layout">
                <summary>
                Gets or sets the <see cref="T:log4net.Layout.ILayout"/> for this appender.
                </summary>
                <value>The layout of the appender.</value>
                <remarks>
                <para>
                See <see cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/> for more information.
                </para>
                </remarks>
                <seealso cref="P:log4net.Appender.AppenderSkeleton.RequiresLayout"/>
            </member>
            <member name="P:log4net.Appender.AppenderSkeleton.Name">
                <summary>
                Gets or sets the name of this appender.
                </summary>
                <value>The name of the appender.</value>
                <remarks>
                <para>
                The name uniquely identifies the appender.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AppenderSkeleton.RequiresLayout">
                <summary>
                Tests if this appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
                </summary>
                <remarks>
                <para>
                In the rather exceptional case, where the appender 
                implementation admits a layout but can also work without it, 
                then the appender should return <c>true</c>.
                </para>
                <para>
                This default implementation always returns <c>false</c>.
                </para>
                </remarks>
                <returns>
                <c>true</c> if the appender requires a layout object, otherwise <c>false</c>.
                </returns>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE">
                <summary>
                The default buffer size.
                </summary>
                <remarks>
                The default size of the cyclic buffer used to store events.
                This is set to 512 by default.
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class.
                </summary>
                <remarks>
                <para>
                Protected default constructor to allow subclassing.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.#ctor(System.Boolean)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> class.
                </summary>
                <param name="eventMustBeFixed">the events passed through this appender must be
                fixed by the time that they arrive in the derived class' <c>SendBuffer</c> method.</param>
                <remarks>
                <para>
                Protected constructor to allow subclassing.
                </para>
                <para>
                The <paramref name="eventMustBeFixed"/> should be set if the subclass
                expects the events delivered to be fixed even if the 
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to zero, i.e. when no buffering occurs.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush">
                <summary>
                Flush the currently buffered events
                </summary>
                <remarks>
                <para>
                Flushes any events that have been buffered.
                </para>
                <para>
                If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents
                of the buffer will NOT be flushed to the appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.Flush(System.Boolean)">
                <summary>
                Flush the currently buffered events
                </summary>
                <param name="flushLossyBuffer">set to <c>true</c> to flush the buffer of lossy events</param>
                <remarks>
                <para>
                Flushes events that have been buffered. If <paramref name="flushLossyBuffer"/> is
                <c>false</c> then events will only be flushed if this buffer is non-lossy mode.
                </para>
                <para>
                If the appender is buffering in <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> mode then the contents
                of the buffer will only be flushed if <paramref name="flushLossyBuffer"/> is <c>true</c>.
                In this case the contents of the buffer will be tested against the 
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator"/> and if triggering will be output. All other buffered
                events will be discarded.
                </para>
                <para>
                If <paramref name="flushLossyBuffer"/> is <c>true</c> then the buffer will always
                be emptied by calling this method.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions">
                <summary>
                Initialize the appender based on the options set
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.BufferingAppenderSkeleton.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.OnClose">
                <summary>
                Close this appender instance.
                </summary>
                <remarks>
                <para>
                Close this appender instance. If this appender is marked
                as not <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> then the remaining events in 
                the buffer must be sent when the appender is closed.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method. 
                </summary>
                <param name="loggingEvent">the event to log</param>
                <remarks>
                <para>
                Stores the <paramref name="loggingEvent"/> in the cyclic buffer.
                </para>
                <para>
                The buffer will be sent (i.e. passed to the <see cref="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])"/> 
                method) if one of the following conditions is met:
                </para>
                <list type="bullet">
                	<item>
                		<description>The cyclic buffer is full and this appender is
                		marked as not lossy (see <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>)</description>
                	</item>
                	<item>
                		<description>An <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> is set and
                		it is triggered for the <paramref name="loggingEvent"/>
                		specified.</description>
                	</item>
                </list>
                <para>
                Before the event is stored in the buffer it is fixed
                (see <see cref="M:LoggingEvent.FixVolatileData(FixFlags)"/>) to ensure that
                any data referenced by the event will be valid when the buffer
                is processed.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendFromBuffer(log4net.Core.LoggingEvent,log4net.Util.CyclicBuffer)">
                <summary>
                Sends the contents of the buffer.
                </summary>
                <param name="firstLoggingEvent">The first logging event.</param>
                <param name="buffer">The buffer containing the events that need to be send.</param>
                <remarks>
                <para>
                The subclass must override <see cref="M:SendBuffer(LoggingEvent[])"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingAppenderSkeleton.SendBuffer(log4net.Core.LoggingEvent[])">
                <summary>
                Sends the events.
                </summary>
                <param name="events">The events that need to be send.</param>
                <remarks>
                <para>
                The subclass must override this method to process the buffered events.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_bufferSize">
                <summary>
                The size of the cyclic buffer used to hold the logging events.
                </summary>
                <remarks>
                Set to <see cref="F:log4net.Appender.BufferingAppenderSkeleton.DEFAULT_BUFFER_SIZE"/> by default.
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_cb">
                <summary>
                The cyclic buffer used to store the logging events.
                </summary>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_evaluator">
                <summary>
                The triggering event evaluator that causes the buffer to be sent immediately.
                </summary>
                <remarks>
                The object that is used to determine if an event causes the entire
                buffer to be sent immediately. This field can be <c>null</c>, which 
                indicates that event triggering is not to be done. The evaluator
                can be set using the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> property. If this appender
                has the <see cref="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy"/> (<see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> property) set to 
                <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be set.
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossy">
                <summary>
                Indicates if the appender should overwrite events in the cyclic buffer 
                when it becomes full, or if the buffer should be flushed when the 
                buffer is full.
                </summary>
                <remarks>
                If this field is set to <c>true</c> then an <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must 
                be set.
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_lossyEvaluator">
                <summary>
                The triggering event evaluator filters discarded events.
                </summary>
                <remarks>
                The object that is used to determine if an event that is discarded should
                really be discarded or if it should be sent to the appenders. 
                This field can be <c>null</c>, which indicates that all discarded events will
                be discarded. 
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_fixFlags">
                <summary>
                Value indicating which fields in the event should be fixed
                </summary>
                <remarks>
                By default all fields are fixed
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingAppenderSkeleton.m_eventMustBeFixed">
                <summary>
                The events delivered to the subclass must be fixed.
                </summary>
            </member>
            <member name="P:log4net.Appender.BufferingAppenderSkeleton.Lossy">
                <summary>
                Gets or sets a value that indicates whether the appender is lossy.
                </summary>
                <value>
                <c>true</c> if the appender is lossy, otherwise <c>false</c>. The default is <c>false</c>.
                </value>
                <remarks>
                <para>
                This appender uses a buffer to store logging events before 
                delivering them. A triggering event causes the whole buffer
                to be send to the remote sink. If the buffer overruns before
                a triggering event then logging events could be lost. Set
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> to <c>false</c> to prevent logging events 
                from being lost.
                </para>
                <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize">
                <summary>
                Gets or sets the size of the cyclic buffer used to hold the 
                logging events.
                </summary>
                <value>
                The size of the cyclic buffer used to hold the logging events.
                </value>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option takes a positive integer
                representing the maximum number of logging events to collect in 
                a cyclic buffer. When the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is reached,
                oldest events are deleted as new events are added to the
                buffer. By default the size of the cyclic buffer is 512 events.
                </para>
                <para>
                If the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> is set to a value less than
                or equal to 1 then no buffering will occur. The logging event
                will be delivered synchronously (depending on the <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/>
                and <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> properties). Otherwise the event will
                be buffered.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator">
                <summary>
                Gets or sets the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the 
                buffer to be sent immediately.
                </summary>
                <value>
                The <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> that causes the buffer to be
                sent immediately.
                </value>
                <remarks>
                <para>
                The evaluator will be called for each event that is appended to this 
                appender. If the evaluator triggers then the current buffer will 
                immediately be sent (see <see cref="M:SendBuffer(LoggingEvent[])"/>).
                </para>
                <para>If <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Lossy"/> is set to <c>true</c> then an
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.Evaluator"/> must be specified.</para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.BufferingAppenderSkeleton.LossyEvaluator">
                <summary>
                Gets or sets the value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use.
                </summary>
                <value>
                The value of the <see cref="T:log4net.Core.ITriggeringEventEvaluator"/> to use.
                </value>
                <remarks>
                <para>
                The evaluator will be called for each event that is discarded from this 
                appender. If the evaluator triggers then the current buffer will immediately 
                be sent (see <see cref="M:SendBuffer(LoggingEvent[])"/>).
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData">
                <summary>
                Gets or sets a value indicating if only part of the logging event data
                should be fixed.
                </summary>
                <value>
                <c>true</c> if the appender should only fix part of the logging event 
                data, otherwise <c>false</c>. The default is <c>false</c>.
                </value>
                <remarks>
                <para>
                Setting this property to <c>true</c> will cause only part of the
                event data to be fixed and serialized. This will improve performance.
                </para>
                <para>
                See <see cref="M:LoggingEvent.FixVolatileData(FixFlags)"/> for more information.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.BufferingAppenderSkeleton.Fix">
                <summary>
                Gets or sets a the fields that will be fixed in the event
                </summary>
                <value>
                The event fields that will be fixed before the event is buffered
                </value>
                <remarks>
                <para>
                The logging event needs to have certain thread specific values 
                captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/>
                for details.
                </para>
                </remarks>
                <seealso cref="P:log4net.Core.LoggingEvent.Fix"/>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.#ctor">
                <summary> 
                Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppender"/> class.
                </summary>
                <remarks>
                Public default constructor to initialize a new instance of this class.
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.AdoNetAppender.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.OnClose">
                <summary>
                Override the parent method to close the database
                </summary>
                <remarks>
                <para>
                Closes the database command and database connection.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])">
                <summary>
                Inserts the events into the database.
                </summary>
                <param name="events">The events to insert into the database.</param>
                <remarks>
                <para>
                Insert all the events specified in the <paramref name="events"/>
                array into the database.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)">
                <summary>
                Adds a parameter to the command.
                </summary>
                <param name="parameter">The parameter to add to the command.</param>
                <remarks>
                <para>
                Adds a parameter to the ordered list of command parameters.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.SendBuffer(System.Data.IDbTransaction,log4net.Core.LoggingEvent[])">
                <summary>
                Writes the events to the database using the transaction specified.
                </summary>
                <param name="dbTran">The transaction that the events will be executed under.</param>
                <param name="events">The array of events to insert into the database.</param>
                <remarks>
                <para>
                The transaction argument can be <c>null</c> if the appender has been
                configured not to use transactions. See <see cref="P:log4net.Appender.AdoNetAppender.UseTransactions"/>
                property for more information.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.GetLogStatement(log4net.Core.LoggingEvent)">
                <summary>
                Formats the log message into database statement text.
                </summary>
                <param name="logEvent">The event being logged.</param>
                <remarks>
                This method can be overridden by subclasses to provide 
                more control over the format of the database statement.
                </remarks>
                <returns>
                Text that can be passed to a <see cref="T:System.Data.IDbCommand"/>.
                </returns>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.CreateConnection(System.Type,System.String)">
                <summary>
                Creates an <see cref="T:System.Data.IDbConnection"/> instance used to connect to the database.
                </summary>
                <remarks>
                This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary).
                </remarks>
                <param name="connectionType">The <see cref="T:System.Type"/> of the <see cref="T:System.Data.IDbConnection"/> object.</param>
                <param name="connectionString">The connectionString output from the ResolveConnectionString method.</param>
                <returns>An <see cref="T:System.Data.IDbConnection"/> instance with a valid connection string.</returns>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionString([email protected])">
                <summary>
                Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey
                property.
                </summary>
                <remarks>
                ConnectiongStringName is only supported on .NET 2.0 and higher.
                </remarks>
                <param name="connectionStringContext">Additional information describing the connection string.</param>
                <returns>A connection string used to connect to the database.</returns>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.ResolveConnectionType">
                <summary>
                Retrieves the class type of the ADO.NET provider.
                </summary>
                <remarks>
                <para>
                Gets the Type of the ADO.NET provider to use to connect to the
                database. This method resolves the type specified in the 
                <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> property.
                </para>
                <para>
                Subclasses can override this method to return a different type
                if necessary.
                </para>
                </remarks>
                <returns>The <see cref="T:System.Type"/> of the ADO.NET provider</returns>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseCommand">
                <summary>
                Prepares the database command and initialize the parameters.
                </summary>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.InitializeDatabaseConnection">
                <summary>
                Connects to the database.
                </summary>		
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.DisposeCommand(System.Boolean)">
                <summary>
                Cleanup the existing command.
                </summary>
                <param name="ignoreException">
                If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose.
                </param>
            </member>
            <member name="M:log4net.Appender.AdoNetAppender.DiposeConnection">
                <summary>
                Cleanup the existing connection.
                </summary>
                <remarks>
                Calls the IDbConnection's <see cref="M:System.Data.IDbConnection.Close"/> method.
                </remarks>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_usePreparedCommand">
                <summary>
                Flag to indicate if we are using a command object
                </summary>
                <remarks>
                <para>
                Set to <c>true</c> when the appender is to use a prepared
                statement or stored procedure to insert into the database.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_parameters">
                <summary>
                The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects.
                </summary>
                <remarks>
                <para>
                The list of <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> objects.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_securityContext">
                <summary>
                The security context to use for privileged calls
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_dbConnection">
                <summary>
                The <see cref="T:System.Data.IDbConnection"/> that will be used
                to insert logging events into a database.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_dbCommand">
                <summary>
                The database command.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_connectionString">
                <summary>
                Database connection string.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_appSettingsKey">
                <summary>
                The appSettings key from App.Config that contains the connection string.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_connectionStringName">
                <summary>
                The connectionStrings key from App.Config that contains the connection string.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_connectionType">
                <summary>
                String type name of the <see cref="T:System.Data.IDbConnection"/> type name.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_commandText">
                <summary>
                The text of the command.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_commandType">
                <summary>
                The command type.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_useTransactions">
                <summary>
                Indicates whether to use transactions when writing to the database.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.m_reconnectOnError">
                <summary>
                Indicates whether to use transactions when writing to the database.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppender.declaringType">
                <summary>
                The fully qualified type of the AdoNetAppender class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.ConnectionString">
                <summary>
                Gets or sets the database connection string that is used to connect to 
                the database.
                </summary>
                <value>
                The database connection string used to connect to the database.
                </value>
                <remarks>
                <para>
                The connections string is specific to the connection type.
                See <see cref="P:log4net.Appender.AdoNetAppender.ConnectionType"/> for more information.
                </para>
                </remarks>
                <example>Connection string for MS Access via ODBC:
                <code>"DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb"</code>
                </example>
                <example>Another connection string for MS Access via ODBC:
                <code>"Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;"</code>
                </example>
                <example>Connection string for MS Access via OLE DB:
                <code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;"</code>
                </example>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.AppSettingsKey">
                <summary>
                The appSettings key from App.Config that contains the connection string.
                </summary>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.ConnectionStringName">
                <summary>
                The connectionStrings key from App.Config that contains the connection string.
                </summary>
                <remarks>
                This property requires at least .NET 2.0.
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.ConnectionType">
                <summary>
                Gets or sets the type name of the <see cref="T:System.Data.IDbConnection"/> connection
                that should be created.
                </summary>
                <value>
                The type name of the <see cref="T:System.Data.IDbConnection"/> connection.
                </value>
                <remarks>
                <para>
                The type name of the ADO.NET provider to use.
                </para>
                <para>
                The default is to use the OLE DB provider.
                </para>
                </remarks>
                <example>Use the OLE DB Provider. This is the default value.
                <code>System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
                </example>
                <example>Use the MS SQL Server Provider. 
                <code>System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
                </example>
                <example>Use the ODBC Provider. 
                <code>Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral</code>
                This is an optional package that you can download from 
                <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a> 
                search for <b>ODBC .NET Data Provider</b>.
                </example>
                <example>Use the Oracle Provider. 
                <code>System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</code>
                This is an optional package that you can download from 
                <a href="http://msdn.microsoft.com/downloads">http://msdn.microsoft.com/downloads</a> 
                search for <b>.NET Managed Provider for Oracle</b>.
                </example>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.CommandText">
                <summary>
                Gets or sets the command text that is used to insert logging events
                into the database.
                </summary>
                <value>
                The command text used to insert logging events into the database.
                </value>
                <remarks>
                <para>
                Either the text of the prepared statement or the
                name of the stored procedure to execute to write into
                the database.
                </para>
                <para>
                The <see cref="P:log4net.Appender.AdoNetAppender.CommandType"/> property determines if
                this text is a prepared statement or a stored procedure.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.CommandType">
                <summary>
                Gets or sets the command type to execute.
                </summary>
                <value>
                The command type to execute.
                </value>
                <remarks>
                <para>
                This value may be either <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>) to specify
                that the <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> is a prepared statement to execute, 
                or <see cref="F:System.Data.CommandType.StoredProcedure"/> (<c>System.Data.CommandType.StoredProcedure</c>) to specify that the
                <see cref="P:log4net.Appender.AdoNetAppender.CommandText"/> property is the name of a stored procedure
                to execute.
                </para>
                <para>
                The default value is <see cref="F:System.Data.CommandType.Text"/> (<c>System.Data.CommandType.Text</c>).
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.UseTransactions">
                <summary>
                Should transactions be used to insert logging events in the database.
                </summary>
                <value>
                <c>true</c> if transactions should be used to insert logging events in
                the database, otherwise <c>false</c>. The default value is <c>true</c>.
                </value>
                <remarks>
                <para>
                Gets or sets a value that indicates whether transactions should be used
                to insert logging events in the database.
                </para>
                <para>
                When set a single transaction will be used to insert the buffered events
                into the database. Otherwise each event will be inserted without using
                an explicit transaction.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.SecurityContext">
                <summary>
                Gets or sets the <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> used to call the NetSend method.
                </value>
                <remarks>
                <para>
                Unless a <see cref="P:log4net.Appender.AdoNetAppender.SecurityContext"/> specified here for this appender
                the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
                security context to use. The default behavior is to use the security context
                of the current thread.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.ReconnectOnError">
                <summary>
                Should this appender try to reconnect to the database on error.
                </summary>
                <value>
                <c>true</c> if the appender should try to reconnect to the database after an
                error has occurred, otherwise <c>false</c>. The default value is <c>false</c>, 
                i.e. not to try to reconnect.
                </value>
                <remarks>
                <para>
                The default behaviour is for the appender not to try to reconnect to the
                database if an error occurs. Subsequent logging events are discarded.
                </para>
                <para>
                To force the appender to attempt to reconnect to the database set this
                property to <c>true</c>.
                </para>
                <note>
                When the appender attempts to connect to the database there may be a
                delay of up to the connection timeout specified in the connection string.
                This delay will block the calling application's thread. 
                Until the connection can be reestablished this potential delay may occur multiple times.
                </note>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppender.Connection">
                <summary>
                Gets or sets the underlying <see cref="T:System.Data.IDbConnection"/>.
                </summary>
                <value>
                The underlying <see cref="T:System.Data.IDbConnection"/>.
                </value>
                <remarks>
                <see cref="T:log4net.Appender.AdoNetAppender"/> creates a <see cref="T:System.Data.IDbConnection"/> to insert 
                logging events into a database.  Classes deriving from <see cref="T:log4net.Appender.AdoNetAppender"/> 
                can use this property to get or set this <see cref="T:System.Data.IDbConnection"/>.  Use the 
                underlying <see cref="T:System.Data.IDbConnection"/> returned from <see cref="P:log4net.Appender.AdoNetAppender.Connection"/> if 
                you require access beyond that which <see cref="T:log4net.Appender.AdoNetAppender"/> provides.
                </remarks>
            </member>
            <member name="T:log4net.Appender.AdoNetAppenderParameter">
                <summary>
                Parameter type used by the <see cref="T:log4net.Appender.AdoNetAppender"/>.
                </summary>
                <remarks>
                <para>
                This class provides the basic database parameter properties
                as defined by the <see cref="T:System.Data.IDbDataParameter"/> interface.
                </para>
                <para>This type can be subclassed to provide database specific
                functionality. The two methods that are called externally are
                <see cref="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)"/> and <see cref="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppenderParameter.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.AdoNetAppenderParameter"/> class.
                </summary>
                <remarks>
                Default constructor for the AdoNetAppenderParameter class.
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppenderParameter.Prepare(System.Data.IDbCommand)">
                <summary>
                Prepare the specified database command object.
                </summary>
                <param name="command">The command to prepare.</param>
                <remarks>
                <para>
                Prepares the database command object by adding
                this parameter to its collection of parameters.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AdoNetAppenderParameter.FormatValue(System.Data.IDbCommand,log4net.Core.LoggingEvent)">
                <summary>
                Renders the logging event and set the parameter value in the command.
                </summary>
                <param name="command">The command containing the parameter.</param>
                <param name="loggingEvent">The event to be rendered.</param>
                <remarks>
                <para>
                Renders the logging event using this parameters layout
                object. Sets the value of the parameter on the command object.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_parameterName">
                <summary>
                The name of this parameter.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_dbType">
                <summary>
                The database type for this parameter.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_inferType">
                <summary>
                Flag to infer type rather than use the DbType
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_precision">
                <summary>
                The precision for this parameter.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_scale">
                <summary>
                The scale for this parameter.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_size">
                <summary>
                The size for this parameter.
                </summary>
            </member>
            <member name="F:log4net.Appender.AdoNetAppenderParameter.m_layout">
                <summary>
                The <see cref="T:log4net.Layout.IRawLayout"/> to use to render the
                logging event into an object for this parameter.
                </summary>
            </member>
            <member name="P:log4net.Appender.AdoNetAppenderParameter.ParameterName">
                <summary>
                Gets or sets the name of this parameter.
                </summary>
                <value>
                The name of this parameter.
                </value>
                <remarks>
                <para>
                The name of this parameter. The parameter name
                must match up to a named parameter to the SQL stored procedure
                or prepared statement.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AdoNetAppenderParameter.DbType">
                <summary>
                Gets or sets the database type for this parameter.
                </summary>
                <value>
                The database type for this parameter.
                </value>
                <remarks>
                <para>
                The database type for this parameter. This property should
                be set to the database type from the <see cref="P:log4net.Appender.AdoNetAppenderParameter.DbType"/>
                enumeration. See <see cref="P:System.Data.IDataParameter.DbType"/>.
                </para>
                <para>
                This property is optional. If not specified the ADO.NET provider 
                will attempt to infer the type from the value.
                </para>
                </remarks>
                <seealso cref="P:System.Data.IDataParameter.DbType"/>
            </member>
            <member name="P:log4net.Appender.AdoNetAppenderParameter.Precision">
                <summary>
                Gets or sets the precision for this parameter.
                </summary>
                <value>
                The precision for this parameter.
                </value>
                <remarks>
                <para>
                The maximum number of digits used to represent the Value.
                </para>
                <para>
                This property is optional. If not specified the ADO.NET provider 
                will attempt to infer the precision from the value.
                </para>
                </remarks>
                <seealso cref="P:System.Data.IDbDataParameter.Precision"/>
            </member>
            <member name="P:log4net.Appender.AdoNetAppenderParameter.Scale">
                <summary>
                Gets or sets the scale for this parameter.
                </summary>
                <value>
                The scale for this parameter.
                </value>
                <remarks>
                <para>
                The number of decimal places to which Value is resolved.
                </para>
                <para>
                This property is optional. If not specified the ADO.NET provider 
                will attempt to infer the scale from the value.
                </para>
                </remarks>
                <seealso cref="P:System.Data.IDbDataParameter.Scale"/>
            </member>
            <member name="P:log4net.Appender.AdoNetAppenderParameter.Size">
                <summary>
                Gets or sets the size for this parameter.
                </summary>
                <value>
                The size for this parameter.
                </value>
                <remarks>
                <para>
                The maximum size, in bytes, of the data within the column.
                </para>
                <para>
                This property is optional. If not specified the ADO.NET provider 
                will attempt to infer the size from the value.
                </para>
                <para>
                For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case.
                </para>
                </remarks>
                <seealso cref="P:System.Data.IDbDataParameter.Size"/>
            </member>
            <member name="P:log4net.Appender.AdoNetAppenderParameter.Layout">
                <summary>
                Gets or sets the <see cref="T:log4net.Layout.IRawLayout"/> to use to 
                render the logging event into an object for this 
                parameter.
                </summary>
                <value>
                The <see cref="T:log4net.Layout.IRawLayout"/> used to render the
                logging event into an object for this parameter.
                </value>
                <remarks>
                <para>
                The <see cref="T:log4net.Layout.IRawLayout"/> that renders the value for this
                parameter.
                </para>
                <para>
                The <see cref="T:log4net.Layout.RawLayoutConverter"/> can be used to adapt
                any <see cref="T:log4net.Layout.ILayout"/> into a <see cref="T:log4net.Layout.IRawLayout"/>
                for use in the property.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.AnsiColorTerminalAppender">
                <summary>
                Appends logging events to the terminal using ANSI color escape sequences.
                </summary>
                <remarks>
                <para>
                AnsiColorTerminalAppender appends log events to the standard output stream
                or the error output stream using a layout specified by the 
                user. It also allows the color of a specific level of message to be set.
                </para>
                <note>
                This appender expects the terminal to understand the VT100 control set 
                in order to interpret the color codes. If the terminal or console does not
                understand the control codes the behavior is not defined.
                </note>
                <para>
                By default, all output is written to the console's standard output stream.
                The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> property can be set to direct the output to the
                error stream.
                </para>
                <para>
                NOTE: This appender writes each message to the <c>System.Console.Out</c> or 
                <c>System.Console.Error</c> that is set at the time the event is appended.
                Therefore it is possible to programmatically redirect the output of this appender 
                (for example NUnit does this to capture program output). While this is the desired
                behavior of this appender it may have security implications in your application. 
                </para>
                <para>
                When configuring the ANSI colored terminal appender, a mapping should be
                specified to map a logging level to a color. For example:
                </para>
                <code lang="XML" escaped="true">
                <mapping>
                	<level value="ERROR"/>
                	<foreColor value="White"/>
                	<backColor value="Red"/>
                    <attributes value="Bright,Underscore"/>
                </mapping>
                <mapping>
                	<level value="DEBUG"/>
                	<backColor value="Green"/>
                </mapping>
                </code>
                <para>
                The Level is the standard log4net logging level and ForeColor and BackColor can be any
                of the following values:
                <list type="bullet">
                <item><term>Blue</term><description></description></item>
                <item><term>Green</term><description></description></item>
                <item><term>Red</term><description></description></item>
                <item><term>White</term><description></description></item>
                <item><term>Yellow</term><description></description></item>
                <item><term>Purple</term><description></description></item>
                <item><term>Cyan</term><description></description></item>
                </list>
                These color values cannot be combined together to make new colors.
                </para>
                <para>
                The attributes can be any combination of the following:
                <list type="bullet">
                <item><term>Bright</term><description>foreground is brighter</description></item>
                <item><term>Dim</term><description>foreground is dimmer</description></item>
                <item><term>Underscore</term><description>message is underlined</description></item>
                <item><term>Blink</term><description>foreground is blinking (does not work on all terminals)</description></item>
                <item><term>Reverse</term><description>foreground and background are reversed</description></item>
                <item><term>Hidden</term><description>output is hidden</description></item>
                <item><term>Strikethrough</term><description>message has a line through it</description></item>
                </list>
                While any of these attributes may be combined together not all combinations
                work well together, for example setting both <i>Bright</i> and <i>Dim</i> attributes makes
                no sense.
                </para>
                </remarks>
                <author>Patrick Wagstrom</author>
                <author>Nicko Cadell</author>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleOut">
                <summary>
                The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.ConsoleError">
                <summary>
                The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.AnsiColorTerminalAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.PostEventCodes">
                <summary>
                Ansi code to reset terminal
                </summary>
            </member>
            <member name="M:log4net.Appender.AnsiColorTerminalAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class.
                </summary>
                <remarks>
                The instance of the <see cref="T:log4net.Appender.AnsiColorTerminalAppender"/> class is set up to write 
                to the standard output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.AnsiColorTerminalAppender.AddMapping(log4net.Appender.AnsiColorTerminalAppender.LevelColors)">
                <summary>
                Add a mapping of level to color
                </summary>
                <param name="mapping">The mapping to add</param>
                <remarks>
                <para>
                Add a <see cref="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors"/> mapping to this appender.
                Each mapping defines the foreground and background colours
                for a level.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AnsiColorTerminalAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the event to the console.
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AnsiColorTerminalAppender.ActivateOptions">
                <summary>
                Initialize the options for this appender
                </summary>
                <remarks>
                <para>
                Initialize the level to color mappings set on this appender.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_writeToErrorStream">
                <summary>
                Flag to write output to the error stream rather than the standard output stream
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.m_levelMapping">
                <summary>
                Mapping from level object to color value
                </summary>
            </member>
            <member name="P:log4net.Appender.AnsiColorTerminalAppender.Target">
                <summary>
                Target is the value of the console output stream.
                </summary>
                <value>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </value>
                <remarks>
                <para>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AnsiColorTerminalAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes">
                <summary>
                The enum of possible display attributes
                </summary>
                <remarks>
                <para>
                The following flags can be combined together to
                form the ANSI color attributes.
                </para>
                </remarks>
                <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Bright">
                <summary>
                text is bright
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Dim">
                <summary>
                text is dim
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Underscore">
                <summary>
                text is underlined
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Blink">
                <summary>
                text is blinking
                </summary>
                <remarks>
                Not all terminals support this attribute
                </remarks>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Reverse">
                <summary>
                text and background colors are reversed
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Hidden">
                <summary>
                text is hidden
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Strikethrough">
                <summary>
                text is displayed with a strikethrough
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiAttributes.Light">
                <summary>
                text color is light
                </summary>
            </member>
            <member name="T:log4net.Appender.AnsiColorTerminalAppender.AnsiColor">
                <summary>
                The enum of possible foreground or background color values for 
                use with the color mapping method
                </summary>
                <remarks>
                <para>
                The output can be in one for the following ANSI colors.
                </para>
                </remarks>
                <seealso cref="T:log4net.Appender.AnsiColorTerminalAppender"/>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Black">
                <summary>
                color is black
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Red">
                <summary>
                color is red
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Green">
                <summary>
                color is green
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Yellow">
                <summary>
                color is yellow
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Blue">
                <summary>
                color is blue
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Magenta">
                <summary>
                color is magenta
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.Cyan">
                <summary>
                color is cyan
                </summary>
            </member>
            <member name="F:log4net.Appender.AnsiColorTerminalAppender.AnsiColor.White">
                <summary>
                color is white
                </summary>
            </member>
            <member name="T:log4net.Appender.AnsiColorTerminalAppender.LevelColors">
                <summary>
                A class to act as a mapping between the level that a logging call is made at and
                the color it should be displayed as.
                </summary>
                <remarks>
                <para>
                Defines the mapping between a level and the color it should be displayed in.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Util.LevelMappingEntry">
                <summary>
                An entry in the <see cref="T:log4net.Util.LevelMapping"/>
                </summary>
                <remarks>
                <para>
                This is an abstract base class for types that are stored in the
                <see cref="T:log4net.Util.LevelMapping"/> object.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Util.LevelMappingEntry.#ctor">
                <summary>
                Default protected constructor
                </summary>
                <remarks>
                <para>
                Default protected constructor
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Util.LevelMappingEntry.ActivateOptions">
                <summary>
                Initialize any options defined on this entry
                </summary>
                <remarks>
                <para>
                Should be overridden by any classes that need to initialise based on their options
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Util.LevelMappingEntry.Level">
                <summary>
                The level that is the key for this mapping 
                </summary>
                <value>
                The <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this mapping 
                </value>
                <remarks>
                <para>
                Get or set the <see cref="P:log4net.Util.LevelMappingEntry.Level"/> that is the key for this
                mapping subclass.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ActivateOptions">
                <summary>
                Initialize the options for the object
                </summary>
                <remarks>
                <para>
                Combine the <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> together
                and append the attributes.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor">
                <summary>
                The mapped foreground color for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped foreground color for the specified level
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor">
                <summary>
                The mapped background color for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped background color for the specified level
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes">
                <summary>
                The color attributes for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The color attributes for the specified level
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.CombinedColor">
                <summary>
                The combined <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.ForeColor"/>, <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.BackColor"/> and
                <see cref="P:log4net.Appender.AnsiColorTerminalAppender.LevelColors.Attributes"/> suitable for setting the ansi terminal color.
                </summary>
            </member>
            <member name="T:log4net.Appender.AppenderCollection">
                <summary>
                A strongly-typed collection of <see cref="T:log4net.Appender.IAppender"/> objects.
                </summary>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.ReadOnly(log4net.Appender.AppenderCollection)">
                <summary>
                Creates a read-only wrapper for a <c>AppenderCollection</c> instance.
                </summary>
                <param name="list">list to create a readonly wrapper arround</param>
                <returns>
                An <c>AppenderCollection</c> wrapper that is read-only.
                </returns>
            </member>
            <member name="F:log4net.Appender.AppenderCollection.EmptyCollection">
                <summary>
                An empty readonly static AppenderCollection
                </summary>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.#ctor">
                <summary>
                Initializes a new instance of the <c>AppenderCollection</c> class
                that is empty and has the default initial capacity.
                </summary>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Int32)">
                <summary>
                Initializes a new instance of the <c>AppenderCollection</c> class
                that has the specified initial capacity.
                </summary>
                <param name="capacity">
                The number of elements that the new <c>AppenderCollection</c> is initially capable of storing.
                </param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection)">
                <summary>
                Initializes a new instance of the <c>AppenderCollection</c> class
                that contains elements copied from the specified <c>AppenderCollection</c>.
                </summary>
                <param name="c">The <c>AppenderCollection</c> whose elements are copied to the new collection.</param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.IAppender[])">
                <summary>
                Initializes a new instance of the <c>AppenderCollection</c> class
                that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> array.
                </summary>
                <param name="a">The <see cref="T:log4net.Appender.IAppender"/> array whose elements are copied to the new list.</param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.#ctor(System.Collections.ICollection)">
                <summary>
                Initializes a new instance of the <c>AppenderCollection</c> class
                that contains elements copied from the specified <see cref="T:log4net.Appender.IAppender"/> collection.
                </summary>
                <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements are copied to the new list.</param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.#ctor(log4net.Appender.AppenderCollection.Tag)">
                <summary>
                Allow subclasses to avoid our default constructors
                </summary>
                <param name="tag"></param>
                <exclude/>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[])">
                <summary>
                Copies the entire <c>AppenderCollection</c> to a one-dimensional
                <see cref="T:log4net.Appender.IAppender"/> array.
                </summary>
                <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.CopyTo(log4net.Appender.IAppender[],System.Int32)">
                <summary>
                Copies the entire <c>AppenderCollection</c> to a one-dimensional
                <see cref="T:log4net.Appender.IAppender"/> array, starting at the specified index of the target array.
                </summary>
                <param name="array">The one-dimensional <see cref="T:log4net.Appender.IAppender"/> array to copy to.</param>
                <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Add(log4net.Appender.IAppender)">
                <summary>
                Adds a <see cref="T:log4net.Appender.IAppender"/> to the end of the <c>AppenderCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to be added to the end of the <c>AppenderCollection</c>.</param>
                <returns>The index at which the value has been added.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Clear">
                <summary>
                Removes all elements from the <c>AppenderCollection</c>.
                </summary>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Clone">
                <summary>
                Creates a shallow copy of the <see cref="T:log4net.Appender.AppenderCollection"/>.
                </summary>
                <returns>A new <see cref="T:log4net.Appender.AppenderCollection"/> with a shallow copy of the collection data.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Contains(log4net.Appender.IAppender)">
                <summary>
                Determines whether a given <see cref="T:log4net.Appender.IAppender"/> is in the <c>AppenderCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to check for.</param>
                <returns><c>true</c> if <paramref name="item"/> is found in the <c>AppenderCollection</c>; otherwise, <c>false</c>.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.IndexOf(log4net.Appender.IAppender)">
                <summary>
                Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Appender.IAppender"/>
                in the <c>AppenderCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to locate in the <c>AppenderCollection</c>.</param>
                <returns>
                The zero-based index of the first occurrence of <paramref name="item"/> 
                in the entire <c>AppenderCollection</c>, if found; otherwise, -1.
                </returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Insert(System.Int32,log4net.Appender.IAppender)">
                <summary>
                Inserts an element into the <c>AppenderCollection</c> at the specified index.
                </summary>
                <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
                <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to insert.</param>
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="index"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Remove(log4net.Appender.IAppender)">
                <summary>
                Removes the first occurrence of a specific <see cref="T:log4net.Appender.IAppender"/> from the <c>AppenderCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Appender.IAppender"/> to remove from the <c>AppenderCollection</c>.</param>
                <exception cref="T:System.ArgumentException">
                The specified <see cref="T:log4net.Appender.IAppender"/> was not found in the <c>AppenderCollection</c>.
                </exception>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.RemoveAt(System.Int32)">
                <summary>
                Removes the element at the specified index of the <c>AppenderCollection</c>.
                </summary>
                <param name="index">The zero-based index of the element to remove.</param>
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="index"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.GetEnumerator">
                <summary>
                Returns an enumerator that can iterate through the <c>AppenderCollection</c>.
                </summary>
                <returns>An <see cref="T:log4net.Appender.AppenderCollection.Enumerator"/> for the entire <c>AppenderCollection</c>.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.AppenderCollection)">
                <summary>
                Adds the elements of another <c>AppenderCollection</c> to the current <c>AppenderCollection</c>.
                </summary>
                <param name="x">The <c>AppenderCollection</c> whose elements should be added to the end of the current <c>AppenderCollection</c>.</param>
                <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.AddRange(log4net.Appender.IAppender[])">
                <summary>
                Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> array to the current <c>AppenderCollection</c>.
                </summary>
                <param name="x">The <see cref="T:log4net.Appender.IAppender"/> array whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
                <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.AddRange(System.Collections.ICollection)">
                <summary>
                Adds the elements of a <see cref="T:log4net.Appender.IAppender"/> collection to the current <c>AppenderCollection</c>.
                </summary>
                <param name="col">The <see cref="T:log4net.Appender.IAppender"/> collection whose elements should be added to the end of the <c>AppenderCollection</c>.</param>
                <returns>The new <see cref="P:log4net.Appender.AppenderCollection.Count"/> of the <c>AppenderCollection</c>.</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.TrimToSize">
                <summary>
                Sets the capacity to the actual number of elements.
                </summary>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.ToArray">
                <summary>
                Return the collection elements as an array
                </summary>
                <returns>the array</returns>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32)">
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="i"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.ValidateIndex(System.Int32,System.Boolean)">
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="i"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.Count">
                <summary>
                Gets the number of elements actually contained in the <c>AppenderCollection</c>.
                </summary>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.IsSynchronized">
                <summary>
                Gets a value indicating whether access to the collection is synchronized (thread-safe).
                </summary>
                <returns>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</returns>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.SyncRoot">
                <summary>
                Gets an object that can be used to synchronize access to the collection.
                </summary>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.Item(System.Int32)">
                <summary>
                Gets or sets the <see cref="T:log4net.Appender.IAppender"/> at the specified index.
                </summary>
                <param name="index">The zero-based index of the element to get or set.</param>
                <exception cref="T:System.ArgumentOutOfRangeException">
                	<para><paramref name="index"/> is less than zero</para>
                	<para>-or-</para>
                	<para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Appender.AppenderCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.IsFixedSize">
                <summary>
                Gets a value indicating whether the collection has a fixed size.
                </summary>
                <value>true if the collection has a fixed size; otherwise, false. The default is false</value>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.IsReadOnly">
                <summary>
                Gets a value indicating whether the IList is read-only.
                </summary>
                <value>true if the collection is read-only; otherwise, false. The default is false</value>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.Capacity">
                <summary>
                Gets or sets the number of elements the <c>AppenderCollection</c> can contain.
                </summary>
            </member>
            <member name="T:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator">
                <summary>
                Supports type-safe iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>.
                </summary>
                <exclude/>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.MoveNext">
                <summary>
                Advances the enumerator to the next element in the collection.
                </summary>
                <returns>
                <c>true</c> if the enumerator was successfully advanced to the next element; 
                <c>false</c> if the enumerator has passed the end of the collection.
                </returns>
                <exception cref="T:System.InvalidOperationException">
                The collection was modified after the enumerator was created.
                </exception>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Reset">
                <summary>
                Sets the enumerator to its initial position, before the first element in the collection.
                </summary>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.IAppenderCollectionEnumerator.Current">
                <summary>
                Gets the current element in the collection.
                </summary>
            </member>
            <member name="T:log4net.Appender.AppenderCollection.Tag">
                <summary>
                Type visible only to our subclasses
                Used to access protected constructor
                </summary>
                <exclude/>
            </member>
            <member name="F:log4net.Appender.AppenderCollection.Tag.Default">
                <summary>
                A value
                </summary>
            </member>
            <member name="T:log4net.Appender.AppenderCollection.Enumerator">
                <summary>
                Supports simple iteration over a <see cref="T:log4net.Appender.AppenderCollection"/>.
                </summary>
                <exclude/>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Enumerator.#ctor(log4net.Appender.AppenderCollection)">
                <summary>
                Initializes a new instance of the <c>Enumerator</c> class.
                </summary>
                <param name="tc"></param>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Enumerator.MoveNext">
                <summary>
                Advances the enumerator to the next element in the collection.
                </summary>
                <returns>
                <c>true</c> if the enumerator was successfully advanced to the next element; 
                <c>false</c> if the enumerator has passed the end of the collection.
                </returns>
                <exception cref="T:System.InvalidOperationException">
                The collection was modified after the enumerator was created.
                </exception>
            </member>
            <member name="M:log4net.Appender.AppenderCollection.Enumerator.Reset">
                <summary>
                Sets the enumerator to its initial position, before the first element in the collection.
                </summary>
            </member>
            <member name="P:log4net.Appender.AppenderCollection.Enumerator.Current">
                <summary>
                Gets the current element in the collection.
                </summary>
            </member>
            <member name="T:log4net.Appender.AppenderCollection.ReadOnlyAppenderCollection">
                <exclude/>
            </member>
            <member name="T:log4net.Appender.AspNetTraceAppender">
                <summary>
                <para>
                Appends log events to the ASP.NET <see cref="T:System.Web.TraceContext"/> system.
                </para>
                </summary>
                <remarks>
                <para>
                Diagnostic information and tracing messages that you specify are appended to the output 
                of the page that is sent to the requesting browser. Optionally, you can view this information
                from a separate trace viewer (Trace.axd) that displays trace information for every page in a 
                given application.
                </para>
                <para>
                Trace statements are processed and displayed only when tracing is enabled. You can control 
                whether tracing is displayed to a page, to the trace viewer, or both.
                </para>
                <para>
                The logging event is passed to the <see cref="M:TraceContext.Write(string)"/> or 
                <see cref="M:TraceContext.Warn(string)"/> method depending on the level of the logging event.
                The event's logger name is the default value for the category parameter of the Write/Warn method. 
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Ron Grabowski</author>
            </member>
            <member name="M:log4net.Appender.AspNetTraceAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.AspNetTraceAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.AspNetTraceAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Write the logging event to the ASP.NET trace
                </summary>
                <param name="loggingEvent">the event to log</param>
                <remarks>
                <para>
                Write the logging event to the ASP.NET trace
                <c>HttpContext.Current.Trace</c> 
                (<see cref="T:System.Web.TraceContext"/>).
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.AspNetTraceAppender.m_category">
                <summary>
                Defaults to %logger
                </summary>
            </member>
            <member name="P:log4net.Appender.AspNetTraceAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.AspNetTraceAppender.Category">
                <summary>
                The category parameter sent to the Trace method.
                </summary>
                <remarks>
                <para>
                Defaults to %logger which will use the logger name of the current 
                <see cref="T:log4net.Core.LoggingEvent"/> as the category parameter.
                </para>
                <para>
                </para> 
                </remarks>
            </member>
            <member name="T:log4net.Appender.BufferingForwardingAppender">
                <summary>
                Buffers events and then forwards them to attached appenders.
                </summary>
                <remarks>
                <para>
                The events are buffered in this appender until conditions are
                met to allow the appender to deliver the events to the attached 
                appenders. See <see cref="T:log4net.Appender.BufferingAppenderSkeleton"/> for the
                conditions that cause the buffer to be sent.
                </para>
                <para>The forwarding appender can be used to specify different 
                thresholds and filters for the same appender at different locations 
                within the hierarchy.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Core.IAppenderAttachable">
                <summary>
                Interface for attaching appenders to objects.
                </summary>
                <remarks>
                <para>
                Interface for attaching, removing and retrieving appenders.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.IAppenderAttachable.AddAppender(log4net.Appender.IAppender)">
                <summary>
                Attaches an appender.
                </summary>
                <param name="appender">The appender to add.</param>
                <remarks>
                <para>
                Add the specified appender. The implementation may
                choose to allow or deny duplicate appenders.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IAppenderAttachable.GetAppender(System.String)">
                <summary>
                Gets an attached appender with the specified name.
                </summary>
                <param name="name">The name of the appender to get.</param>
                <returns>
                The appender with the name specified, or <c>null</c> if no appender with the
                specified name is found.
                </returns>
                <remarks>
                <para>
                Returns an attached appender with the <paramref name="name"/> specified.
                If no appender with the specified name is found <c>null</c> will be
                returned.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IAppenderAttachable.RemoveAllAppenders">
                <summary>
                Removes all attached appenders.
                </summary>
                <remarks>
                <para>
                Removes and closes all attached appenders
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(log4net.Appender.IAppender)">
                <summary>
                Removes the specified appender from the list of attached appenders.
                </summary>
                <param name="appender">The appender to remove.</param>
                <returns>The appender removed from the list</returns>
                <remarks>
                <para>
                The appender removed is not closed.
                If you are discarding the appender you must call
                <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IAppenderAttachable.RemoveAppender(System.String)">
                <summary>
                Removes the appender with the specified name from the list of appenders.
                </summary>
                <param name="name">The name of the appender to remove.</param>
                <returns>The appender removed from the list</returns>
                <remarks>
                <para>
                The appender removed is not closed.
                If you are discarding the appender you must call
                <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.IAppenderAttachable.Appenders">
                <summary>
                Gets all attached appenders.
                </summary>
                <value>
                A collection of attached appenders.
                </value>
                <remarks>
                <para>
                Gets a collection of attached appenders.
                If there are no attached appenders the
                implementation should return an empty 
                collection rather than <c>null</c>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.BufferingForwardingAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.OnClose">
                <summary>
                Closes the appender and releases resources.
                </summary>
                <remarks>
                <para>
                Releases any resources allocated within the appender such as file handles, 
                network connections, etc.
                </para>
                <para>
                It is a programming error to append to a closed appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.SendBuffer(log4net.Core.LoggingEvent[])">
                <summary>
                Send the events.
                </summary>
                <param name="events">The events that need to be send.</param>
                <remarks>
                <para>
                Forwards the events to the attached appenders.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.AddAppender(log4net.Appender.IAppender)">
                <summary>
                Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this
                instance.
                </summary>
                <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param>
                <remarks>
                <para>
                If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of
                appenders, then it won't be added again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.GetAppender(System.String)">
                <summary>
                Looks for the appender with the specified name.
                </summary>
                <param name="name">The name of the appender to lookup.</param>
                <returns>
                The appender with the specified name, or <c>null</c>.
                </returns>
                <remarks>
                <para>
                Get the named appender attached to this buffering appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAllAppenders">
                <summary>
                Removes all previously added appenders from this appender.
                </summary>
                <remarks>
                <para>
                This is useful when re-reading configuration information.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(log4net.Appender.IAppender)">
                <summary>
                Removes the specified appender from the list of appenders.
                </summary>
                <param name="appender">The appender to remove.</param>
                <returns>The appender removed from the list</returns>
                <remarks>
                The appender removed is not closed.
                If you are discarding the appender you must call
                <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
                </remarks>
            </member>
            <member name="M:log4net.Appender.BufferingForwardingAppender.RemoveAppender(System.String)">
                <summary>
                Removes the appender with the specified name from the list of appenders.
                </summary>
                <param name="name">The name of the appender to remove.</param>
                <returns>The appender removed from the list</returns>
                <remarks>
                The appender removed is not closed.
                If you are discarding the appender you must call
                <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
                </remarks>
            </member>
            <member name="F:log4net.Appender.BufferingForwardingAppender.m_appenderAttachedImpl">
                <summary>
                Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
                </summary>
            </member>
            <member name="P:log4net.Appender.BufferingForwardingAppender.Appenders">
                <summary>
                Gets the appenders contained in this appender as an 
                <see cref="T:System.Collections.ICollection"/>.
                </summary>
                <remarks>
                If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/> 
                is returned.
                </remarks>
                <returns>
                A collection of the appenders in this appender.
                </returns>
            </member>
            <member name="T:log4net.Appender.ColoredConsoleAppender">
                <summary>
                Appends logging events to the console.
                </summary>
                <remarks>
                <para>
                ColoredConsoleAppender appends log events to the standard output stream
                or the error output stream using a layout specified by the 
                user. It also allows the color of a specific type of message to be set.
                </para>
                <para>
                By default, all output is written to the console's standard output stream.
                The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> property can be set to direct the output to the
                error stream.
                </para>
                <para>
                NOTE: This appender writes directly to the application's attached console
                not to the <c>System.Console.Out</c> or <c>System.Console.Error</c> <c>TextWriter</c>.
                The <c>System.Console.Out</c> and <c>System.Console.Error</c> streams can be
                programmatically redirected (for example NUnit does this to capture program output).
                This appender will ignore these redirections because it needs to use Win32
                API calls to colorize the output. To respect these redirections the <see cref="T:log4net.Appender.ConsoleAppender"/>
                must be used.
                </para>
                <para>
                When configuring the colored console appender, mapping should be
                specified to map a logging level to a color. For example:
                </para>
                <code lang="XML" escaped="true">
                <mapping>
                	<level value="ERROR"/>
                	<foreColor value="White"/>
                	<backColor value="Red, HighIntensity"/>
                </mapping>
                <mapping>
                	<level value="DEBUG"/>
                	<backColor value="Green"/>
                </mapping>
                </code>
                <para>
                The Level is the standard log4net logging level and ForeColor and BackColor can be any
                combination of the following values:
                <list type="bullet">
                <item><term>Blue</term><description></description></item>
                <item><term>Green</term><description></description></item>
                <item><term>Red</term><description></description></item>
                <item><term>White</term><description></description></item>
                <item><term>Yellow</term><description></description></item>
                <item><term>Purple</term><description></description></item>
                <item><term>Cyan</term><description></description></item>
                <item><term>HighIntensity</term><description></description></item>
                </list>
                </para>
                </remarks>
                <author>Rick Hobbs</author>
                <author>Nicko Cadell</author>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.ConsoleOut">
                <summary>
                The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.ConsoleError">
                <summary>
                The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.ColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class.
                </summary>
                <remarks>
                The instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class is set up to write 
                to the standard output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class
                with the specified layout.
                </summary>
                <param name="layout">the layout to use for this appender</param>
                <remarks>
                The instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class is set up to write 
                to the standard output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ColoredConsoleAppender"/> class
                with the specified layout.
                </summary>
                <param name="layout">the layout to use for this appender</param>
                <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param>
                <remarks>
                When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to
                the standard error output stream.  Otherwise, output is written to the standard
                output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.AddMapping(log4net.Appender.ColoredConsoleAppender.LevelColors)">
                <summary>
                Add a mapping of level to color - done by the config file
                </summary>
                <param name="mapping">The mapping to add</param>
                <remarks>
                <para>
                Add a <see cref="T:log4net.Appender.ColoredConsoleAppender.LevelColors"/> mapping to this appender.
                Each mapping defines the foreground and background colors
                for a level.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the event to the console.
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.ActivateOptions">
                <summary>
                Initialize the options for this appender
                </summary>
                <remarks>
                <para>
                Initialize the level to color mappings set on this appender.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.m_writeToErrorStream">
                <summary>
                Flag to write output to the error stream rather than the standard output stream
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.m_levelMapping">
                <summary>
                Mapping from level object to color value
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.m_consoleOutputWriter">
                <summary>
                The console output stream writer to write to
                </summary>
                <remarks>
                <para>
                This writer is not thread safe.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ColoredConsoleAppender.Target">
                <summary>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </summary>
                <value>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </value>
                <remarks>
                <para>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ColoredConsoleAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.ColoredConsoleAppender.Colors">
                <summary>
                The enum of possible color values for use with the color mapping method
                </summary>
                <remarks>
                <para>
                The following flags can be combined together to
                form the colors.
                </para>
                </remarks>
                <seealso cref="T:log4net.Appender.ColoredConsoleAppender"/>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Blue">
                <summary>
                color is blue
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Green">
                <summary>
                color is green
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Red">
                <summary>
                color is red
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.White">
                <summary>
                color is white
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Yellow">
                <summary>
                color is yellow
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Purple">
                <summary>
                color is purple
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.Cyan">
                <summary>
                color is cyan
                </summary>
            </member>
            <member name="F:log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity">
                <summary>
                color is intensified
                </summary>
            </member>
            <member name="T:log4net.Appender.ColoredConsoleAppender.LevelColors">
                <summary>
                A class to act as a mapping between the level that a logging call is made at and
                the color it should be displayed as.
                </summary>
                <remarks>
                <para>
                Defines the mapping between a level and the color it should be displayed in.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ColoredConsoleAppender.LevelColors.ActivateOptions">
                <summary>
                Initialize the options for the object
                </summary>
                <remarks>
                <para>
                Combine the <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor"/> together.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor">
                <summary>
                The mapped foreground color for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped foreground color for the specified level.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor">
                <summary>
                The mapped background color for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped background color for the specified level.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ColoredConsoleAppender.LevelColors.CombinedColor">
                <summary>
                The combined <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.ForeColor"/> and <see cref="P:log4net.Appender.ColoredConsoleAppender.LevelColors.BackColor"/> suitable for 
                setting the console color.
                </summary>
            </member>
            <member name="T:log4net.Appender.ConsoleAppender">
                <summary>
                Appends logging events to the console.
                </summary>
                <remarks>
                <para>
                ConsoleAppender appends log events to the standard output stream
                or the error output stream using a layout specified by the 
                user.
                </para>
                <para>
                By default, all output is written to the console's standard output stream.
                The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> property can be set to direct the output to the
                error stream.
                </para>
                <para>
                NOTE: This appender writes each message to the <c>System.Console.Out</c> or 
                <c>System.Console.Error</c> that is set at the time the event is appended.
                Therefore it is possible to programmatically redirect the output of this appender 
                (for example NUnit does this to capture program output). While this is the desired
                behavior of this appender it may have security implications in your application. 
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="F:log4net.Appender.ConsoleAppender.ConsoleOut">
                <summary>
                The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.ConsoleAppender.ConsoleError">
                <summary>
                The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.ConsoleAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ConsoleAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class.
                </summary>
                <remarks>
                The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write 
                to the standard output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class
                with the specified layout.
                </summary>
                <param name="layout">the layout to use for this appender</param>
                <remarks>
                The instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class is set up to write 
                to the standard output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ConsoleAppender.#ctor(log4net.Layout.ILayout,System.Boolean)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ConsoleAppender"/> class
                with the specified layout.
                </summary>
                <param name="layout">the layout to use for this appender</param>
                <param name="writeToErrorStream">flag set to <c>true</c> to write to the console error stream</param>
                <remarks>
                When <paramref name="writeToErrorStream"/> is set to <c>true</c>, output is written to
                the standard error output stream.  Otherwise, output is written to the standard
                output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ConsoleAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the event to the console.
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ConsoleAppender.Target">
                <summary>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </summary>
                <value>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </value>
                <remarks>
                <para>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ConsoleAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.DebugAppender">
                <summary>
                Appends log events to the <see cref="T:System.Diagnostics.Debug"/> system.
                </summary>
                <remarks>
                <para>
                The application configuration file can be used to control what listeners 
                are actually used. See the MSDN documentation for the 
                <see cref="T:System.Diagnostics.Debug"/> class for details on configuring the
                debug system.
                </para>
                <para>
                Events are written using the <see cref="M:System.Diagnostics.Debug.Write(string,string)"/>
                method. The event's logger name is passed as the value for the category name to the Write method.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.DebugAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/>.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.DebugAppender.#ctor(log4net.Layout.ILayout)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.DebugAppender"/> 
                with a specified layout.
                </summary>
                <param name="layout">The layout to use with this appender.</param>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.DebugAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the logging event to the <see cref="T:System.Diagnostics.Debug"/> system.
                If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is <c>true</c> then the <see cref="M:System.Diagnostics.Debug.Flush"/>
                is called.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.DebugAppender.m_immediateFlush">
                <summary>
                Immediate flush means that the underlying writer or output stream
                will be flushed at the end of each append operation.
                </summary>
                <remarks>
                <para>
                Immediate flush is slower but ensures that each append request is 
                actually written. If <see cref="P:log4net.Appender.DebugAppender.ImmediateFlush"/> is set to
                <c>false</c>, then there is a good chance that the last few
                logs events are not actually written to persistent media if and
                when the application crashes.
                </para>
                <para>
                The default value is <c>true</c>.</para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.DebugAppender.ImmediateFlush">
                <summary>
                Gets or sets a value that indicates whether the appender will 
                flush at the end of each write.
                </summary>
                <remarks>
                <para>The default behavior is to flush at the end of each 
                write. If the option is set to<c>false</c>, then the underlying 
                stream can defer writing to physical medium to a later time. 
                </para>
                <para>
                Avoiding the flush operation at the end of each append results 
                in a performance gain of 10 to 20 percent. However, there is safety
                trade-off involved in skipping flushing. Indeed, when flushing is
                skipped, then it is likely that the last few log events will not
                be recorded on disk when the application exits. This is a high
                price to pay even for a 20% performance gain.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.DebugAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.EventLogAppender">
                <summary>
                Writes events to the system event log.
                </summary>
                <remarks>
                <para>
                The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges.
                See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog
                </para>
                <para>
                The <c>EventID</c> of the event log entry can be
                set using the <c>EventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
                on the <see cref="T:log4net.Core.LoggingEvent"/>.
                </para>
                <para>
                The <c>Category</c> of the event log entry can be
                set using the <c>Category</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
                on the <see cref="T:log4net.Core.LoggingEvent"/>.
                </para>
                <para>
                There is a limit of 32K characters for an event log message
                </para>
                <para>
                When configuring the EventLogAppender a mapping can be
                specified to map a logging level to an event log entry type. For example:
                </para>
                <code lang="XML">
                &lt;mapping&gt;
                	&lt;level value="ERROR" /&gt;
                	&lt;eventLogEntryType value="Error" /&gt;
                &lt;/mapping&gt;
                &lt;mapping&gt;
                	&lt;level value="DEBUG" /&gt;
                	&lt;eventLogEntryType value="Information" /&gt;
                &lt;/mapping&gt;
                </code>
                <para>
                The Level is the standard log4net logging level and eventLogEntryType can be any value
                from the <see cref="T:System.Diagnostics.EventLogEntryType"/> enum, i.e.:
                <list type="bullet">
                <item><term>Error</term><description>an error event</description></item>
                <item><term>Warning</term><description>a warning event</description></item>
                <item><term>Information</term><description>an informational event</description></item>
                </list>
                </para>
                </remarks>
                <author>Aspi Havewala</author>
                <author>Douglas de la Torre</author>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Thomas Voss</author>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.#ctor(log4net.Layout.ILayout)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.EventLogAppender"/> class
                with the specified <see cref="T:log4net.Layout.ILayout"/>.
                </summary>
                <param name="layout">The <see cref="T:log4net.Layout.ILayout"/> to use with this appender.</param>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.AddMapping(log4net.Appender.EventLogAppender.Level2EventLogEntryType)">
                <summary>
                Add a mapping of level to <see cref="T:System.Diagnostics.EventLogEntryType"/> - done by the config file
                </summary>
                <param name="mapping">The mapping to add</param>
                <remarks>
                <para>
                Add a <see cref="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType"/> mapping to this appender.
                Each mapping defines the event log entry type for a level.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.EventLogAppender.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.CreateEventSource(System.String,System.String,System.String)">
                <summary>
                Create an event log source
                </summary>
                <remarks>
                Uses different API calls under NET_2_0
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
                method. 
                </summary>
                <param name="loggingEvent">the event to log</param>
                <remarks>
                <para>Writes the event to the system event log using the 
                <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>.</para>
                
                <para>If the event has an <c>EventID</c> property (see <see cref="P:log4net.Core.LoggingEvent.Properties"/>)
                set then this integer will be used as the event log event id.</para>
                
                <para>
                There is a limit of 32K characters for an event log message
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.GetEntryType(log4net.Core.Level)">
                <summary>
                Get the equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="level"/>
                </summary>
                <param name="level">the Level to convert to an EventLogEntryType</param>
                <returns>The equivalent <see cref="T:System.Diagnostics.EventLogEntryType"/> for a <see cref="T:log4net.Core.Level"/> <paramref name="level"/></returns>
                <remarks>
                Because there are fewer applicable <see cref="T:System.Diagnostics.EventLogEntryType"/>
                values to use in logging levels than there are in the 
                <see cref="T:log4net.Core.Level"/> this is a one way mapping. There is
                a loss of information during the conversion.
                </remarks>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_logName">
                <summary>
                The log name is the section in the event logs where the messages
                are stored.
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_applicationName">
                <summary>
                Name of the application to use when logging.  This appears in the
                application column of the event log named by <see cref="F:log4net.Appender.EventLogAppender.m_logName"/>.
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_machineName">
                <summary>
                The name of the machine which holds the event log. This is
                currently only allowed to be '.' i.e. the current machine.
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_levelMapping">
                <summary>
                Mapping from level object to EventLogEntryType
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_securityContext">
                <summary>
                The security context to use for privileged calls
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_eventId">
                <summary>
                The event ID to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.m_category">
                <summary>
                The event category to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
                </summary>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.declaringType">
                <summary>
                The fully qualified type of the EventLogAppender class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE_DEFAULT">
                <summary>
                The maximum size supported by default.
                </summary>
                <remarks>
                http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx
                The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766 
                may leave space for a two byte null terminator of #0#0). The 32766 max 
                length is what the .NET 4.0 source code checks for, but this is WRONG! 
                Strings with a length > 31839 on Windows Vista or higher can CORRUPT 
                the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent() 
                for the use of the 32766 max size.
                </remarks>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE_VISTA_OR_NEWER">
                <summary>
                The maximum size supported by a windows operating system that is vista
                or newer.
                </summary>
                <remarks>
                See ReportEvent API:
                	http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx
                ReportEvent's lpStrings parameter:
                "A pointer to a buffer containing an array of 
                null-terminated strings that are merged into the message before Event Viewer 
                displays the string to the user. This parameter must be a valid pointer 
                (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters."
                
                Going beyond the size of 31839 will (at some point) corrupt the event log on Windows
                Vista or higher! It may succeed for a while...but you will eventually run into the
                error: "System.ComponentModel.Win32Exception : A device attached to the system is
                not functioning", and the event log will then be corrupt (I was able to corrupt 
                an event log using a length of 31877 on Windows 7).
                
                The max size for Windows Vista or higher is documented here:
                	http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx.
                Going over this size may succeed a few times but the buffer will overrun and 
                eventually corrupt the log (based on testing).
                
                The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API.
                The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a
                terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the
                buffer, given enough time).
                </remarks>
            </member>
            <member name="F:log4net.Appender.EventLogAppender.MAX_EVENTLOG_MESSAGE_SIZE">
                <summary>
                The maximum size that the operating system supports for
                a event log message.
                </summary>
                <remarks>
                Used to determine the maximum string length that can be written
                to the operating system event log and eventually truncate a string
                that exceeds the limits.
                </remarks>
            </member>
            <member name="M:log4net.Appender.EventLogAppender.GetMaxEventLogMessageSize">
                <summary>
                This method determines the maximum event log message size allowed for
                the current environment.
                </summary>
                <returns></returns>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.LogName">
                <summary>
                The name of the log where messages will be stored.
                </summary>
                <value>
                The string name of the log where messages will be stored.
                </value>
                <remarks>
                <para>This is the name of the log as it appears in the Event Viewer
                tree. The default value is to log into the <c>Application</c>
                log, this is where most applications write their events. However
                if you need a separate log for your application (or applications)
                then you should set the <see cref="P:log4net.Appender.EventLogAppender.LogName"/> appropriately.</para>
                <para>This should not be used to distinguish your event log messages
                from those of other applications, the <see cref="P:log4net.Appender.EventLogAppender.ApplicationName"/>
                property should be used to distinguish events. This property should be 
                used to group together events into a single log.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.ApplicationName">
                <summary>
                Property used to set the Application name.  This appears in the
                event logs when logging.
                </summary>
                <value>
                The string used to distinguish events from different sources.
                </value>
                <remarks>
                Sets the event log source property.
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.MachineName">
                <summary>
                This property is used to return the name of the computer to use
                when accessing the event logs.  Currently, this is the current
                computer, denoted by a dot "."
                </summary>
                <value>
                The string name of the machine holding the event log that 
                will be logged into.
                </value>
                <remarks>
                This property cannot be changed. It is currently set to '.'
                i.e. the local machine. This may be changed in future.
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.SecurityContext">
                <summary>
                Gets or sets the <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> used to write to the EventLog.
                </value>
                <remarks>
                <para>
                The system security context used to write to the EventLog.
                </para>
                <para>
                Unless a <see cref="P:log4net.Appender.EventLogAppender.SecurityContext"/> specified here for this appender
                the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
                security context to use. The default behavior is to use the security context
                of the current thread.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.EventId">
                <summary>
                Gets or sets the <c>EventId</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
                </summary>
                <remarks>
                <para>
                The <c>EventID</c> of the event log entry will normally be
                set using the <c>EventID</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
                on the <see cref="T:log4net.Core.LoggingEvent"/>.
                This property provides the fallback value which defaults to 0.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.Category">
                <summary>
                Gets or sets the <c>Category</c> to use unless one is explicitly specified via the <c>LoggingEvent</c>'s properties.
                </summary>
                <remarks>
                <para>
                The <c>Category</c> of the event log entry will normally be
                set using the <c>Category</c> property (<see cref="P:log4net.Core.LoggingEvent.Properties"/>)
                on the <see cref="T:log4net.Core.LoggingEvent"/>.
                This property provides the fallback value which defaults to 0.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.EventLogAppender.Level2EventLogEntryType">
                <summary>
                A class to act as a mapping between the level that a logging call is made at and
                the color it should be displayed as.
                </summary>
                <remarks>
                <para>
                Defines the mapping between a level and its event log entry type.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType">
                <summary>
                The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry
                </summary>
                <remarks>
                <para>
                Required property.
                The <see cref="P:log4net.Appender.EventLogAppender.Level2EventLogEntryType.EventLogEntryType"/> for this entry
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.FileAppender">
                <summary>
                Appends logging events to a file.
                </summary>
                <remarks>
                <para>
                Logging events are sent to the file specified by
                the <see cref="P:log4net.Appender.FileAppender.File"/> property.
                </para>
                <para>
                The file can be opened in either append or overwrite mode 
                by specifying the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property.
                If the file path is relative it is taken as relative from 
                the application base directory. The file encoding can be
                specified by setting the <see cref="P:log4net.Appender.FileAppender.Encoding"/> property.
                </para>
                <para>
                The layout's <see cref="P:log4net.Layout.ILayout.Header"/> and <see cref="P:log4net.Layout.ILayout.Footer"/>
                values will be written each time the file is opened and closed
                respectively. If the <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is <see langword="true"/>
                then the file may contain multiple copies of the header and footer.
                </para>
                <para>
                This appender will first try to open the file for writing when <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/>
                is called. This will typically be during configuration.
                If the file cannot be opened for writing the appender will attempt
                to open the file again each time a message is logged to the appender.
                If the file cannot be opened for writing when a message is logged then
                the message will be discarded by this appender.
                </para>
                <para>
                The <see cref="T:log4net.Appender.FileAppender"/> supports pluggable file locking models via
                the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> property.
                The default behavior, implemented by <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> 
                is to obtain an exclusive write lock on the file until this appender is closed.
                The alternative models only hold a
                write lock while the appender is writing a logging event (<see cref="T:log4net.Appender.FileAppender.MinimalLock"/>)
                or synchronize by using a named system wide Mutex (<see cref="T:log4net.Appender.FileAppender.InterProcessLock"/>).
                </para>
                <para>
                All locking strategies have issues and you should seriously consider using a different strategy that
                avoids having multiple processes logging to the same file.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Rodrigo B. de Oliveira</author>
                <author>Douglas de la Torre</author>
                <author>Niall Daley</author>
            </member>
            <member name="T:log4net.Appender.TextWriterAppender">
                <summary>
                Sends logging events to a <see cref="T:System.IO.TextWriter"/>.
                </summary>
                <remarks>
                <para>
                An Appender that writes to a <see cref="T:System.IO.TextWriter"/>.
                </para>
                <para>
                This appender may be used stand alone if initialized with an appropriate
                writer, however it is typically used as a base class for an appender that
                can open a <see cref="T:System.IO.TextWriter"/> to write to.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Douglas de la Torre</author>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.Stream)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and
                sets the output destination to a new <see cref="T:System.IO.StreamWriter"/> initialized 
                with the specified <see cref="T:System.IO.Stream"/>.
                </summary>
                <param name="layout">The layout to use with this appender.</param>
                <param name="os">The <see cref="T:System.IO.Stream"/> to output to.</param>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.#ctor(log4net.Layout.ILayout,System.IO.TextWriter)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.TextWriterAppender"/> class and sets
                the output destination to the specified <see cref="T:System.IO.StreamWriter"/>.
                </summary>
                <param name="layout">The layout to use with this appender</param>
                <param name="writer">The <see cref="T:System.IO.TextWriter"/> to output to</param>
                <remarks>
                The <see cref="T:System.IO.TextWriter"/> must have been previously opened.
                </remarks>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.PreAppendCheck">
                <summary>
                This method determines if there is a sense in attempting to append.
                </summary>
                <remarks>
                <para>
                This method checks if an output target has been set and if a
                layout has been set. 
                </para>
                </remarks>
                <returns><c>false</c> if any of the preconditions fail.</returns>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
                method. 
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes a log statement to the output stream if the output stream exists 
                and is writable.  
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.Append(log4net.Core.LoggingEvent[])">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent[])"/>
                method. 
                </summary>
                <param name="loggingEvents">The array of events to log.</param>
                <remarks>
                <para>
                This method writes all the bulk logged events to the output writer
                before flushing the stream.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.OnClose">
                <summary>
                Close this appender instance. The underlying stream or writer is also closed.
                </summary>
                <remarks>
                Closed appenders cannot be reused.
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.WriteFooterAndCloseWriter">
                <summary>
                Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>.
                </summary>
                <remarks>
                <para>
                Writes the footer and closes the underlying <see cref="T:System.IO.TextWriter"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.CloseWriter">
                <summary>
                Closes the underlying <see cref="T:System.IO.TextWriter"/>.
                </summary>
                <remarks>
                <para>
                Closes the underlying <see cref="T:System.IO.TextWriter"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.Reset">
                <summary>
                Clears internal references to the underlying <see cref="T:System.IO.TextWriter"/> 
                and other variables.
                </summary>
                <remarks>
                <para>
                Subclasses can override this method for an alternate closing behavior.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.WriteFooter">
                <summary>
                Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
                </summary>
                <remarks>
                <para>
                Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.WriteHeader">
                <summary>
                Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
                </summary>
                <remarks>
                <para>
                Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TextWriterAppender.PrepareWriter">
                <summary>
                Called to allow a subclass to lazily initialize the writer
                </summary>
                <remarks>
                <para>
                This method is called when an event is logged and the <see cref="P:log4net.Appender.TextWriterAppender.Writer"/> or
                <see cref="P:log4net.Appender.TextWriterAppender.QuietWriter"/> have not been set. This allows a subclass to
                attempt to initialize the writer multiple times.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.TextWriterAppender.m_qtw">
                <summary>
                This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
                will be written to. 
                </summary>
            </member>
            <member name="F:log4net.Appender.TextWriterAppender.m_immediateFlush">
                <summary>
                Immediate flush means that the underlying <see cref="T:System.IO.TextWriter"/> 
                or output stream will be flushed at the end of each append operation.
                </summary>
                <remarks>
                <para>
                Immediate flush is slower but ensures that each append request is 
                actually written. If <see cref="P:log4net.Appender.TextWriterAppender.ImmediateFlush"/> is set to
                <c>false</c>, then there is a good chance that the last few
                logging events are not actually persisted if and when the application 
                crashes.
                </para>
                <para>
                The default value is <c>true</c>.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.TextWriterAppender.declaringType">
                <summary>
                The fully qualified type of the TextWriterAppender class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="P:log4net.Appender.TextWriterAppender.ImmediateFlush">
                <summary>
                Gets or set whether the appender will flush at the end 
                of each append operation.
                </summary>
                <value>
                <para>
                The default behavior is to flush at the end of each 
                append operation.
                </para>
                <para>
                If this option is set to <c>false</c>, then the underlying 
                stream can defer persisting the logging event to a later 
                time.
                </para>
                </value>
                <remarks>
                Avoiding the flush operation at the end of each append results in
                a performance gain of 10 to 20 percent. However, there is safety
                trade-off involved in skipping flushing. Indeed, when flushing is
                skipped, then it is likely that the last few log events will not
                be recorded on disk when the application exits. This is a high
                price to pay even for a 20% performance gain.
                </remarks>
            </member>
            <member name="P:log4net.Appender.TextWriterAppender.Writer">
                <summary>
                Sets the <see cref="T:System.IO.TextWriter"/> where the log output will go.
                </summary>
                <remarks>
                <para>
                The specified <see cref="T:System.IO.TextWriter"/> must be open and writable.
                </para>
                <para>
                The <see cref="T:System.IO.TextWriter"/> will be closed when the appender 
                instance is closed.
                </para>
                <para>
                <b>Note:</b> Logging to an unopened <see cref="T:System.IO.TextWriter"/> will fail.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.TextWriterAppender.ErrorHandler">
                <summary>
                Gets or set the <see cref="T:log4net.Core.IErrorHandler"/> and the underlying 
                <see cref="T:log4net.Util.QuietTextWriter"/>, if any, for this appender. 
                </summary>
                <value>
                The <see cref="T:log4net.Core.IErrorHandler"/> for this appender.
                </value>
            </member>
            <member name="P:log4net.Appender.TextWriterAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.TextWriterAppender.QuietWriter">
                <summary>
                Gets or sets the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
                will be written to. 
                </summary>
                <value>
                The <see cref="T:log4net.Util.QuietTextWriter"/> where logging events are written.
                </value>
                <remarks>
                <para>
                This is the <see cref="T:log4net.Util.QuietTextWriter"/> where logging events
                will be written to. 
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.#ctor">
                <summary>
                Default constructor
                </summary>
                <remarks>
                <para>
                Default constructor
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String,System.Boolean)">
                <summary>
                Construct a new appender using the layout, file and append mode.
                </summary>
                <param name="layout">the layout to use with this appender</param>
                <param name="filename">the full path to the file to write to</param>
                <param name="append">flag to indicate if the file should be appended to</param>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.#ctor(log4net.Layout.ILayout,System.String)">
                <summary>
                Construct a new appender using the layout and file specified.
                The file will be appended to.
                </summary>
                <param name="layout">the layout to use with this appender</param>
                <param name="filename">the full path to the file to write to</param>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.ActivateOptions">
                <summary>
                Activate the options on the file appender. 
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.FileAppender.ActivateOptions"/> must be called again.
                </para>
                <para>
                This will cause the file to be opened.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.Reset">
                <summary>
                Closes any previously opened file and calls the parent's <see cref="M:log4net.Appender.TextWriterAppender.Reset"/>.
                </summary>
                <remarks>
                <para>
                Resets the filename and the file stream.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.PrepareWriter">
                <summary>
                Called to initialize the file writer
                </summary>
                <remarks>
                <para>
                Will be called for each logged message until the file is
                successfully opened.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/>
                method. 
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes a log statement to the output stream if the output stream exists 
                and is writable.  
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.Append(log4net.Core.LoggingEvent[])">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent[])"/>
                method. 
                </summary>
                <param name="loggingEvents">The array of events to log.</param>
                <remarks>
                <para>
                Acquires the output file locks once before writing all the events to
                the stream.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.WriteFooter">
                <summary>
                Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
                </summary>
                <remarks>
                <para>
                Writes a footer as produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Footer"/> property.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.WriteHeader">
                <summary>
                Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
                </summary>
                <remarks>
                <para>
                Writes a header produced by the embedded layout's <see cref="P:log4net.Layout.ILayout.Header"/> property.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.CloseWriter">
                <summary>
                Closes the underlying <see cref="T:System.IO.TextWriter"/>.
                </summary>
                <remarks>
                <para>
                Closes the underlying <see cref="T:System.IO.TextWriter"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.CloseFile">
                <summary>
                Closes the previously opened file.
                </summary>
                <remarks>
                <para>
                Writes the <see cref="P:log4net.Layout.ILayout.Footer"/> to the file and then
                closes the file.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.SafeOpenFile(System.String,System.Boolean)">
                <summary>
                Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.
                </summary>
                <param name="fileName">The path to the log file. Must be a fully qualified path.</param>
                <param name="append">If true will append to fileName. Otherwise will truncate fileName</param>
                <remarks>
                <para>
                Calls <see cref="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)"/> but guarantees not to throw an exception.
                Errors are passed to the <see cref="P:log4net.Appender.TextWriterAppender.ErrorHandler"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.OpenFile(System.String,System.Boolean)">
                <summary>
                Sets and <i>opens</i> the file where the log output will go. The specified file must be writable.
                </summary>
                <param name="fileName">The path to the log file. Must be a fully qualified path.</param>
                <param name="append">If true will append to fileName. Otherwise will truncate fileName</param>
                <remarks>
                <para>
                If there was already an opened file, then the previous file
                is closed first.
                </para>
                <para>
                This method will ensure that the directory structure
                for the <paramref name="fileName"/> specified exists.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.Stream)">
                <summary>
                Sets the quiet writer used for file output
                </summary>
                <param name="fileStream">the file stream that has been opened for writing</param>
                <remarks>
                <para>
                This implementation of <see cref="M:SetQWForFiles(Stream)"/> creates a <see cref="T:System.IO.StreamWriter"/>
                over the <paramref name="fileStream"/> and passes it to the 
                <see cref="M:SetQWForFiles(TextWriter)"/> method.
                </para>
                <para>
                This method can be overridden by sub classes that want to wrap the
                <see cref="T:System.IO.Stream"/> in some way, for example to encrypt the output
                data using a <c>System.Security.Cryptography.CryptoStream</c>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.SetQWForFiles(System.IO.TextWriter)">
                <summary>
                Sets the quiet writer being used.
                </summary>
                <param name="writer">the writer over the file stream that has been opened for writing</param>
                <remarks>
                <para>
                This method can be overridden by sub classes that want to
                wrap the <see cref="T:System.IO.TextWriter"/> in some way.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.ConvertToFullPath(System.String)">
                <summary>
                Convert a path into a fully qualified path.
                </summary>
                <param name="path">The path to convert.</param>
                <returns>The fully qualified path.</returns>
                <remarks>
                <para>
                Converts the path specified to a fully
                qualified path. If the path is relative it is
                taken as relative from the application base 
                directory.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.FileAppender.m_appendToFile">
                <summary>
                Flag to indicate if we should append to the file
                or overwrite the file. The default is to append.
                </summary>
            </member>
            <member name="F:log4net.Appender.FileAppender.m_fileName">
                <summary>
                The name of the log file.
                </summary>
            </member>
            <member name="F:log4net.Appender.FileAppender.m_encoding">
                <summary>
                The encoding to use for the file stream.
                </summary>
            </member>
            <member name="F:log4net.Appender.FileAppender.m_securityContext">
                <summary>
                The security context to use for privileged calls
                </summary>
            </member>
            <member name="F:log4net.Appender.FileAppender.m_stream">
                <summary>
                The stream to log to. Has added locking semantics
                </summary>
            </member>
            <member name="F:log4net.Appender.FileAppender.m_lockingModel">
                <summary>
                The locking model to use
                </summary>
            </member>
            <member name="F:log4net.Appender.FileAppender.declaringType">
                <summary>
                The fully qualified type of the FileAppender class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="P:log4net.Appender.FileAppender.File">
                <summary>
                Gets or sets the path to the file that logging will be written to.
                </summary>
                <value>
                The path to the file that logging will be written to.
                </value>
                <remarks>
                <para>
                If the path is relative it is taken as relative from 
                the application base directory.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.FileAppender.AppendToFile">
                <summary>
                Gets or sets a flag that indicates whether the file should be
                appended to or overwritten.
                </summary>
                <value>
                Indicates whether the file should be appended to or overwritten.
                </value>
                <remarks>
                <para>
                If the value is set to false then the file will be overwritten, if 
                it is set to true then the file will be appended to.
                </para>
                The default value is true.
                </remarks>
            </member>
            <member name="P:log4net.Appender.FileAppender.Encoding">
                <summary>
                Gets or sets <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.FileAppender.Encoding"/> used to write to the file.
                </value>
                <remarks>
                <para>
                The default encoding set is <see cref="P:System.Text.Encoding.Default"/>
                which is the encoding for the system's current ANSI code page.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.FileAppender.SecurityContext">
                <summary>
                Gets or sets the <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> used to write to the file.
                </value>
                <remarks>
                <para>
                Unless a <see cref="P:log4net.Appender.FileAppender.SecurityContext"/> specified here for this appender
                the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
                security context to use. The default behavior is to use the security context
                of the current thread.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.FileAppender.LockingModel">
                <summary>
                Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to lock the file.
                </value>
                <remarks>
                <para>
                Gets or sets the <see cref="P:log4net.Appender.FileAppender.LockingModel"/> used to handle locking of the file.
                </para>
                <para>
                There are three built in locking models, <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>, <see cref="T:log4net.Appender.FileAppender.MinimalLock"/> and <see cref="T:log4net.Appender.FileAppender.InterProcessLock"/> .
                The first locks the file from the start of logging to the end, the 
                second locks only for the minimal amount of time when logging each message
                and the last synchronizes processes using a named system wide Mutex.
                </para>
                <para>
                The default locking model is the <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/>.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.FileAppender.LockingStream">
                <summary>
                Write only <see cref="T:System.IO.Stream"/> that uses the <see cref="T:log4net.Appender.FileAppender.LockingModelBase"/> 
                to manage access to an underlying resource.
                </summary>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)">
                <summary>
                True asynchronous writes are not supported, the implementation forces a synchronous write.
                </summary>
            </member>
            <member name="T:log4net.Core.LogException">
                <summary>
                Exception base type for log4net.
                </summary>
                <remarks>
                <para>
                This type extends <see cref="T:System.ApplicationException"/>. It
                does not add any new functionality but does differentiate the
                type of exception being thrown.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.LogException.#ctor">
                <summary>
                Constructor
                </summary>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LogException.#ctor(System.String)">
                <summary>
                Constructor
                </summary>
                <param name="message">A message to include with the exception.</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class with
                the specified message.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LogException.#ctor(System.String,System.Exception)">
                <summary>
                Constructor
                </summary>
                <param name="message">A message to include with the exception.</param>
                <param name="innerException">A nested exception to include.</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class
                with the specified message and inner exception.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LogException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
                <summary>
                Serialization constructor
                </summary>
                <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
                <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Core.LogException"/> class 
                with serialized data.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.FileAppender.LockingModelBase">
                <summary>
                Locking model base class
                </summary>
                <remarks>
                <para>
                Base class for the locking models available to the <see cref="T:log4net.Appender.FileAppender"/> derived loggers.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
                <summary>
                Open the output file
                </summary>
                <param name="filename">The filename to use</param>
                <param name="append">Whether to append to the file, or overwrite</param>
                <param name="encoding">The encoding to use</param>
                <remarks>
                <para>
                Open the file specified and prepare for logging. 
                No writes will be made until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called.
                Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/>,
                <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseFile">
                <summary>
                Close the file
                </summary>
                <remarks>
                <para>
                Close the file. No further writes will be made.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock">
                <summary>
                Acquire the lock on the file
                </summary>
                <returns>A stream that is ready to be written to.</returns>
                <remarks>
                <para>
                Acquire the lock on the file in preparation for writing to it. 
                Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock"/>
                must be called to release the lock on the output file.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingModelBase.ReleaseLock">
                <summary>
                Release the lock on the file
                </summary>
                <remarks>
                <para>
                Release the lock on the file. No further writes will be made to the 
                stream until <see cref="M:log4net.Appender.FileAppender.LockingModelBase.AcquireLock"/> is called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingModelBase.CreateStream(System.String,System.Boolean,System.IO.FileShare)">
                <summary>
                Helper method that creates a FileStream under CurrentAppender's SecurityContext.
                </summary>
                <remarks>
                <para>
                Typically called during OpenFile or AcquireLock. 
                </para>
                <para>
                If the directory portion of the <paramref name="filename"/> does not exist, it is created
                via Directory.CreateDirecctory.
                </para>
                </remarks>
                <param name="filename"></param>
                <param name="append"></param>
                <param name="fileShare"></param>
                <returns></returns>
            </member>
            <member name="M:log4net.Appender.FileAppender.LockingModelBase.CloseStream(System.IO.Stream)">
                <summary>
                Helper method to close <paramref name="stream"/> under CurrentAppender's SecurityContext.
                </summary>
                <remarks>
                Does not set <paramref name="stream"/> to null.
                </remarks>
                <param name="stream"></param>
            </member>
            <member name="P:log4net.Appender.FileAppender.LockingModelBase.CurrentAppender">
                <summary>
                Gets or sets the <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel
                </summary>
                <value>
                The <see cref="T:log4net.Appender.FileAppender"/> for this LockingModel
                </value>
                <remarks>
                <para>
                The file appender this locking model is attached to and working on
                behalf of.
                </para>
                <para>
                The file appender is used to locate the security context and the error handler to use.
                </para>
                <para>
                The value of this property will be set before <see cref="M:log4net.Appender.FileAppender.LockingModelBase.OpenFile(System.String,System.Boolean,System.Text.Encoding)"/> is
                called.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.FileAppender.ExclusiveLock">
                <summary>
                Hold an exclusive lock on the output file
                </summary>
                <remarks>
                <para>
                Open the file once for writing and hold it open until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/> is called. 
                Maintains an exclusive lock on the file during this time.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.ExclusiveLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
                <summary>
                Open the file specified and prepare for logging.
                </summary>
                <param name="filename">The filename to use</param>
                <param name="append">Whether to append to the file, or overwrite</param>
                <param name="encoding">The encoding to use</param>
                <remarks>
                <para>
                Open the file specified and prepare for logging. 
                No writes will be made until <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/> is called.
                Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock"/>,
                <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.ExclusiveLock.CloseFile">
                <summary>
                Close the file
                </summary>
                <remarks>
                <para>
                Close the file. No further writes will be made.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.ExclusiveLock.AcquireLock">
                <summary>
                Acquire the lock on the file
                </summary>
                <returns>A stream that is ready to be written to.</returns>
                <remarks>
                <para>
                Does nothing. The lock is already taken
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.ExclusiveLock.ReleaseLock">
                <summary>
                Release the lock on the file
                </summary>
                <remarks>
                <para>
                Does nothing. The lock will be released when the file is closed.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.FileAppender.MinimalLock">
                <summary>
                Acquires the file lock for each write
                </summary>
                <remarks>
                <para>
                Opens the file once for each <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>/<see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> cycle, 
                thus holding the lock for the minimal amount of time. This method of locking
                is considerably slower than <see cref="T:log4net.Appender.FileAppender.ExclusiveLock"/> but allows 
                other processes to move/delete the log file whilst logging continues.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.MinimalLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
                <summary>
                Prepares to open the file when the first message is logged.
                </summary>
                <param name="filename">The filename to use</param>
                <param name="append">Whether to append to the file, or overwrite</param>
                <param name="encoding">The encoding to use</param>
                <remarks>
                <para>
                Open the file specified and prepare for logging. 
                No writes will be made until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called.
                Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/>,
                <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.MinimalLock.CloseFile"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.MinimalLock.CloseFile">
                <summary>
                Close the file
                </summary>
                <remarks>
                <para>
                Close the file. No further writes will be made.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock">
                <summary>
                Acquire the lock on the file
                </summary>
                <returns>A stream that is ready to be written to.</returns>
                <remarks>
                <para>
                Acquire the lock on the file in preparation for writing to it. 
                Return a stream pointing to the file. <see cref="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock"/>
                must be called to release the lock on the output file.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.MinimalLock.ReleaseLock">
                <summary>
                Release the lock on the file
                </summary>
                <remarks>
                <para>
                Release the lock on the file. No further writes will be made to the 
                stream until <see cref="M:log4net.Appender.FileAppender.MinimalLock.AcquireLock"/> is called again.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.FileAppender.InterProcessLock">
                <summary>
                Provides cross-process file locking.
                </summary>
                <author>Ron Grabowski</author>
                <author>Steve Wranovsky</author>
            </member>
            <member name="M:log4net.Appender.FileAppender.InterProcessLock.OpenFile(System.String,System.Boolean,System.Text.Encoding)">
                <summary>
                Open the file specified and prepare for logging.
                </summary>
                <param name="filename">The filename to use</param>
                <param name="append">Whether to append to the file, or overwrite</param>
                <param name="encoding">The encoding to use</param>
                <remarks>
                <para>
                Open the file specified and prepare for logging. 
                No writes will be made until <see cref="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock"/> is called.
                Must be called before any calls to <see cref="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock"/>,
                -<see cref="M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock"/> and <see cref="M:log4net.Appender.FileAppender.InterProcessLock.CloseFile"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.InterProcessLock.CloseFile">
                <summary>
                Close the file
                </summary>
                <remarks>
                <para>
                Close the file. No further writes will be made.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.InterProcessLock.AcquireLock">
                <summary>
                Acquire the lock on the file
                </summary>
                <returns>A stream that is ready to be written to.</returns>
                <remarks>
                <para>
                Does nothing. The lock is already taken
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.FileAppender.InterProcessLock.ReleaseLock">
                <summary>
                
                </summary>
            </member>
            <member name="T:log4net.Appender.ForwardingAppender">
                <summary>
                This appender forwards logging events to attached appenders.
                </summary>
                <remarks>
                <para>
                The forwarding appender can be used to specify different thresholds
                and filters for the same appender at different locations within the hierarchy.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ForwardingAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.OnClose">
                <summary>
                Closes the appender and releases resources.
                </summary>
                <remarks>
                <para>
                Releases any resources allocated within the appender such as file handles, 
                network connections, etc.
                </para>
                <para>
                It is a programming error to append to a closed appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Forward the logging event to the attached appenders 
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Delivers the logging event to all the attached appenders.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.Append(log4net.Core.LoggingEvent[])">
                <summary>
                Forward the logging events to the attached appenders 
                </summary>
                <param name="loggingEvents">The array of events to log.</param>
                <remarks>
                <para>
                Delivers the logging events to all the attached appenders.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.AddAppender(log4net.Appender.IAppender)">
                <summary>
                Adds an <see cref="T:log4net.Appender.IAppender"/> to the list of appenders of this
                instance.
                </summary>
                <param name="newAppender">The <see cref="T:log4net.Appender.IAppender"/> to add to this appender.</param>
                <remarks>
                <para>
                If the specified <see cref="T:log4net.Appender.IAppender"/> is already in the list of
                appenders, then it won't be added again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.GetAppender(System.String)">
                <summary>
                Looks for the appender with the specified name.
                </summary>
                <param name="name">The name of the appender to lookup.</param>
                <returns>
                The appender with the specified name, or <c>null</c>.
                </returns>
                <remarks>
                <para>
                Get the named appender attached to this appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.RemoveAllAppenders">
                <summary>
                Removes all previously added appenders from this appender.
                </summary>
                <remarks>
                <para>
                This is useful when re-reading configuration information.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(log4net.Appender.IAppender)">
                <summary>
                Removes the specified appender from the list of appenders.
                </summary>
                <param name="appender">The appender to remove.</param>
                <returns>The appender removed from the list</returns>
                <remarks>
                The appender removed is not closed.
                If you are discarding the appender you must call
                <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ForwardingAppender.RemoveAppender(System.String)">
                <summary>
                Removes the appender with the specified name from the list of appenders.
                </summary>
                <param name="name">The name of the appender to remove.</param>
                <returns>The appender removed from the list</returns>
                <remarks>
                The appender removed is not closed.
                If you are discarding the appender you must call
                <see cref="M:log4net.Appender.IAppender.Close"/> on the appender removed.
                </remarks>
            </member>
            <member name="F:log4net.Appender.ForwardingAppender.m_appenderAttachedImpl">
                <summary>
                Implementation of the <see cref="T:log4net.Core.IAppenderAttachable"/> interface
                </summary>
            </member>
            <member name="P:log4net.Appender.ForwardingAppender.Appenders">
                <summary>
                Gets the appenders contained in this appender as an 
                <see cref="T:System.Collections.ICollection"/>.
                </summary>
                <remarks>
                If no appenders can be found, then an <see cref="T:log4net.Util.EmptyCollection"/> 
                is returned.
                </remarks>
                <returns>
                A collection of the appenders in this appender.
                </returns>
            </member>
            <member name="T:log4net.Appender.LocalSyslogAppender">
                <summary>
                Logs events to a local syslog service.
                </summary>
                <remarks>
                <note>
                This appender uses the POSIX libc library functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c>.
                If these functions are not available on the local system then this appender will not work!
                </note>
                <para>
                The functions <c>openlog</c>, <c>syslog</c>, and <c>closelog</c> are specified in SUSv2 and 
                POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service.
                </para>
                <para>
                This appender talks to a local syslog service. If you need to log to a remote syslog
                daemon and you cannot configure your local syslog service to do this you may be
                able to use the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> to log via UDP.
                </para>
                <para>
                Syslog messages must have a facility and and a severity. The severity
                is derived from the Level of the logging event.
                The facility must be chosen from the set of defined syslog 
                <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The facilities list is predefined
                and cannot be extended.
                </para>
                <para>
                An identifier is specified with each log message. This can be specified
                by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know 
                as the tag) must not contain white space. The default value for the
                identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>).
                </para>
                </remarks>
                <author>Rob Lyon</author>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class.
                </summary>
                <remarks>
                This instance of the <see cref="T:log4net.Appender.LocalSyslogAppender"/> class is set up to write 
                to a local syslog service.
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)">
                <summary>
                Add a mapping of level to severity
                </summary>
                <param name="mapping">The mapping to add</param>
                <remarks>
                <para>
                Adds a <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/> to this appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set.
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.LocalSyslogAppender.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the event to a remote syslog daemon.
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.OnClose">
                <summary>
                Close the syslog when the appender is closed
                </summary>
                <remarks>
                <para>
                Close the syslog when the appender is closed
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.GetSeverity(log4net.Core.Level)">
                <summary>
                Translates a log4net level to a syslog severity.
                </summary>
                <param name="level">A log4net level.</param>
                <returns>A syslog severity.</returns>
                <remarks>
                <para>
                Translates a log4net level to a syslog severity.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.GeneratePriority(log4net.Appender.LocalSyslogAppender.SyslogFacility,log4net.Appender.LocalSyslogAppender.SyslogSeverity)">
                <summary>
                Generate a syslog priority.
                </summary>
                <param name="facility">The syslog facility.</param>
                <param name="severity">The syslog severity.</param>
                <returns>A syslog priority.</returns>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.m_facility">
                <summary>
                The facility. The default facility is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>.
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.m_identity">
                <summary>
                The message identity
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.m_handleToIdentity">
                <summary>
                Marshaled handle to the identity string. We have to hold on to the
                string as the <c>openlog</c> and <c>syslog</c> APIs just hold the
                pointer to the ident and dereference it for each log message.
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.m_levelMapping">
                <summary>
                Mapping from level object to syslog severity
                </summary>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.openlog(System.IntPtr,System.Int32,log4net.Appender.LocalSyslogAppender.SyslogFacility)">
                <summary>
                Open connection to system logger.
                </summary>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.syslog(System.Int32,System.String,System.String)">
                <summary>
                Generate a log message.
                </summary>
                <remarks>
                <para>
                The libc syslog method takes a format string and a variable argument list similar
                to the classic printf function. As this type of vararg list is not supported
                by C# we need to specify the arguments explicitly. Here we have specified the
                format string with a single message argument. The caller must set the format 
                string to <c>"%s"</c>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.LocalSyslogAppender.closelog">
                <summary>
                Close descriptor used to write to system logger.
                </summary>
            </member>
            <member name="P:log4net.Appender.LocalSyslogAppender.Identity">
                <summary>
                Message identity
                </summary>
                <remarks>
                <para>
                An identifier is specified with each log message. This can be specified
                by setting the <see cref="P:log4net.Appender.LocalSyslogAppender.Identity"/> property. The identity (also know 
                as the tag) must not contain white space. The default value for the
                identity is the application name (from <see cref="P:log4net.Util.SystemInfo.ApplicationFriendlyName"/>).
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.LocalSyslogAppender.Facility">
                <summary>
                Syslog facility
                </summary>
                <remarks>
                Set to one of the <see cref="T:log4net.Appender.LocalSyslogAppender.SyslogFacility"/> values. The list of
                facilities is predefined and cannot be extended. The default value
                is <see cref="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User"/>.
                </remarks>
            </member>
            <member name="P:log4net.Appender.LocalSyslogAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="P:log4net.Appender.AppenderSkeleton.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.LocalSyslogAppender.SyslogSeverity">
                <summary>
                syslog severities
                </summary>
                <remarks>
                <para>
                The log4net Level maps to a syslog severity using the
                <see cref="M:log4net.Appender.LocalSyslogAppender.AddMapping(log4net.Appender.LocalSyslogAppender.LevelSeverity)"/> method and the <see cref="T:log4net.Appender.LocalSyslogAppender.LevelSeverity"/>
                class. The severity is set on <see cref="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity"/>.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Emergency">
                <summary>
                system is unusable
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Alert">
                <summary>
                action must be taken immediately
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Critical">
                <summary>
                critical conditions
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Error">
                <summary>
                error conditions
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Warning">
                <summary>
                warning conditions
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Notice">
                <summary>
                normal but significant condition
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Informational">
                <summary>
                informational
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogSeverity.Debug">
                <summary>
                debug-level messages
                </summary>
            </member>
            <member name="T:log4net.Appender.LocalSyslogAppender.SyslogFacility">
                <summary>
                syslog facilities
                </summary>
                <remarks>
                <para>
                The syslog facility defines which subsystem the logging comes from.
                This is set on the <see cref="P:log4net.Appender.LocalSyslogAppender.Facility"/> property.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Kernel">
                <summary>
                kernel messages
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.User">
                <summary>
                random user-level messages
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Mail">
                <summary>
                mail system
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Daemons">
                <summary>
                system daemons
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization">
                <summary>
                security/authorization messages
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Syslog">
                <summary>
                messages generated internally by syslogd
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Printer">
                <summary>
                line printer subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.News">
                <summary>
                network news subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Uucp">
                <summary>
                UUCP subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock">
                <summary>
                clock (cron/at) daemon
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Authorization2">
                <summary>
                security/authorization  messages (private)
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ftp">
                <summary>
                ftp daemon
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Ntp">
                <summary>
                NTP subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Audit">
                <summary>
                log audit
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Alert">
                <summary>
                log alert
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Clock2">
                <summary>
                clock daemon
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local0">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local1">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local2">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local3">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local4">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local5">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local6">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.LocalSyslogAppender.SyslogFacility.Local7">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="T:log4net.Appender.LocalSyslogAppender.LevelSeverity">
                <summary>
                A class to act as a mapping between the level that a logging call is made at and
                the syslog severity that is should be logged at.
                </summary>
                <remarks>
                <para>
                A class to act as a mapping between the level that a logging call is made at and
                the syslog severity that is should be logged at.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.LocalSyslogAppender.LevelSeverity.Severity">
                <summary>
                The mapped syslog severity for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped syslog severity for the specified level
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.ManagedColoredConsoleAppender">
                <summary>
                Appends colorful logging events to the console, using the .NET 2
                built-in capabilities.
                </summary>
                <remarks>
                <para>
                ManagedColoredConsoleAppender appends log events to the standard output stream
                or the error output stream using a layout specified by the 
                user. It also allows the color of a specific type of message to be set.
                </para>
                <para>
                By default, all output is written to the console's standard output stream.
                The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> property can be set to direct the output to the
                error stream.
                </para>
                <para>
                When configuring the colored console appender, mappings should be
                specified to map logging levels to colors. For example:
                </para>
                <code lang="XML" escaped="true">
                <mapping>
                	<level value="ERROR"/>
                	<foreColor value="DarkRed"/>
                	<backColor value="White"/>
                </mapping>
                <mapping>
                	<level value="WARN"/>
                	<foreColor value="Yellow"/>
                </mapping>
                <mapping>
                	<level value="INFO"/>
                	<foreColor value="White"/>
                </mapping>
                <mapping>
                	<level value="DEBUG"/>
                	<foreColor value="Blue"/>
                </mapping>
                </code>
                <para>
                The Level is the standard log4net logging level while
                ForeColor and BackColor are the values of <see cref="T:System.ConsoleColor"/>
                enumeration.
                </para>
                <para>
                Based on the ColoredConsoleAppender
                </para>
                </remarks>
                <author>Rick Hobbs</author>
                <author>Nicko Cadell</author>
                <author>Pavlos Touboulidis</author>
            </member>
            <member name="F:log4net.Appender.ManagedColoredConsoleAppender.ConsoleOut">
                <summary>
                The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard output stream.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.ManagedColoredConsoleAppender.ConsoleError">
                <summary>
                The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </summary>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.ManagedColoredConsoleAppender.Target"/> to use when writing to the Console 
                standard error output stream.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ManagedColoredConsoleAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.ManagedColoredConsoleAppender"/> class.
                </summary>
                <remarks>
                The instance of the <see cref="T:log4net.Appender.ManagedColoredConsoleAppender"/> class is set up to write 
                to the standard output stream.
                </remarks>
            </member>
            <member name="M:log4net.Appender.ManagedColoredConsoleAppender.AddMapping(log4net.Appender.ManagedColoredConsoleAppender.LevelColors)">
                <summary>
                Add a mapping of level to color - done by the config file
                </summary>
                <param name="mapping">The mapping to add</param>
                <remarks>
                <para>
                Add a <see cref="T:log4net.Appender.ManagedColoredConsoleAppender.LevelColors"/> mapping to this appender.
                Each mapping defines the foreground and background colors
                for a level.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ManagedColoredConsoleAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the event to the console.
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.ManagedColoredConsoleAppender.ActivateOptions">
                <summary>
                Initialize the options for this appender
                </summary>
                <remarks>
                <para>
                Initialize the level to color mappings set on this appender.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.ManagedColoredConsoleAppender.m_writeToErrorStream">
                <summary>
                Flag to write output to the error stream rather than the standard output stream
                </summary>
            </member>
            <member name="F:log4net.Appender.ManagedColoredConsoleAppender.m_levelMapping">
                <summary>
                Mapping from level object to color value
                </summary>
            </member>
            <member name="P:log4net.Appender.ManagedColoredConsoleAppender.Target">
                <summary>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </summary>
                <value>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </value>
                <remarks>
                <para>
                Target is the value of the console output stream.
                This is either <c>"Console.Out"</c> or <c>"Console.Error"</c>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ManagedColoredConsoleAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.ManagedColoredConsoleAppender.LevelColors">
                <summary>
                A class to act as a mapping between the level that a logging call is made at and
                the color it should be displayed as.
                </summary>
                <remarks>
                <para>
                Defines the mapping between a level and the color it should be displayed in.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ManagedColoredConsoleAppender.LevelColors.ForeColor">
                <summary>
                The mapped foreground color for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped foreground color for the specified level.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.ManagedColoredConsoleAppender.LevelColors.BackColor">
                <summary>
                The mapped background color for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped background color for the specified level.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.MemoryAppender">
                <summary>
                Stores logging events in an array.
                </summary>
                <remarks>
                <para>
                The memory appender stores all the logging events
                that are appended in an in-memory array.
                </para>
                <para>
                Use the <see cref="M:log4net.Appender.MemoryAppender.GetEvents"/> method to get
                the current list of events that have been appended.
                </para>
                <para>
                Use the <see cref="M:Clear()"/> method to clear the
                current list of events.
                </para>
                </remarks>
                <author>Julian Biddle</author>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Appender.MemoryAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.MemoryAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.MemoryAppender.GetEvents">
                <summary>
                Gets the events that have been logged.
                </summary>
                <returns>The events that have been logged</returns>
                <remarks>
                <para>
                Gets the events that have been logged.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.MemoryAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method. 
                </summary>
                <param name="loggingEvent">the event to log</param>
                <remarks>
                <para>Stores the <paramref name="loggingEvent"/> in the events list.</para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.MemoryAppender.Clear">
                <summary>
                Clear the list of events
                </summary>
                <remarks>
                Clear the list of events
                </remarks>
            </member>
            <member name="F:log4net.Appender.MemoryAppender.m_eventsList">
                <summary>
                The list of events that have been appended.
                </summary>
            </member>
            <member name="F:log4net.Appender.MemoryAppender.m_fixFlags">
                <summary>
                Value indicating which fields in the event should be fixed
                </summary>
                <remarks>
                By default all fields are fixed
                </remarks>
            </member>
            <member name="P:log4net.Appender.MemoryAppender.OnlyFixPartialEventData">
                <summary>
                Gets or sets a value indicating whether only part of the logging event 
                data should be fixed.
                </summary>
                <value>
                <c>true</c> if the appender should only fix part of the logging event 
                data, otherwise <c>false</c>. The default is <c>false</c>.
                </value>
                <remarks>
                <para>
                Setting this property to <c>true</c> will cause only part of the event 
                data to be fixed and stored in the appender, hereby improving performance. 
                </para>
                <para>
                See <see cref="M:LoggingEvent.FixVolatileData(bool)"/> for more information.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.MemoryAppender.Fix">
                <summary>
                Gets or sets the fields that will be fixed in the event
                </summary>
                <remarks>
                <para>
                The logging event needs to have certain thread specific values 
                captured before it can be buffered. See <see cref="P:log4net.Core.LoggingEvent.Fix"/>
                for details.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.NetSendAppender">
                <summary>
                Logs entries by sending network messages using the 
                <see cref="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)"/> native function.
                </summary>
                <remarks>
                <para>
                You can send messages only to names that are active 
                on the network. If you send the message to a user name, 
                that user must be logged on and running the Messenger 
                service to receive the message.
                </para>
                <para>
                The receiver will get a top most window displaying the 
                messages one at a time, therefore this appender should 
                not be used to deliver a high volume of messages.
                </para>
                <para>
                The following table lists some possible uses for this appender :
                </para>
                <para>
                <list type="table">
                    <listheader>
                        <term>Action</term>
                        <description>Property Value(s)</description>
                    </listheader>
                    <item>
                        <term>Send a message to a user account on the local machine</term>
                        <description>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Server"/> = &lt;name of the local machine&gt;
                            </para>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = &lt;user name&gt;
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>Send a message to a user account on a remote machine</term>
                        <description>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Server"/> = &lt;name of the remote machine&gt;
                            </para>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = &lt;user name&gt;
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>Send a message to a domain user account</term>
                        <description>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Server"/> = &lt;name of a domain controller | uninitialized&gt;
                            </para>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = &lt;user name&gt;
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>Send a message to all the names in a workgroup or domain</term>
                        <description>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = &lt;workgroup name | domain name&gt;*
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>Send a message from the local machine to a remote machine</term>
                        <description>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Server"/> = &lt;name of the local machine | uninitialized&gt;
                            </para>
                            <para>
                            <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> = &lt;name of the remote machine&gt;
                            </para>
                        </description>
                    </item>
                </list>
                </para>
                <para>
                <b>Note :</b> security restrictions apply for sending 
                network messages, see <see cref="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)"/> 
                for more information.
                </para>
                </remarks>
                <example>
                <para>
                An example configuration section to log information 
                using this appender from the local machine, named 
                LOCAL_PC, to machine OPERATOR_PC :
                </para>
                <code lang="XML" escaped="true">
                <appender name="NetSendAppender_Operator" type="log4net.Appender.NetSendAppender">
                    <server value="LOCAL_PC"/>
                    <recipient value="OPERATOR_PC"/>
                    <layout type="log4net.Layout.PatternLayout" value="%-5p %c [%x] - %m%n"/>
                </appender>
                </code>
                </example>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="F:log4net.Appender.NetSendAppender.m_server">
                <summary>
                The DNS or NetBIOS name of the server on which the function is to execute.
                </summary>
            </member>
            <member name="F:log4net.Appender.NetSendAppender.m_sender">
                <summary>
                The sender of the network message.
                </summary>
            </member>
            <member name="F:log4net.Appender.NetSendAppender.m_recipient">
                <summary>
                The message alias to which the message should be sent.
                </summary>
            </member>
            <member name="F:log4net.Appender.NetSendAppender.m_securityContext">
                <summary>
                The security context to use for privileged calls
                </summary>
            </member>
            <member name="M:log4net.Appender.NetSendAppender.#ctor">
                <summary>
                Initializes the appender.
                </summary>
                <remarks>
                The default constructor initializes all fields to their default values.
                </remarks>
            </member>
            <member name="M:log4net.Appender.NetSendAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set.
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.NetSendAppender.ActivateOptions"/> must be called again.
                </para>
                <para>
                The appender will be ignored if no <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> was specified.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.NetSendAppender.Recipient"/> was not specified.</exception>
            </member>
            <member name="M:log4net.Appender.NetSendAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Sends the event using a network message.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.NetSendAppender.NetMessageBufferSend(System.String,System.String,System.String,System.String,System.Int32)">
                <summary>
                Sends a buffer of information to a registered message alias.
                </summary>
                <param name="serverName">The DNS or NetBIOS name of the server on which the function is to execute.</param>
                <param name="msgName">The message alias to which the message buffer should be sent</param>
                <param name="fromName">The originator of the message.</param>
                <param name="buffer">The message text.</param>
                <param name="bufferSize">The length, in bytes, of the message text.</param>
                <remarks>
                <para>
                The following restrictions apply for sending network messages:
                </para>
                <para>
                <list type="table">
                    <listheader>
                        <term>Platform</term>
                        <description>Requirements</description>
                    </listheader>
                    <item>
                        <term>Windows NT</term>
                        <description>
                            <para>
                            No special group membership is required to send a network message.
                            </para>
                            <para>
                            Admin, Accounts, Print, or Server Operator group membership is required to 
                            successfully send a network message on a remote server.
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>Windows 2000 or later</term>
                        <description>
                            <para>
                            If you send a message on a domain controller that is running Active Directory, 
                            access is allowed or denied based on the access control list (ACL) for the securable 
                            object. The default ACL permits only Domain Admins and Account Operators to send a network message. 
                            </para>
                            <para>
                            On a member server or workstation, only Administrators and Server Operators can send a network message. 
                            </para>
                        </description>
                    </item>
                </list>
                </para>
                <para>
                For more information see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/security_requirements_for_the_network_management_functions.asp">Security Requirements for the Network Management Functions</a>.
                </para>
                </remarks>
                <returns>
                <para>
                If the function succeeds, the return value is zero.
                </para>
                </returns>
            </member>
            <member name="P:log4net.Appender.NetSendAppender.Sender">
                <summary>
                Gets or sets the sender of the message.
                </summary>
                <value>
                The sender of the message.
                </value>
                <remarks>
                If this property is not specified, the message is sent from the local computer.
                </remarks>
            </member>
            <member name="P:log4net.Appender.NetSendAppender.Recipient">
                <summary>
                Gets or sets the message alias to which the message should be sent.
                </summary>
                <value>
                The recipient of the message.
                </value>
                <remarks>
                This property should always be specified in order to send a message.
                </remarks>
            </member>
            <member name="P:log4net.Appender.NetSendAppender.Server">
                <summary>
                Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute.
                </summary>
                <value>
                DNS or NetBIOS name of the remote server on which the function is to execute.
                </value>
                <remarks>
                <para>
                For Windows NT 4.0 and earlier, the string should begin with \\.
                </para>
                <para>
                If this property is not specified, the local computer is used. 
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.NetSendAppender.SecurityContext">
                <summary>
                Gets or sets the <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> used to call the NetSend method.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> used to call the NetSend method.
                </value>
                <remarks>
                <para>
                Unless a <see cref="P:log4net.Appender.NetSendAppender.SecurityContext"/> specified here for this appender
                the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
                security context to use. The default behavior is to use the security context
                of the current thread.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.NetSendAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.OutputDebugStringAppender">
                <summary>
                Appends log events to the OutputDebugString system.
                </summary>
                <remarks>
                <para>
                OutputDebugStringAppender appends log events to the
                OutputDebugString system.
                </para>
                <para>
                The string is passed to the native <c>OutputDebugString</c> 
                function.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Appender.OutputDebugStringAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.OutputDebugStringAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.OutputDebugStringAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Write the logging event to the output debug string API
                </summary>
                <param name="loggingEvent">the event to log</param>
                <remarks>
                <para>
                Write the logging event to the output debug string API
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.OutputDebugStringAppender.OutputDebugString(System.String)">
                <summary>
                Stub for OutputDebugString native method
                </summary>
                <param name="message">the string to output</param>
                <remarks>
                <para>
                Stub for OutputDebugString native method
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.OutputDebugStringAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RemoteSyslogAppender">
                <summary>
                Logs events to a remote syslog daemon.
                </summary>
                <remarks>
                <para>
                The BSD syslog protocol is used to remotely log to
                a syslog daemon. The syslogd listens for for messages
                on UDP port 514.
                </para>
                <para>
                The syslog UDP protocol is not authenticated. Most syslog daemons
                do not accept remote log messages because of the security implications.
                You may be able to use the LocalSyslogAppender to talk to a local
                syslog service.
                </para>
                <para>
                There is an RFC 3164 that claims to document the BSD Syslog Protocol.
                This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html.
                This appender generates what the RFC calls an "Original Device Message",
                i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation
                this format of message will be accepted by all current syslog daemon
                implementations. The daemon will attach the current time and the source
                hostname or IP address to any messages received.
                </para>
                <para>
                Syslog messages must have a facility and and a severity. The severity
                is derived from the Level of the logging event.
                The facility must be chosen from the set of defined syslog 
                <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The facilities list is predefined
                and cannot be extended.
                </para>
                <para>
                An identifier is specified with each log message. This can be specified
                by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know 
                as the tag) must not contain white space. The default value for the
                identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>).
                </para>
                </remarks>
                <author>Rob Lyon</author>
                <author>Nicko Cadell</author>
            </member>
            <member name="T:log4net.Appender.UdpAppender">
                 <summary>
                 Sends logging events as connectionless UDP datagrams to a remote host or a 
                 multicast group using an <see cref="T:System.Net.Sockets.UdpClient"/>.
                 </summary>
                 <remarks>
                 <para>
                 UDP guarantees neither that messages arrive, nor that they arrive in the correct order.
                 </para>
                 <para>
                 To view the logging results, a custom application can be developed that listens for logging 
                 events.
                 </para>
                 <para>
                 When decoding events send via this appender remember to use the same encoding
                 to decode the events as was used to send the events. See the <see cref="P:log4net.Appender.UdpAppender.Encoding"/>
                 property to specify the encoding to use.
                 </para>
                 </remarks>
                 <example>
                 This example shows how to log receive logging events that are sent 
                 on IP address 244.0.0.1 and port 8080 to the console. The event is 
                 encoded in the packet as a unicode string and it is decoded as such. 
                 <code lang="C#">
                 IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
                 UdpClient udpClient;
                 byte[] buffer;
                 string loggingEvent;
                 
                 try 
                 {
                     udpClient = new UdpClient(8080);
                     
                     while(true) 
                     {
                         buffer = udpClient.Receive(ref remoteEndPoint);
                         loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);
                         Console.WriteLine(loggingEvent);
                     }
                 } 
                 catch(Exception e) 
                 {
                     Console.WriteLine(e.ToString());
                 }
                 </code>
                 <code lang="Visual Basic">
                 Dim remoteEndPoint as IPEndPoint
                 Dim udpClient as UdpClient
                 Dim buffer as Byte()
                 Dim loggingEvent as String
                 
                 Try 
                     remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)
                     udpClient = new UdpClient(8080)
                
                     While True
                         buffer = udpClient.Receive(ByRef remoteEndPoint)
                         loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)
                         Console.WriteLine(loggingEvent)
                     Wend
                 Catch e As Exception
                     Console.WriteLine(e.ToString())
                 End Try
                 </code>
                 <para>
                 An example configuration section to log information using this appender to the 
                 IP 224.0.0.1 on port 8080:
                 </para>
                 <code lang="XML" escaped="true">
                 <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
                     <remoteAddress value="224.0.0.1"/>
                     <remotePort value="8080"/>
                     <layout type="log4net.Layout.PatternLayout" value="%-5level %logger [%ndc] - %message%newline"/>
                 </appender>
                 </code>
                 </example>
                 <author>Gert Driesen</author>
                 <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.UdpAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.UdpAppender"/> class.
                </summary>
                <remarks>
                The default constructor initializes all fields to their default values.
                </remarks>
            </member>
            <member name="M:log4net.Appender.UdpAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set.
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> must be called again.
                </para>
                <para>
                The appender will be ignored if no <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was specified or 
                an invalid remote or local TCP port number was specified.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException">The required property <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> was not specified.</exception>
                <exception cref="T:System.ArgumentOutOfRangeException">The TCP port number assigned to <see cref="P:log4net.Appender.UdpAppender.LocalPort"/> or <see cref="P:log4net.Appender.UdpAppender.RemotePort"/> is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
            </member>
            <member name="M:log4net.Appender.UdpAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Sends the event using an UDP datagram.
                </para>
                <para>
                Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.UdpAppender.OnClose">
                <summary>
                Closes the UDP connection and releases all resources associated with 
                this <see cref="T:log4net.Appender.UdpAppender"/> instance.
                </summary>
                <remarks>
                <para>
                Disables the underlying <see cref="T:System.Net.Sockets.UdpClient"/> and releases all managed 
                and unmanaged resources associated with the <see cref="T:log4net.Appender.UdpAppender"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.UdpAppender.InitializeClientConnection">
                <summary>
                Initializes the underlying  <see cref="T:System.Net.Sockets.UdpClient"/> connection.
                </summary>
                <remarks>
                <para>
                The underlying <see cref="T:System.Net.Sockets.UdpClient"/> is initialized and binds to the 
                port number from which you intend to communicate.
                </para>
                <para>
                Exceptions are passed to the <see cref="P:log4net.Appender.AppenderSkeleton.ErrorHandler"/>.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.UdpAppender.m_remoteAddress">
                <summary>
                The IP address of the remote host or multicast group to which 
                the logging event will be sent.
                </summary>
            </member>
            <member name="F:log4net.Appender.UdpAppender.m_remotePort">
                <summary>
                The TCP port number of the remote host or multicast group to 
                which the logging event will be sent.
                </summary>
            </member>
            <member name="F:log4net.Appender.UdpAppender.m_remoteEndPoint">
                <summary>
                The cached remote endpoint to which the logging events will be sent.
                </summary>
            </member>
            <member name="F:log4net.Appender.UdpAppender.m_localPort">
                <summary>
                The TCP port number from which the <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
                </summary>
            </member>
            <member name="F:log4net.Appender.UdpAppender.m_client">
                <summary>
                The <see cref="T:System.Net.Sockets.UdpClient"/> instance that will be used for sending the 
                logging events.
                </summary>
            </member>
            <member name="F:log4net.Appender.UdpAppender.m_encoding">
                <summary>
                The encoding to use for the packet.
                </summary>
            </member>
            <member name="P:log4net.Appender.UdpAppender.RemoteAddress">
                <summary>
                Gets or sets the IP address of the remote host or multicast group to which
                the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event.
                </summary>
                <value>
                The IP address of the remote host or multicast group to which the logging event 
                will be sent.
                </value>
                <remarks>
                <para>
                Multicast addresses are identified by IP class <b>D</b> addresses (in the range 224.0.0.0 to
                239.255.255.255).  Multicast packets can pass across different networks through routers, so
                it is possible to use multicasts in an Internet scenario as long as your network provider 
                supports multicasting.
                </para>
                <para>
                Hosts that want to receive particular multicast messages must register their interest by joining
                the multicast group.  Multicast messages are not sent to networks where no host has joined
                the multicast group.  Class <b>D</b> IP addresses are used for multicast groups, to differentiate
                them from normal host addresses, allowing nodes to easily detect if a message is of interest.
                </para>
                <para>
                Static multicast addresses that are needed globally are assigned by IANA.  A few examples are listed in the table below:
                </para>
                <para>
                <list type="table">
                    <listheader>
                        <term>IP Address</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>224.0.0.1</term>
                        <description>
                            <para>
                            Sends a message to all system on the subnet.
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>224.0.0.2</term>
                        <description>
                            <para>
                            Sends a message to all routers on the subnet.
                            </para>
                        </description>
                    </item>
                    <item>
                        <term>224.0.0.12</term>
                        <description>
                            <para>
                            The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet.
                            </para>
                        </description>
                    </item>
                </list>
                </para>
                <para>
                A complete list of actually reserved multicast addresses and their owners in the ranges
                defined by RFC 3171 can be found at the <A href="http://www.iana.org/assignments/multicast-addresses">IANA web site</A>. 
                </para>
                <para>
                The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative 
                addresses.  These addresses can be reused with other local groups.  Routers are typically 
                configured with filters to prevent multicast traffic in this range from flowing outside
                of the local network.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.UdpAppender.RemotePort">
                <summary>
                Gets or sets the TCP port number of the remote host or multicast group to which 
                the underlying <see cref="T:System.Net.Sockets.UdpClient"/> should sent the logging event.
                </summary>
                <value>
                An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/> 
                indicating the TCP port number of the remote host or multicast group to which the logging event 
                will be sent.
                </value>
                <remarks>
                The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will send messages to this TCP port number
                on the remote host or multicast group.
                </remarks>
                <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
            </member>
            <member name="P:log4net.Appender.UdpAppender.LocalPort">
                <summary>
                Gets or sets the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
                </summary>
                <value>
                An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/> 
                indicating the TCP port number from which the underlying <see cref="T:System.Net.Sockets.UdpClient"/> will communicate.
                </value>
                <remarks>
                <para>
                The underlying <see cref="T:System.Net.Sockets.UdpClient"/> will bind to this port for sending messages.
                </para>
                <para>
                Setting the value to 0 (the default) will cause the udp client not to bind to
                a local port.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
            </member>
            <member name="P:log4net.Appender.UdpAppender.Encoding">
                <summary>
                Gets or sets <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
                </value>
                <remarks>
                <para>
                The <see cref="P:log4net.Appender.UdpAppender.Encoding"/> used to write the packets.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.UdpAppender.Client">
                <summary>
                Gets or sets the underlying <see cref="T:System.Net.Sockets.UdpClient"/>.
                </summary>
                <value>
                The underlying <see cref="T:System.Net.Sockets.UdpClient"/>.
                </value>
                <remarks>
                <see cref="T:log4net.Appender.UdpAppender"/> creates a <see cref="T:System.Net.Sockets.UdpClient"/> to send logging events 
                over a network.  Classes deriving from <see cref="T:log4net.Appender.UdpAppender"/> can use this
                property to get or set this <see cref="T:System.Net.Sockets.UdpClient"/>.  Use the underlying <see cref="T:System.Net.Sockets.UdpClient"/>
                returned from <see cref="P:log4net.Appender.UdpAppender.Client"/> if you require access beyond that which 
                <see cref="T:log4net.Appender.UdpAppender"/> provides.
                </remarks>
            </member>
            <member name="P:log4net.Appender.UdpAppender.RemoteEndPoint">
                <summary>
                Gets or sets the cached remote endpoint to which the logging events should be sent.
                </summary>
                <value>
                The cached remote endpoint to which the logging events will be sent.
                </value>
                <remarks>
                The <see cref="M:log4net.Appender.UdpAppender.ActivateOptions"/> method will initialize the remote endpoint 
                with the values of the <see cref="P:log4net.Appender.UdpAppender.RemoteAddress"/> and <see cref="P:log4net.Appender.UdpAppender.RemotePort"/>
                properties.
                </remarks>
            </member>
            <member name="P:log4net.Appender.UdpAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.DefaultSyslogPort">
                <summary>
                Syslog port 514
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.c_renderBufferSize">
                <summary>
                Initial buffer size
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.c_renderBufferMaxCapacity">
                <summary>
                Maximum buffer size before it is recycled
                </summary>
            </member>
            <member name="M:log4net.Appender.RemoteSyslogAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class.
                </summary>
                <remarks>
                This instance of the <see cref="T:log4net.Appender.RemoteSyslogAppender"/> class is set up to write 
                to a remote syslog daemon.
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemoteSyslogAppender.AddMapping(log4net.Appender.RemoteSyslogAppender.LevelSeverity)">
                <summary>
                Add a mapping of level to severity
                </summary>
                <param name="mapping">The mapping to add</param>
                <remarks>
                <para>
                Add a <see cref="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity"/> mapping to this appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemoteSyslogAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                This method is called by the <see cref="M:AppenderSkeleton.DoAppend(LoggingEvent)"/> method.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the event to a remote syslog daemon.
                </para>
                <para>
                The format of the output will depend on the appender's layout.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemoteSyslogAppender.ActivateOptions">
                <summary>
                Initialize the options for this appender
                </summary>
                <remarks>
                <para>
                Initialize the level to syslog severity mappings set on this appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemoteSyslogAppender.GetSeverity(log4net.Core.Level)">
                <summary>
                Translates a log4net level to a syslog severity.
                </summary>
                <param name="level">A log4net level.</param>
                <returns>A syslog severity.</returns>
                <remarks>
                <para>
                Translates a log4net level to a syslog severity.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemoteSyslogAppender.GeneratePriority(log4net.Appender.RemoteSyslogAppender.SyslogFacility,log4net.Appender.RemoteSyslogAppender.SyslogSeverity)">
                <summary>
                Generate a syslog priority.
                </summary>
                <param name="facility">The syslog facility.</param>
                <param name="severity">The syslog severity.</param>
                <returns>A syslog priority.</returns>
                <remarks>
                <para>
                Generate a syslog priority.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.m_facility">
                <summary>
                The facility. The default facility is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>.
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.m_identity">
                <summary>
                The message identity
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.m_levelMapping">
                <summary>
                Mapping from level object to syslog severity
                </summary>
            </member>
            <member name="P:log4net.Appender.RemoteSyslogAppender.Identity">
                <summary>
                Message identity
                </summary>
                <remarks>
                <para>
                An identifier is specified with each log message. This can be specified
                by setting the <see cref="P:log4net.Appender.RemoteSyslogAppender.Identity"/> property. The identity (also know 
                as the tag) must not contain white space. The default value for the
                identity is the application name (from <see cref="P:log4net.Core.LoggingEvent.Domain"/>).
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RemoteSyslogAppender.Facility">
                <summary>
                Syslog facility
                </summary>
                <remarks>
                Set to one of the <see cref="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility"/> values. The list of
                facilities is predefined and cannot be extended. The default value
                is <see cref="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User"/>.
                </remarks>
            </member>
            <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogSeverity">
                <summary>
                syslog severities
                </summary>
                <remarks>
                <para>
                The syslog severities.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Emergency">
                <summary>
                system is unusable
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Alert">
                <summary>
                action must be taken immediately
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Critical">
                <summary>
                critical conditions
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Error">
                <summary>
                error conditions
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Warning">
                <summary>
                warning conditions
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Notice">
                <summary>
                normal but significant condition
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Informational">
                <summary>
                informational
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogSeverity.Debug">
                <summary>
                debug-level messages
                </summary>
            </member>
            <member name="T:log4net.Appender.RemoteSyslogAppender.SyslogFacility">
                <summary>
                syslog facilities
                </summary>
                <remarks>
                <para>
                The syslog facilities
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Kernel">
                <summary>
                kernel messages
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.User">
                <summary>
                random user-level messages
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Mail">
                <summary>
                mail system
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Daemons">
                <summary>
                system daemons
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization">
                <summary>
                security/authorization messages
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Syslog">
                <summary>
                messages generated internally by syslogd
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Printer">
                <summary>
                line printer subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.News">
                <summary>
                network news subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Uucp">
                <summary>
                UUCP subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock">
                <summary>
                clock (cron/at) daemon
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Authorization2">
                <summary>
                security/authorization  messages (private)
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ftp">
                <summary>
                ftp daemon
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Ntp">
                <summary>
                NTP subsystem
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Audit">
                <summary>
                log audit
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Alert">
                <summary>
                log alert
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Clock2">
                <summary>
                clock daemon
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local0">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local1">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local2">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local3">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local4">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local5">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local6">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="F:log4net.Appender.RemoteSyslogAppender.SyslogFacility.Local7">
                <summary>
                reserved for local use
                </summary>
            </member>
            <member name="T:log4net.Appender.RemoteSyslogAppender.LevelSeverity">
                <summary>
                A class to act as a mapping between the level that a logging call is made at and
                the syslog severity that is should be logged at.
                </summary>
                <remarks>
                <para>
                A class to act as a mapping between the level that a logging call is made at and
                the syslog severity that is should be logged at.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RemoteSyslogAppender.LevelSeverity.Severity">
                <summary>
                The mapped syslog severity for the specified level
                </summary>
                <remarks>
                <para>
                Required property.
                The mapped syslog severity for the specified level
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RemotingAppender">
                <summary>
                Delivers logging events to a remote logging sink. 
                </summary>
                <remarks>
                <para>
                This Appender is designed to deliver events to a remote sink. 
                That is any object that implements the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
                interface. It delivers the events using .NET remoting. The
                object to deliver events to is specified by setting the
                appenders <see cref="P:log4net.Appender.RemotingAppender.Sink"/> property.</para>
                <para>
                The RemotingAppender buffers events before sending them. This allows it to 
                make more efficient use of the remoting infrastructure.</para>
                <para>
                Once the buffer is full the events are still not sent immediately. 
                They are scheduled to be sent using a pool thread. The effect is that 
                the send occurs asynchronously. This is very important for a 
                number of non obvious reasons. The remoting infrastructure will 
                flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>),
                if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the 
                remoting boundary. If the server is not contactable then
                the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>
                objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from
                having side effects on the calling application the remoting call must be made
                from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/>
                thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then
                the events will block in the thread pool manager until a thread is available.</para>
                <para>
                Because the events are sent asynchronously using pool threads it is possible to close 
                this appender before all the queued events have been sent.
                When closing the appender attempts to wait until all the queued events have been sent, but 
                this will timeout after 30 seconds regardless.</para>
                <para>
                If this appender is being closed because the <see cref="E:System.AppDomain.ProcessExit"/>
                event has fired it may not be possible to send all the queued events. During process
                exit the runtime limits the time that a <see cref="E:System.AppDomain.ProcessExit"/>
                event handler is allowed to run for. If the runtime terminates the threads before
                the queued events have been sent then they will be lost. To ensure that all events
                are sent the appender must be closed before the application exits. See 
                <see cref="M:log4net.Core.LoggerManager.Shutdown"/> for details on how to shutdown
                log4net programmatically.</para>
                </remarks>
                <seealso cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Daniel Cazzulino</author>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.RemotingAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.RemotingAppender.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.SendBuffer(log4net.Core.LoggingEvent[])">
                <summary>
                Send the contents of the buffer to the remote sink.
                </summary>
                <remarks>
                The events are not sent immediately. They are scheduled to be sent
                using a pool thread. The effect is that the send occurs asynchronously.
                This is very important for a number of non obvious reasons. The remoting
                infrastructure will flow thread local variables (stored in the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>),
                if they are marked as <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>, across the 
                remoting boundary. If the server is not contactable then
                the remoting infrastructure will clear the <see cref="T:System.Runtime.Remoting.Messaging.ILogicalThreadAffinative"/>
                objects from the <see cref="T:System.Runtime.Remoting.Messaging.CallContext"/>. To prevent a logging failure from
                having side effects on the calling application the remoting call must be made
                from a separate thread to the one used by the application. A <see cref="T:System.Threading.ThreadPool"/>
                thread is used for this. If no <see cref="T:System.Threading.ThreadPool"/> thread is available then
                the events will block in the thread pool manager until a thread is available.
                </remarks>
                <param name="events">The events to send.</param>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.OnClose">
                <summary>
                Override base class close.
                </summary>
                <remarks>
                <para>
                This method waits while there are queued work items. The events are
                sent asynchronously using <see cref="T:System.Threading.ThreadPool"/> work items. These items
                will be sent once a thread pool thread is available to send them, therefore
                it is possible to close the appender before all the queued events have been
                sent.</para>
                <para>
                This method attempts to wait until all the queued events have been sent, but this 
                method will timeout after 30 seconds regardless.</para>
                <para>
                If the appender is being closed because the <see cref="E:System.AppDomain.ProcessExit"/>
                event has fired it may not be possible to send all the queued events. During process
                exit the runtime limits the time that a <see cref="E:System.AppDomain.ProcessExit"/>
                event handler is allowed to run for.</para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.BeginAsyncSend">
                <summary>
                A work item is being queued into the thread pool
                </summary>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.EndAsyncSend">
                <summary>
                A work item from the thread pool has completed
                </summary>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.SendBufferCallback(System.Object)">
                <summary>
                Send the contents of the buffer to the remote sink.
                </summary>
                <remarks>
                This method is designed to be used with the <see cref="T:System.Threading.ThreadPool"/>.
                This method expects to be passed an array of <see cref="T:log4net.Core.LoggingEvent"/>
                objects in the state param.
                </remarks>
                <param name="state">the logging events to send</param>
            </member>
            <member name="F:log4net.Appender.RemotingAppender.m_sinkUrl">
                <summary>
                The URL of the remote sink.
                </summary>
            </member>
            <member name="F:log4net.Appender.RemotingAppender.m_sinkObj">
                <summary>
                The local proxy (.NET remoting) for the remote logging sink.
                </summary>
            </member>
            <member name="F:log4net.Appender.RemotingAppender.m_queuedCallbackCount">
                <summary>
                The number of queued callbacks currently waiting or executing
                </summary>
            </member>
            <member name="F:log4net.Appender.RemotingAppender.m_workQueueEmptyEvent">
                <summary>
                Event used to signal when there are no queued work items
                </summary>
                <remarks>
                This event is set when there are no queued work items. In this
                state it is safe to close the appender.
                </remarks>
            </member>
            <member name="P:log4net.Appender.RemotingAppender.Sink">
                <summary>
                Gets or sets the URL of the well-known object that will accept 
                the logging events.
                </summary>
                <value>
                The well-known URL of the remote sink.
                </value>
                <remarks>
                <para>
                The URL of the remoting sink that will accept logging events.
                The sink must implement the <see cref="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink"/>
                interface.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RemotingAppender.IRemoteLoggingSink">
                <summary>
                Interface used to deliver <see cref="T:log4net.Core.LoggingEvent"/> objects to a remote sink.
                </summary>
                <remarks>
                This interface must be implemented by a remoting sink
                if the <see cref="T:log4net.Appender.RemotingAppender"/> is to be used
                to deliver logging events to the sink.
                </remarks>
            </member>
            <member name="M:log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(log4net.Core.LoggingEvent[])">
                <summary>
                Delivers logging events to the remote sink
                </summary>
                <param name="events">Array of events to log.</param>
                <remarks>
                <para>
                Delivers logging events to the remote sink
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RollingFileAppender">
                <summary>
                Appender that rolls log files based on size or date or both.
                </summary>
                <remarks>
                <para>
                RollingFileAppender can roll log files based on size or date or both
                depending on the setting of the <see cref="P:log4net.Appender.RollingFileAppender.RollingStyle"/> property.
                When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Size"/> the log file will be rolled
                once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>.
                When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Date"/> the log file will be rolled
                once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property
                is crossed.
                When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/> the log file will be
                rolled once the date boundary specified in the <see cref="P:log4net.Appender.RollingFileAppender.DatePattern"/> property
                is crossed, but within a date boundary the file will also be rolled
                once its size exceeds the <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/>.
                When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> the log file will be rolled when
                the appender is configured. This effectively means that the log file can be
                rolled once per program execution.
                </para>
                <para>
                A of few additional optional features have been added:
                <list type="bullet">
                <item>Attach date pattern for current log file <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/></item>
                <item>Backup number increments for newer files <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/></item>
                <item>Infinite number of backups by file size <see cref="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups"/></item>
                </list>
                </para>
                
                <note>
                <para>
                For large or infinite numbers of backup files a <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> 
                greater than zero is highly recommended, otherwise all the backup files need
                to be renamed each time a new backup is created.
                </para>
                <para>
                When Date/Time based rolling is used setting <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> 
                to <see langword="true"/> will reduce the number of file renamings to few or none.
                </para>
                </note>
                
                <note type="caution">
                <para>
                Changing <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> or <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> without clearing
                the log file directory of backup files will cause unexpected and unwanted side effects.  
                </para>
                </note>
                
                <para>
                If Date/Time based rolling is enabled this appender will attempt to roll existing files
                in the directory without a Date/Time tag based on the last write date of the base log file.
                The appender only rolls the log file when a message is logged. If Date/Time based rolling 
                is enabled then the appender will not roll the log file at the Date/Time boundary but
                at the point when the next message is logged after the boundary has been crossed.
                </para>
                
                <para>
                The <see cref="T:log4net.Appender.RollingFileAppender"/> extends the <see cref="T:log4net.Appender.FileAppender"/> and
                has the same behavior when opening the log file.
                The appender will first try to open the file for writing when <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>
                is called. This will typically be during configuration.
                If the file cannot be opened for writing the appender will attempt
                to open the file again each time a message is logged to the appender.
                If the file cannot be opened for writing when a message is logged then
                the message will be discarded by this appender.
                </para>
                <para>
                When rolling a backup file necessitates deleting an older backup file the
                file to be deleted is moved to a temporary name before being deleted.
                </para>
                
                <note type="caution">
                <para>
                A maximum number of backup files when rolling on date/time boundaries is not supported.
                </para>
                </note>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Aspi Havewala</author>
                <author>Douglas de la Torre</author>
                <author>Edward Smit</author>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.RollingFileAppender"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.declaringType">
                <summary>
                The fully qualified type of the RollingFileAppender class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.SetQWForFiles(System.IO.TextWriter)">
                <summary>
                Sets the quiet writer being used.
                </summary>
                <remarks>
                This method can be overridden by sub classes.
                </remarks>
                <param name="writer">the writer to set</param>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Write out a logging event.
                </summary>
                <param name="loggingEvent">the event to write to file.</param>
                <remarks>
                <para>
                Handles append time behavior for RollingFileAppender.  This checks
                if a roll over either by date (checked first) or time (checked second)
                is need and then appends to the file last.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.Append(log4net.Core.LoggingEvent[])">
                <summary>
                Write out an array of logging events.
                </summary>
                <param name="loggingEvents">the events to write to file.</param>
                <remarks>
                <para>
                Handles append time behavior for RollingFileAppender.  This checks
                if a roll over either by date (checked first) or time (checked second)
                is need and then appends to the file last.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.AdjustFileBeforeAppend">
                <summary>
                Performs any required rolling before outputting the next event
                </summary>
                <remarks>
                <para>
                Handles append time behavior for RollingFileAppender.  This checks
                if a roll over either by date (checked first) or time (checked second)
                is need and then appends to the file last.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.OpenFile(System.String,System.Boolean)">
                <summary>
                Creates and opens the file for logging.  If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/>
                is false then the fully qualified name is determined and used.
                </summary>
                <param name="fileName">the name of the file to open</param>
                <param name="append">true to append to existing file</param>
                <remarks>
                <para>This method will ensure that the directory structure
                for the <paramref name="fileName"/> specified exists.</para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.GetNextOutputFileName(System.String)">
                <summary>
                Get the current output file name
                </summary>
                <param name="fileName">the base file name</param>
                <returns>the output file name</returns>
                <remarks>
                The output file name is based on the base fileName specified.
                If <see cref="P:log4net.Appender.RollingFileAppender.StaticLogFileName"/> is set then the output 
                file name is the same as the base file passed in. Otherwise
                the output file depends on the date pattern, on the count
                direction or both.
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.DetermineCurSizeRollBackups">
                <summary>
                Determines curSizeRollBackups (only within the current roll point)
                </summary>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.GetWildcardPatternForFile(System.String)">
                <summary>
                Generates a wildcard pattern that can be used to find all files
                that are similar to the base file name.
                </summary>
                <param name="baseFileName"></param>
                <returns></returns>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.GetExistingFiles(System.String)">
                <summary>
                Builds a list of filenames for all files matching the base filename plus a file
                pattern.
                </summary>
                <param name="baseFilePath"></param>
                <returns></returns>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.RollOverIfDateBoundaryCrossing">
                <summary>
                Initiates a roll over if needed for crossing a date boundary since the last run.
                </summary>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.ExistingInit">
                <summary>
                Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>.
                </summary>
                <remarks>
                <para>
                Initializes based on existing conditions at time of <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/>.
                The following is done
                <list type="bullet">
                <item>determine curSizeRollBackups (only within the current roll point)</item>
                <item>initiates a roll over if needed for crossing a date boundary since the last run.</item>
                </list>
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.InitializeFromOneFile(System.String,System.String)">
                <summary>
                Does the work of bumping the 'current' file counter higher
                to the highest count when an incremental file name is seen.
                The highest count is either the first file (when count direction
                is greater than 0) or the last file (when count direction less than 0).
                In either case, we want to know the highest count that is present.
                </summary>
                <param name="baseFile"></param>
                <param name="curFileName"></param>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.GetBackUpIndex(System.String)">
                <summary>
                Attempts to extract a number from the end of the file name that indicates
                the number of the times the file has been rolled over.
                </summary>
                <remarks>
                Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes.
                </remarks>
                <param name="curFileName"></param>
                <returns></returns>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.InitializeRollBackups(System.String,System.Collections.ArrayList)">
                <summary>
                Takes a list of files and a base file name, and looks for 
                'incremented' versions of the base file.  Bumps the max
                count up to the highest count seen.
                </summary>
                <param name="baseFile"></param>
                <param name="arrayFiles"></param>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.ComputeCheckPeriod(System.String)">
                <summary>
                Calculates the RollPoint for the datePattern supplied.
                </summary>
                <param name="datePattern">the date pattern to calculate the check period for</param>
                <returns>The RollPoint that is most accurate for the date pattern supplied</returns>
                <remarks>
                Essentially the date pattern is examined to determine what the
                most suitable roll point is. The roll point chosen is the roll point
                with the smallest period that can be detected using the date pattern
                supplied. i.e. if the date pattern only outputs the year, month, day 
                and hour then the smallest roll point that can be detected would be
                and hourly roll point as minutes could not be detected.
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.RollingFileAppender.ActivateOptions"/> must be called again.
                </para>
                <para>
                Sets initial conditions including date/time roll over information, first check,
                scheduledFilename, and calls <see cref="M:log4net.Appender.RollingFileAppender.ExistingInit"/> to initialize
                the current number of backups.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.CombinePath(System.String,System.String)">
                <summary>
                
                </summary>
                <param name="path1"></param>
                <param name="path2">.1, .2, .3, etc.</param>
                <returns></returns>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.RollOverTime(System.Boolean)">
                <summary>
                Rollover the file(s) to date/time tagged file(s).
                </summary>
                <param name="fileIsOpen">set to true if the file to be rolled is currently open</param>
                <remarks>
                <para>
                Rollover the file(s) to date/time tagged file(s).
                Resets curSizeRollBackups. 
                If fileIsOpen is set then the new file is opened (through SafeOpenFile).
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.RollFile(System.String,System.String)">
                <summary>
                Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>.
                </summary>
                <param name="fromFile">Name of existing file to roll.</param>
                <param name="toFile">New name for file.</param>
                <remarks>
                <para>
                Renames file <paramref name="fromFile"/> to file <paramref name="toFile"/>. It
                also checks for existence of target file and deletes if it does.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.FileExists(System.String)">
                <summary>
                Test if a file exists at a specified path
                </summary>
                <param name="path">the path to the file</param>
                <returns>true if the file exists</returns>
                <remarks>
                <para>
                Test if a file exists at a specified path
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.DeleteFile(System.String)">
                <summary>
                Deletes the specified file if it exists.
                </summary>
                <param name="fileName">The file to delete.</param>
                <remarks>
                <para>
                Delete a file if is exists.
                The file is first moved to a new filename then deleted.
                This allows the file to be removed even when it cannot
                be deleted, but it still can be moved.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.RollOverSize">
                <summary>
                Implements file roll base on file size.
                </summary>
                <remarks>
                <para>
                If the maximum number of size based backups is reached
                (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest
                file is deleted -- its index determined by the sign of countDirection.
                If <c>countDirection</c> &lt; 0, then files
                {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}
                are renamed to {<c>File.2</c>, ...,
                <c>File.curSizeRollBackups</c>}. Moreover, <c>File</c> is
                renamed <c>File.1</c> and closed.
                </para>
                <para>
                A new file is created to receive further log output.
                </para>
                <para>
                If <c>maxSizeRollBackups</c> is equal to zero, then the
                <c>File</c> is truncated with no backup files created.
                </para>
                <para>
                If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is
                renamed if needed and no files are deleted.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.RollOverRenameFiles(System.String)">
                <summary>
                Implements file roll.
                </summary>
                <param name="baseFileName">the base name to rename</param>
                <remarks>
                <para>
                If the maximum number of size based backups is reached
                (<c>curSizeRollBackups == maxSizeRollBackups</c>) then the oldest
                file is deleted -- its index determined by the sign of countDirection.
                If <c>countDirection</c> &lt; 0, then files
                {<c>File.1</c>, ..., <c>File.curSizeRollBackups -1</c>}
                are renamed to {<c>File.2</c>, ...,
                <c>File.curSizeRollBackups</c>}. 
                </para>
                <para>
                If <c>maxSizeRollBackups</c> is equal to zero, then the
                <c>File</c> is truncated with no backup files created.
                </para>
                <para>
                If <c>maxSizeRollBackups</c> &lt; 0, then <c>File</c> is
                renamed if needed and no files are deleted.
                </para>
                <para>
                This is called by <see cref="M:log4net.Appender.RollingFileAppender.RollOverSize"/> to rename the files.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.RollingFileAppender.NextCheckDate(System.DateTime,log4net.Appender.RollingFileAppender.RollPoint)">
                <summary>
                Get the start time of the next window for the current rollpoint
                </summary>
                <param name="currentDateTime">the current date</param>
                <param name="rollPoint">the type of roll point we are working with</param>
                <returns>the start time for the next roll point an interval after the currentDateTime date</returns>
                <remarks>
                <para>
                Returns the date of the next roll point after the currentDateTime date passed to the method.
                </para>
                <para>
                The basic strategy is to subtract the time parts that are less significant
                than the rollpoint from the current time. This should roll the time back to
                the start of the time window for the current rollpoint. Then we add 1 window
                worth of time and get the start time of the next window for the rollpoint.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_dateTime">
                <summary>
                This object supplies the current date/time.  Allows test code to plug in
                a method to control this class when testing date/time based rolling. The default
                implementation uses the underlying value of DateTime.Now.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_datePattern">
                <summary>
                The date pattern. By default, the pattern is set to <c>".yyyy-MM-dd"</c> 
                meaning daily rollover.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_scheduledFilename">
                <summary>
                The actual formatted filename that is currently being written to
                or will be the file transferred to on roll over
                (based on staticLogFileName).
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_nextCheck">
                <summary>
                The timestamp when we shall next recompute the filename.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_now">
                <summary>
                Holds date of last roll over
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_rollPoint">
                <summary>
                The type of rolling done
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_maxFileSize">
                <summary>
                The default maximum file size is 10MB
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_maxSizeRollBackups">
                <summary>
                There is zero backup files by default
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_curSizeRollBackups">
                <summary>
                How many sized based backups have been made so far
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_countDirection">
                <summary>
                The rolling file count direction. 
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_rollingStyle">
                <summary>
                The rolling mode used in this appender.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_rollDate">
                <summary>
                Cache flag set if we are rolling by date.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_rollSize">
                <summary>
                Cache flag set if we are rolling by size.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_staticLogFileName">
                <summary>
                Value indicating whether to always log to the same file.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_preserveLogFileNameExtension">
                <summary>
                Value indicating whether to preserve the file name extension when rolling.
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.m_baseFileName">
                <summary>
                FileName provided in configuration.  Used for rolling properly
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.s_date1970">
                <summary>
                The 1st of January 1970 in UTC
                </summary>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.DateTimeStrategy">
                <summary>
                Gets or sets the strategy for determining the current date and time. The default
                implementation is to use LocalDateTime which internally calls through to DateTime.Now. 
                DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying
                <see cref="T:log4net.Appender.RollingFileAppender.UniversalDateTime"/>.
                </summary>
                <value>
                An implementation of the <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> interface which returns the current date and time.
                </value>
                <remarks>
                <para>
                Gets or sets the <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> used to return the current date and time.
                </para>
                <para>
                There are two built strategies for determining the current date and time, 
                <see cref="T:log4net.Appender.RollingFileAppender.LocalDateTime"/>
                and <see cref="T:log4net.Appender.RollingFileAppender.UniversalDateTime"/>.
                </para>
                <para>
                The default strategy is <see cref="T:log4net.Appender.RollingFileAppender.LocalDateTime"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.DatePattern">
                <summary>
                Gets or sets the date pattern to be used for generating file names
                when rolling over on date.
                </summary>
                <value>
                The date pattern to be used for generating file names when rolling 
                over on date.
                </value>
                <remarks>
                <para>
                Takes a string in the same format as expected by 
                <see cref="T:log4net.DateFormatter.SimpleDateFormatter"/>.
                </para>
                <para>
                This property determines the rollover schedule when rolling over
                on date.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.MaxSizeRollBackups">
                <summary>
                Gets or sets the maximum number of backup files that are kept before
                the oldest is erased.
                </summary>
                <value>
                The maximum number of backup files that are kept before the oldest is
                erased.
                </value>
                <remarks>
                <para>
                If set to zero, then there will be no backup files and the log file 
                will be truncated when it reaches <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/>.  
                </para>
                <para>
                If a negative number is supplied then no deletions will be made.  Note 
                that this could result in very slow performance as a large number of 
                files are rolled over unless <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> is used.
                </para>
                <para>
                The maximum applies to <b>each</b> time based group of files and 
                <b>not</b> the total.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.MaxFileSize">
                <summary>
                Gets or sets the maximum size that the output file is allowed to reach
                before being rolled over to backup files.
                </summary>
                <value>
                The maximum size in bytes that the output file is allowed to reach before being 
                rolled over to backup files.
                </value>
                <remarks>
                <para>
                This property is equivalent to <see cref="P:log4net.Appender.RollingFileAppender.MaximumFileSize"/> except
                that it is required for differentiating the setter taking a
                <see cref="T:System.Int64"/> argument from the setter taking a <see cref="T:System.String"/> 
                argument.
                </para>
                <para>
                The default maximum file size is 10MB (10*1024*1024).
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.MaximumFileSize">
                <summary>
                Gets or sets the maximum size that the output file is allowed to reach
                before being rolled over to backup files.
                </summary>
                <value>
                The maximum size that the output file is allowed to reach before being 
                rolled over to backup files.
                </value>
                <remarks>
                <para>
                This property allows you to specify the maximum size with the
                suffixes "KB", "MB" or "GB" so that the size is interpreted being 
                expressed respectively in kilobytes, megabytes or gigabytes. 
                </para>
                <para>
                For example, the value "10KB" will be interpreted as 10240 bytes.
                </para>
                <para>
                The default maximum file size is 10MB.
                </para>
                <para>
                If you have the option to set the maximum file size programmatically
                consider using the <see cref="P:log4net.Appender.RollingFileAppender.MaxFileSize"/> property instead as this
                allows you to set the size in bytes as a <see cref="T:System.Int64"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.CountDirection">
                <summary>
                Gets or sets the rolling file count direction. 
                </summary>
                <value>
                The rolling file count direction.
                </value>
                <remarks>
                <para>
                Indicates if the current file is the lowest numbered file or the
                highest numbered file.
                </para>
                <para>
                By default newer files have lower numbers (<see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> &lt; 0),
                i.e. log.1 is most recent, log.5 is the 5th backup, etc...
                </para>
                <para>
                <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> &gt;= 0 does the opposite i.e.
                log.1 is the first backup made, log.5 is the 5th backup made, etc.
                For infinite backups use <see cref="P:log4net.Appender.RollingFileAppender.CountDirection"/> &gt;= 0 to reduce 
                rollover costs.
                </para>
                <para>The default file count direction is -1.</para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.RollingStyle">
                <summary>
                Gets or sets the rolling style.
                </summary>
                <value>The rolling style.</value>
                <remarks>
                <para>
                The default rolling style is <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Composite"/>.
                </para>
                <para>
                When set to <see cref="F:log4net.Appender.RollingFileAppender.RollingMode.Once"/> this appender's
                <see cref="P:log4net.Appender.FileAppender.AppendToFile"/> property is set to <c>false</c>, otherwise
                the appender would append to a single file rather than rolling
                the file each time it is opened.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension">
                <summary>
                Gets or sets a value indicating whether to preserve the file name extension when rolling.
                </summary>
                <value>
                <c>true</c> if the file name extension should be preserved.
                </value>
                <remarks>
                <para>
                By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup.
                However, under Windows the new file name will loose any program associations as the
                extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or
                file.curSizeRollBackup.log to maintain any program associations.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.StaticLogFileName">
                <summary>
                Gets or sets a value indicating whether to always log to
                the same file.
                </summary>
                <value>
                <c>true</c> if always should be logged to the same file, otherwise <c>false</c>.
                </value>
                <remarks>
                <para>
                By default file.log is always the current file.  Optionally
                file.log.yyyy-mm-dd for current formatted datePattern can by the currently
                logging file (or file.log.curSizeRollBackup or even
                file.log.yyyy-mm-dd.curSizeRollBackup).
                </para>
                <para>
                This will make time based rollovers with a large number of backups 
                much faster as the appender it won't have to rename all the backups!
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RollingFileAppender.RollingMode">
                <summary>
                Style of rolling to use
                </summary>
                <remarks>
                <para>
                Style of rolling to use
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Once">
                <summary>
                Roll files once per program execution
                </summary>
                <remarks>
                <para>
                Roll files once per program execution.
                Well really once each time this appender is
                configured.
                </para>
                <para>
                Setting this option also sets <c>AppendToFile</c> to
                <c>false</c> on the <c>RollingFileAppender</c>, otherwise
                this appender would just be a normal file appender.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Size">
                <summary>
                Roll files based only on the size of the file
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Date">
                <summary>
                Roll files based only on the date
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollingMode.Composite">
                <summary>
                Roll files based on both the size and date of the file
                </summary>
            </member>
            <member name="T:log4net.Appender.RollingFileAppender.RollPoint">
                <summary>
                The code assumes that the following 'time' constants are in a increasing sequence.
                </summary>
                <remarks>
                <para>
                The code assumes that the following 'time' constants are in a increasing sequence.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.InvalidRollPoint">
                <summary>
                Roll the log not based on the date
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMinute">
                <summary>
                Roll the log for each minute
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfHour">
                <summary>
                Roll the log for each hour
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.HalfDay">
                <summary>
                Roll the log twice a day (midday and midnight)
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfDay">
                <summary>
                Roll the log each day (midnight)
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfWeek">
                <summary>
                Roll the log each week
                </summary>
            </member>
            <member name="F:log4net.Appender.RollingFileAppender.RollPoint.TopOfMonth">
                <summary>
                Roll the log each month
                </summary>
            </member>
            <member name="T:log4net.Appender.RollingFileAppender.IDateTime">
                <summary>
                This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>.
                </summary>
                <remarks>
                This interface is used to supply Date/Time information to the <see cref="T:log4net.Appender.RollingFileAppender"/>.
                Used primarily to allow test classes to plug themselves in so they can
                supply test date/times.
                </remarks>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.IDateTime.Now">
                <summary>
                Gets the <i>current</i> time.
                </summary>
                <value>The <i>current</i> time.</value>
                <remarks>
                <para>
                Gets the <i>current</i> time.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RollingFileAppender.LocalDateTime">
                <summary>
                Default implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time.
                </summary>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.LocalDateTime.Now">
                <summary>
                Gets the <b>current</b> time.
                </summary>
                <value>The <b>current</b> time.</value>
                <remarks>
                <para>
                Gets the <b>current</b> time.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.RollingFileAppender.UniversalDateTime">
                <summary>
                Implementation of <see cref="T:log4net.Appender.RollingFileAppender.IDateTime"/> that returns the current time as the coordinated universal time (UTC).
                </summary>
            </member>
            <member name="P:log4net.Appender.RollingFileAppender.UniversalDateTime.Now">
                <summary>
                Gets the <b>current</b> time.
                </summary>
                <value>The <b>current</b> time.</value>
                <remarks>
                <para>
                Gets the <b>current</b> time.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.SmtpAppender">
                <summary>
                Send an e-mail when a specific logging event occurs, typically on errors 
                or fatal errors.
                </summary>
                <remarks>
                <para>
                The number of logging events delivered in this e-mail depend on
                the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The
                <see cref="T:log4net.Appender.SmtpAppender"/> keeps only the last
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its 
                cyclic buffer. This keeps memory requirements at a reasonable level while 
                still delivering useful application context.
                </para>
                <note type="caution">
                Authentication and setting the server Port are only available on the MS .NET 1.1 runtime.
                For these features to be enabled you need to ensure that you are using a version of
                the log4net assembly that is built against the MS .NET 1.1 framework and that you are
                running the your application on the MS .NET 1.1 runtime. On all other platforms only sending
                unauthenticated messages to a server listening on port 25 (the default) is supported.
                </note>
                <para>
                Authentication is supported by setting the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property to
                either <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> or <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>.
                If using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> authentication then the <see cref="P:log4net.Appender.SmtpAppender.Username"/>
                and <see cref="P:log4net.Appender.SmtpAppender.Password"/> properties must also be set.
                </para>
                <para>
                To set the SMTP server port use the <see cref="P:log4net.Appender.SmtpAppender.Port"/> property. The default port is 25.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Appender.SmtpAppender.#ctor">
                <summary>
                Default constructor
                </summary>
                <remarks>
                <para>
                Default constructor
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.SmtpAppender.SendBuffer(log4net.Core.LoggingEvent[])">
                <summary>
                Sends the contents of the cyclic buffer as an e-mail message.
                </summary>
                <param name="events">The logging events to send.</param>
            </member>
            <member name="M:log4net.Appender.SmtpAppender.SendEmail(System.String)">
                <summary>
                Send the email message
                </summary>
                <param name="messageBody">the body text to include in the mail</param>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.To">
                <summary>
                Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions).
                </summary>
                <value>
                <para>
                For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
                </para>
                <para>
                For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
                </para>
                </value>
                <remarks>
                <para>
                For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
                </para>
                <para>
                For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Cc">
                <summary>
                Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses 
                that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions).
                </summary>
                <value>
                <para>
                For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
                </para>
                <para>
                For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
                </para>
                </value>
                <remarks>
                <para>
                For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses.
                </para>
                <para>
                For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Bcc">
                <summary>
                Gets or sets a semicolon-delimited list of recipient e-mail addresses
                that will be blind carbon copied.
                </summary>
                <value>
                A semicolon-delimited list of e-mail addresses.
                </value>
                <remarks>
                <para>
                A semicolon-delimited list of recipient e-mail addresses.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.From">
                <summary>
                Gets or sets the e-mail address of the sender.
                </summary>
                <value>
                The e-mail address of the sender.
                </value>
                <remarks>
                <para>
                The e-mail address of the sender.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Subject">
                <summary>
                Gets or sets the subject line of the e-mail message.
                </summary>
                <value>
                The subject line of the e-mail message.
                </value>
                <remarks>
                <para>
                The subject line of the e-mail message.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.SmtpHost">
                <summary>
                Gets or sets the name of the SMTP relay mail server to use to send 
                the e-mail messages.
                </summary>
                <value>
                The name of the e-mail relay server. If SmtpServer is not set, the 
                name of the local SMTP server is used.
                </value>
                <remarks>
                <para>
                The name of the e-mail relay server. If SmtpServer is not set, the 
                name of the local SMTP server is used.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.LocationInfo">
                <summary>
                Obsolete
                </summary>
                <remarks>
                Use the BufferingAppenderSkeleton Fix methods instead 
                </remarks>
                <remarks>
                <para>
                Obsolete property.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Authentication">
                <summary>
                The mode to use to authentication with the SMTP server
                </summary>
                <remarks>
                <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
                <para>
                Valid Authentication mode values are: <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>, 
                <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, and <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/>. 
                The default value is <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None"/>. When using 
                <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/> you must specify the <see cref="P:log4net.Appender.SmtpAppender.Username"/> 
                and <see cref="P:log4net.Appender.SmtpAppender.Password"/> to use to authenticate.
                When using <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm"/> the Windows credentials for the current
                thread, if impersonating, or the process will be used to authenticate. 
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Username">
                <summary>
                The username to use to authenticate with the SMTP server
                </summary>
                <remarks>
                <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
                <para>
                A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when 
                <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, 
                otherwise the username will be ignored. 
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Password">
                <summary>
                The password to use to authenticate with the SMTP server
                </summary>
                <remarks>
                <note type="caution">Authentication is only available on the MS .NET 1.1 runtime.</note>
                <para>
                A <see cref="P:log4net.Appender.SmtpAppender.Username"/> and <see cref="P:log4net.Appender.SmtpAppender.Password"/> must be specified when 
                <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> is set to <see cref="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic"/>, 
                otherwise the password will be ignored. 
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Port">
                <summary>
                The port on which the SMTP server is listening
                </summary>
                <remarks>
                <note type="caution">Server Port is only available on the MS .NET 1.1 runtime.</note>
                <para>
                The port on which the SMTP server is listening. The default
                port is <c>25</c>. The Port can only be changed when running on
                the MS .NET 1.1 runtime.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.Priority">
                <summary>
                Gets or sets the priority of the e-mail message
                </summary>
                <value>
                One of the <see cref="T:System.Net.Mail.MailPriority"/> values.
                </value>
                <remarks>
                <para>
                Sets the priority of the e-mails generated by this
                appender. The default priority is <see cref="F:System.Net.Mail.MailPriority.Normal"/>.
                </para>
                <para>
                If you are using this appender to report errors then
                you may want to set the priority to <see cref="F:System.Net.Mail.MailPriority.High"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.EnableSsl">
                <summary>
                Enable or disable use of SSL when sending e-mail message
                </summary>
                <remarks>
                This is available on MS .NET 2.0 runtime and higher
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.ReplyTo">
                <summary>
                Gets or sets the reply-to e-mail address.
                </summary>
                <remarks>
                This is available on MS .NET 2.0 runtime and higher
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.SubjectEncoding">
                <summary>
                Gets or sets the subject encoding to be used.
                </summary>
                <remarks>
                The default encoding is the operating system's current ANSI codepage.
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.BodyEncoding">
                <summary>
                Gets or sets the body encoding to be used.
                </summary>
                <remarks>
                The default encoding is the operating system's current ANSI codepage.
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.SmtpAppender.SmtpAuthentication">
                <summary>
                Values for the <see cref="P:log4net.Appender.SmtpAppender.Authentication"/> property.
                </summary>
                <remarks>
                <para>
                SMTP authentication modes.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.None">
                <summary>
                No authentication
                </summary>
            </member>
            <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Basic">
                <summary>
                Basic authentication.
                </summary>
                <remarks>
                Requires a username and password to be supplied
                </remarks>
            </member>
            <member name="F:log4net.Appender.SmtpAppender.SmtpAuthentication.Ntlm">
                <summary>
                Integrated authentication
                </summary>
                <remarks>
                Uses the Windows credentials from the current thread or process to authenticate.
                </remarks>
            </member>
            <member name="T:log4net.Appender.SmtpPickupDirAppender">
                <summary>
                Send an email when a specific logging event occurs, typically on errors 
                or fatal errors. Rather than sending via smtp it writes a file into the
                directory specified by <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>. This allows services such
                as the IIS SMTP agent to manage sending the messages.
                </summary>
                <remarks>
                <para>
                The configuration for this appender is identical to that of the <c>SMTPAppender</c>,
                except that instead of specifying the <c>SMTPAppender.SMTPHost</c> you specify
                <see cref="P:log4net.Appender.SmtpPickupDirAppender.PickupDir"/>.
                </para>
                <para>
                The number of logging events delivered in this e-mail depend on
                the value of <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> option. The
                <see cref="T:log4net.Appender.SmtpPickupDirAppender"/> keeps only the last
                <see cref="P:log4net.Appender.BufferingAppenderSkeleton.BufferSize"/> logging events in its 
                cyclic buffer. This keeps memory requirements at a reasonable level while 
                still delivering useful application context.
                </para>
                </remarks>
                <author>Niall Daley</author>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.SmtpPickupDirAppender.#ctor">
                <summary>
                Default constructor
                </summary>
                <remarks>
                <para>
                Default constructor
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.SmtpPickupDirAppender.SendBuffer(log4net.Core.LoggingEvent[])">
                <summary>
                Sends the contents of the cyclic buffer as an e-mail message.
                </summary>
                <param name="events">The logging events to send.</param>
                <remarks>
                <para>
                Sends the contents of the cyclic buffer as an e-mail message.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions">
                <summary>
                Activate the options on this appender. 
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.SmtpPickupDirAppender.ActivateOptions"/> must be called again.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.SmtpPickupDirAppender.ConvertToFullPath(System.String)">
                <summary>
                Convert a path into a fully qualified path.
                </summary>
                <param name="path">The path to convert.</param>
                <returns>The fully qualified path.</returns>
                <remarks>
                <para>
                Converts the path specified to a fully
                qualified path. If the path is relative it is
                taken as relative from the application base 
                directory.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.SmtpPickupDirAppender.m_securityContext">
                <summary>
                The security context to use for privileged calls
                </summary>
            </member>
            <member name="P:log4net.Appender.SmtpPickupDirAppender.To">
                <summary>
                Gets or sets a semicolon-delimited list of recipient e-mail addresses.
                </summary>
                <value>
                A semicolon-delimited list of e-mail addresses.
                </value>
                <remarks>
                <para>
                A semicolon-delimited list of e-mail addresses.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpPickupDirAppender.From">
                <summary>
                Gets or sets the e-mail address of the sender.
                </summary>
                <value>
                The e-mail address of the sender.
                </value>
                <remarks>
                <para>
                The e-mail address of the sender.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpPickupDirAppender.Subject">
                <summary>
                Gets or sets the subject line of the e-mail message.
                </summary>
                <value>
                The subject line of the e-mail message.
                </value>
                <remarks>
                <para>
                The subject line of the e-mail message.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpPickupDirAppender.PickupDir">
                <summary>
                Gets or sets the path to write the messages to.
                </summary>
                <remarks>
                <para>
                Gets or sets the path to write the messages to. This should be the same
                as that used by the agent sending the messages.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext">
                <summary>
                Gets or sets the <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory.
                </summary>
                <value>
                The <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> used to write to the pickup directory.
                </value>
                <remarks>
                <para>
                Unless a <see cref="P:log4net.Appender.SmtpPickupDirAppender.SecurityContext"/> specified here for this appender
                the <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/> is queried for the
                security context to use. The default behavior is to use the security context
                of the current thread.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.SmtpPickupDirAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.TelnetAppender">
                <summary>
                Appender that allows clients to connect via Telnet to receive log messages
                </summary>
                <remarks>	
                <para>
                The TelnetAppender accepts socket connections and streams logging messages
                back to the client.  
                The output is provided in a telnet-friendly way so that a log can be monitored 
                over a TCP/IP socket.
                This allows simple remote monitoring of application logging.
                </para>
                <para>
                The default <see cref="P:log4net.Appender.TelnetAppender.Port"/> is 23 (the telnet port).
                </para>
                </remarks>
                <author>Keith Long</author>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.#ctor">
                <summary>
                Default constructor
                </summary>
                <remarks>
                <para>
                Default constructor
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.TelnetAppender.declaringType">
                <summary>
                The fully qualified type of the TelnetAppender class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.OnClose">
                <summary>
                Overrides the parent method to close the socket handler
                </summary>
                <remarks>
                <para>
                Closes all the outstanding connections.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.ActivateOptions">
                <summary>
                Initialize the appender based on the options set.
                </summary>
                <remarks>
                <para>
                This is part of the <see cref="T:log4net.Core.IOptionHandler"/> delayed object
                activation scheme. The <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> method must 
                be called on this object after the configuration properties have
                been set. Until <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> is called this
                object is in an undefined state and must not be used. 
                </para>
                <para>
                If any of the configuration properties are modified then 
                <see cref="M:log4net.Appender.TelnetAppender.ActivateOptions"/> must be called again.
                </para>
                <para>
                Create the socket handler and wait for connections
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Writes the logging event to each connected client.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the logging event to each connected client.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.TelnetAppender.Port">
                <summary>
                Gets or sets the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections.
                </summary>
                <value>
                An integer value in the range <see cref="F:System.Net.IPEndPoint.MinPort"/> to <see cref="F:System.Net.IPEndPoint.MaxPort"/> 
                indicating the TCP port number on which this <see cref="T:log4net.Appender.TelnetAppender"/> will listen for connections.
                </value>
                <remarks>
                <para>
                The default value is 23 (the telnet port).
                </para>
                </remarks>
                <exception cref="T:System.ArgumentOutOfRangeException">The value specified is less than <see cref="F:System.Net.IPEndPoint.MinPort"/> 
                or greater than <see cref="F:System.Net.IPEndPoint.MaxPort"/>.</exception>
            </member>
            <member name="P:log4net.Appender.TelnetAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.TelnetAppender.SocketHandler">
                <summary>
                Helper class to manage connected clients
                </summary>
                <remarks>
                <para>
                The SocketHandler class is used to accept connections from
                clients.  It is threaded so that clients can connect/disconnect
                asynchronously.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.#ctor(System.Int32)">
                <summary>
                Opens a new server port on <paramref ref="port"/>
                </summary>
                <param name="port">the local port to listen on for connections</param>
                <remarks>
                <para>
                Creates a socket handler on the specified local server port.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Send(System.String)">
                <summary>
                Sends a string message to each of the connected clients
                </summary>
                <param name="message">the text to send</param>
                <remarks>
                <para>
                Sends a string message to each of the connected clients
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.AddClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)">
                <summary>
                Add a client to the internal clients list
                </summary>
                <param name="client">client to add</param>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.RemoveClient(log4net.Appender.TelnetAppender.SocketHandler.SocketClient)">
                <summary>
                Remove a client from the internal clients list
                </summary>
                <param name="client">client to remove</param>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.OnConnect(System.IAsyncResult)">
                <summary>
                Callback used to accept a connection on the server socket
                </summary>
                <param name="asyncResult">The result of the asynchronous operation</param>
                <remarks>
                <para>
                On connection adds to the list of connections 
                if there are two many open connections you will be disconnected
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.Dispose">
                <summary>
                Close all network connections
                </summary>
                <remarks>
                <para>
                Make sure we close all network connections
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.TelnetAppender.SocketHandler.HasConnections">
                <summary>
                Test if this handler has active connections
                </summary>
                <value>
                <c>true</c> if this handler has active connections
                </value>
                <remarks>
                <para>
                This property will be <c>true</c> while this handler has
                active connections, that is at least one connection that 
                the handler will attempt to send a message to.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient">
                <summary>
                Class that represents a client connected to this handler
                </summary>
                <remarks>
                <para>
                Class that represents a client connected to this handler
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.#ctor(System.Net.Sockets.Socket)">
                <summary>
                Create this <see cref="T:log4net.Appender.TelnetAppender.SocketHandler.SocketClient"/> for the specified <see cref="T:System.Net.Sockets.Socket"/>
                </summary>
                <param name="socket">the client's socket</param>
                <remarks>
                <para>
                Opens a stream writer on the socket.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Send(System.String)">
                <summary>
                Write a string to the client
                </summary>
                <param name="message">string to send</param>
                <remarks>
                <para>
                Write a string to the client
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TelnetAppender.SocketHandler.SocketClient.Dispose">
                <summary>
                Cleanup the clients connection
                </summary>
                <remarks>
                <para>
                Close the socket connection.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Appender.TraceAppender">
                <summary>
                Appends log events to the <see cref="T:System.Diagnostics.Trace"/> system.
                </summary>
                <remarks>
                <para>
                The application configuration file can be used to control what listeners 
                are actually used. See the MSDN documentation for the 
                <see cref="T:System.Diagnostics.Trace"/> class for details on configuring the
                trace system.
                </para>
                <para>
                Events are written using the <c>System.Diagnostics.Trace.Write(string,string)</c>
                method. The event's logger name is the default value for the category parameter 
                of the Write method. 
                </para>
                <para>
                <b>Compact Framework</b><br/>
                The Compact Framework does not support the <see cref="T:System.Diagnostics.Trace"/>
                class for any operation except <c>Assert</c>. When using the Compact Framework this
                appender will write to the <see cref="T:System.Diagnostics.Debug"/> system rather than
                the Trace system. This appender will therefore behave like the <see cref="T:log4net.Appender.DebugAppender"/>.
                </para>
                </remarks>
                <author>Douglas de la Torre</author>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
                <author>Ron Grabowski</author>
            </member>
            <member name="M:log4net.Appender.TraceAppender.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/>.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TraceAppender.#ctor(log4net.Layout.ILayout)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Appender.TraceAppender"/> 
                with a specified layout.
                </summary>
                <param name="layout">The layout to use with this appender.</param>
                <remarks>
                <para>
                Obsolete constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Appender.TraceAppender.Append(log4net.Core.LoggingEvent)">
                <summary>
                Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system.
                </summary>
                <param name="loggingEvent">The event to log.</param>
                <remarks>
                <para>
                Writes the logging event to the <see cref="T:System.Diagnostics.Trace"/> system.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.TraceAppender.m_immediateFlush">
                <summary>
                Immediate flush means that the underlying writer or output stream
                will be flushed at the end of each append operation.
                </summary>
                <remarks>
                <para>
                Immediate flush is slower but ensures that each append request is 
                actually written. If <see cref="P:log4net.Appender.TraceAppender.ImmediateFlush"/> is set to
                <c>false</c>, then there is a good chance that the last few
                logs events are not actually written to persistent media if and
                when the application crashes.
                </para>
                <para>
                The default value is <c>true</c>.</para>
                </remarks>
            </member>
            <member name="F:log4net.Appender.TraceAppender.m_category">
                <summary>
                Defaults to %logger
                </summary>
            </member>
            <member name="P:log4net.Appender.TraceAppender.ImmediateFlush">
                <summary>
                Gets or sets a value that indicates whether the appender will 
                flush at the end of each write.
                </summary>
                <remarks>
                <para>The default behavior is to flush at the end of each 
                write. If the option is set to<c>false</c>, then the underlying 
                stream can defer writing to physical medium to a later time. 
                </para>
                <para>
                Avoiding the flush operation at the end of each append results 
                in a performance gain of 10 to 20 percent. However, there is safety
                trade-off involved in skipping flushing. Indeed, when flushing is
                skipped, then it is likely that the last few log events will not
                be recorded on disk when the application exits. This is a high
                price to pay even for a 20% performance gain.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Appender.TraceAppender.Category">
                <summary>
                The category parameter sent to the Trace method.
                </summary>
                <remarks>
                <para>
                Defaults to %logger which will use the logger name of the current 
                <see cref="T:log4net.Core.LoggingEvent"/> as the category parameter.
                </para>
                <para>
                </para> 
                </remarks>
            </member>
            <member name="P:log4net.Appender.TraceAppender.RequiresLayout">
                <summary>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </summary>
                <value><c>true</c></value>
                <remarks>
                <para>
                This appender requires a <see cref="N:log4net.Layout"/> to be set.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.AliasDomainAttribute">
                <summary>
                Assembly level attribute that specifies a domain to alias to this assembly's repository.
                </summary>
                <remarks>
                <para>
                <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>
                </para>
                <para>
                An assembly's logger repository is defined by its <see cref="T:log4net.Config.DomainAttribute"/>,
                however this can be overridden by an assembly loaded before the target assembly.
                </para>
                <para>
                An assembly can alias another assembly's domain to its repository by
                specifying this attribute with the name of the target domain.
                </para>
                <para>
                This attribute can only be specified on the assembly and may be used
                as many times as necessary to alias all the required domains.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Config.AliasRepositoryAttribute">
                <summary>
                Assembly level attribute that specifies a repository to alias to this assembly's repository.
                </summary>
                <remarks>
                <para>
                An assembly's logger repository is defined by its <see cref="T:log4net.Config.RepositoryAttribute"/>,
                however this can be overridden by an assembly loaded before the target assembly.
                </para>
                <para>
                An assembly can alias another assembly's repository to its repository by
                specifying this attribute with the name of the target repository.
                </para>
                <para>
                This attribute can only be specified on the assembly and may be used
                as many times as necessary to alias all the required repositories.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.AliasRepositoryAttribute.#ctor(System.String)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with 
                the specified repository to alias to this assembly's repository.
                </summary>
                <param name="name">The repository to alias to this assemby's repository.</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Config.AliasRepositoryAttribute"/> class with 
                the specified repository to alias to this assembly's repository.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Config.AliasRepositoryAttribute.Name">
                <summary>
                Gets or sets the repository to alias to this assemby's repository.
                </summary>
                <value>
                The repository to alias to this assemby's repository.
                </value>
                <remarks>
                <para>
                The name of the repository to alias to this assemby's repository.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.AliasDomainAttribute.#ctor(System.String)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.AliasDomainAttribute"/> class with 
                the specified domain to alias to this assembly's repository.
                </summary>
                <param name="name">The domain to alias to this assemby's repository.</param>
                <remarks>
                <para>
                Obsolete. Use <see cref="T:log4net.Config.AliasRepositoryAttribute"/> instead of <see cref="T:log4net.Config.AliasDomainAttribute"/>.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.BasicConfigurator">
                <summary>
                Use this class to quickly configure a <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
                </summary>
                <remarks>
                <para>
                Allows very simple programmatic configuration of log4net.
                </para>
                <para>
                Only one appender can be configured using this configurator.
                The appender is set at the root of the hierarchy and all logging
                events will be delivered to that appender.
                </para>
                <para>
                Appenders can also implement the <see cref="T:log4net.Core.IOptionHandler"/> interface. Therefore
                they would require that the <see cref="M:log4net.Core.IOptionHandler.ActivateOptions()"/> method
                be called after the appenders properties have been configured.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="F:log4net.Config.BasicConfigurator.declaringType">
                <summary>
                The fully qualified type of the BasicConfigurator class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.BasicConfigurator"/> class. 
                </summary>
                <remarks>
                <para>
                Uses a private access modifier to prevent instantiation of this class.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.Configure">
                <summary>
                Initializes the log4net system with a default configuration.
                </summary>
                <remarks>
                <para>
                Initializes the log4net logging system using a <see cref="T:log4net.Appender.ConsoleAppender"/>
                that will write to <c>Console.Out</c>. The log messages are
                formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object
                with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/>
                layout style.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender)">
                <summary>
                Initializes the log4net system using the specified appender.
                </summary>
                <param name="appender">The appender to use to log all logging events.</param>
                <remarks>
                <para>
                Initializes the log4net system using the specified appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Appender.IAppender[])">
                <summary>
                Initializes the log4net system using the specified appenders.
                </summary>
                <param name="appenders">The appenders to use to log all logging events.</param>
                <remarks>
                <para>
                Initializes the log4net system using the specified appenders.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository)">
                <summary>
                Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> with a default configuration.
                </summary>
                <param name="repository">The repository to configure.</param>
                <remarks>
                <para>
                Initializes the specified repository using a <see cref="T:log4net.Appender.ConsoleAppender"/>
                that will write to <c>Console.Out</c>. The log messages are
                formatted using the <see cref="T:log4net.Layout.PatternLayout"/> layout object
                with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern"/>
                layout style.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender)">
                <summary>
                Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="appender">The appender to use to log all logging events.</param>
                <remarks>
                <para>
                Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.BasicConfigurator.Configure(log4net.Repository.ILoggerRepository,log4net.Appender.IAppender[])">
                <summary>
                Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appenders.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="appenders">The appenders to use to log all logging events.</param>
                <remarks>
                <para>
                Initializes the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified appender.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.ConfiguratorAttribute">
                <summary>
                Base class for all log4net configuration attributes.
                </summary>
                <remarks>
                This is an abstract class that must be extended by 
                specific configurators. This attribute allows the
                configurator to be parameterized by an assembly level
                attribute.
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.ConfiguratorAttribute.#ctor(System.Int32)">
                <summary>
                Constructor used by subclasses.
                </summary>
                <param name="priority">the ordering priority for this configurator</param>
                <remarks>
                <para>
                The <paramref name="priority"/> is used to order the configurator
                attributes before they are invoked. Higher priority configurators are executed
                before lower priority ones.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.ConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
                </summary>
                <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
                <param name="targetRepository">The repository to configure.</param>
                <remarks>
                <para>
                Abstract method implemented by a subclass. When this method is called
                the subclass should configure the <paramref name="targetRepository"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.ConfiguratorAttribute.CompareTo(System.Object)">
                <summary>
                Compare this instance to another ConfiguratorAttribute
                </summary>
                <param name="obj">the object to compare to</param>
                <returns>see <see cref="M:System.IComparable.CompareTo(System.Object)"/></returns>
                <remarks>
                <para>
                Compares the priorities of the two <see cref="T:log4net.Config.ConfiguratorAttribute"/> instances.
                Sorts by priority in descending order. Objects with the same priority are
                randomly ordered.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.DomainAttribute">
                <summary>
                Assembly level attribute that specifies the logging domain for the assembly.
                </summary>
                <remarks>
                <para>
                <b>DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute.</b>
                </para>
                <para>
                Assemblies are mapped to logging domains. Each domain has its own
                logging repository. This attribute specified on the assembly controls
                the configuration of the domain. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name
                of the domain that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/>
                specifies the type of the repository objects to create for the domain. If 
                this attribute is not specified and a <see cref="P:log4net.Config.RepositoryAttribute.Name"/> is not specified
                then the assembly will be part of the default shared logging domain.
                </para>
                <para>
                This attribute can only be specified on the assembly and may only be used
                once per assembly.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Config.RepositoryAttribute">
                <summary>
                Assembly level attribute that specifies the logging repository for the assembly.
                </summary>
                <remarks>
                <para>
                Assemblies are mapped to logging repository. This attribute specified 
                on the assembly controls
                the configuration of the repository. The <see cref="P:log4net.Config.RepositoryAttribute.Name"/> property specifies the name
                of the repository that this assembly is a part of. The <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/>
                specifies the type of the <see cref="T:log4net.Repository.ILoggerRepository"/> object 
                to create for the assembly. If this attribute is not specified or a <see cref="P:log4net.Config.RepositoryAttribute.Name"/> 
                is not specified then the assembly will be part of the default shared logging repository.
                </para>
                <para>
                This attribute can only be specified on the assembly and may only be used
                once per assembly.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.RepositoryAttribute.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.RepositoryAttribute.#ctor(System.String)">
                <summary>
                Initialize a new instance of the <see cref="T:log4net.Config.RepositoryAttribute"/> class 
                with the name of the repository.
                </summary>
                <param name="name">The name of the repository.</param>
                <remarks>
                <para>
                Initialize the attribute with the name for the assembly's repository.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Config.RepositoryAttribute.Name">
                <summary>
                Gets or sets the name of the logging repository.
                </summary>
                <value>
                The string name to use as the name of the repository associated with this
                assembly.
                </value>
                <remarks>
                <para>
                This value does not have to be unique. Several assemblies can share the
                same repository. They will share the logging configuration of the repository.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Config.RepositoryAttribute.RepositoryType">
                <summary>
                Gets or sets the type of repository to create for this assembly.
                </summary>
                <value>
                The type of repository to create for this assembly.
                </value>
                <remarks>
                <para>
                The type of the repository to create for the assembly.
                The type must implement the <see cref="T:log4net.Repository.ILoggerRepository"/>
                interface.
                </para>
                <para>
                This will be the type of repository created when 
                the repository is created. If multiple assemblies reference the
                same repository then the repository is only created once using the
                <see cref="P:log4net.Config.RepositoryAttribute.RepositoryType"/> of the first assembly to call into the 
                repository.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.DomainAttribute.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class.
                </summary>
                <remarks>
                <para>
                Obsolete. Use RepositoryAttribute instead of DomainAttribute.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.DomainAttribute.#ctor(System.String)">
                <summary>
                Initialize a new instance of the <see cref="T:log4net.Config.DomainAttribute"/> class 
                with the name of the domain.
                </summary>
                <param name="name">The name of the domain.</param>
                <remarks>
                <para>
                Obsolete. Use RepositoryAttribute instead of DomainAttribute.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.DOMConfigurator">
                <summary>
                Use this class to initialize the log4net environment using an Xml tree.
                </summary>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.#ctor">
                <summary>
                Private constructor
                </summary>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure">
                <summary>
                Automatically configures the log4net system based on the 
                application's configuration settings.
                </summary>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                Each application has a configuration file. This has the
                same name as the application with '.config' appended.
                This file is XML and calling this function prompts the
                configurator to look in that file for a section called
                <c>log4net</c> that contains the configuration data.
                </remarks>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository)">
                <summary>
                Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings
                stored in the application's configuration file.
                </summary>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                Each application has a configuration file. This has the
                same name as the application with '.config' appended.
                This file is XML and calling this function prompts the
                configurator to look in that file for a section called
                <c>log4net</c> that contains the configuration data.
                </remarks>
                <param name="repository">The repository to configure.</param>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(System.Xml.XmlElement)">
                <summary>
                Configures log4net using a <c>log4net</c> element
                </summary>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                Loads the log4net configuration from the XML element
                supplied as <paramref name="element"/>.
                </remarks>
                <param name="element">The element to parse.</param>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML 
                element.
                </summary>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                Loads the log4net configuration from the XML element
                supplied as <paramref name="element"/>.
                </remarks>
                <param name="repository">The repository to configure.</param>
                <param name="element">The element to parse.</param>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.FileInfo)">
                <summary>
                Configures log4net using the specified configuration file.
                </summary>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the log4net configuration data.
                </para>
                <para>
                The log4net configuration file can possible be specified in the application's
                configuration file (either <c>MyAppName.exe.config</c> for a
                normal application on <c>Web.config</c> for an ASP.NET application).
                </para>
                <example>
                The following example configures log4net using a configuration file, of which the 
                location is stored in the application's configuration file :
                </example>
                <code lang="C#">
                using log4net.Config;
                using System.IO;
                using System.Configuration;
                
                ...
                
                DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
                </code>
                <para>
                In the <c>.config</c> file, the path to the log4net can be specified like this :
                </para>
                <code lang="XML" escaped="true">
                <configuration>
                	<appSettings>
                		<add key="log4net-config-file" value="log.config"/>
                	</appSettings>
                </configuration>
                </code>
                </remarks>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(System.IO.Stream)">
                <summary>
                Configures log4net using the specified configuration file.
                </summary>
                <param name="configStream">A stream to load the XML configuration from.</param>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                The configuration data must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the log4net configuration data.
                </para>
                <para>
                Note that this method will NOT close the stream parameter.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration 
                file.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The log4net configuration file can possible be specified in the application's
                configuration file (either <c>MyAppName.exe.config</c> for a
                normal application on <c>Web.config</c> for an ASP.NET application).
                </para>
                <example>
                The following example configures log4net using a configuration file, of which the 
                location is stored in the application's configuration file :
                </example>
                <code lang="C#">
                using log4net.Config;
                using System.IO;
                using System.Configuration;
                
                ...
                
                DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
                </code>
                <para>
                In the <c>.config</c> file, the path to the log4net can be specified like this :
                </para>
                <code lang="XML" escaped="true">
                <configuration>
                	<appSettings>
                		<add key="log4net-config-file" value="log.config"/>
                	</appSettings>
                </configuration>
                </code>
                </remarks>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration 
                file.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configStream">The stream to load the XML configuration from.</param>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                The configuration data must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                Note that this method will NOT close the stream parameter.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(System.IO.FileInfo)">
                <summary>
                Configures log4net using the file specified, monitors the file for changes 
                and reloads the configuration if a change is detected.
                </summary>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
                and depends on the behavior of that class.
                </para>
                <para>
                For more information on how to configure log4net using
                a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
                </para>
                </remarks>
                <seealso cref="M:Configure(FileInfo)"/>
            </member>
            <member name="M:log4net.Config.DOMConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified, 
                monitors the file for changes and reloads the configuration if a change 
                is detected.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                <b>DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator.</b>
                </para>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
                and depends on the behavior of that class.
                </para>
                <para>
                For more information on how to configure log4net using
                a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
                </para>
                </remarks>
                <seealso cref="M:Configure(FileInfo)"/>
            </member>
            <member name="T:log4net.Config.DOMConfiguratorAttribute">
                <summary>
                Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>.
                </summary>
                <remarks>
                <para>
                <b>AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute.</b>
                </para>
                <para>
                This attribute may only be used at the assembly scope and can only
                be used once per assembly.
                </para>
                <para>
                Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
                without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
                methods.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Config.XmlConfiguratorAttribute">
                <summary>
                Assembly level attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>.
                </summary>
                <remarks>
                <para>
                This attribute may only be used at the assembly scope and can only
                be used once per assembly.
                </para>
                <para>
                Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
                without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
                methods.
                </para>
                <para>
                If neither of the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>
                properties are set the configuration is loaded from the application's .config file.
                If set the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property takes priority over the
                <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property. The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> property
                specifies a path to a file to load the config from. The path is relative to the
                application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>.
                The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> property is used as a postfix to the assembly file name.
                The config file must be located in the  application's base directory; <see cref="P:System.AppDomain.BaseDirectory"/>.
                For example in a console application setting the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> to
                <c>config</c> has the same effect as not specifying the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> or 
                <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> properties.
                </para>
                <para>
                The <see cref="P:log4net.Config.XmlConfiguratorAttribute.Watch"/> property can be set to cause the <see cref="T:log4net.Config.XmlConfigurator"/>
                to watch the configuration file for changes.
                </para>
                <note>
                <para>
                Log4net will only look for assembly level configuration attributes once.
                When using the log4net assembly level attributes to control the configuration 
                of log4net you must ensure that the first call to any of the 
                <see cref="T:log4net.Core.LoggerManager"/> methods is made from the assembly with the configuration
                attributes. 
                </para>
                <para>
                If you cannot guarantee the order in which log4net calls will be made from 
                different assemblies you must use programmatic configuration instead, i.e.
                call the <see cref="M:XmlConfigurator.Configure()"/> method directly.
                </para>
                </note>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.XmlConfiguratorAttribute.#ctor">
                <summary>
                Default constructor
                </summary>
                <remarks>
                <para>
                Default constructor
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfiguratorAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
                </summary>
                <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
                <param name="targetRepository">The repository to configure.</param>
                <remarks>
                <para>
                Configure the repository using the <see cref="T:log4net.Config.XmlConfigurator"/>.
                The <paramref name="targetRepository"/> specified must extend the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>
                class otherwise the <see cref="T:log4net.Config.XmlConfigurator"/> will not be able to
                configure it.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="targetRepository"/> does not extend <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.</exception>
            </member>
            <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Attempt to load configuration from the local file system
                </summary>
                <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
                <param name="targetRepository">The repository to configure.</param>
            </member>
            <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
                <summary>
                Configure the specified repository using a <see cref="T:System.IO.FileInfo"/>
                </summary>
                <param name="targetRepository">The repository to configure.</param>
                <param name="configFile">the FileInfo pointing to the config file</param>
            </member>
            <member name="M:log4net.Config.XmlConfiguratorAttribute.ConfigureFromUri(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Attempt to load configuration from a URI
                </summary>
                <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
                <param name="targetRepository">The repository to configure.</param>
            </member>
            <member name="F:log4net.Config.XmlConfiguratorAttribute.declaringType">
                <summary>
                The fully qualified type of the XmlConfiguratorAttribute class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile">
                <summary>
                Gets or sets the filename of the configuration file.
                </summary>
                <value>
                The filename of the configuration file.
                </value>
                <remarks>
                <para>
                If specified, this is the name of the configuration file to use with
                the <see cref="T:log4net.Config.XmlConfigurator"/>. This file path is relative to the
                <b>application base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>).
                </para>
                <para>
                The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension">
                <summary>
                Gets or sets the extension of the configuration file.
                </summary>
                <value>
                The extension of the configuration file.
                </value>
                <remarks>
                <para>
                If specified this is the extension for the configuration file.
                The path to the config file is built by using the <b>application 
                base</b> directory (<see cref="P:System.AppDomain.BaseDirectory"/>),
                the <b>assembly file name</b> and the config file extension.
                </para>
                <para>
                If the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/> is set to <c>MyExt</c> then
                possible config file names would be: <c>MyConsoleApp.exe.MyExt</c> or
                <c>MyClassLibrary.dll.MyExt</c>.
                </para>
                <para>
                The <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFile"/> takes priority over the <see cref="P:log4net.Config.XmlConfiguratorAttribute.ConfigFileExtension"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Config.XmlConfiguratorAttribute.Watch">
                <summary>
                Gets or sets a value indicating whether to watch the configuration file.
                </summary>
                <value>
                <c>true</c> if the configuration should be watched, <c>false</c> otherwise.
                </value>
                <remarks>
                <para>
                If this flag is specified and set to <c>true</c> then the framework
                will watch the configuration file and will reload the config each time 
                the file is modified.
                </para>
                <para>
                The config file can only be watched if it is loaded from local disk.
                In a No-Touch (Smart Client) deployment where the application is downloaded
                from a web server the config file may not reside on the local disk
                and therefore it may not be able to watch it.
                </para>
                <note>
                Watching configuration is not supported on the SSCLI.
                </note>
                </remarks>
            </member>
            <member name="T:log4net.Config.Log4NetConfigurationSectionHandler">
                <summary>
                Class to register for the log4net section of the configuration file
                </summary>
                <remarks>
                The log4net section of the configuration file needs to have a section
                handler registered. This is the section handler used. It simply returns
                the XML element that is the root of the section.
                </remarks>
                <example>
                Example of registering the log4net section handler :
                <code lang="XML" escaped="true">
                <configuration>
                	<configSections>
                		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
                	</configSections>
                	<log4net>
                		log4net configuration XML goes here
                	</log4net>
                </configuration>
                </code>
                </example>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.#ctor">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> class.
                </summary>
                <remarks>
                <para>
                Default constructor.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.Log4NetConfigurationSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
                <summary>
                Parses the configuration section.
                </summary>
                <param name="parent">The configuration settings in a corresponding parent configuration section.</param>
                <param name="configContext">The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference.</param>
                <param name="section">The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</param>
                <returns>The <see cref="T:System.Xml.XmlNode"/> for the log4net section.</returns>
                <remarks>
                <para>
                Returns the <see cref="T:System.Xml.XmlNode"/> containing the configuration data,
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.PluginAttribute">
                <summary>
                Assembly level attribute that specifies a plugin to attach to 
                the repository.
                </summary>
                <remarks>
                <para>
                Specifies the type of a plugin to create and attach to the
                assembly's repository. The plugin type must implement the
                <see cref="T:log4net.Plugin.IPlugin"/> interface.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="T:log4net.Plugin.IPluginFactory">
                <summary>
                Interface used to create plugins.
                </summary>
                <remarks>
                <para>
                Interface used to create  a plugin.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Plugin.IPluginFactory.CreatePlugin">
                <summary>
                Creates the plugin object.
                </summary>
                <returns>the new plugin instance</returns>
                <remarks>
                <para>
                Create and return a new plugin instance.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.PluginAttribute.#ctor(System.String)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class
                with the specified type.
                </summary>
                <param name="typeName">The type name of plugin to create.</param>
                <remarks>
                <para>
                Create the attribute with the plugin type specified.
                </para>
                <para>
                Where possible use the constructor that takes a <see cref="T:System.Type"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.PluginAttribute.#ctor(System.Type)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.PluginAttribute"/> class
                with the specified type.
                </summary>
                <param name="type">The type of plugin to create.</param>
                <remarks>
                <para>
                Create the attribute with the plugin type specified.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.PluginAttribute.CreatePlugin">
                <summary>
                Creates the plugin object defined by this attribute.
                </summary>
                <remarks>
                <para>
                Creates the instance of the <see cref="T:log4net.Plugin.IPlugin"/> object as 
                specified by this attribute.
                </para>
                </remarks>
                <returns>The plugin object.</returns>
            </member>
            <member name="M:log4net.Config.PluginAttribute.ToString">
                <summary>
                Returns a representation of the properties of this object.
                </summary>
                <remarks>
                <para>
                Overrides base class <see cref="M:Object.ToString()" /> method to 
                return a representation of the properties of this object.
                </para>
                </remarks>
                <returns>A representation of the properties of this object</returns>
            </member>
            <member name="P:log4net.Config.PluginAttribute.Type">
                <summary>
                Gets or sets the type for the plugin.
                </summary>
                <value>
                The type for the plugin.
                </value>
                <remarks>
                <para>
                The type for the plugin.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Config.PluginAttribute.TypeName">
                <summary>
                Gets or sets the type name for the plugin.
                </summary>
                <value>
                The type name for the plugin.
                </value>
                <remarks>
                <para>
                The type name for the plugin.
                </para>
                <para>
                Where possible use the <see cref="P:log4net.Config.PluginAttribute.Type"/> property instead.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.SecurityContextProviderAttribute">
                <summary>
                Assembly level attribute to configure the <see cref="T:log4net.Core.SecurityContextProvider"/>.
                </summary>
                <remarks>
                <para>
                This attribute may only be used at the assembly scope and can only
                be used once per assembly.
                </para>
                <para>
                Use this attribute to configure the <see cref="T:log4net.Config.XmlConfigurator"/>
                without calling one of the <see cref="M:XmlConfigurator.Configure()"/>
                methods.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Config.SecurityContextProviderAttribute.#ctor(System.Type)">
                <summary>
                Construct provider attribute with type specified
                </summary>
                <param name="providerType">the type of the provider to use</param>
                <remarks>
                <para>
                The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/>
                class.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.SecurityContextProviderAttribute.Configure(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Configures the SecurityContextProvider
                </summary>
                <param name="sourceAssembly">The assembly that this attribute was defined on.</param>
                <param name="targetRepository">The repository to configure.</param>
                <remarks>
                <para>
                Creates a provider instance from the <see cref="P:log4net.Config.SecurityContextProviderAttribute.ProviderType"/> specified.
                Sets this as the default security context provider <see cref="P:log4net.Core.SecurityContextProvider.DefaultProvider"/>.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Config.SecurityContextProviderAttribute.declaringType">
                <summary>
                The fully qualified type of the SecurityContextProviderAttribute class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="P:log4net.Config.SecurityContextProviderAttribute.ProviderType">
                <summary>
                Gets or sets the type of the provider to use.
                </summary>
                <value>
                the type of the provider to use.
                </value>
                <remarks>
                <para>
                The provider specified must subclass the <see cref="T:log4net.Core.SecurityContextProvider"/>
                class.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Config.XmlConfigurator">
                <summary>
                Use this class to initialize the log4net environment using an Xml tree.
                </summary>
                <remarks>
                <para>
                Configures a <see cref="T:log4net.Repository.ILoggerRepository"/> using an Xml tree.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.#ctor">
                <summary>
                Private constructor
                </summary>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure">
                <summary>
                Automatically configures the log4net system based on the 
                application's configuration settings.
                </summary>
                <remarks>
                <para>
                Each application has a configuration file. This has the
                same name as the application with '.config' appended.
                This file is XML and calling this function prompts the
                configurator to look in that file for a section called
                <c>log4net</c> that contains the configuration data.
                </para>
                <para>
                To use this method to configure log4net you must specify 
                the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section
                handler for the <c>log4net</c> configuration section. See the
                <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example.
                </para>
                </remarks>
                <seealso cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository)">
                <summary>
                Automatically configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using settings
                stored in the application's configuration file.
                </summary>
                <remarks>
                <para>
                Each application has a configuration file. This has the
                same name as the application with '.config' appended.
                This file is XML and calling this function prompts the
                configurator to look in that file for a section called
                <c>log4net</c> that contains the configuration data.
                </para>
                <para>
                To use this method to configure log4net you must specify 
                the <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> section
                handler for the <c>log4net</c> configuration section. See the
                <see cref="T:log4net.Config.Log4NetConfigurationSectionHandler"/> for an example.
                </para>
                </remarks>
                <param name="repository">The repository to configure.</param>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(System.Xml.XmlElement)">
                <summary>
                Configures log4net using a <c>log4net</c> element
                </summary>
                <remarks>
                <para>
                Loads the log4net configuration from the XML element
                supplied as <paramref name="element"/>.
                </para>
                </remarks>
                <param name="element">The element to parse.</param>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified XML 
                element.
                </summary>
                <remarks>
                Loads the log4net configuration from the XML element
                supplied as <paramref name="element"/>.
                </remarks>
                <param name="repository">The repository to configure.</param>
                <param name="element">The element to parse.</param>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.FileInfo)">
                <summary>
                Configures log4net using the specified configuration file.
                </summary>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the log4net configuration data.
                </para>
                <para>
                The log4net configuration file can possible be specified in the application's
                configuration file (either <c>MyAppName.exe.config</c> for a
                normal application on <c>Web.config</c> for an ASP.NET application).
                </para>
                <para>
                The first element matching <c>&lt;configuration&gt;</c> will be read as the 
                configuration. If this file is also a .NET .config file then you must specify 
                a configuration section for the <c>log4net</c> element otherwise .NET will 
                complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example:
                <code lang="XML" escaped="true">
                <configSections>
                	<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
                </configSections>
                </code>
                </para>
                <example>
                The following example configures log4net using a configuration file, of which the 
                location is stored in the application's configuration file :
                </example>
                <code lang="C#">
                using log4net.Config;
                using System.IO;
                using System.Configuration;
                
                ...
                
                XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
                </code>
                <para>
                In the <c>.config</c> file, the path to the log4net can be specified like this :
                </para>
                <code lang="XML" escaped="true">
                <configuration>
                	<appSettings>
                		<add key="log4net-config-file" value="log.config"/>
                	</appSettings>
                </configuration>
                </code>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(System.Uri)">
                <summary>
                Configures log4net using the specified configuration URI.
                </summary>
                <param name="configUri">A URI to load the XML configuration from.</param>
                <remarks>
                <para>
                The configuration data must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the log4net configuration data.
                </para>
                <para>
                The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(System.IO.Stream)">
                <summary>
                Configures log4net using the specified configuration data stream.
                </summary>
                <param name="configStream">A stream to load the XML configuration from.</param>
                <remarks>
                <para>
                The configuration data must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the log4net configuration data.
                </para>
                <para>
                Note that this method will NOT close the stream parameter.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration 
                file.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The log4net configuration file can possible be specified in the application's
                configuration file (either <c>MyAppName.exe.config</c> for a
                normal application on <c>Web.config</c> for an ASP.NET application).
                </para>
                <para>
                The first element matching <c>&lt;configuration&gt;</c> will be read as the 
                configuration. If this file is also a .NET .config file then you must specify 
                a configuration section for the <c>log4net</c> element otherwise .NET will 
                complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler"/>, for example:
                <code lang="XML" escaped="true">
                <configSections>
                	<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
                </configSections>
                </code>
                </para>
                <example>
                The following example configures log4net using a configuration file, of which the 
                location is stored in the application's configuration file :
                </example>
                <code lang="C#">
                using log4net.Config;
                using System.IO;
                using System.Configuration;
                
                ...
                
                XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
                </code>
                <para>
                In the <c>.config</c> file, the path to the log4net can be specified like this :
                </para>
                <code lang="XML" escaped="true">
                <configuration>
                	<appSettings>
                		<add key="log4net-config-file" value="log.config"/>
                	</appSettings>
                </configuration>
                </code>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.Uri)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration 
                URI.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configUri">A URI to load the XML configuration from.</param>
                <remarks>
                <para>
                The configuration data must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The <see cref="T:System.Net.WebRequest"/> must support the URI scheme specified.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.Configure(log4net.Repository.ILoggerRepository,System.IO.Stream)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the specified configuration 
                file.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configStream">The stream to load the XML configuration from.</param>
                <remarks>
                <para>
                The configuration data must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                Note that this method will NOT close the stream parameter.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(System.IO.FileInfo)">
                <summary>
                Configures log4net using the file specified, monitors the file for changes 
                and reloads the configuration if a change is detected.
                </summary>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
                and depends on the behavior of that class.
                </para>
                <para>
                For more information on how to configure log4net using
                a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
                </para>
                </remarks>
                <seealso cref="M:Configure(FileInfo)"/>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatch(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
                <summary>
                Configures the <see cref="T:log4net.Repository.ILoggerRepository"/> using the file specified, 
                monitors the file for changes and reloads the configuration if a change 
                is detected.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configFile">The XML file to load the configuration from.</param>
                <remarks>
                <para>
                The configuration file must be valid XML. It must contain
                at least one element called <c>log4net</c> that holds
                the configuration data.
                </para>
                <para>
                The configuration file will be monitored using a <see cref="T:System.IO.FileSystemWatcher"/>
                and depends on the behavior of that class.
                </para>
                <para>
                For more information on how to configure log4net using
                a separate configuration file, see <see cref="M:Configure(FileInfo)"/>.
                </para>
                </remarks>
                <seealso cref="M:Configure(FileInfo)"/>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.InternalConfigureFromXml(log4net.Repository.ILoggerRepository,System.Xml.XmlElement)">
                <summary>
                Configures the specified repository using a <c>log4net</c> element.
                </summary>
                <param name="repository">The hierarchy to configure.</param>
                <param name="element">The element to parse.</param>
                <remarks>
                <para>
                Loads the log4net configuration from the XML element
                supplied as <paramref name="element"/>.
                </para>
                <para>
                This method is ultimately called by one of the Configure methods 
                to load the configuration from an <see cref="T:System.Xml.XmlElement"/>.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.m_repositoryName2ConfigAndWatchHandler">
                <summary>
                Maps repository names to ConfigAndWatchHandler instances to allow a particular
                ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is 
                reconfigured.
                </summary>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.declaringType">
                <summary>
                The fully qualified type of the XmlConfigurator class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler">
                <summary>
                Class used to watch config files.
                </summary>
                <remarks>
                <para>
                Uses the <see cref="T:System.IO.FileSystemWatcher"/> to monitor
                changes to a specified file. Because multiple change notifications
                may be raised when the file is modified, a timer is used to
                compress the notifications into a single event. The timer
                waits for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> time before delivering
                the event notification. If any further <see cref="T:System.IO.FileSystemWatcher"/>
                change notifications arrive while the timer is waiting it
                is reset and waits again for <see cref="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis"/> to
                elapse.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.TimeoutMillis">
                <summary>
                The default amount of time to wait after receiving notification
                before reloading the config file.
                </summary>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_configFile">
                <summary>
                Holds the FileInfo used to configure the XmlConfigurator
                </summary>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_repository">
                <summary>
                Holds the repository being configured.
                </summary>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_timer">
                <summary>
                The timer used to compress the notification events.
                </summary>
            </member>
            <member name="F:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.m_watcher">
                <summary>
                Watches file for changes. This object should be disposed when no longer
                needed to free system handles on the watched resources.
                </summary>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.#ctor(log4net.Repository.ILoggerRepository,System.IO.FileInfo)">
                <summary>
                Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class to
                watch a specified config file used to configure a repository.
                </summary>
                <param name="repository">The repository to configure.</param>
                <param name="configFile">The configuration file to watch.</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/> class.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnChanged(System.Object,System.IO.FileSystemEventArgs)">
                <summary>
                Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>.
                </summary>
                <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param>
                <param name="e">The argument indicates the file that caused the event to be fired.</param>
                <remarks>
                <para>
                This handler reloads the configuration from the file when the event is fired.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.ConfigureAndWatchHandler_OnRenamed(System.Object,System.IO.RenamedEventArgs)">
                <summary>
                Event handler used by <see cref="T:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler"/>.
                </summary>
                <param name="source">The <see cref="T:System.IO.FileSystemWatcher"/> firing the event.</param>
                <param name="e">The argument indicates the file that caused the event to be fired.</param>
                <remarks>
                <para>
                This handler reloads the configuration from the file when the event is fired.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.OnWatchedFileChange(System.Object)">
                <summary>
                Called by the timer when the configuration has been updated.
                </summary>
                <param name="state">null</param>
            </member>
            <member name="M:log4net.Config.XmlConfigurator.ConfigureAndWatchHandler.Dispose">
                <summary>
                Release the handles held by the watcher and timer.
                </summary>
            </member>
            <member name="T:log4net.Core.CompactRepositorySelector">
                <summary>
                The implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface suitable
                for use with the compact framework
                </summary>
                <remarks>
                <para>
                This <see cref="T:log4net.Core.IRepositorySelector"/> implementation is a simple
                mapping between repository name and <see cref="T:log4net.Repository.ILoggerRepository"/>
                object.
                </para>
                <para>
                The .NET Compact Framework 1.0 does not support retrieving assembly
                level attributes therefore unlike the <c>DefaultRepositorySelector</c>
                this selector does not examine the calling assembly for attributes.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="T:log4net.Core.IRepositorySelector">
                <summary>
                Interface used by the <see cref="T:log4net.LogManager"/> to select the <see cref="T:log4net.Repository.ILoggerRepository"/>.
                </summary>
                <remarks>
                <para>
                The <see cref="T:log4net.LogManager"/> uses a <see cref="T:log4net.Core.IRepositorySelector"/> 
                to specify the policy for selecting the correct <see cref="T:log4net.Repository.ILoggerRepository"/> 
                to return to the caller.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.Reflection.Assembly)">
                <summary>
                Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
                </summary>
                <param name="assembly">The assembly to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/></param>
                <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly.</returns>
                <remarks>
                <para>
                Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
                </para>
                <para>
                How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/>
                is made is not defined. The implementation may choose any method for
                this association. The results of this method must be repeatable, i.e.
                when called again with the same arguments the result must be the
                save value.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IRepositorySelector.GetRepository(System.String)">
                <summary>
                Gets the named <see cref="T:log4net.Repository.ILoggerRepository"/>.
                </summary>
                <param name="repositoryName">The name to use to lookup to the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
                <remarks>
                Lookup a named <see cref="T:log4net.Repository.ILoggerRepository"/>. This is the repository created by
                calling <see cref="M:CreateRepository(string,Type)"/>.
                </remarks>
            </member>
            <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
                <summary>
                Creates a new repository for the assembly specified.
                </summary>
                <param name="assembly">The assembly to use to create the domain to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <returns>The repository created.</returns>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the domain
                specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
                same assembly specified will return the same repository instance.
                </para>
                <para>
                How the association between <see cref="T:System.Reflection.Assembly"/> and <see cref="T:log4net.Repository.ILoggerRepository"/>
                is made is not defined. The implementation may choose any method for
                this association.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IRepositorySelector.CreateRepository(System.String,System.Type)">
                <summary>
                Creates a new repository with the name specified.
                </summary>
                <param name="repositoryName">The name to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <returns>The repository created.</returns>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the name
                specified such that a call to <see cref="M:GetRepository(string)"/> with the
                same name will return the same repository instance.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IRepositorySelector.ExistsRepository(System.String)">
                <summary>
                Test if a named repository exists
                </summary>
                <param name="repositoryName">the named repository to check</param>
                <returns><c>true</c> if the repository exists</returns>
                <remarks>
                <para>
                Test if a named repository exists. Use <see cref="M:CreateRepository(Assembly, Type)"/>
                to create a new repository and <see cref="M:GetRepository(Assembly)"/> to retrieve 
                a repository.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IRepositorySelector.GetAllRepositories">
                <summary>
                Gets an array of all currently defined repositories.
                </summary>
                <returns>
                An array of the <see cref="T:log4net.Repository.ILoggerRepository"/> instances created by 
                this <see cref="T:log4net.Core.IRepositorySelector"/>.</returns>
                <remarks>
                <para>
                Gets an array of all of the repositories created by this selector.
                </para>
                </remarks>
            </member>
            <member name="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent">
                <summary>
                Event to notify that a logger repository has been created.
                </summary>
                <value>
                Event to notify that a logger repository has been created.
                </value>
                <remarks>
                <para>
                Event raised when a new repository is created.
                The event source will be this selector. The event args will
                be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
                holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.#ctor(System.Type)">
                <summary>
                Create a new repository selector
                </summary>
                <param name="defaultRepositoryType">the type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
                <remarks>
                <para>
                Create an new compact repository selector.
                The default type for repositories must be specified,
                an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException">throw if <paramref name="defaultRepositoryType"/> is null</exception>
                <exception cref="T:System.ArgumentOutOfRangeException">throw if <paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/></exception>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.Reflection.Assembly)">
                <summary>
                Get the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly
                </summary>
                <param name="assembly">not used</param>
                <returns>The default <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
                <remarks>
                <para>
                The <paramref name="assembly"/> argument is not used. This selector does not create a
                separate repository for each assembly. 
                </para>
                <para>
                As a named repository is not specified the default repository is 
                returned. The default repository is named <c>log4net-default-repository</c>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.GetRepository(System.String)">
                <summary>
                Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>
                </summary>
                <param name="repositoryName">the name of the repository to lookup</param>
                <returns>The named <see cref="T:log4net.Repository.ILoggerRepository"/></returns>
                <remarks>
                <para>
                Get the named <see cref="T:log4net.Repository.ILoggerRepository"/>. The default 
                repository is <c>log4net-default-repository</c>. Other repositories 
                must be created using the <see cref="M:CreateRepository(string, Type)"/>.
                If the named repository does not exist an exception is thrown.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception>
                <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> does not exist</exception>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
                <summary>
                Create a new repository for the assembly specified 
                </summary>
                <param name="assembly">not used</param>
                <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
                <returns>the repository created</returns>
                <remarks>
                <para>
                The <paramref name="assembly"/> argument is not used. This selector does not create a
                separate repository for each assembly. 
                </para>
                <para>
                If the <paramref name="repositoryType"/> is <c>null</c> then the
                default repository type specified to the constructor is used.
                </para>
                <para>
                As a named repository is not specified the default repository is 
                returned. The default repository is named <c>log4net-default-repository</c>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.CreateRepository(System.String,System.Type)">
                <summary>
                Create a new repository for the repository specified
                </summary>
                <param name="repositoryName">the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/></param>
                <param name="repositoryType">the type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.
                If this param is null then the default repository type is used.</param>
                <returns>the repository created</returns>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
                specified such that a call to <see cref="M:GetRepository(string)"/> with the
                same repository specified will return the same repository instance.
                </para>
                <para>
                If the named repository already exists an exception will be thrown.
                </para>
                <para>
                If <paramref name="repositoryType"/> is <c>null</c> then the default 
                repository type specified to the constructor is used.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException">throw if <paramref name="repositoryName"/> is null</exception>
                <exception cref="T:log4net.Core.LogException">throw if the <paramref name="repositoryName"/> already exists</exception>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.ExistsRepository(System.String)">
                <summary>
                Test if a named repository exists
                </summary>
                <param name="repositoryName">the named repository to check</param>
                <returns><c>true</c> if the repository exists</returns>
                <remarks>
                <para>
                Test if a named repository exists. Use <see cref="M:CreateRepository(string, Type)"/>
                to create a new repository and <see cref="M:GetRepository(string)"/> to retrieve 
                a repository.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.GetAllRepositories">
                <summary>
                Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects
                </summary>
                <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns>
                <remarks>
                <para>
                Gets an array of all of the repositories created by this selector.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Core.CompactRepositorySelector.declaringType">
                <summary>
                The fully qualified type of the CompactRepositorySelector class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="M:log4net.Core.CompactRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)">
                <summary>
                Notify the registered listeners that the repository has been created
                </summary>
                <param name="repository">The repository that has been created</param>
                <remarks>
                <para>
                Raises the <event cref="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">LoggerRepositoryCreatedEvent</event>
                event.
                </para>
                </remarks>
            </member>
            <member name="E:log4net.Core.CompactRepositorySelector.LoggerRepositoryCreatedEvent">
                <summary>
                Event to notify that a logger repository has been created.
                </summary>
                <value>
                Event to notify that a logger repository has been created.
                </value>
                <remarks>
                <para>
                Event raised when a new repository is created.
                The event source will be this selector. The event args will
                be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
                holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.DefaultRepositorySelector">
                <summary>
                The default implementation of the <see cref="T:log4net.Core.IRepositorySelector"/> interface.
                </summary>
                <remarks>
                <para>
                Uses attributes defined on the calling assembly to determine how to
                configure the hierarchy for the repository.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.#ctor(System.Type)">
                <summary>
                Creates a new repository selector.
                </summary>
                <param name="defaultRepositoryType">The type of the repositories to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/></param>
                <remarks>
                <para>
                Create an new repository selector.
                The default type for repositories must be specified,
                an appropriate value would be <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/>.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException"><paramref name="defaultRepositoryType"/> is <see langword="null"/>.</exception>
                <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="defaultRepositoryType"/> does not implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.Reflection.Assembly)">
                <summary>
                Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified assembly.
                </summary>
                <param name="repositoryAssembly">The assembly use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <remarks>
                <para>
                The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and the repository 
                to create can be overridden by specifying the <see cref="T:log4net.Config.RepositoryAttribute"/> 
                attribute on the <paramref name="repositoryAssembly"/>.
                </para>
                <para>
                The default values are to use the <see cref="T:log4net.Repository.Hierarchy.Hierarchy"/> 
                implementation of the <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
                <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
                </para>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically configured using 
                any <see cref="T:log4net.Config.ConfiguratorAttribute"/> attributes defined on
                the <paramref name="repositoryAssembly"/>.
                </para>
                </remarks>
                <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the assembly</returns>
                <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.GetRepository(System.String)">
                <summary>
                Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.
                </summary>
                <param name="repositoryName">The repository to use to lookup the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <returns>The <see cref="T:log4net.Repository.ILoggerRepository"/> for the specified repository.</returns>
                <remarks>
                <para>
                Returns the named repository. If <paramref name="repositoryName"/> is <c>null</c>
                a <see cref="T:System.ArgumentNullException"/> is thrown. If the repository 
                does not exist a <see cref="T:log4net.Core.LogException"/> is thrown.
                </para>
                <para>
                Use <see cref="M:CreateRepository(string, Type)"/> to create a repository.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception>
                <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> does not exist.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type)">
                <summary>
                Create a new repository for the assembly specified 
                </summary>
                <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <returns>The repository created.</returns>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
                specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
                same assembly specified will return the same repository instance.
                </para>
                <para>
                The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and
                the repository to create can be overridden by specifying the
                <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the 
                <paramref name="repositoryAssembly"/>.  The default values are to use the 
                <paramref name="repositoryType"/> implementation of the 
                <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
                <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
                </para>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically
                configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/> 
                attributes defined on the <paramref name="repositoryAssembly"/>.
                </para>
                <para>
                If a repository for the <paramref name="repositoryAssembly"/> already exists
                that repository will be returned. An error will not be raised and that 
                repository may be of a different type to that specified in <paramref name="repositoryType"/>.
                Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
                assembly may be used to override the repository type specified in 
                <paramref name="repositoryType"/>.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.Reflection.Assembly,System.Type,System.String,System.Boolean)">
                <summary>
                Creates a new repository for the assembly specified.
                </summary>
                <param name="repositoryAssembly">the assembly to use to create the repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <param name="repositoryName">The name to assign to the created repository</param>
                <param name="readAssemblyAttributes">Set to <c>true</c> to read and apply the assembly attributes</param>
                <returns>The repository created.</returns>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
                specified such that a call to <see cref="M:GetRepository(Assembly)"/> with the
                same assembly specified will return the same repository instance.
                </para>
                <para>
                The type of the <see cref="T:log4net.Repository.ILoggerRepository"/> created and
                the repository to create can be overridden by specifying the
                <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the 
                <paramref name="repositoryAssembly"/>.  The default values are to use the 
                <paramref name="repositoryType"/> implementation of the 
                <see cref="T:log4net.Repository.ILoggerRepository"/> interface and to use the
                <see cref="P:System.Reflection.AssemblyName.Name"/> as the name of the repository.
                </para>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be automatically
                configured using any <see cref="T:log4net.Config.ConfiguratorAttribute"/> 
                attributes defined on the <paramref name="repositoryAssembly"/>.
                </para>
                <para>
                If a repository for the <paramref name="repositoryAssembly"/> already exists
                that repository will be returned. An error will not be raised and that 
                repository may be of a different type to that specified in <paramref name="repositoryType"/>.
                Also the <see cref="T:log4net.Config.RepositoryAttribute"/> attribute on the
                assembly may be used to override the repository type specified in 
                <paramref name="repositoryType"/>.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException"><paramref name="repositoryAssembly"/> is <see langword="null"/>.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.CreateRepository(System.String,System.Type)">
                <summary>
                Creates a new repository for the specified repository.
                </summary>
                <param name="repositoryName">The repository to associate with the <see cref="T:log4net.Repository.ILoggerRepository"/>.</param>
                <param name="repositoryType">The type of repository to create, must implement <see cref="T:log4net.Repository.ILoggerRepository"/>.
                If this param is <see langword="null"/> then the default repository type is used.</param>
                <returns>The new repository.</returns>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created will be associated with the repository
                specified such that a call to <see cref="M:GetRepository(string)"/> with the
                same repository specified will return the same repository instance.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException"><paramref name="repositoryName"/> is <see langword="null"/>.</exception>
                <exception cref="T:log4net.Core.LogException"><paramref name="repositoryName"/> already exists.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.ExistsRepository(System.String)">
                <summary>
                Test if a named repository exists
                </summary>
                <param name="repositoryName">the named repository to check</param>
                <returns><c>true</c> if the repository exists</returns>
                <remarks>
                <para>
                Test if a named repository exists. Use <see cref="M:CreateRepository(string, Type)"/>
                to create a new repository and <see cref="M:GetRepository(string)"/> to retrieve 
                a repository.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.GetAllRepositories">
                <summary>
                Gets a list of <see cref="T:log4net.Repository.ILoggerRepository"/> objects
                </summary>
                <returns>an array of all known <see cref="T:log4net.Repository.ILoggerRepository"/> objects</returns>
                <remarks>
                <para>
                Gets an array of all of the repositories created by this selector.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.AliasRepository(System.String,log4net.Repository.ILoggerRepository)">
                <summary>
                Aliases a repository to an existing repository.
                </summary>
                <param name="repositoryAlias">The repository to alias.</param>
                <param name="repositoryTarget">The repository that the repository is aliased to.</param>
                <remarks>
                <para>
                The repository specified will be aliased to the repository when created. 
                The repository must not already exist.
                </para>
                <para>
                When the repository is created it must utilize the same repository type as 
                the repository it is aliased to, otherwise the aliasing will fail.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentNullException">
                <para><paramref name="repositoryAlias"/> is <see langword="null"/>.</para>
                <para>-or-</para>
                <para><paramref name="repositoryTarget"/> is <see langword="null"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.OnLoggerRepositoryCreatedEvent(log4net.Repository.ILoggerRepository)">
                <summary>
                Notifies the registered listeners that the repository has been created.
                </summary>
                <param name="repository">The repository that has been created.</param>
                <remarks>
                <para>
                Raises the <see cref="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent"/> event.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.GetInfoForAssembly(System.Reflection.Assembly,[email protected],[email protected])">
                <summary>
                Gets the repository name and repository type for the specified assembly.
                </summary>
                <param name="assembly">The assembly that has a <see cref="T:log4net.Config.RepositoryAttribute"/>.</param>
                <param name="repositoryName">in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling.</param>
                <param name="repositoryType">in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling.</param>
                <exception cref="T:System.ArgumentNullException"><paramref name="assembly"/> is <see langword="null"/>.</exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.ConfigureRepository(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Configures the repository using information from the assembly.
                </summary>
                <param name="assembly">The assembly containing <see cref="T:log4net.Config.ConfiguratorAttribute"/>
                attributes which define the configuration for the repository.</param>
                <param name="repository">The repository to configure.</param>
                <exception cref="T:System.ArgumentNullException">
                <para><paramref name="assembly"/> is <see langword="null"/>.</para>
                <para>-or-</para>
                <para><paramref name="repository"/> is <see langword="null"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.LoadPlugins(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Loads the attribute defined plugins on the assembly.
                </summary>
                <param name="assembly">The assembly that contains the attributes.</param>
                <param name="repository">The repository to add the plugins to.</param>
                <exception cref="T:System.ArgumentNullException">
                <para><paramref name="assembly"/> is <see langword="null"/>.</para>
                <para>-or-</para>
                <para><paramref name="repository"/> is <see langword="null"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Core.DefaultRepositorySelector.LoadAliases(System.Reflection.Assembly,log4net.Repository.ILoggerRepository)">
                <summary>
                Loads the attribute defined aliases on the assembly.
                </summary>
                <param name="assembly">The assembly that contains the attributes.</param>
                <param name="repository">The repository to alias to.</param>
                <exception cref="T:System.ArgumentNullException">
                <para><paramref name="assembly"/> is <see langword="null"/>.</para>
                <para>-or-</para>
                <para><paramref name="repository"/> is <see langword="null"/>.</para>
                </exception>
            </member>
            <member name="F:log4net.Core.DefaultRepositorySelector.declaringType">
                <summary>
                The fully qualified type of the DefaultRepositorySelector class.
                </summary>
                <remarks>
                Used by the internal logger to record the Type of the
                log message.
                </remarks>
            </member>
            <member name="E:log4net.Core.DefaultRepositorySelector.LoggerRepositoryCreatedEvent">
                <summary>
                Event to notify that a logger repository has been created.
                </summary>
                <value>
                Event to notify that a logger repository has been created.
                </value>
                <remarks>
                <para>
                Event raised when a new repository is created.
                The event source will be this selector. The event args will
                be a <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> which
                holds the newly created <see cref="T:log4net.Repository.ILoggerRepository"/>.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.ErrorCode">
                <summary>
                Defined error codes that can be passed to the <see cref="M:IErrorHandler.Error(string, Exception, ErrorCode)"/> method.
                </summary>
                <remarks>
                <para>
                Values passed to the <see cref="M:IErrorHandler.Error(string, Exception, ErrorCode)"/> method.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="F:log4net.Core.ErrorCode.GenericFailure">
                <summary>
                A general error
                </summary>
            </member>
            <member name="F:log4net.Core.ErrorCode.WriteFailure">
                <summary>
                Error while writing output
                </summary>
            </member>
            <member name="F:log4net.Core.ErrorCode.FlushFailure">
                <summary>
                Failed to flush file
                </summary>
            </member>
            <member name="F:log4net.Core.ErrorCode.CloseFailure">
                <summary>
                Failed to close file
                </summary>
            </member>
            <member name="F:log4net.Core.ErrorCode.FileOpenFailure">
                <summary>
                Unable to open output file
                </summary>
            </member>
            <member name="F:log4net.Core.ErrorCode.MissingLayout">
                <summary>
                No layout specified
                </summary>
            </member>
            <member name="F:log4net.Core.ErrorCode.AddressParseFailure">
                <summary>
                Failed to parse address
                </summary>
            </member>
            <member name="T:log4net.Core.ExceptionEvaluator">
                <summary>
                An evaluator that triggers on an Exception type
                </summary>
                <remarks>
                <para>
                This evaluator will trigger if the type of the Exception
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is equal to a Type in <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.    /// 
                </para>
                </remarks>
                <author>Drew Schaeffer</author>
            </member>
            <member name="T:log4net.Core.ITriggeringEventEvaluator">
                <summary>
                Test if an <see cref="T:log4net.Core.LoggingEvent"/> triggers an action
                </summary>
                <remarks>
                <para>
                Implementations of this interface allow certain appenders to decide
                when to perform an appender specific action.
                </para>
                <para>
                The action or behavior triggered is defined by the implementation.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Core.ITriggeringEventEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
                <summary>
                Test if this event triggers the action
                </summary>
                <param name="loggingEvent">The event to check</param>
                <returns><c>true</c> if this event triggers the action, otherwise <c>false</c></returns>
                <remarks>
                <para>
                Return <c>true</c> if this event triggers the action
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Core.ExceptionEvaluator.m_type">
                <summary>
                The type that causes the trigger to fire.
                </summary>
            </member>
            <member name="F:log4net.Core.ExceptionEvaluator.m_triggerOnSubclass">
                <summary>
                Causes subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/> to cause the trigger to fire.
                </summary>
            </member>
            <member name="M:log4net.Core.ExceptionEvaluator.#ctor">
                <summary>
                Default ctor to allow dynamic creation through a configurator.
                </summary>
            </member>
            <member name="M:log4net.Core.ExceptionEvaluator.#ctor(System.Type,System.Boolean)">
                <summary>
                Constructs an evaluator and initializes to trigger on <paramref name="exType"/>
                </summary>
                <param name="exType">the type that triggers this evaluator.</param>
                <param name="triggerOnSubClass">If true, this evaluator will trigger on subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.</param>
            </member>
            <member name="M:log4net.Core.ExceptionEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
                <summary>
                Is this <paramref name="loggingEvent"/> the triggering event?
                </summary>
                <param name="loggingEvent">The event to check</param>
                <returns>This method returns <c>true</c>, if the logging event Exception 
                Type is <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>. 
                Otherwise it returns <c>false</c></returns>
                <remarks>
                <para>
                This evaluator will trigger if the Exception Type of the event
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.ExceptionEvaluator.ExceptionType">
                <summary>
                The type that triggers this evaluator.
                </summary>
            </member>
            <member name="P:log4net.Core.ExceptionEvaluator.TriggerOnSubclass">
                <summary>
                If true, this evaluator will trigger on subclasses of <see cref="P:log4net.Core.ExceptionEvaluator.ExceptionType"/>.
                </summary>
            </member>
            <member name="T:log4net.Core.IErrorHandler">
                <summary>
                Appenders may delegate their error handling to an <see cref="T:log4net.Core.IErrorHandler"/>.
                </summary>
                <remarks>
                <para>
                Error handling is a particularly tedious to get right because by
                definition errors are hard to predict and to reproduce. 
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception,log4net.Core.ErrorCode)">
                <summary>
                Handles the error and information about the error condition is passed as 
                a parameter.
                </summary>
                <param name="message">The message associated with the error.</param>
                <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param>
                <param name="errorCode">The error code associated with the error.</param>
                <remarks>
                <para>
                Handles the error and information about the error condition is passed as 
                a parameter.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IErrorHandler.Error(System.String,System.Exception)">
                <summary>
                Prints the error message passed as a parameter.
                </summary>
                <param name="message">The message associated with the error.</param>
                <param name="e">The <see cref="T:System.Exception"/> that was thrown when the error occurred.</param>
                <remarks>
                <para>
                See <see cref="M:Error(string,Exception,ErrorCode)"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.IErrorHandler.Error(System.String)">
                <summary>
                Prints the error message passed as a parameter.
                </summary>
                <param name="message">The message associated with the error.</param>
                <remarks>
                <para>
                See <see cref="M:Error(string,Exception,ErrorCode)"/>.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.IFixingRequired">
                <summary>
                Interface for objects that require fixing.
                </summary>
                <remarks>
                <para>
                Interface that indicates that the object requires fixing before it
                can be taken outside the context of the appender's 
                <see cref="M:log4net.Appender.IAppender.DoAppend(log4net.Core.LoggingEvent)"/> method.
                </para>
                <para>
                When objects that implement this interface are stored 
                in the context properties maps <see cref="T:log4net.GlobalContext"/>
                <see cref="P:log4net.GlobalContext.Properties"/> and <see cref="T:log4net.ThreadContext"/>
                <see cref="P:log4net.ThreadContext.Properties"/> are fixed 
                (see <see cref="P:log4net.Core.LoggingEvent.Fix"/>) the <see cref="M:log4net.Core.IFixingRequired.GetFixedObject"/>
                method will be called.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Core.IFixingRequired.GetFixedObject">
                <summary>
                Get a portable version of this object
                </summary>
                <returns>the portable instance of this object</returns>
                <remarks>
                <para>
                Get a portable instance object that represents the current
                state of this object. The portable object can be stored
                and logged from any thread with identical results.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.ILogger">
                <summary>
                Interface that all loggers implement
                </summary>
                <remarks>
                <para>
                This interface supports logging events and testing if a level
                is enabled for logging.
                </para>
                <para>
                These methods will not throw exceptions. Note to implementor, ensure
                that the implementation of these methods cannot allow an exception
                to be thrown to the caller.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.ILogger.Log(System.Type,log4net.Core.Level,System.Object,System.Exception)">
                <summary>
                This generic form is intended to be used by wrappers.
                </summary>
                <param name="callerStackBoundaryDeclaringType">The declaring type of the method that is
                the stack boundary into the logging system for this call.</param>
                <param name="level">The level of the message to be logged.</param>
                <param name="message">The message object to log.</param>
                <param name="exception">the exception to log, including its stack trace. Pass <c>null</c> to not log an exception.</param>
                <remarks>
                <para>
                Generates a logging event for the specified <paramref name="level"/> using
                the <paramref name="message"/> and <paramref name="exception"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.ILogger.Log(log4net.Core.LoggingEvent)">
                <summary>
                This is the most generic printing method that is intended to be used 
                by wrappers.
                </summary>
                <param name="logEvent">The event being logged.</param>
                <remarks>
                <para>
                Logs the specified logging event through this logger.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.ILogger.IsEnabledFor(log4net.Core.Level)">
                <summary>
                Checks if this logger is enabled for a given <see cref="T:log4net.Core.Level"/> passed as parameter.
                </summary>
                <param name="level">The level to check.</param>
                <returns>
                <c>true</c> if this logger is enabled for <c>level</c>, otherwise <c>false</c>.
                </returns>
                <remarks>
                <para>
                Test if this logger is going to log events of the specified <paramref name="level"/>.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.ILogger.Name">
                <summary>
                Gets the name of the logger.
                </summary>
                <value>
                The name of the logger.
                </value>
                <remarks>
                <para>
                The name of this logger
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.ILogger.Repository">
                <summary>
                Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this 
                <c>Logger</c> instance is attached to.
                </summary>
                <value>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> that this logger belongs to.
                </value>
                <remarks>
                <para>
                Gets the <see cref="T:log4net.Repository.ILoggerRepository"/> where this 
                <c>Logger</c> instance is attached to.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.ILoggerWrapper">
                <summary>
                Base interface for all wrappers
                </summary>
                <remarks>
                <para>
                Base interface for all wrappers.
                </para>
                <para>
                All wrappers must implement this interface.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="P:log4net.Core.ILoggerWrapper.Logger">
                <summary>
                Get the implementation behind this wrapper object.
                </summary>
                <value>
                The <see cref="T:log4net.Core.ILogger"/> object that in implementing this object.
                </value>
                <remarks>
                <para>
                The <see cref="T:log4net.Core.ILogger"/> object that in implementing this
                object. The <c>Logger</c> object may not 
                be the same object as this object because of logger decorators.
                This gets the actual underlying objects that is used to process
                the log events.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.LoggerRepositoryCreationEventHandler">
                <summary>
                Delegate used to handle logger repository creation event notifications
                </summary>
                <param name="sender">The <see cref="T:log4net.Core.IRepositorySelector"/> which created the repository.</param>
                <param name="e">The <see cref="T:log4net.Core.LoggerRepositoryCreationEventArgs"/> event args
                that holds the <see cref="T:log4net.Repository.ILoggerRepository"/> instance that has been created.</param>
                <remarks>
                <para>
                Delegate used to handle logger repository creation event notifications.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.LoggerRepositoryCreationEventArgs">
                <summary>
                Provides data for the <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/> event.
                </summary>
                <remarks>
                <para>
                A <see cref="E:log4net.Core.IRepositorySelector.LoggerRepositoryCreatedEvent"/> 
                event is raised every time a <see cref="T:log4net.Repository.ILoggerRepository"/> is created.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Core.LoggerRepositoryCreationEventArgs.m_repository">
                <summary>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> created
                </summary>
            </member>
            <member name="M:log4net.Core.LoggerRepositoryCreationEventArgs.#ctor(log4net.Repository.ILoggerRepository)">
                <summary>
                Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified
                </summary>
                <param name="repository">the <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created</param>
                <remarks>
                <para>
                Construct instance using <see cref="T:log4net.Repository.ILoggerRepository"/> specified
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.LoggerRepositoryCreationEventArgs.LoggerRepository">
                <summary>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
                </summary>
                <value>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
                </value>
                <remarks>
                <para>
                The <see cref="T:log4net.Repository.ILoggerRepository"/> that has been created
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.Level">
                <summary>
                Defines the default set of levels recognized by the system.
                </summary>
                <remarks>
                <para>
                Each <see cref="T:log4net.Core.LoggingEvent"/> has an associated <see cref="T:log4net.Core.Level"/>.
                </para>
                <para>
                Levels have a numeric <see cref="P:log4net.Core.Level.Value"/> that defines the relative 
                ordering between levels. Two Levels with the same <see cref="P:log4net.Core.Level.Value"/> 
                are deemed to be equivalent.
                </para>
                <para>
                The levels that are recognized by log4net are set for each <see cref="T:log4net.Repository.ILoggerRepository"/>
                and each repository can have different levels defined. The levels are stored
                in the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/> on the repository. Levels are
                looked up by name from the <see cref="P:log4net.Repository.ILoggerRepository.LevelMap"/>.
                </para>
                <para>
                When logging at level INFO the actual level used is not <see cref="F:log4net.Core.Level.Info"/> but
                the value of <c>LoggerRepository.LevelMap["INFO"]</c>. The default value for this is
                <see cref="F:log4net.Core.Level.Info"/>, but this can be changed by reconfiguring the level map.
                </para>
                <para>
                Each level has a <see cref="P:log4net.Core.Level.DisplayName"/> in addition to its <see cref="P:log4net.Core.Level.Name"/>. The 
                <see cref="P:log4net.Core.Level.DisplayName"/> is the string that is written into the output log. By default
                the display name is the same as the level name, but this can be used to alias levels
                or to localize the log output.
                </para>
                <para>
                Some of the predefined levels recognized by the system are:
                </para>
                <list type="bullet">
                	<item>
                		<description><see cref="F:log4net.Core.Level.Off"/>.</description>
                	</item>
                	<item>
                		<description><see cref="F:log4net.Core.Level.Fatal"/>.</description>
                	</item>
                	<item>
                		<description><see cref="F:log4net.Core.Level.Error"/>.</description>
                	</item>
                	<item>
                		<description><see cref="F:log4net.Core.Level.Warn"/>.</description>
                	</item>
                	<item>
                		<description><see cref="F:log4net.Core.Level.Info"/>.</description>
                	</item>
                	<item>
                		<description><see cref="F:log4net.Core.Level.Debug"/>.</description>
                	</item>
                	<item>
                		<description><see cref="F:log4net.Core.Level.All"/>.</description>
                	</item>
                </list>
                </remarks>
                <author>Nicko Cadell</author>
                <author>Gert Driesen</author>
            </member>
            <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String,System.String)">
                <summary>
                Constructor
                </summary>
                <param name="level">Integer value for this level, higher values represent more severe levels.</param>
                <param name="levelName">The string name of this level.</param>
                <param name="displayName">The display name for this level. This may be localized or otherwise different from the name</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with
                the specified level name and value.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.#ctor(System.Int32,System.String)">
                <summary>
                Constructor
                </summary>
                <param name="level">Integer value for this level, higher values represent more severe levels.</param>
                <param name="levelName">The string name of this level.</param>
                <remarks>
                <para>
                Initializes a new instance of the <see cref="T:log4net.Core.Level"/> class with
                the specified level name and value.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.ToString">
                <summary>
                Returns the <see cref="T:System.String"/> representation of the current 
                <see cref="T:log4net.Core.Level"/>.
                </summary>
                <returns>
                A <see cref="T:System.String"/> representation of the current <see cref="T:log4net.Core.Level"/>.
                </returns>
                <remarks>
                <para>
                Returns the level <see cref="P:log4net.Core.Level.Name"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.Equals(System.Object)">
                <summary>
                Compares levels.
                </summary>
                <param name="o">The object to compare against.</param>
                <returns><c>true</c> if the objects are equal.</returns>
                <remarks>
                <para>
                Compares the levels of <see cref="T:log4net.Core.Level"/> instances, and 
                defers to base class if the target object is not a <see cref="T:log4net.Core.Level"/>
                instance.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.GetHashCode">
                <summary>
                Returns a hash code
                </summary>
                <returns>A hash code for the current <see cref="T:log4net.Core.Level"/>.</returns>
                <remarks>
                <para>
                Returns a hash code suitable for use in hashing algorithms and data 
                structures like a hash table.
                </para>
                <para>
                Returns the hash code of the level <see cref="P:log4net.Core.Level.Value"/>.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.CompareTo(System.Object)">
                <summary>
                Compares this instance to a specified object and returns an 
                indication of their relative values.
                </summary>
                <param name="r">A <see cref="T:log4net.Core.Level"/> instance or <see langword="null"/> to compare with this instance.</param>
                <returns>
                A 32-bit signed integer that indicates the relative order of the 
                values compared. The return value has these meanings:
                <list type="table">
                	<listheader>
                		<term>Value</term>
                		<description>Meaning</description>
                	</listheader>
                	<item>
                		<term>Less than zero</term>
                		<description>This instance is less than <paramref name="r"/>.</description>
                	</item>
                	<item>
                		<term>Zero</term>
                		<description>This instance is equal to <paramref name="r"/>.</description>
                	</item>
                	<item>
                		<term>Greater than zero</term>
                		<description>
                			<para>This instance is greater than <paramref name="r"/>.</para>
                			<para>-or-</para>
                			<para><paramref name="r"/> is <see langword="null"/>.</para>
                			</description>
                	</item>
                </list>
                </returns>
                <remarks>
                <para>
                <paramref name="r"/> must be an instance of <see cref="T:log4net.Core.Level"/> 
                or <see langword="null"/>; otherwise, an exception is thrown.
                </para>
                </remarks>
                <exception cref="T:System.ArgumentException"><paramref name="r"/> is not a <see cref="T:log4net.Core.Level"/>.</exception>
            </member>
            <member name="M:log4net.Core.Level.op_GreaterThan(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> 
                is greater than another specified <see cref="T:log4net.Core.Level"/>.
                </summary>
                <param name="l">A <see cref="T:log4net.Core.Level"/></param>
                <param name="r">A <see cref="T:log4net.Core.Level"/></param>
                <returns>
                <c>true</c> if <paramref name="l"/> is greater than 
                <paramref name="r"/>; otherwise, <c>false</c>.
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.op_LessThan(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> 
                is less than another specified <see cref="T:log4net.Core.Level"/>.
                </summary>
                <param name="l">A <see cref="T:log4net.Core.Level"/></param>
                <param name="r">A <see cref="T:log4net.Core.Level"/></param>
                <returns>
                <c>true</c> if <paramref name="l"/> is less than 
                <paramref name="r"/>; otherwise, <c>false</c>.
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.op_GreaterThanOrEqual(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> 
                is greater than or equal to another specified <see cref="T:log4net.Core.Level"/>.
                </summary>
                <param name="l">A <see cref="T:log4net.Core.Level"/></param>
                <param name="r">A <see cref="T:log4net.Core.Level"/></param>
                <returns>
                <c>true</c> if <paramref name="l"/> is greater than or equal to 
                <paramref name="r"/>; otherwise, <c>false</c>.
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.op_LessThanOrEqual(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Returns a value indicating whether a specified <see cref="T:log4net.Core.Level"/> 
                is less than or equal to another specified <see cref="T:log4net.Core.Level"/>.
                </summary>
                <param name="l">A <see cref="T:log4net.Core.Level"/></param>
                <param name="r">A <see cref="T:log4net.Core.Level"/></param>
                <returns>
                <c>true</c> if <paramref name="l"/> is less than or equal to 
                <paramref name="r"/>; otherwise, <c>false</c>.
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.op_Equality(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/> 
                objects have the same value.
                </summary>
                <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
                <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
                <returns>
                <c>true</c> if the value of <paramref name="l"/> is the same as the 
                value of <paramref name="r"/>; otherwise, <c>false</c>.
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.op_Inequality(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Returns a value indicating whether two specified <see cref="T:log4net.Core.Level"/> 
                objects have different values.
                </summary>
                <param name="l">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
                <param name="r">A <see cref="T:log4net.Core.Level"/> or <see langword="null"/>.</param>
                <returns>
                <c>true</c> if the value of <paramref name="l"/> is different from
                the value of <paramref name="r"/>; otherwise, <c>false</c>.
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.Level.Compare(log4net.Core.Level,log4net.Core.Level)">
                <summary>
                Compares two specified <see cref="T:log4net.Core.Level"/> instances.
                </summary>
                <param name="l">The first <see cref="T:log4net.Core.Level"/> to compare.</param>
                <param name="r">The second <see cref="T:log4net.Core.Level"/> to compare.</param>
                <returns>
                A 32-bit signed integer that indicates the relative order of the 
                two values compared. The return value has these meanings:
                <list type="table">
                	<listheader>
                		<term>Value</term>
                		<description>Meaning</description>
                	</listheader>
                	<item>
                		<term>Less than zero</term>
                		<description><paramref name="l"/> is less than <paramref name="r"/>.</description>
                	</item>
                	<item>
                		<term>Zero</term>
                		<description><paramref name="l"/> is equal to <paramref name="r"/>.</description>
                	</item>
                	<item>
                		<term>Greater than zero</term>
                		<description><paramref name="l"/> is greater than <paramref name="r"/>.</description>
                	</item>
                </list>
                </returns>
                <remarks>
                <para>
                Compares two levels.
                </para>
                </remarks>
            </member>
            <member name="F:log4net.Core.Level.Off">
                <summary>
                The <see cref="F:log4net.Core.Level.Off"/> level designates a higher level than all the rest.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Log4Net_Debug">
                <summary>
                The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events. 
                System unusable, emergencies.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Emergency">
                <summary>
                The <see cref="F:log4net.Core.Level.Emergency"/> level designates very severe error events. 
                System unusable, emergencies.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Fatal">
                <summary>
                The <see cref="F:log4net.Core.Level.Fatal"/> level designates very severe error events 
                that will presumably lead the application to abort.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Alert">
                <summary>
                The <see cref="F:log4net.Core.Level.Alert"/> level designates very severe error events. 
                Take immediate action, alerts.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Critical">
                <summary>
                The <see cref="F:log4net.Core.Level.Critical"/> level designates very severe error events. 
                Critical condition, critical.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Severe">
                <summary>
                The <see cref="F:log4net.Core.Level.Severe"/> level designates very severe error events.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Error">
                <summary>
                The <see cref="F:log4net.Core.Level.Error"/> level designates error events that might 
                still allow the application to continue running.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Warn">
                <summary>
                The <see cref="F:log4net.Core.Level.Warn"/> level designates potentially harmful 
                situations.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Notice">
                <summary>
                The <see cref="F:log4net.Core.Level.Notice"/> level designates informational messages 
                that highlight the progress of the application at the highest level.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Info">
                <summary>
                The <see cref="F:log4net.Core.Level.Info"/> level designates informational messages that 
                highlight the progress of the application at coarse-grained level.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Debug">
                <summary>
                The <see cref="F:log4net.Core.Level.Debug"/> level designates fine-grained informational 
                events that are most useful to debug an application.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Fine">
                <summary>
                The <see cref="F:log4net.Core.Level.Fine"/> level designates fine-grained informational 
                events that are most useful to debug an application.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Trace">
                <summary>
                The <see cref="F:log4net.Core.Level.Trace"/> level designates fine-grained informational 
                events that are most useful to debug an application.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Finer">
                <summary>
                The <see cref="F:log4net.Core.Level.Finer"/> level designates fine-grained informational 
                events that are most useful to debug an application.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Verbose">
                <summary>
                The <see cref="F:log4net.Core.Level.Verbose"/> level designates fine-grained informational 
                events that are most useful to debug an application.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.Finest">
                <summary>
                The <see cref="F:log4net.Core.Level.Finest"/> level designates fine-grained informational 
                events that are most useful to debug an application.
                </summary>
            </member>
            <member name="F:log4net.Core.Level.All">
                <summary>
                The <see cref="F:log4net.Core.Level.All"/> level designates the lowest level possible.
                </summary>
            </member>
            <member name="P:log4net.Core.Level.Name">
                <summary>
                Gets the name of this level.
                </summary>
                <value>
                The name of this level.
                </value>
                <remarks>
                <para>
                Gets the name of this level.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.Level.Value">
                <summary>
                Gets the value of this level.
                </summary>
                <value>
                The value of this level.
                </value>
                <remarks>
                <para>
                Gets the value of this level.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.Level.DisplayName">
                <summary>
                Gets the display name of this level.
                </summary>
                <value>
                The display name of this level.
                </value>
                <remarks>
                <para>
                Gets the display name of this level.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.LevelCollection">
                <summary>
                A strongly-typed collection of <see cref="T:log4net.Core.Level"/> objects.
                </summary>
                <author>Nicko Cadell</author>
            </member>
            <member name="M:log4net.Core.LevelCollection.ReadOnly(log4net.Core.LevelCollection)">
                <summary>
                Creates a read-only wrapper for a <c>LevelCollection</c> instance.
                </summary>
                <param name="list">list to create a readonly wrapper arround</param>
                <returns>
                A <c>LevelCollection</c> wrapper that is read-only.
                </returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.#ctor">
                <summary>
                Initializes a new instance of the <c>LevelCollection</c> class
                that is empty and has the default initial capacity.
                </summary>
            </member>
            <member name="M:log4net.Core.LevelCollection.#ctor(System.Int32)">
                <summary>
                Initializes a new instance of the <c>LevelCollection</c> class
                that has the specified initial capacity.
                </summary>
                <param name="capacity">
                The number of elements that the new <c>LevelCollection</c> is initially capable of storing.
                </param>
            </member>
            <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection)">
                <summary>
                Initializes a new instance of the <c>LevelCollection</c> class
                that contains elements copied from the specified <c>LevelCollection</c>.
                </summary>
                <param name="c">The <c>LevelCollection</c> whose elements are copied to the new collection.</param>
            </member>
            <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.Level[])">
                <summary>
                Initializes a new instance of the <c>LevelCollection</c> class
                that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> array.
                </summary>
                <param name="a">The <see cref="T:log4net.Core.Level"/> array whose elements are copied to the new list.</param>
            </member>
            <member name="M:log4net.Core.LevelCollection.#ctor(System.Collections.ICollection)">
                <summary>
                Initializes a new instance of the <c>LevelCollection</c> class
                that contains elements copied from the specified <see cref="T:log4net.Core.Level"/> collection.
                </summary>
                <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements are copied to the new list.</param>
            </member>
            <member name="M:log4net.Core.LevelCollection.#ctor(log4net.Core.LevelCollection.Tag)">
                <summary>
                Allow subclasses to avoid our default constructors
                </summary>
                <param name="tag"></param>
            </member>
            <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[])">
                <summary>
                Copies the entire <c>LevelCollection</c> to a one-dimensional
                <see cref="T:log4net.Core.Level"/> array.
                </summary>
                <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param>
            </member>
            <member name="M:log4net.Core.LevelCollection.CopyTo(log4net.Core.Level[],System.Int32)">
                <summary>
                Copies the entire <c>LevelCollection</c> to a one-dimensional
                <see cref="T:log4net.Core.Level"/> array, starting at the specified index of the target array.
                </summary>
                <param name="array">The one-dimensional <see cref="T:log4net.Core.Level"/> array to copy to.</param>
                <param name="start">The zero-based index in <paramref name="array"/> at which copying begins.</param>
            </member>
            <member name="M:log4net.Core.LevelCollection.Add(log4net.Core.Level)">
                <summary>
                Adds a <see cref="T:log4net.Core.Level"/> to the end of the <c>LevelCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Core.Level"/> to be added to the end of the <c>LevelCollection</c>.</param>
                <returns>The index at which the value has been added.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.Clear">
                <summary>
                Removes all elements from the <c>LevelCollection</c>.
                </summary>
            </member>
            <member name="M:log4net.Core.LevelCollection.Clone">
                <summary>
                Creates a shallow copy of the <see cref="T:log4net.Core.LevelCollection"/>.
                </summary>
                <returns>A new <see cref="T:log4net.Core.LevelCollection"/> with a shallow copy of the collection data.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.Contains(log4net.Core.Level)">
                <summary>
                Determines whether a given <see cref="T:log4net.Core.Level"/> is in the <c>LevelCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Core.Level"/> to check for.</param>
                <returns><c>true</c> if <paramref name="item"/> is found in the <c>LevelCollection</c>; otherwise, <c>false</c>.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.IndexOf(log4net.Core.Level)">
                <summary>
                Returns the zero-based index of the first occurrence of a <see cref="T:log4net.Core.Level"/>
                in the <c>LevelCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Core.Level"/> to locate in the <c>LevelCollection</c>.</param>
                <returns>
                The zero-based index of the first occurrence of <paramref name="item"/> 
                in the entire <c>LevelCollection</c>, if found; otherwise, -1.
                </returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.Insert(System.Int32,log4net.Core.Level)">
                <summary>
                Inserts an element into the <c>LevelCollection</c> at the specified index.
                </summary>
                <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
                <param name="item">The <see cref="T:log4net.Core.Level"/> to insert.</param>
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="index"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Core.LevelCollection.Remove(log4net.Core.Level)">
                <summary>
                Removes the first occurrence of a specific <see cref="T:log4net.Core.Level"/> from the <c>LevelCollection</c>.
                </summary>
                <param name="item">The <see cref="T:log4net.Core.Level"/> to remove from the <c>LevelCollection</c>.</param>
                <exception cref="T:System.ArgumentException">
                The specified <see cref="T:log4net.Core.Level"/> was not found in the <c>LevelCollection</c>.
                </exception>
            </member>
            <member name="M:log4net.Core.LevelCollection.RemoveAt(System.Int32)">
                <summary>
                Removes the element at the specified index of the <c>LevelCollection</c>.
                </summary>
                <param name="index">The zero-based index of the element to remove.</param>
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="index"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Core.LevelCollection.GetEnumerator">
                <summary>
                Returns an enumerator that can iterate through the <c>LevelCollection</c>.
                </summary>
                <returns>An <see cref="T:log4net.Core.LevelCollection.Enumerator"/> for the entire <c>LevelCollection</c>.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.LevelCollection)">
                <summary>
                Adds the elements of another <c>LevelCollection</c> to the current <c>LevelCollection</c>.
                </summary>
                <param name="x">The <c>LevelCollection</c> whose elements should be added to the end of the current <c>LevelCollection</c>.</param>
                <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.AddRange(log4net.Core.Level[])">
                <summary>
                Adds the elements of a <see cref="T:log4net.Core.Level"/> array to the current <c>LevelCollection</c>.
                </summary>
                <param name="x">The <see cref="T:log4net.Core.Level"/> array whose elements should be added to the end of the <c>LevelCollection</c>.</param>
                <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.AddRange(System.Collections.ICollection)">
                <summary>
                Adds the elements of a <see cref="T:log4net.Core.Level"/> collection to the current <c>LevelCollection</c>.
                </summary>
                <param name="col">The <see cref="T:log4net.Core.Level"/> collection whose elements should be added to the end of the <c>LevelCollection</c>.</param>
                <returns>The new <see cref="P:log4net.Core.LevelCollection.Count"/> of the <c>LevelCollection</c>.</returns>
            </member>
            <member name="M:log4net.Core.LevelCollection.TrimToSize">
                <summary>
                Sets the capacity to the actual number of elements.
                </summary>
            </member>
            <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32)">
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="i"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="M:log4net.Core.LevelCollection.ValidateIndex(System.Int32,System.Boolean)">
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="i"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="i"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="P:log4net.Core.LevelCollection.Count">
                <summary>
                Gets the number of elements actually contained in the <c>LevelCollection</c>.
                </summary>
            </member>
            <member name="P:log4net.Core.LevelCollection.IsSynchronized">
                <summary>
                Gets a value indicating whether access to the collection is synchronized (thread-safe).
                </summary>
                <value>true if access to the ICollection is synchronized (thread-safe); otherwise, false.</value>
            </member>
            <member name="P:log4net.Core.LevelCollection.SyncRoot">
                <summary>
                Gets an object that can be used to synchronize access to the collection.
                </summary>
            </member>
            <member name="P:log4net.Core.LevelCollection.Item(System.Int32)">
                <summary>
                Gets or sets the <see cref="T:log4net.Core.Level"/> at the specified index.
                </summary>
                <param name="index">The zero-based index of the element to get or set.</param>
                <exception cref="T:System.ArgumentOutOfRangeException">
                <para><paramref name="index"/> is less than zero</para>
                <para>-or-</para>
                <para><paramref name="index"/> is equal to or greater than <see cref="P:log4net.Core.LevelCollection.Count"/>.</para>
                </exception>
            </member>
            <member name="P:log4net.Core.LevelCollection.IsFixedSize">
                <summary>
                Gets a value indicating whether the collection has a fixed size.
                </summary>
                <value>true if the collection has a fixed size; otherwise, false. The default is false</value>
            </member>
            <member name="P:log4net.Core.LevelCollection.IsReadOnly">
                <summary>
                Gets a value indicating whether the IList is read-only.
                </summary>
                <value>true if the collection is read-only; otherwise, false. The default is false</value>
            </member>
            <member name="P:log4net.Core.LevelCollection.Capacity">
                <summary>
                Gets or sets the number of elements the <c>LevelCollection</c> can contain.
                </summary>
            </member>
            <member name="T:log4net.Core.LevelCollection.ILevelCollectionEnumerator">
                <summary>
                Supports type-safe iteration over a <see cref="T:log4net.Core.LevelCollection"/>.
                </summary>
            </member>
            <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.MoveNext">
                <summary>
                Advances the enumerator to the next element in the collection.
                </summary>
                <returns>
                <c>true</c> if the enumerator was successfully advanced to the next element; 
                <c>false</c> if the enumerator has passed the end of the collection.
                </returns>
                <exception cref="T:System.InvalidOperationException">
                The collection was modified after the enumerator was created.
                </exception>
            </member>
            <member name="M:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Reset">
                <summary>
                Sets the enumerator to its initial position, before the first element in the collection.
                </summary>
            </member>
            <member name="P:log4net.Core.LevelCollection.ILevelCollectionEnumerator.Current">
                <summary>
                Gets the current element in the collection.
                </summary>
            </member>
            <member name="T:log4net.Core.LevelCollection.Tag">
                <summary>
                Type visible only to our subclasses
                Used to access protected constructor
                </summary>
            </member>
            <member name="F:log4net.Core.LevelCollection.Tag.Default">
                <summary>
                A value
                </summary>
            </member>
            <member name="T:log4net.Core.LevelCollection.Enumerator">
                <summary>
                Supports simple iteration over a <see cref="T:log4net.Core.LevelCollection"/>.
                </summary>
            </member>
            <member name="M:log4net.Core.LevelCollection.Enumerator.#ctor(log4net.Core.LevelCollection)">
                <summary>
                Initializes a new instance of the <c>Enumerator</c> class.
                </summary>
                <param name="tc"></param>
            </member>
            <member name="M:log4net.Core.LevelCollection.Enumerator.MoveNext">
                <summary>
                Advances the enumerator to the next element in the collection.
                </summary>
                <returns>
                <c>true</c> if the enumerator was successfully advanced to the next element; 
                <c>false</c> if the enumerator has passed the end of the collection.
                </returns>
                <exception cref="T:System.InvalidOperationException">
                The collection was modified after the enumerator was created.
                </exception>
            </member>
            <member name="M:log4net.Core.LevelCollection.Enumerator.Reset">
                <summary>
                Sets the enumerator to its initial position, before the first element in the collection.
                </summary>
            </member>
            <member name="P:log4net.Core.LevelCollection.Enumerator.Current">
                <summary>
                Gets the current element in the collection.
                </summary>
            </member>
            <member name="T:log4net.Core.LevelEvaluator">
                <summary>
                An evaluator that triggers at a threshold level
                </summary>
                <remarks>
                <para>
                This evaluator will trigger if the level of the event
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
                level.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="F:log4net.Core.LevelEvaluator.m_threshold">
                <summary>
                The threshold for triggering
                </summary>
            </member>
            <member name="M:log4net.Core.LevelEvaluator.#ctor">
                <summary>
                Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold.
                </summary>
                <remarks>
                <para>
                Create a new evaluator using the <see cref="F:log4net.Core.Level.Off"/> threshold.
                </para>
                <para>
                This evaluator will trigger if the level of the event
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
                level.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LevelEvaluator.#ctor(log4net.Core.Level)">
                <summary>
                Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold.
                </summary>
                <param name="threshold">the threshold to trigger at</param>
                <remarks>
                <para>
                Create a new evaluator using the specified <see cref="T:log4net.Core.Level"/> threshold.
                </para>
                <para>
                This evaluator will trigger if the level of the event
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
                level.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LevelEvaluator.IsTriggeringEvent(log4net.Core.LoggingEvent)">
                <summary>
                Is this <paramref name="loggingEvent"/> the triggering event?
                </summary>
                <param name="loggingEvent">The event to check</param>
                <returns>This method returns <c>true</c>, if the event level
                is equal or higher than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>. 
                Otherwise it returns <c>false</c></returns>
                <remarks>
                <para>
                This evaluator will trigger if the level of the event
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
                level.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.LevelEvaluator.Threshold">
                <summary>
                the threshold to trigger at
                </summary>
                <value>
                The <see cref="T:log4net.Core.Level"/> that will cause this evaluator to trigger
                </value>
                <remarks>
                <para>
                This evaluator will trigger if the level of the event
                passed to <see cref="M:IsTriggeringEvent(LoggingEvent)"/>
                is equal to or greater than the <see cref="P:log4net.Core.LevelEvaluator.Threshold"/>
                level.
                </para>
                </remarks>
            </member>
            <member name="T:log4net.Core.LevelMap">
                <summary>
                Mapping between string name and Level object
                </summary>
                <remarks>
                <para>
                Mapping between string name and <see cref="T:log4net.Core.Level"/> object.
                This mapping is held separately for each <see cref="T:log4net.Repository.ILoggerRepository"/>.
                The level name is case insensitive.
                </para>
                </remarks>
                <author>Nicko Cadell</author>
            </member>
            <member name="F:log4net.Core.LevelMap.m_mapName2Level">
                <summary>
                Mapping from level name to Level object. The
                level name is case insensitive
                </summary>
            </member>
            <member name="M:log4net.Core.LevelMap.#ctor">
                <summary>
                Construct the level map
                </summary>
                <remarks>
                <para>
                Construct the level map.
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LevelMap.Clear">
                <summary>
                Clear the internal maps of all levels
                </summary>
                <remarks>
                <para>
                Clear the internal maps of all levels
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32)">
                <summary>
                Create a new Level and add it to the map
                </summary>
                <param name="name">the string to display for the Level</param>
                <param name="value">the level value to give to the Level</param>
                <remarks>
                <para>
                Create a new Level and add it to the map
                </para>
                </remarks>
                <seealso cref="M:Add(string,int,string)"/>
            </member>
            <member name="M:log4net.Core.LevelMap.Add(System.String,System.Int32,System.String)">
                <summary>
                Create a new Level and add it to the map
                </summary>
                <param name="name">the string to display for the Level</param>
                <param name="value">the level value to give to the Level</param>
                <param name="displayName">the display name to give to the Level</param>
                <remarks>
                <para>
                Create a new Level and add it to the map
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LevelMap.Add(log4net.Core.Level)">
                <summary>
                Add a Level to the map
                </summary>
                <param name="level">the Level to add</param>
                <remarks>
                <para>
                Add a Level to the map
                </para>
                </remarks>
            </member>
            <member name="M:log4net.Core.LevelMap.LookupWithDefault(log4net.Core.Level)">
                <summary>
                Lookup a named level from the map
                </summary>
                <param name="defaultLevel">the name of the level to lookup is taken from this level. 
                If the level is not set on the map then this level is added</param>
                <returns>the level in the map with the name specified</returns>
                <remarks>
                <para>
                Lookup a named level from the map. The name of the level to lookup is taken
                from the <see cref="P:log4net.Core.Level.Name"/> property of the <paramref name="defaultLevel"/>
                argument.
                </para>
                <para>
                If no level with the specified name is found then the 
                <paramref name="defaultLevel"/> argument is added to the level map
                and returned.
                </para>
                </remarks>
            </member>
            <member name="P:log4net.Core.Lev