#!/usr/bin/env python

#
# Generated Mon May  2 14:23:33 2011 by parse_xsd.py version 0.4.
#

import saml2
from saml2 import SamlBase

import xmldsig as ds
import xmlenc as xenc
from saml2 import saml

NAMESPACE = 'urn:oasis:names:tc:SAML:2.0:metadata'

class EntityIDType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:entityIDType element """

    c_tag = 'entityIDType'
    c_namespace = NAMESPACE
    c_value_type = {'maxlen': '1024', 'base': 'anyURI'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def entity_id_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(EntityIDType_, xml_string)


class LocalizedNameType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:localizedNameType element """

    c_tag = 'localizedNameType'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_attributes['{http://www.w3.org/XML/1998/namespace}lang'] = ('lang', 'string', True)

    def __init__(self,
            lang=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.lang=lang

def localized_name_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(LocalizedNameType_, xml_string)


class LocalizedURIType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:localizedURIType element """

    c_tag = 'localizedURIType'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'anyURI'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_attributes['{http://www.w3.org/XML/1998/namespace}lang'] = ('lang', 'anyURI', True)

    def __init__(self,
            lang=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.lang=lang

def localized_uri_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(LocalizedURIType_, xml_string)


class ExtensionsType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ExtensionsType element """

    c_tag = 'ExtensionsType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def extensions_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(ExtensionsType_, xml_string)


class EndpointType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EndpointType element """

    c_tag = 'EndpointType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_attributes['Binding'] = ('binding', 'anyURI', True)
    c_attributes['Location'] = ('location', 'anyURI', True)
    c_attributes['ResponseLocation'] = ('response_location', 'anyURI', False)

    def __init__(self,
            binding=None,
            location=None,
            response_location=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.binding=binding
        self.location=location
        self.response_location=response_location

def endpoint_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(EndpointType_, xml_string)


class IndexedEndpointType_(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:IndexedEndpointType element """

    c_tag = 'IndexedEndpointType'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()
    c_attributes['index'] = ('index', 'unsignedShort', True)
    c_attributes['isDefault'] = ('is_default', 'boolean', False)

    def __init__(self,
            index=None,
            is_default=None,
            binding=None,
            location=None,
            response_location=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        EndpointType_.__init__(self, 
                binding=binding,
                location=location,
                response_location=response_location,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.index=index
        self.is_default=is_default

def indexed_endpoint_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(IndexedEndpointType_, xml_string)


class OrganizationName(LocalizedNameType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:OrganizationName element """

    c_tag = 'OrganizationName'
    c_namespace = NAMESPACE
    c_children = LocalizedNameType_.c_children.copy()
    c_attributes = LocalizedNameType_.c_attributes.copy()
    c_child_order = LocalizedNameType_.c_child_order[:]
    c_cardinality = LocalizedNameType_.c_cardinality.copy()

def organization_name_from_string(xml_string):
    return saml2.create_class_from_xml_string(OrganizationName, xml_string)


class OrganizationDisplayName(LocalizedNameType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:OrganizationDisplayName element """

    c_tag = 'OrganizationDisplayName'
    c_namespace = NAMESPACE
    c_children = LocalizedNameType_.c_children.copy()
    c_attributes = LocalizedNameType_.c_attributes.copy()
    c_child_order = LocalizedNameType_.c_child_order[:]
    c_cardinality = LocalizedNameType_.c_cardinality.copy()

def organization_display_name_from_string(xml_string):
    return saml2.create_class_from_xml_string(OrganizationDisplayName, xml_string)


class OrganizationURL(LocalizedURIType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:OrganizationURL element """

    c_tag = 'OrganizationURL'
    c_namespace = NAMESPACE
    c_children = LocalizedURIType_.c_children.copy()
    c_attributes = LocalizedURIType_.c_attributes.copy()
    c_child_order = LocalizedURIType_.c_child_order[:]
    c_cardinality = LocalizedURIType_.c_cardinality.copy()

def organization_url_from_string(xml_string):
    return saml2.create_class_from_xml_string(OrganizationURL, xml_string)


class Company(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:Company element """

    c_tag = 'Company'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def company_from_string(xml_string):
    return saml2.create_class_from_xml_string(Company, xml_string)


class GivenName(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:GivenName element """

    c_tag = 'GivenName'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def given_name_from_string(xml_string):
    return saml2.create_class_from_xml_string(GivenName, xml_string)


class SurName(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:SurName element """

    c_tag = 'SurName'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def sur_name_from_string(xml_string):
    return saml2.create_class_from_xml_string(SurName, xml_string)


class EmailAddress(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EmailAddress element """

    c_tag = 'EmailAddress'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'anyURI'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def email_address_from_string(xml_string):
    return saml2.create_class_from_xml_string(EmailAddress, xml_string)


class TelephoneNumber(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:TelephoneNumber element """

    c_tag = 'TelephoneNumber'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def telephone_number_from_string(xml_string):
    return saml2.create_class_from_xml_string(TelephoneNumber, xml_string)


class ContactTypeType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ContactTypeType element """

    c_tag = 'ContactTypeType'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string', 'enumeration': ['technical', 'support', 'administrative', 'billing', 'other']}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def contact_type_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(ContactTypeType_, xml_string)


class AdditionalMetadataLocationType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AdditionalMetadataLocationType element """

    c_tag = 'AdditionalMetadataLocationType'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'anyURI'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_attributes['namespace'] = ('namespace', 'anyURI', True)

    def __init__(self,
            namespace=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.namespace=namespace

def additional_metadata_location_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(AdditionalMetadataLocationType_, xml_string)


class AnyURIListType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:anyURIListType element """

    c_tag = 'anyURIListType'
    c_namespace = NAMESPACE
    c_value_type = {'member': 'anyURI', 'base': 'list'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def any_uri_list_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(AnyURIListType_, xml_string)


class KeyTypes_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:KeyTypes element """

    c_tag = 'KeyTypes'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'string', 'enumeration': ['encryption', 'signing']}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def key_types__from_string(xml_string):
    return saml2.create_class_from_xml_string(KeyTypes_, xml_string)


class EncryptionMethod(xenc.EncryptionMethodType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EncryptionMethod element """

    c_tag = 'EncryptionMethod'
    c_namespace = NAMESPACE
    c_children = xenc.EncryptionMethodType_.c_children.copy()
    c_attributes = xenc.EncryptionMethodType_.c_attributes.copy()
    c_child_order = xenc.EncryptionMethodType_.c_child_order[:]
    c_cardinality = xenc.EncryptionMethodType_.c_cardinality.copy()

def encryption_method_from_string(xml_string):
    return saml2.create_class_from_xml_string(EncryptionMethod, xml_string)


class ArtifactResolutionService(IndexedEndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ArtifactResolutionService element """

    c_tag = 'ArtifactResolutionService'
    c_namespace = NAMESPACE
    c_children = IndexedEndpointType_.c_children.copy()
    c_attributes = IndexedEndpointType_.c_attributes.copy()
    c_child_order = IndexedEndpointType_.c_child_order[:]
    c_cardinality = IndexedEndpointType_.c_cardinality.copy()

def artifact_resolution_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(ArtifactResolutionService, xml_string)


class SingleLogoutService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:SingleLogoutService element """

    c_tag = 'SingleLogoutService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def single_logout_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(SingleLogoutService, xml_string)


class ManageNameIDService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ManageNameIDService element """

    c_tag = 'ManageNameIDService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def manage_name_id_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(ManageNameIDService, xml_string)


class NameIDFormat(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:NameIDFormat element """

    c_tag = 'NameIDFormat'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'anyURI'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def name_id_format_from_string(xml_string):
    return saml2.create_class_from_xml_string(NameIDFormat, xml_string)


class SingleSignOnService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:SingleSignOnService element """

    c_tag = 'SingleSignOnService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def single_sign_on_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(SingleSignOnService, xml_string)


class NameIDMappingService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:NameIDMappingService element """

    c_tag = 'NameIDMappingService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def name_id_mapping_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(NameIDMappingService, xml_string)


class AssertionIDRequestService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AssertionIDRequestService element """

    c_tag = 'AssertionIDRequestService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def assertion_id_request_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(AssertionIDRequestService, xml_string)


class AttributeProfile(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AttributeProfile element """

    c_tag = 'AttributeProfile'
    c_namespace = NAMESPACE
    c_value_type = {'base': 'anyURI'}
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()

def attribute_profile_from_string(xml_string):
    return saml2.create_class_from_xml_string(AttributeProfile, xml_string)


class AssertionConsumerService(IndexedEndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AssertionConsumerService element """

    c_tag = 'AssertionConsumerService'
    c_namespace = NAMESPACE
    c_children = IndexedEndpointType_.c_children.copy()
    c_attributes = IndexedEndpointType_.c_attributes.copy()
    c_child_order = IndexedEndpointType_.c_child_order[:]
    c_cardinality = IndexedEndpointType_.c_cardinality.copy()

def assertion_consumer_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(AssertionConsumerService, xml_string)


class ServiceName(LocalizedNameType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ServiceName element """

    c_tag = 'ServiceName'
    c_namespace = NAMESPACE
    c_children = LocalizedNameType_.c_children.copy()
    c_attributes = LocalizedNameType_.c_attributes.copy()
    c_child_order = LocalizedNameType_.c_child_order[:]
    c_cardinality = LocalizedNameType_.c_cardinality.copy()

def service_name_from_string(xml_string):
    return saml2.create_class_from_xml_string(ServiceName, xml_string)


class ServiceDescription(LocalizedNameType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ServiceDescription element """

    c_tag = 'ServiceDescription'
    c_namespace = NAMESPACE
    c_children = LocalizedNameType_.c_children.copy()
    c_attributes = LocalizedNameType_.c_attributes.copy()
    c_child_order = LocalizedNameType_.c_child_order[:]
    c_cardinality = LocalizedNameType_.c_cardinality.copy()

def service_description_from_string(xml_string):
    return saml2.create_class_from_xml_string(ServiceDescription, xml_string)


class RequestedAttributeType_(saml.AttributeType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:RequestedAttributeType element """

    c_tag = 'RequestedAttributeType'
    c_namespace = NAMESPACE
    c_children = saml.AttributeType_.c_children.copy()
    c_attributes = saml.AttributeType_.c_attributes.copy()
    c_child_order = saml.AttributeType_.c_child_order[:]
    c_cardinality = saml.AttributeType_.c_cardinality.copy()
    c_attributes['isRequired'] = ('is_required', 'boolean', False)

    def __init__(self,
            is_required=None,
            friendly_name=None,
            name=None,
            name_format=None,
            attribute_value=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        saml.AttributeType_.__init__(self, 
                friendly_name=friendly_name,
                name=name,
                name_format=name_format,
                attribute_value=attribute_value,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.is_required=is_required

def requested_attribute_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(RequestedAttributeType_, xml_string)


class AuthnQueryService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AuthnQueryService element """

    c_tag = 'AuthnQueryService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def authn_query_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(AuthnQueryService, xml_string)


class AuthzService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AuthzService element """

    c_tag = 'AuthzService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def authz_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(AuthzService, xml_string)


class AttributeService(EndpointType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AttributeService element """

    c_tag = 'AttributeService'
    c_namespace = NAMESPACE
    c_children = EndpointType_.c_children.copy()
    c_attributes = EndpointType_.c_attributes.copy()
    c_child_order = EndpointType_.c_child_order[:]
    c_cardinality = EndpointType_.c_cardinality.copy()

def attribute_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(AttributeService, xml_string)


class AffiliateMember(EntityIDType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AffiliateMember element """

    c_tag = 'AffiliateMember'
    c_namespace = NAMESPACE
    c_children = EntityIDType_.c_children.copy()
    c_attributes = EntityIDType_.c_attributes.copy()
    c_child_order = EntityIDType_.c_child_order[:]
    c_cardinality = EntityIDType_.c_cardinality.copy()

def affiliate_member_from_string(xml_string):
    return saml2.create_class_from_xml_string(AffiliateMember, xml_string)


class Extensions(ExtensionsType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:Extensions element """

    c_tag = 'Extensions'
    c_namespace = NAMESPACE
    c_children = ExtensionsType_.c_children.copy()
    c_attributes = ExtensionsType_.c_attributes.copy()
    c_child_order = ExtensionsType_.c_child_order[:]
    c_cardinality = ExtensionsType_.c_cardinality.copy()

def extensions_from_string(xml_string):
    return saml2.create_class_from_xml_string(Extensions, xml_string)


class OrganizationType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:OrganizationType element """

    c_tag = 'OrganizationType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions', Extensions)
    c_cardinality['extensions'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationName'] = ('organization_name', [OrganizationName])
    c_cardinality['organization_name'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationDisplayName'] = ('organization_display_name', [OrganizationDisplayName])
    c_cardinality['organization_display_name'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}OrganizationURL'] = ('organization_url', [OrganizationURL])
    c_cardinality['organization_url'] = {"min":1}
    c_child_order.extend(['extensions', 'organization_name', 'organization_display_name', 'organization_url'])

    def __init__(self,
            extensions=None,
            organization_name=None,
            organization_display_name=None,
            organization_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.extensions=extensions
        self.organization_name=organization_name or []
        self.organization_display_name=organization_display_name or []
        self.organization_url=organization_url or []

def organization_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(OrganizationType_, xml_string)


class ContactType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ContactType element """

    c_tag = 'ContactType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions', Extensions)
    c_cardinality['extensions'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Company'] = ('company', Company)
    c_cardinality['company'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}GivenName'] = ('given_name', GivenName)
    c_cardinality['given_name'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}SurName'] = ('sur_name', SurName)
    c_cardinality['sur_name'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EmailAddress'] = ('email_address', [EmailAddress])
    c_cardinality['email_address'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}TelephoneNumber'] = ('telephone_number', [TelephoneNumber])
    c_cardinality['telephone_number'] = {"min":0}
    c_attributes['contactType'] = ('contact_type', ContactTypeType_, True)
    c_child_order.extend(['extensions', 'company', 'given_name', 'sur_name', 'email_address', 'telephone_number'])

    def __init__(self,
            extensions=None,
            company=None,
            given_name=None,
            sur_name=None,
            email_address=None,
            telephone_number=None,
            contact_type=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.extensions=extensions
        self.company=company
        self.given_name=given_name
        self.sur_name=sur_name
        self.email_address=email_address or []
        self.telephone_number=telephone_number or []
        self.contact_type=contact_type

def contact_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(ContactType_, xml_string)


class AdditionalMetadataLocation(AdditionalMetadataLocationType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AdditionalMetadataLocation element """

    c_tag = 'AdditionalMetadataLocation'
    c_namespace = NAMESPACE
    c_children = AdditionalMetadataLocationType_.c_children.copy()
    c_attributes = AdditionalMetadataLocationType_.c_attributes.copy()
    c_child_order = AdditionalMetadataLocationType_.c_child_order[:]
    c_cardinality = AdditionalMetadataLocationType_.c_cardinality.copy()

def additional_metadata_location_from_string(xml_string):
    return saml2.create_class_from_xml_string(AdditionalMetadataLocation, xml_string)


class KeyDescriptorType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:KeyDescriptorType element """

    c_tag = 'KeyDescriptorType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{http://www.w3.org/2000/09/xmldsig#}KeyInfo'] = ('key_info', ds.KeyInfo)
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EncryptionMethod'] = ('encryption_method', [EncryptionMethod])
    c_cardinality['encryption_method'] = {"min":0}
    c_attributes['use'] = ('use', KeyTypes_, False)
    c_child_order.extend(['key_info', 'encryption_method'])

    def __init__(self,
            key_info=None,
            encryption_method=None,
            use=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.key_info=key_info
        self.encryption_method=encryption_method or []
        self.use=use

def key_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(KeyDescriptorType_, xml_string)


class RequestedAttribute(RequestedAttributeType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:RequestedAttribute element """

    c_tag = 'RequestedAttribute'
    c_namespace = NAMESPACE
    c_children = RequestedAttributeType_.c_children.copy()
    c_attributes = RequestedAttributeType_.c_attributes.copy()
    c_child_order = RequestedAttributeType_.c_child_order[:]
    c_cardinality = RequestedAttributeType_.c_cardinality.copy()

def requested_attribute_from_string(xml_string):
    return saml2.create_class_from_xml_string(RequestedAttribute, xml_string)


class Organization(OrganizationType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:Organization element """

    c_tag = 'Organization'
    c_namespace = NAMESPACE
    c_children = OrganizationType_.c_children.copy()
    c_attributes = OrganizationType_.c_attributes.copy()
    c_child_order = OrganizationType_.c_child_order[:]
    c_cardinality = OrganizationType_.c_cardinality.copy()

def organization_from_string(xml_string):
    return saml2.create_class_from_xml_string(Organization, xml_string)


class ContactPerson(ContactType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:ContactPerson element """

    c_tag = 'ContactPerson'
    c_namespace = NAMESPACE
    c_children = ContactType_.c_children.copy()
    c_attributes = ContactType_.c_attributes.copy()
    c_child_order = ContactType_.c_child_order[:]
    c_cardinality = ContactType_.c_cardinality.copy()

def contact_person_from_string(xml_string):
    return saml2.create_class_from_xml_string(ContactPerson, xml_string)


class KeyDescriptor(KeyDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:KeyDescriptor element """

    c_tag = 'KeyDescriptor'
    c_namespace = NAMESPACE
    c_children = KeyDescriptorType_.c_children.copy()
    c_attributes = KeyDescriptorType_.c_attributes.copy()
    c_child_order = KeyDescriptorType_.c_child_order[:]
    c_cardinality = KeyDescriptorType_.c_cardinality.copy()

def key_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(KeyDescriptor, xml_string)


class RoleDescriptorType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:RoleDescriptorType element """

    c_tag = 'RoleDescriptorType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{http://www.w3.org/2000/09/xmldsig#}Signature'] = ('signature', ds.Signature)
    c_cardinality['signature'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions', Extensions)
    c_cardinality['extensions'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}KeyDescriptor'] = ('key_descriptor', [KeyDescriptor])
    c_cardinality['key_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Organization'] = ('organization', Organization)
    c_cardinality['organization'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}ContactPerson'] = ('contact_person', [ContactPerson])
    c_cardinality['contact_person'] = {"min":0}
    c_attributes['ID'] = ('id', 'ID', False)
    c_attributes['validUntil'] = ('valid_until', 'dateTime', False)
    c_attributes['cacheDuration'] = ('cache_duration', 'duration', False)
    c_attributes['protocolSupportEnumeration'] = ('protocol_support_enumeration', AnyURIListType_, True)
    c_attributes['errorURL'] = ('error_url', 'anyURI', False)
    c_child_order.extend(['signature', 'extensions', 'key_descriptor', 'organization', 'contact_person'])

    def __init__(self,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.signature=signature
        self.extensions=extensions
        self.key_descriptor=key_descriptor or []
        self.organization=organization
        self.contact_person=contact_person or []
        self.id=id
        self.valid_until=valid_until
        self.cache_duration=cache_duration
        self.protocol_support_enumeration=protocol_support_enumeration
        self.error_url=error_url


class SSODescriptorType_(RoleDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:SSODescriptorType element """

    c_tag = 'SSODescriptorType'
    c_namespace = NAMESPACE
    c_children = RoleDescriptorType_.c_children.copy()
    c_attributes = RoleDescriptorType_.c_attributes.copy()
    c_child_order = RoleDescriptorType_.c_child_order[:]
    c_cardinality = RoleDescriptorType_.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}ArtifactResolutionService'] = ('artifact_resolution_service', [ArtifactResolutionService])
    c_cardinality['artifact_resolution_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}SingleLogoutService'] = ('single_logout_service', [SingleLogoutService])
    c_cardinality['single_logout_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}ManageNameIDService'] = ('manage_name_id_service', [ManageNameIDService])
    c_cardinality['manage_name_id_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}NameIDFormat'] = ('name_id_format', [NameIDFormat])
    c_cardinality['name_id_format'] = {"min":0}
    c_child_order.extend(['artifact_resolution_service', 'single_logout_service', 'manage_name_id_service', 'name_id_format'])

    def __init__(self,
            artifact_resolution_service=None,
            single_logout_service=None,
            manage_name_id_service=None,
            name_id_format=None,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        RoleDescriptorType_.__init__(self, 
                signature=signature,
                extensions=extensions,
                key_descriptor=key_descriptor,
                organization=organization,
                contact_person=contact_person,
                id=id,
                valid_until=valid_until,
                cache_duration=cache_duration,
                protocol_support_enumeration=protocol_support_enumeration,
                error_url=error_url,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.artifact_resolution_service=artifact_resolution_service or []
        self.single_logout_service=single_logout_service or []
        self.manage_name_id_service=manage_name_id_service or []
        self.name_id_format=name_id_format or []


class IDPSSODescriptorType_(SSODescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:IDPSSODescriptorType element """

    c_tag = 'IDPSSODescriptorType'
    c_namespace = NAMESPACE
    c_children = SSODescriptorType_.c_children.copy()
    c_attributes = SSODescriptorType_.c_attributes.copy()
    c_child_order = SSODescriptorType_.c_child_order[:]
    c_cardinality = SSODescriptorType_.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}SingleSignOnService'] = ('single_sign_on_service', [SingleSignOnService])
    c_cardinality['single_sign_on_service'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}NameIDMappingService'] = ('name_id_mapping_service', [NameIDMappingService])
    c_cardinality['name_id_mapping_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AssertionIDRequestService'] = ('assertion_id_request_service', [AssertionIDRequestService])
    c_cardinality['assertion_id_request_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AttributeProfile'] = ('attribute_profile', [AttributeProfile])
    c_cardinality['attribute_profile'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:assertion}Attribute'] = ('attribute', [saml.Attribute])
    c_cardinality['attribute'] = {"min":0}
    c_attributes['WantAuthnRequestsSigned'] = ('want_authn_requests_signed', 'boolean', False)
    c_child_order.extend(['single_sign_on_service', 'name_id_mapping_service', 'assertion_id_request_service', 'attribute_profile', 'attribute'])

    def __init__(self,
            single_sign_on_service=None,
            name_id_mapping_service=None,
            assertion_id_request_service=None,
            attribute_profile=None,
            attribute=None,
            want_authn_requests_signed=None,
            artifact_resolution_service=None,
            single_logout_service=None,
            manage_name_id_service=None,
            name_id_format=None,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SSODescriptorType_.__init__(self, 
                artifact_resolution_service=artifact_resolution_service,
                single_logout_service=single_logout_service,
                manage_name_id_service=manage_name_id_service,
                name_id_format=name_id_format,
                signature=signature,
                extensions=extensions,
                key_descriptor=key_descriptor,
                organization=organization,
                contact_person=contact_person,
                id=id,
                valid_until=valid_until,
                cache_duration=cache_duration,
                protocol_support_enumeration=protocol_support_enumeration,
                error_url=error_url,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.single_sign_on_service=single_sign_on_service or []
        self.name_id_mapping_service=name_id_mapping_service or []
        self.assertion_id_request_service=assertion_id_request_service or []
        self.attribute_profile=attribute_profile or []
        self.attribute=attribute or []
        self.want_authn_requests_signed=want_authn_requests_signed

def idpsso_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(IDPSSODescriptorType_, xml_string)


class AttributeConsumingServiceType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AttributeConsumingServiceType element """

    c_tag = 'AttributeConsumingServiceType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}ServiceName'] = ('service_name', [ServiceName])
    c_cardinality['service_name'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}ServiceDescription'] = ('service_description', [ServiceDescription])
    c_cardinality['service_description'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}RequestedAttribute'] = ('requested_attribute', [RequestedAttribute])
    c_cardinality['requested_attribute'] = {"min":1}
    c_attributes['index'] = ('index', 'unsignedShort', True)
    c_attributes['isDefault'] = ('is_default', 'boolean', False)
    c_child_order.extend(['service_name', 'service_description', 'requested_attribute'])

    def __init__(self,
            service_name=None,
            service_description=None,
            requested_attribute=None,
            index=None,
            is_default=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.service_name=service_name or []
        self.service_description=service_description or []
        self.requested_attribute=requested_attribute or []
        self.index=index
        self.is_default=is_default

def attribute_consuming_service_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(AttributeConsumingServiceType_, xml_string)


class AuthnAuthorityDescriptorType_(RoleDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AuthnAuthorityDescriptorType element """

    c_tag = 'AuthnAuthorityDescriptorType'
    c_namespace = NAMESPACE
    c_children = RoleDescriptorType_.c_children.copy()
    c_attributes = RoleDescriptorType_.c_attributes.copy()
    c_child_order = RoleDescriptorType_.c_child_order[:]
    c_cardinality = RoleDescriptorType_.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AuthnQueryService'] = ('authn_query_service', [AuthnQueryService])
    c_cardinality['authn_query_service'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AssertionIDRequestService'] = ('assertion_id_request_service', [AssertionIDRequestService])
    c_cardinality['assertion_id_request_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}NameIDFormat'] = ('name_id_format', [NameIDFormat])
    c_cardinality['name_id_format'] = {"min":0}
    c_child_order.extend(['authn_query_service', 'assertion_id_request_service', 'name_id_format'])

    def __init__(self,
            authn_query_service=None,
            assertion_id_request_service=None,
            name_id_format=None,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        RoleDescriptorType_.__init__(self, 
                signature=signature,
                extensions=extensions,
                key_descriptor=key_descriptor,
                organization=organization,
                contact_person=contact_person,
                id=id,
                valid_until=valid_until,
                cache_duration=cache_duration,
                protocol_support_enumeration=protocol_support_enumeration,
                error_url=error_url,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.authn_query_service=authn_query_service or []
        self.assertion_id_request_service=assertion_id_request_service or []
        self.name_id_format=name_id_format or []

def authn_authority_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(AuthnAuthorityDescriptorType_, xml_string)


class PDPDescriptorType_(RoleDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:PDPDescriptorType element """

    c_tag = 'PDPDescriptorType'
    c_namespace = NAMESPACE
    c_children = RoleDescriptorType_.c_children.copy()
    c_attributes = RoleDescriptorType_.c_attributes.copy()
    c_child_order = RoleDescriptorType_.c_child_order[:]
    c_cardinality = RoleDescriptorType_.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AuthzService'] = ('authz_service', [AuthzService])
    c_cardinality['authz_service'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AssertionIDRequestService'] = ('assertion_id_request_service', [AssertionIDRequestService])
    c_cardinality['assertion_id_request_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}NameIDFormat'] = ('name_id_format', [NameIDFormat])
    c_cardinality['name_id_format'] = {"min":0}
    c_child_order.extend(['authz_service', 'assertion_id_request_service', 'name_id_format'])

    def __init__(self,
            authz_service=None,
            assertion_id_request_service=None,
            name_id_format=None,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        RoleDescriptorType_.__init__(self, 
                signature=signature,
                extensions=extensions,
                key_descriptor=key_descriptor,
                organization=organization,
                contact_person=contact_person,
                id=id,
                valid_until=valid_until,
                cache_duration=cache_duration,
                protocol_support_enumeration=protocol_support_enumeration,
                error_url=error_url,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.authz_service=authz_service or []
        self.assertion_id_request_service=assertion_id_request_service or []
        self.name_id_format=name_id_format or []

def pdp_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(PDPDescriptorType_, xml_string)


class AttributeAuthorityDescriptorType_(RoleDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AttributeAuthorityDescriptorType element """

    c_tag = 'AttributeAuthorityDescriptorType'
    c_namespace = NAMESPACE
    c_children = RoleDescriptorType_.c_children.copy()
    c_attributes = RoleDescriptorType_.c_attributes.copy()
    c_child_order = RoleDescriptorType_.c_child_order[:]
    c_cardinality = RoleDescriptorType_.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AttributeService'] = ('attribute_service', [AttributeService])
    c_cardinality['attribute_service'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AssertionIDRequestService'] = ('assertion_id_request_service', [AssertionIDRequestService])
    c_cardinality['assertion_id_request_service'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}NameIDFormat'] = ('name_id_format', [NameIDFormat])
    c_cardinality['name_id_format'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AttributeProfile'] = ('attribute_profile', [AttributeProfile])
    c_cardinality['attribute_profile'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:assertion}Attribute'] = ('attribute', [saml.Attribute])
    c_cardinality['attribute'] = {"min":0}
    c_child_order.extend(['attribute_service', 'assertion_id_request_service', 'name_id_format', 'attribute_profile', 'attribute'])

    def __init__(self,
            attribute_service=None,
            assertion_id_request_service=None,
            name_id_format=None,
            attribute_profile=None,
            attribute=None,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        RoleDescriptorType_.__init__(self, 
                signature=signature,
                extensions=extensions,
                key_descriptor=key_descriptor,
                organization=organization,
                contact_person=contact_person,
                id=id,
                valid_until=valid_until,
                cache_duration=cache_duration,
                protocol_support_enumeration=protocol_support_enumeration,
                error_url=error_url,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.attribute_service=attribute_service or []
        self.assertion_id_request_service=assertion_id_request_service or []
        self.name_id_format=name_id_format or []
        self.attribute_profile=attribute_profile or []
        self.attribute=attribute or []

def attribute_authority_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(AttributeAuthorityDescriptorType_, xml_string)


class AffiliationDescriptorType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AffiliationDescriptorType element """

    c_tag = 'AffiliationDescriptorType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{http://www.w3.org/2000/09/xmldsig#}Signature'] = ('signature', ds.Signature)
    c_cardinality['signature'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions', Extensions)
    c_cardinality['extensions'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AffiliateMember'] = ('affiliate_member', [AffiliateMember])
    c_cardinality['affiliate_member'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}KeyDescriptor'] = ('key_descriptor', [KeyDescriptor])
    c_cardinality['key_descriptor'] = {"min":0}
    c_attributes['affiliationOwnerID'] = ('affiliation_owner_id', EntityIDType_, True)
    c_attributes['validUntil'] = ('valid_until', 'dateTime', False)
    c_attributes['cacheDuration'] = ('cache_duration', 'duration', False)
    c_attributes['ID'] = ('id', 'ID', False)
    c_child_order.extend(['signature', 'extensions', 'affiliate_member', 'key_descriptor'])

    def __init__(self,
            signature=None,
            extensions=None,
            affiliate_member=None,
            key_descriptor=None,
            affiliation_owner_id=None,
            valid_until=None,
            cache_duration=None,
            id=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.signature=signature
        self.extensions=extensions
        self.affiliate_member=affiliate_member or []
        self.key_descriptor=key_descriptor or []
        self.affiliation_owner_id=affiliation_owner_id
        self.valid_until=valid_until
        self.cache_duration=cache_duration
        self.id=id

def affiliation_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(AffiliationDescriptorType_, xml_string)


class RoleDescriptor(RoleDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:RoleDescriptor element """

    c_tag = 'RoleDescriptor'
    c_namespace = NAMESPACE
    c_children = RoleDescriptorType_.c_children.copy()
    c_attributes = RoleDescriptorType_.c_attributes.copy()
    c_child_order = RoleDescriptorType_.c_child_order[:]
    c_cardinality = RoleDescriptorType_.c_cardinality.copy()

def role_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(RoleDescriptor, xml_string)


class IDPSSODescriptor(IDPSSODescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:IDPSSODescriptor element """

    c_tag = 'IDPSSODescriptor'
    c_namespace = NAMESPACE
    c_children = IDPSSODescriptorType_.c_children.copy()
    c_attributes = IDPSSODescriptorType_.c_attributes.copy()
    c_child_order = IDPSSODescriptorType_.c_child_order[:]
    c_cardinality = IDPSSODescriptorType_.c_cardinality.copy()

def idpsso_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(IDPSSODescriptor, xml_string)


class AttributeConsumingService(AttributeConsumingServiceType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AttributeConsumingService element """

    c_tag = 'AttributeConsumingService'
    c_namespace = NAMESPACE
    c_children = AttributeConsumingServiceType_.c_children.copy()
    c_attributes = AttributeConsumingServiceType_.c_attributes.copy()
    c_child_order = AttributeConsumingServiceType_.c_child_order[:]
    c_cardinality = AttributeConsumingServiceType_.c_cardinality.copy()

def attribute_consuming_service_from_string(xml_string):
    return saml2.create_class_from_xml_string(AttributeConsumingService, xml_string)


class AuthnAuthorityDescriptor(AuthnAuthorityDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AuthnAuthorityDescriptor element """

    c_tag = 'AuthnAuthorityDescriptor'
    c_namespace = NAMESPACE
    c_children = AuthnAuthorityDescriptorType_.c_children.copy()
    c_attributes = AuthnAuthorityDescriptorType_.c_attributes.copy()
    c_child_order = AuthnAuthorityDescriptorType_.c_child_order[:]
    c_cardinality = AuthnAuthorityDescriptorType_.c_cardinality.copy()

def authn_authority_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(AuthnAuthorityDescriptor, xml_string)


class PDPDescriptor(PDPDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:PDPDescriptor element """

    c_tag = 'PDPDescriptor'
    c_namespace = NAMESPACE
    c_children = PDPDescriptorType_.c_children.copy()
    c_attributes = PDPDescriptorType_.c_attributes.copy()
    c_child_order = PDPDescriptorType_.c_child_order[:]
    c_cardinality = PDPDescriptorType_.c_cardinality.copy()

def pdp_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(PDPDescriptor, xml_string)


class AttributeAuthorityDescriptor(AttributeAuthorityDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AttributeAuthorityDescriptor element """

    c_tag = 'AttributeAuthorityDescriptor'
    c_namespace = NAMESPACE
    c_children = AttributeAuthorityDescriptorType_.c_children.copy()
    c_attributes = AttributeAuthorityDescriptorType_.c_attributes.copy()
    c_child_order = AttributeAuthorityDescriptorType_.c_child_order[:]
    c_cardinality = AttributeAuthorityDescriptorType_.c_cardinality.copy()

def attribute_authority_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(AttributeAuthorityDescriptor, xml_string)


class AffiliationDescriptor(AffiliationDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:AffiliationDescriptor element """

    c_tag = 'AffiliationDescriptor'
    c_namespace = NAMESPACE
    c_children = AffiliationDescriptorType_.c_children.copy()
    c_attributes = AffiliationDescriptorType_.c_attributes.copy()
    c_child_order = AffiliationDescriptorType_.c_child_order[:]
    c_cardinality = AffiliationDescriptorType_.c_cardinality.copy()

def affiliation_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(AffiliationDescriptor, xml_string)


class SPSSODescriptorType_(SSODescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:SPSSODescriptorType element """

    c_tag = 'SPSSODescriptorType'
    c_namespace = NAMESPACE
    c_children = SSODescriptorType_.c_children.copy()
    c_attributes = SSODescriptorType_.c_attributes.copy()
    c_child_order = SSODescriptorType_.c_child_order[:]
    c_cardinality = SSODescriptorType_.c_cardinality.copy()
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AssertionConsumerService'] = ('assertion_consumer_service', [AssertionConsumerService])
    c_cardinality['assertion_consumer_service'] = {"min":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AttributeConsumingService'] = ('attribute_consuming_service', [AttributeConsumingService])
    c_cardinality['attribute_consuming_service'] = {"min":0}
    c_attributes['AuthnRequestsSigned'] = ('authn_requests_signed', 'boolean', False)
    c_attributes['WantAssertionsSigned'] = ('want_assertions_signed', 'boolean', False)
    c_child_order.extend(['assertion_consumer_service', 'attribute_consuming_service'])

    def __init__(self,
            assertion_consumer_service=None,
            attribute_consuming_service=None,
            authn_requests_signed=None,
            want_assertions_signed=None,
            artifact_resolution_service=None,
            single_logout_service=None,
            manage_name_id_service=None,
            name_id_format=None,
            signature=None,
            extensions=None,
            key_descriptor=None,
            organization=None,
            contact_person=None,
            id=None,
            valid_until=None,
            cache_duration=None,
            protocol_support_enumeration=None,
            error_url=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SSODescriptorType_.__init__(self, 
                artifact_resolution_service=artifact_resolution_service,
                single_logout_service=single_logout_service,
                manage_name_id_service=manage_name_id_service,
                name_id_format=name_id_format,
                signature=signature,
                extensions=extensions,
                key_descriptor=key_descriptor,
                organization=organization,
                contact_person=contact_person,
                id=id,
                valid_until=valid_until,
                cache_duration=cache_duration,
                protocol_support_enumeration=protocol_support_enumeration,
                error_url=error_url,
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.assertion_consumer_service=assertion_consumer_service or []
        self.attribute_consuming_service=attribute_consuming_service or []
        self.authn_requests_signed=authn_requests_signed
        self.want_assertions_signed=want_assertions_signed

def spsso_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(SPSSODescriptorType_, xml_string)


class SPSSODescriptor(SPSSODescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:SPSSODescriptor element """

    c_tag = 'SPSSODescriptor'
    c_namespace = NAMESPACE
    c_children = SPSSODescriptorType_.c_children.copy()
    c_attributes = SPSSODescriptorType_.c_attributes.copy()
    c_child_order = SPSSODescriptorType_.c_child_order[:]
    c_cardinality = SPSSODescriptorType_.c_cardinality.copy()

def spsso_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(SPSSODescriptor, xml_string)


class EntityDescriptorType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EntityDescriptorType element """

    c_tag = 'EntityDescriptorType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{http://www.w3.org/2000/09/xmldsig#}Signature'] = ('signature', ds.Signature)
    c_cardinality['signature'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions', Extensions)
    c_cardinality['extensions'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}RoleDescriptor'] = ('role_descriptor', [RoleDescriptor])
    c_cardinality['role_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}IDPSSODescriptor'] = ('idpsso_descriptor', [IDPSSODescriptor])
    c_cardinality['idpsso_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}SPSSODescriptor'] = ('spsso_descriptor', [SPSSODescriptor])
    c_cardinality['spsso_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AuthnAuthorityDescriptor'] = ('authn_authority_descriptor', [AuthnAuthorityDescriptor])
    c_cardinality['authn_authority_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AttributeAuthorityDescriptor'] = ('attribute_authority_descriptor', [AttributeAuthorityDescriptor])
    c_cardinality['attribute_authority_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}PDPDescriptor'] = ('pdp_descriptor', [PDPDescriptor])
    c_cardinality['pdp_descriptor'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AffiliationDescriptor'] = ('affiliation_descriptor', AffiliationDescriptor)
    c_cardinality['affiliation_descriptor'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Organization'] = ('organization', Organization)
    c_cardinality['organization'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}ContactPerson'] = ('contact_person', [ContactPerson])
    c_cardinality['contact_person'] = {"min":0}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}AdditionalMetadataLocation'] = ('additional_metadata_location', [AdditionalMetadataLocation])
    c_cardinality['additional_metadata_location'] = {"min":0}
    c_attributes['entityID'] = ('entity_id', EntityIDType_, True)
    c_attributes['validUntil'] = ('valid_until', 'dateTime', False)
    c_attributes['cacheDuration'] = ('cache_duration', 'duration', False)
    c_attributes['ID'] = ('id', 'ID', False)
    c_child_order.extend(['signature', 'extensions', 'role_descriptor', 'idpsso_descriptor', 'spsso_descriptor', 'authn_authority_descriptor', 'attribute_authority_descriptor', 'pdp_descriptor', 'affiliation_descriptor', 'organization', 'contact_person', 'additional_metadata_location'])

    def __init__(self,
            signature=None,
            extensions=None,
            role_descriptor=None,
            idpsso_descriptor=None,
            spsso_descriptor=None,
            authn_authority_descriptor=None,
            attribute_authority_descriptor=None,
            pdp_descriptor=None,
            affiliation_descriptor=None,
            organization=None,
            contact_person=None,
            additional_metadata_location=None,
            entity_id=None,
            valid_until=None,
            cache_duration=None,
            id=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.signature=signature
        self.extensions=extensions
        self.role_descriptor=role_descriptor or []
        self.idpsso_descriptor=idpsso_descriptor or []
        self.spsso_descriptor=spsso_descriptor or []
        self.authn_authority_descriptor=authn_authority_descriptor or []
        self.attribute_authority_descriptor=attribute_authority_descriptor or []
        self.pdp_descriptor=pdp_descriptor or []
        self.affiliation_descriptor=affiliation_descriptor
        self.organization=organization
        self.contact_person=contact_person or []
        self.additional_metadata_location=additional_metadata_location or []
        self.entity_id=entity_id
        self.valid_until=valid_until
        self.cache_duration=cache_duration
        self.id=id

def entity_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(EntityDescriptorType_, xml_string)


class EntityDescriptor(EntityDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EntityDescriptor element """

    c_tag = 'EntityDescriptor'
    c_namespace = NAMESPACE
    c_children = EntityDescriptorType_.c_children.copy()
    c_attributes = EntityDescriptorType_.c_attributes.copy()
    c_child_order = EntityDescriptorType_.c_child_order[:]
    c_cardinality = EntityDescriptorType_.c_cardinality.copy()

def entity_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(EntityDescriptor, xml_string)


#..................
# ['EntitiesDescriptor', 'EntitiesDescriptorType']
class EntitiesDescriptorType_(SamlBase):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EntitiesDescriptorType element """

    c_tag = 'EntitiesDescriptorType'
    c_namespace = NAMESPACE
    c_children = SamlBase.c_children.copy()
    c_attributes = SamlBase.c_attributes.copy()
    c_child_order = SamlBase.c_child_order[:]
    c_cardinality = SamlBase.c_cardinality.copy()
    c_children['{http://www.w3.org/2000/09/xmldsig#}Signature'] = ('signature', ds.Signature)
    c_cardinality['signature'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}Extensions'] = ('extensions', Extensions)
    c_cardinality['extensions'] = {"min":0, "max":1}
    c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EntityDescriptor'] = ('entity_descriptor', [EntityDescriptor])
    c_cardinality['entity_descriptor'] = {"min":0}
    c_cardinality['entities_descriptor'] = {"min":0}
    c_attributes['validUntil'] = ('valid_until', 'dateTime', False)
    c_attributes['cacheDuration'] = ('cache_duration', 'duration', False)
    c_attributes['ID'] = ('id', 'ID', False)
    c_attributes['Name'] = ('name', 'string', False)
    c_child_order.extend(['signature', 'extensions', 'entity_descriptor', 'entities_descriptor'])

    def __init__(self,
            signature=None,
            extensions=None,
            entity_descriptor=None,
            entities_descriptor=None,
            valid_until=None,
            cache_duration=None,
            id=None,
            name=None,
            text=None,
            extension_elements=None,
            extension_attributes=None,
        ):
        SamlBase.__init__(self, 
                text=text,
                extension_elements=extension_elements,
                extension_attributes=extension_attributes,
                )
        self.signature=signature
        self.extensions=extensions
        self.entity_descriptor=entity_descriptor or []
        self.entities_descriptor=entities_descriptor or []
        self.valid_until=valid_until
        self.cache_duration=cache_duration
        self.id=id
        self.name=name

def entities_descriptor_type__from_string(xml_string):
    return saml2.create_class_from_xml_string(EntitiesDescriptorType_, xml_string)


class EntitiesDescriptor(EntitiesDescriptorType_):
    """The urn:oasis:names:tc:SAML:2.0:metadata:EntitiesDescriptor element """

    c_tag = 'EntitiesDescriptor'
    c_namespace = NAMESPACE
    c_children = EntitiesDescriptorType_.c_children.copy()
    c_attributes = EntitiesDescriptorType_.c_attributes.copy()
    c_child_order = EntitiesDescriptorType_.c_child_order[:]
    c_cardinality = EntitiesDescriptorType_.c_cardinality.copy()

def entities_descriptor_from_string(xml_string):
    return saml2.create_class_from_xml_string(EntitiesDescriptor, xml_string)


# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EntitiesDescriptorType_.c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EntitiesDescriptor'] = ('entities_descriptor', [EntitiesDescriptor])
EntitiesDescriptor.c_children['{urn:oasis:names:tc:SAML:2.0:metadata}EntitiesDescriptor'] = ('entities_descriptor', [EntitiesDescriptor])
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ELEMENT_FROM_STRING = {
    EntityIDType_.c_tag: entity_id_type__from_string,
    LocalizedNameType_.c_tag: localized_name_type__from_string,
    LocalizedURIType_.c_tag: localized_uri_type__from_string,
    Extensions.c_tag: extensions_from_string,
    ExtensionsType_.c_tag: extensions_type__from_string,
    EndpointType_.c_tag: endpoint_type__from_string,
    IndexedEndpointType_.c_tag: indexed_endpoint_type__from_string,
    EntitiesDescriptor.c_tag: entities_descriptor_from_string,
    EntitiesDescriptorType_.c_tag: entities_descriptor_type__from_string,
    EntityDescriptor.c_tag: entity_descriptor_from_string,
    EntityDescriptorType_.c_tag: entity_descriptor_type__from_string,
    Organization.c_tag: organization_from_string,
    OrganizationType_.c_tag: organization_type__from_string,
    OrganizationName.c_tag: organization_name_from_string,
    OrganizationDisplayName.c_tag: organization_display_name_from_string,
    OrganizationURL.c_tag: organization_url_from_string,
    ContactPerson.c_tag: contact_person_from_string,
    ContactType_.c_tag: contact_type__from_string,
    Company.c_tag: company_from_string,
    GivenName.c_tag: given_name_from_string,
    SurName.c_tag: sur_name_from_string,
    EmailAddress.c_tag: email_address_from_string,
    TelephoneNumber.c_tag: telephone_number_from_string,
    ContactTypeType_.c_tag: contact_type_type__from_string,
    AdditionalMetadataLocation.c_tag: additional_metadata_location_from_string,
    AdditionalMetadataLocationType_.c_tag: additional_metadata_location_type__from_string,
    RoleDescriptor.c_tag: role_descriptor_from_string,
    AnyURIListType_.c_tag: any_uri_list_type__from_string,
    KeyDescriptor.c_tag: key_descriptor_from_string,
    KeyDescriptorType_.c_tag: key_descriptor_type__from_string,
    KeyTypes_.c_tag: key_types__from_string,
    EncryptionMethod.c_tag: encryption_method_from_string,
    ArtifactResolutionService.c_tag: artifact_resolution_service_from_string,
    SingleLogoutService.c_tag: single_logout_service_from_string,
    ManageNameIDService.c_tag: manage_name_id_service_from_string,
    NameIDFormat.c_tag: name_id_format_from_string,
    IDPSSODescriptor.c_tag: idpsso_descriptor_from_string,
    IDPSSODescriptorType_.c_tag: idpsso_descriptor_type__from_string,
    SingleSignOnService.c_tag: single_sign_on_service_from_string,
    NameIDMappingService.c_tag: name_id_mapping_service_from_string,
    AssertionIDRequestService.c_tag: assertion_id_request_service_from_string,
    AttributeProfile.c_tag: attribute_profile_from_string,
    SPSSODescriptor.c_tag: spsso_descriptor_from_string,
    SPSSODescriptorType_.c_tag: spsso_descriptor_type__from_string,
    AssertionConsumerService.c_tag: assertion_consumer_service_from_string,
    AttributeConsumingService.c_tag: attribute_consuming_service_from_string,
    AttributeConsumingServiceType_.c_tag: attribute_consuming_service_type__from_string,
    ServiceName.c_tag: service_name_from_string,
    ServiceDescription.c_tag: service_description_from_string,
    RequestedAttribute.c_tag: requested_attribute_from_string,
    RequestedAttributeType_.c_tag: requested_attribute_type__from_string,
    AuthnAuthorityDescriptor.c_tag: authn_authority_descriptor_from_string,
    AuthnAuthorityDescriptorType_.c_tag: authn_authority_descriptor_type__from_string,
    AuthnQueryService.c_tag: authn_query_service_from_string,
    PDPDescriptor.c_tag: pdp_descriptor_from_string,
    PDPDescriptorType_.c_tag: pdp_descriptor_type__from_string,
    AuthzService.c_tag: authz_service_from_string,
    AttributeAuthorityDescriptor.c_tag: attribute_authority_descriptor_from_string,
    AttributeAuthorityDescriptorType_.c_tag: attribute_authority_descriptor_type__from_string,
    AttributeService.c_tag: attribute_service_from_string,
    AffiliationDescriptor.c_tag: affiliation_descriptor_from_string,
    AffiliationDescriptorType_.c_tag: affiliation_descriptor_type__from_string,
    AffiliateMember.c_tag: affiliate_member_from_string,
}

ELEMENT_BY_TAG = {
    'entityIDType': EntityIDType_,
    'localizedNameType': LocalizedNameType_,
    'localizedURIType': LocalizedURIType_,
    'Extensions': Extensions,
    'ExtensionsType': ExtensionsType_,
    'EndpointType': EndpointType_,
    'IndexedEndpointType': IndexedEndpointType_,
    'EntitiesDescriptor': EntitiesDescriptor,
    'EntitiesDescriptorType': EntitiesDescriptorType_,
    'EntityDescriptor': EntityDescriptor,
    'EntityDescriptorType': EntityDescriptorType_,
    'Organization': Organization,
    'OrganizationType': OrganizationType_,
    'OrganizationName': OrganizationName,
    'OrganizationDisplayName': OrganizationDisplayName,
    'OrganizationURL': OrganizationURL,
    'ContactPerson': ContactPerson,
    'ContactType': ContactType_,
    'Company': Company,
    'GivenName': GivenName,
    'SurName': SurName,
    'EmailAddress': EmailAddress,
    'TelephoneNumber': TelephoneNumber,
    'ContactTypeType': ContactTypeType_,
    'AdditionalMetadataLocation': AdditionalMetadataLocation,
    'AdditionalMetadataLocationType': AdditionalMetadataLocationType_,
    'RoleDescriptor': RoleDescriptor,
    'anyURIListType': AnyURIListType_,
    'KeyDescriptor': KeyDescriptor,
    'KeyDescriptorType': KeyDescriptorType_,
    'KeyTypes': KeyTypes_,
    'EncryptionMethod': EncryptionMethod,
    'ArtifactResolutionService': ArtifactResolutionService,
    'SingleLogoutService': SingleLogoutService,
    'ManageNameIDService': ManageNameIDService,
    'NameIDFormat': NameIDFormat,
    'IDPSSODescriptor': IDPSSODescriptor,
    'IDPSSODescriptorType': IDPSSODescriptorType_,
    'SingleSignOnService': SingleSignOnService,
    'NameIDMappingService': NameIDMappingService,
    'AssertionIDRequestService': AssertionIDRequestService,
    'AttributeProfile': AttributeProfile,
    'SPSSODescriptor': SPSSODescriptor,
    'SPSSODescriptorType': SPSSODescriptorType_,
    'AssertionConsumerService': AssertionConsumerService,
    'AttributeConsumingService': AttributeConsumingService,
    'AttributeConsumingServiceType': AttributeConsumingServiceType_,
    'ServiceName': ServiceName,
    'ServiceDescription': ServiceDescription,
    'RequestedAttribute': RequestedAttribute,
    'RequestedAttributeType': RequestedAttributeType_,
    'AuthnAuthorityDescriptor': AuthnAuthorityDescriptor,
    'AuthnAuthorityDescriptorType': AuthnAuthorityDescriptorType_,
    'AuthnQueryService': AuthnQueryService,
    'PDPDescriptor': PDPDescriptor,
    'PDPDescriptorType': PDPDescriptorType_,
    'AuthzService': AuthzService,
    'AttributeAuthorityDescriptor': AttributeAuthorityDescriptor,
    'AttributeAuthorityDescriptorType': AttributeAuthorityDescriptorType_,
    'AttributeService': AttributeService,
    'AffiliationDescriptor': AffiliationDescriptor,
    'AffiliationDescriptorType': AffiliationDescriptorType_,
    'AffiliateMember': AffiliateMember,
    'RoleDescriptorType': RoleDescriptorType_,
    'SSODescriptorType': SSODescriptorType_,
}


def factory(tag, **kwargs):
    return ELEMENT_BY_TAG[tag](**kwargs)

