text:
/*******************************************************************************
 *
 * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
 *
 ******************************************************************************/

/*
 * Copyright (C) 2000 - 2013, Intel Corp.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 *    substantially similar to the "NO WARRANTY" disclaimer below
 *    ("Disclaimer") and any redistribution must be conditioned upon
 *    including a substantially similar Disclaimer requirement for further
 *    binary redistribution.
 * 3. Neither the names of the above-listed copyright holders nor the names
 *    of any contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 */

#include "acpi.h"
#include "accommon.h"
#include "acdisasm.h"

#ifdef ACPI_DISASSEMBLER

#define _COMPONENT          ACPI_CA_DEBUGGER
        ACPI_MODULE_NAME    ("dbresrcs")

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmIrqDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags()
 *
 ******************************************************************************/

void
AcpiDmIrqDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);
    AcpiOsPrintf ("%s (",
        AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]);

    /* Decode flags byte if present */

    if (Length & 1)
    {
        AcpiOsPrintf ("%s, %s, %s, ",
            AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)],
            AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)],
            AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]);
    }

    /* Insert a descriptor name */

    AcpiDmDescriptorName ();
    AcpiOsPrintf (")\n");

    AcpiDmIndent (Level + 1);
    AcpiDmBitList (Resource->Irq.IrqMask);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmDmaDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode a DMA descriptor
 *
 ******************************************************************************/

void
AcpiDmDmaDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);
    AcpiOsPrintf ("DMA (%s, %s, %s, ",
        AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)],
        AcpiGbl_BmDecode  [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)],
        AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]);

    /* Insert a descriptor name */

    AcpiDmDescriptorName ();
    AcpiOsPrintf (")\n");

    AcpiDmIndent (Level + 1);
    AcpiDmBitList (Resource->Dma.DmaChannelMask);
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmFixedDmaDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode a FixedDMA descriptor
 *
 ******************************************************************************/

void
AcpiDmFixedDmaDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);
    AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ",
        Resource->FixedDma.RequestLines,
        Resource->FixedDma.Channels);

    if (Resource->FixedDma.Width <= 5)
    {
        AcpiOsPrintf ("%s, ",
            AcpiGbl_DtsDecode [Resource->FixedDma.Width]);
    }
    else
    {
        AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width);
    }

    /* Insert a descriptor name */

    AcpiDmDescriptorName ();
    AcpiOsPrintf (")\n");
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmIoDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode an IO descriptor
 *
 ******************************************************************************/

void
AcpiDmIoDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);
    AcpiOsPrintf ("IO (%s,\n",
        AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);

    AcpiDmIndent (Level + 1);
    AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");

    AcpiDmIndent (Level + 1);
    AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");

    AcpiDmIndent (Level + 1);
    AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");

    AcpiDmIndent (Level + 1);
    AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");

    /* Insert a descriptor name */

    AcpiDmIndent (Level + 1);
    AcpiDmDescriptorName ();
    AcpiOsPrintf (")\n");
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmFixedIoDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode a Fixed IO descriptor
 *
 ******************************************************************************/

void
AcpiDmFixedIoDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);
    AcpiOsPrintf ("FixedIO (\n");

    AcpiDmIndent (Level + 1);
    AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");

    AcpiDmIndent (Level + 1);
    AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");

    /* Insert a descriptor name */

    AcpiDmIndent (Level + 1);
    AcpiDmDescriptorName ();
    AcpiOsPrintf (")\n");
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmStartDependentDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode a Start Dependendent functions descriptor
 *
 ******************************************************************************/

void
AcpiDmStartDependentDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);

    if (Length & 1)
    {
        AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n",
            (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags),
            (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2));
    }
    else
    {
        AcpiOsPrintf ("StartDependentFnNoPri ()\n");
    }

    AcpiDmIndent (Level);
    AcpiOsPrintf ("{\n");
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmEndDependentDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode an End Dependent functions descriptor
 *
 ******************************************************************************/

void
AcpiDmEndDependentDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmIndent (Level);
    AcpiOsPrintf ("}\n");
    AcpiDmIndent (Level);
    AcpiOsPrintf ("EndDependentFn ()\n");
}

/*******************************************************************************
 *
 * FUNCTION:    AcpiDmVendorSmallDescriptor
 *
 * PARAMETERS:  Resource            - Pointer to the resource descriptor
 *              Length              - Length of the descriptor in bytes
 *              Level               - Current source code indentation level
 *
 * RETURN:      None
 *
 * DESCRIPTION: Decode a Vendor Small Descriptor
 *
 ******************************************************************************/

void
AcpiDmVendorSmallDescriptor (
    AML_RESOURCE            *Resource,
    UINT32                  Length,
    UINT32                  Level)
{

    AcpiDmVendorCommon ("Short",
        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
        Length, Level);
}

#endif


text:
 /*
 * Main Wrapper
 */
.nlposts-container {

}
.nlposts-container a:focus {
    outline: thin dotted #333;
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
}
.nlposts-container a:hover,
.nlposts-container a:active {
    outline: 0;
}
.nlposts-container img {
    max-width: 100%;
    vertical-align: middle;
    border: 0;
    -ms-interpolation-mode: bicubic;
}
.nlposts-container button,
.nlposts-container input,
.nlposts-container select,
.nlposts-container textarea {
    margin: 0;
    font-size: 100%;
    vertical-align: middle;
}
.nlposts-container button,
.nlposts-container input {
    *overflow: visible;
    line-height: normal;
}
.nlposts-container button::-moz-focus-inner,
.nlposts-container input::-moz-focus-inner {
    padding: 0;
    border: 0;
}
.nlposts-container button,
.nlposts-container input[type="button"],
.nlposts-container input[type="reset"],
.nlposts-container input[type="submit"] {
    cursor: pointer;
    -webkit-appearance: button;
}
.nlposts-container input[type="search"] {
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    -webkit-appearance: textfield;
}
.nlposts-container input[type="search"]::-webkit-search-decoration,
.nlposts-container input[type="search"]::-webkit-search-cancel-button {
    -webkit-appearance: none;
}
.nlposts-container textarea {
    overflow: auto;
    vertical-align: top;
}
/*
 * Unordered Lists <<<<<<<<<<<<<<<<<<<<
 *
 * container 'div'
 */
.nlposts-ulist-container .nlposts-wrapper {}
.nlposts-ulist-container .nlposts-ulist-wtitle {
    color: #666;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    line-height: 2.6em;
    text-transform: uppercase;
}
.nlposts-ulist-container .nlposts-ulist {}
.nlposts-ulist-container .nav {
    margin-right: 0;
    margin-left: auto;
    margin-bottom: 18px;
    list-style: none;
}
.nlposts-ulist-container .nav > li > a {
    display: block;
}
.nlposts-ulist-container .nav > li > a:hover {
    text-decoration: none;
    background-color: #eeeeee;
}
.nlposts-ulist-container .nav li {
    margin-top: 9px;
}
.nlposts-ulist-container .nav-tabs {
    *zoom: 1;
}
.nlposts-ulist-container .nav-tabs:before,
.nlposts-ulist-container .nav-tabs:after {
    display: table;
    content: "";
}
.nlposts-ulist-container .nav-tabs:after {
    clear: both;
}
.nlposts-ulist-container .nav-tabs > li {
	float: right;
}

.nlposts-ulist-container .nav-tabs > li > a {
	padding-left: 12px;
	padding-right: 12px;
	margin-left: 2px;
	margin-right: auto;
        line-height: 14px;
}
.nlposts-ulist-container .nav-tabs {
    border-bottom: 1px solid #ddd;
}
.nlposts-ulist-container .nav-tabs > li {
    margin-bottom: -1px;
}
.nlposts-ulist-container .nav-tabs > li > a {
    padding-top: 8px;
    padding-bottom: 8px;
    line-height: 18px;
    border: 1px solid transparent;
    -webkit-border-radius: 4px 0 0 4px;
    -moz-border-radius: 4px 0 0 4px;
    border-radius: 4px 0 0 4px;
}
.nlposts-ulist-container .nav-tabs > li > a:hover {
    border-color: #eeeeee #eeeeee #dddddd;
}
.nlposts-ulist-container .nav-tabs > .active > a,
.nlposts-ulist-container .nav-tabs > .active > a:hover {
    color: #555555;
    background-color: #ffffff;
    border: 1px solid #ddd;
    border-bottom-color: transparent;
    cursor: default;
}
.nlposts-ulist-container .nav-pills > li > a {
    padding-top: 8px;
    padding-bottom: 8px;
    margin-top: 2px;
    margin-bottom: 2px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.nlposts-ulist-container .nav-pills > .active > a,
.nlposts-ulist-container .nav-pills > .active > a:hover {
    color: #ffffff;
    background-color: #333333;
}
.nlposts-ulist-container .nav-stacked > li {
    float: none;
}
.nlposts-ulist-container .nav-stacked > li > a {
    margin-left: 0;
    margin-right: auto;
}
.nlposts-ulist-container .nav-tabs.nav-stacked {
    border-bottom: 0;
}
.nlposts-ulist-container .nav-tabs.nav-stacked > li > a {
    border: 1px solid #ddd;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
}
.nlposts-ulist-container .nav-tabs.nav-stacked > li:first-child > a {
    -webkit-border-radius: 4px 0 0 4px;
    -moz-border-radius: 4px 0 0 4px;
    border-radius: 4px 0 0 4px;
}
.nlposts-ulist-container .nav-tabs.nav-stacked > li:last-child > a {
    -webkit-border-radius: 0 4px 4px 0;
    -moz-border-radius: 0 4px 4px 0;
    border-radius: 0 4px 4px 0;
}
.nlposts-ulist-container .thumbnails {
    margin-right: -20px;
    margin-left: auto;
    list-style: none;
    *zoom: 1;
}
.nlposts-ulist-container .thumbnails:before,
.nlposts-ulist-container .thumbnails:after {
    display: table;
    content: "";
}
.nlposts-ulist-container .thumbnails:after {
    clear: both;
}
.nlposts-ulist-container .thumbnails {
    margin-right: 0;
    margin-left: auto;
}
.nlposts-ulist-container .thumbnails > li {
    float: right;
    margin-bottom: 18px;
}
.nlposts-ulist-container .nlposts-ulist-thumbnail-litem a:hover {
    border-color: #333333;
    -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
    -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
    box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
}
.nlposts-ulist-container .nlposts-ulist-thumbnail-litem a > img {
    display: block;
    padding: 4px;
    line-height: 1;
    border: 1px solid #ddd;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    max-width: 100%;
    margin-right:auto;
    margin-left: auto;
    /* filter: url(filters.svg#grayscale); /* Firefox, keeping it here in case they fix this bug (transparent image) */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(1); /* Google Chrome & Safari 6+ */
    opacity: 0.7;
}
.nlposts-ulist-container .nlposts-ulist-thumbnail-litem a > img:hover {
    filter: none;
    -webkit-filter: grayscale(0);
    opacity: 1;
}
.nlposts-ulist-container .nlposts-ulist-thumbnail-litem .caption {
    padding: 9px;
}
.nlposts-ulist-container .nlposts-ulist-litem .nlposts-ulist-excerpt {
    margin:0 !important;
    padding:0 !important;
    list-style: none;
}
.nlposts-ulist-container .pagination {
    height: 36px;
    margin: 18px 0;
    text-align: center;
}
.nlposts-ulist-container .pagination ul {
    margin-right: 0;
    margin-left: auto;
    display: inline-block;
    *display: inline;
    /* IE7 inline-block hack */
    *zoom: 1;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.nlposts-ulist-container .pagination li {
    display: inline;
}
.nlposts-ulist-container .pagination a, .nlposts-ulist-container .pagination span {
    float: right;
    padding: 0 14px;
    line-height: 34px;
    text-decoration: none;
    border: 1px solid #ddd;
    border-right-width: 0;
}
.nlposts-ulist-container .pagination a:hover,
.nlposts-ulist-container .pagination .current {
    background-color: #f5f5f5;
}
.nlposts-ulist-container .pagination .current {
    color: #999999;
    cursor: default;
}
.nlposts-ulist-container .pagination span,
.nlposts-ulist-container .pagination .disabled a,
.nlposts-ulist-container .pagination .disabled a:hover {
    color: #999999;
    background-color: transparent;
    cursor: default;
}
.nlposts-ulist-container .pagination li:first-child a, .nlposts-ulist-container .pagination li:first-child span {
    border-right-width: 1px;
    -webkit-border-radius: 3px 3px 0 0;
    -moz-border-radius: 3px 3px 0 0;
    border-radius: 3px 3px 0 0;
}
.nlposts-ulist-container .pagination li:last-child a, .nlposts-ulist-container .pagination li:last-child span {
    -webkit-border-radius: 0 0 3px 3px;
    -moz-border-radius: 0 0 3px 3px;
    border-radius: 0 0 3px 3px;
}

/*
 * Unordered Lists <<<<<<<<<<<<<<<<<<<<<<
 */
/*
 * Ordered Lists <<<<<<<<<<<<<<<<<<<<
 */
.nlposts-olist-container .nlposts-wrapper {}
.nlposts-olist-container .nlposts-olist-wtitle {
    color: #666;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    line-height: 2.6em;
    text-transform: uppercase;
}
.nlposts-olist-container .nav {
    margin-right: 0;
    margin-left: auto;
}
.nlposts-olist-container .nav > li > a {
    display: block;
}
.nlposts-olist-container .nav > li > a:hover {
    text-decoration: none;
    background-color: #eeeeee;
}
.nlposts-olist-container .nav li {
    margin-top: 9px;
}
.nlposts-olist-container .nav-tabs {
    *zoom: 1;
}
.nlposts-olist-container .nav-tabs:before,
.nlposts-olist-container .nav-tabs:after {
    display: table;
    content: "";
}
.nlposts-olist-container .nav-tabs:after {
    clear: both;
}
.nlposts-olist-container .nav-tabs > li {
    float: right;
}
.nlposts-olist-container .nav-tabs > li > a {
    padding-left: 12px;
    padding-right: 12px;
    margin-left: 2px;
    margin-right: auto;
}
.nlposts-olist-container .nav-tabs {
    border-bottom: 1px solid #ddd;
}
.nlposts-olist-container .nav-tabs > li {
    margin-bottom: -1px;
}
.nlposts-olist-container .nav-tabs > li > a {
    padding-top: 8px;
    padding-bottom: 8px;
    line-height: 18px;
    border: 1px solid transparent;
    -webkit-border-radius: 4px 0 0 4px;
    -moz-border-radius: 4px 0 0 4px;
    border-radius: 4px 0 0 4px;
}
.nlposts-olist-container .nav-tabs > li > a:hover {
    border-color: #eeeeee #eeeeee #dddddd;
}
.nlposts-olist-container .nav-tabs > .active > a,
.nlposts-olist-container .nav-tabs > .active > a:hover {
    color: #555555;
    background-color: #ffffff;
    border: 1px solid #ddd;
    border-bottom-color: transparent;
    cursor: default;
}
.nlposts-olist-container .nav-pills > li > a {
    padding-top: 8px;
    padding-bottom: 8px;
    margin-top: 2px;
    margin-bottom: 2px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.nlposts-olist-container .nav-pills > .active > a,
.nlposts-olist-container .nav-pills > .active > a:hover {
    color: #ffffff;
    background-color: #333333;
}
.nlposts-olist-container .nav-stacked > li {
    float: none;
}
.nlposts-olist-container .nav-stacked > li > a {
    margin-left: 0;
    margin-right: auto;
}
.nlposts-olist-container .nav-stacked > li > a {
    margin-right: 0;
}
.nlposts-olist-container .nav-tabs.nav-stacked {
    border-bottom: 0;
}
.nlposts-olist-container .nav-tabs.nav-stacked > li > a {
    border: 1px solid #ddd;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
}
.nlposts-olist-container .nav-tabs.nav-stacked > li:first-child > a {
    -webkit-border-radius: 4px 0 0 4px;
    -moz-border-radius: 4px 0 0 4px;
    border-radius: 4px 0 0 4px;
}
.nlposts-olist-container .nav-tabs.nav-stacked > li:last-child > a {
    -webkit-border-radius: 0 4px 4px 0;
    -moz-border-radius: 0 4px 4px 0;
    border-radius: 0 4px 4px 0;
}
.nlposts-olist-container .nav-tabs.nav-stacked > li > a:hover {
    border-color: #ddd;
    z-index: 2;
}
.nlposts-olist-container .nlposts-olist-meta {
    font-style: italic;
}
.nlposts-olist-container .thumbnails {
    margin-right: -20px;
    margin-left: auto;
    list-style: none;
    *zoom: 1;
}
.nlposts-olist-container .thumbnails:before,
.nlposts-olist-container .thumbnails:after {
    display: table;
    content: "";
}
.nlposts-olist-container .thumbnails:after {
    clear: both;
}
.nlposts-olist-container .thumbnails {
    margin-right: 0;
    margin-left: auto;
}
.nlposts-olist-container .thumbnails > li {
    float: right;
    margin-bottom: 18px;
}
.nlposts-olist-container .nlposts-olist-thumbnail-litem a:hover {
    border-color: #333333;
    -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
    -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
    box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
}
.nlposts-olist-container .nlposts-olist-thumbnail-litem a > img {
    margin-right:auto;
    margin-left: auto;
    display: block;
    padding: 4px;
    line-height: 1;
    border: 1px solid #ddd;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    max-width: 100%;
    /* filter: url(filters.svg#grayscale); /* Firefox, keeping it here in case they fix this bug (transparent image) */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(1); /* Google Chrome & Safari 6+ */
    opacity: 0.7;
}
.nlposts-olist-container .nlposts-olist-thumbnail-litem a > img:hover {
    filter: none;
    -webkit-filter: grayscale(0);
    opacity: 1;
}
.nlposts-olist-container .nlposts-olist-thumbnail-litem .caption {
    padding: 9px;
}
.nlposts-olist-container .nlposts-olist-litem .nlposts-olist-excerpt {
    margin:0 !important;
    padding:0 !important;
    list-style: none;
}
.nlposts-olist-container .pagination {
    height: 36px;
    margin: 18px 0;
    text-align: center;
}
.nlposts-olist-container .pagination ul {
    margin-right: 0;
    margin-left: auto;
    display: inline-block;
    *display: inline;
    /* IE7 inline-block hack */
    *zoom: 1;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.nlposts-olist-container .pagination li {
    display: inline;
}
.nlposts-olist-container .pagination a, .nlposts-olist-container .pagination span {
    float: right;
    padding: 0 14px;
    line-height: 34px;
    text-decoration: none;
    border: 1px solid #ddd;
    border-right-width: 0;
}
.nlposts-olist-container .pagination a:hover,
.nlposts-olist-container .pagination .current {
    background-color: #f5f5f5;
}
.nlposts-olist-container .pagination .current {
    color: #999999;
    cursor: default;
}
.nlposts-olist-container .pagination span,
.nlposts-olist-container .pagination .disabled a,
.nlposts-olist-container .pagination .disabled a:hover {
    color: #999999;
    background-color: transparent;
    cursor: default;
}
.nlposts-olist-container .pagination li:first-child a, .nlposts-olist-container .pagination li:first-child span {
    border-right-width: 1px;
    -webkit-border-radius: 3px 3px 0 0;
    -moz-border-radius: 3px 3px 0 0;
    border-radius: 3px 3px 0 0;
}
.nlposts-olist-container .pagination li:last-child a, .nlposts-olist-container .pagination li:last-child span {
    -webkit-border-radius: 0 0 3px 3px;
    -moz-border-radius: 0 0 3px 3px;
    border-radius: 0 0 3px 3px;
}
/*
 * Ordered Lists <<<<<<<<<<<<<<<<<<<<<<
 */
/*
 * Block
 */
.nlposts-block-container .nlposts-block-item {
    float:right;
    display:block;
    width:45%;
    margin-right: auto;
    margin-left: auto;
    margin-left: 5px;
    margin-right: auto;
}
.nlposts-block-container .nlposts-block-meta {
    padding-right: 18px;
    padding-left: 0;
    background: transparent url("../img/calendar_icon.png") no-repeat right center;
    color: #444;
    border-bottom: 1px dotted #ddd;
    margin-bottom: 5px;
    font-style: italic;
}
.nlposts-block-container .thumbnails {
    /*margin-left: -20px;*/
    list-style: none;
    *zoom: 1;
}
.nlposts-block-container .thumbnails:before,
.nlposts-block-container .thumbnails:after {
    display: table;
    content: "";
}
.nlposts-block-container .thumbnails:after {
    clear: both;
}
.nlposts-block-container .thumbnails {
    margin-right: 0;
    margin-left: auto;
}
.nlposts-block-container .thumbnails > li {
    float: right;
    margin-bottom: 18px;
}
.nlposts-block-container .nlposts-block-thumbnail-litem a > img {
    margin-right:auto;
    margin-left: auto;
    display: block;
    padding: 4px;
    line-height: 1;
    border: 1px solid #ddd;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
    max-width: 100%;
    /* filter: url(filters.svg#grayscale); /* Firefox, keeping it here in case they fix this bug (transparent image) */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(1); /* Google Chrome & Safari 6+ */
    opacity: 0.7;
}
.nlposts-block-container .nlposts-block-thumbnail-litem a > img:hover {
    filter: none;
    -webkit-filter: grayscale(0);
    opacity: 1;
    -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
    -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
    box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
}
.nlposts-block-container .nlposts-block-thumbnail-litem .caption {
    padding: 9px;
}
.nlposts-block-container .pagination {
    height: 36px;
    margin: 18px 0;
    text-align: center;
    clear:both;
}
.nlposts-block-container .pagination ul {
    margin-right: 0;
    margin-left: auto;
    display: inline-block;
    *display: inline;
    /* IE7 inline-block hack */
    *zoom: 1;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.nlposts-block-container .pagination li {
    display: inline;
}
.nlposts-block-container .pagination a, .nlposts-block-container .pagination span {
    float: right;
    padding: 0 14px;
    line-height: 34px;
    text-decoration: none;
    border: 1px solid #ddd;
    border-right-width: 0;
}
.nlposts-block-container .pagination a:hover,
.nlposts-block-container .pagination .current {
    background-color: #f5f5f5;
}
.nlposts-block-container .pagination .current {
    color: #999999;
    cursor: default;
}
.nlposts-block-container .pagination span,
.nlposts-block-container .pagination .disabled a,
.nlposts-block-container .pagination .disabled a:hover {
    color: #999999;
    background-color: transparent;
    cursor: default;
}
.nlposts-block-container .pagination li:first-child a, .nlposts-block-container .pagination li:first-child span {
    border-right-width: 1px;
    -webkit-border-radius: 3px 3px 0 0;
    -moz-border-radius: 3px 3px 0 0;
    border-radius: 3px 3px 0 0;
}
.nlposts-block-container .pagination li:last-child a, .nlposts-block-container .pagination li:last-child span {
    -webkit-border-radius: 0 0 3px 3px;
    -moz-border-radius: 0 0 3px 3px;
    border-radius: 0 0 3px 3px;
}

redpajama_set_name: RedPajamaGithub


text:
import tempfile

from ._fsnative import path2fsn, fsnative

def gettempdir():
    """
    Returns:
        `fsnative`

    Like :func:`python3:tempfile.gettempdir`, but always returns a `fsnative`
    path
    """

    # FIXME: I don't want to reimplement all that logic, reading env vars etc.
    # At least for the default it works.
    return path2fsn(tempfile.gettempdir())

def gettempprefix():
    """
    Returns:
        `fsnative`

    Like :func:`python3:tempfile.gettempprefix`, but always returns a
    `fsnative` path
    """

    return path2fsn(tempfile.gettempprefix())

def mkstemp(suffix=None, prefix=None, dir=None, text=False):
    """
    Args:
        suffix (`pathlike` or `None`): suffix or `None` to use the default
        prefix (`pathlike` or `None`): prefix or `None` to use the default
        dir (`pathlike` or `None`): temp dir or `None` to use the default
        text (bool): if the file should be opened in text mode
    Returns:
        Tuple[`int`, `fsnative`]:
            A tuple containing the file descriptor and the file path
    Raises:
        EnvironmentError

    Like :func:`python3:tempfile.mkstemp` but always returns a `fsnative`
    path.
    """

    suffix = fsnative() if suffix is None else path2fsn(suffix)
    prefix = gettempprefix() if prefix is None else path2fsn(prefix)
    dir = gettempdir() if dir is None else path2fsn(dir)

    return tempfile.mkstemp(suffix, prefix, dir, text)

def mkdtemp(suffix=None, prefix=None, dir=None):
    """
    Args:
        suffix (`pathlike` or `None`): suffix or `None` to use the default
        prefix (`pathlike` or `None`): prefix or `None` to use the default
        dir (`pathlike` or `None`): temp dir or `None` to use the default
    Returns:
        `fsnative`: A path to a directory
    Raises:
        EnvironmentError

    Like :func:`python3:tempfile.mkstemp` but always returns a `fsnative` path.
    """

    suffix = fsnative() if suffix is None else path2fsn(suffix)
    prefix = gettempprefix() if prefix is None else path2fsn(prefix)
    dir = gettempdir() if dir is None else path2fsn(dir)

    return tempfile.mkdtemp(suffix, prefix, dir)


text:
update: 2021-02-28
---

# Simple usage

```config
Host myhost
    HostName ec2server.ddns.net
    User ec2-user
    IdentityFile ~/.ssh/ec2-server.pem

    # Port forwarding
    LocalForward localhost:1234 targetaddress:1234
    RemoteForward localhost:1234 targetaddress:1234
    DynamicForward 1080

Host *
    ServerAliveInterval 120
    AddKeysToAgent yes
```

When port forwarding, `localhost` is the default.

The config file must have `600` permissions or it will not work.

```shell
chmod 600 ~/.ssh/config
```

# Step server

```config
Host step-server
    HostName myhost.com
    Port 1234
    User myuser
    IdentityFile key.pem

Host destination-server
    HostName url-from-step.com
    User finaluser
    IdentityFile key.pem
    ProxyCommand ssh -X step-server -W %h:%p
```

# Git with ssh

Using a key other than the default when using git with ssh.

```
# ~/.ssh/config

Host work.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_work
```

Then on the SSH clone URL,
edit `github.com` to `work.github.com` and git should use the correct key.

# Proxy

Install `connect-proxy`.

For debian-based distro: `apt install connect-proxy`

```config
Host *
    ProxyCommand connect -H username@proxyserver.com:port %h %p
```

Specify `connect` password automatically with environment variables.

```shell
# /etc/environment
SOCKS5_PASSWORD=12345
SOCKS_PASSWORD=12345
HTTP_PROXY_PASSWORD=12345
CONNECT_PASSWORD=12345
```