return the GET_TLV_PROPERTIES structure

    @param response: result of  L{FEATURE_GET_TLV_PROPERTIES}

    @rtype: dict
    @return: a dict

def parseTlvProperties(response):
    """ return the GET_TLV_PROPERTIES structure

    @param response: result of  L{FEATURE_GET_TLV_PROPERTIES}

    @rtype: dict
    @return: a dict """
    d = {
            'raw': response,
        }

    # create a new list to consume it
    tmp = list(response)
    while tmp:
        tag = tmp[0]
        len = tmp[1]
        data = tmp[2:2 + len]

        if PCSCv2_PART10_PROPERTY_sFirmwareID == tag:
            # convert to a string
            data = "".join([chr(c) for c in data])
        # we now suppose the value is an integer
        elif 1 == len:
            # byte
            data = data[0]
        elif 2 == len:
            # 16 bits value
            data = data[1] * 256 + data[0]
        elif 4 == len:
            # 32 bits value
            data = ((data[3] * 256 + data[2]) * 256 + data[1]) * 256 + data[0]

        # store the value in the dictionnary
        try:
            d[Properties[tag]] = data
        except KeyError:
            d["UNKNOWN"] = data

        del tmp[0:2 + len]

    return d