<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:element name="configuration">
        <xsd:complexType>
            <xsd:all>
                <xsd:element ref="privacy" minOccurs="0"/>
                <xsd:element ref="users" minOccurs="0"/>
                <xsd:element ref="contacts" minOccurs="0"/>
                <xsd:element ref="keys" minOccurs="0"/>
                <xsd:element ref="keyLayer" minOccurs="0"/>
                <xsd:element ref="identities" minOccurs="0"/>
                <xsd:element ref="telephony" minOccurs="0"/>
                <xsd:element ref="aboutPhone" minOccurs="0"/>
                <xsd:element ref="sound" minOccurs="0"/>
                <xsd:element ref="provisioning" minOccurs="0"/>
                <xsd:element ref="update" minOccurs="0"/>
                <xsd:element ref="locales" minOccurs="0"/>
                <xsd:element ref="network" minOccurs="0"/>
                <xsd:element ref="userInterface" minOccurs="0"/>
                <xsd:element ref="templates" minOccurs="0"/>
                <xsd:element ref="remoteAccess" minOccurs="0"/>
                <xsd:element ref="apps" minOccurs="0"/>
                <xsd:element ref="timeAndDate" minOccurs="0"/>
                <xsd:element ref="logging" minOccurs="0"/>
                <xsd:element ref="luaLibraries" minOccurs="0"/>
                <xsd:element ref="luaAutoStarters" minOccurs="0"/>
                <xsd:element ref="luaConfig" minOccurs="0"/>
                <xsd:element ref="contactList" minOccurs="0"/>
                <xsd:element ref="resources" minOccurs="0"/>
                <xsd:element ref="homeScreenDesign" minOccurs="0"/>
                <xsd:element ref="filterSettings" minOccurs="0"/>
		<xsd:element ref="wifi" minOccurs="0"/>
            </xsd:all>
            <!-- version attribute -->
            <xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
            <!-- attribute specifying the default behaviour of the patch mechanism.
             if set to false, subelements without a patch attribute will be set removing previous values.
             if set to true, subelements keep values when no specific patch argument is given.
             
             use case: set to false for strict restores of backup files.
             -->
            <xsd:attribute name="patchDefault" type="xsd:boolean" default="true"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="privacy">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="privacy">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="users">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="users">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="contacts">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="contacts">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="keys">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="keys">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="keyLayer">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="keyLayer">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="identities">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="identities">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="telephony">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="telephony">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="aboutPhone">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="aboutPhone">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="sound">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="sound">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="provisioning">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="provisioning">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="update">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="update">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="locales">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="locales">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="network">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="network">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="userInterface">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="userInterface">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="templates">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="templates">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="remoteAccess">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="remoteAccess">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="apps">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="apps">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="timeAndDate">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="timeAndDate">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="logging">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="logging">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="luaLibraries">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="luaLibraries">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="luaAutoStarters">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="luaAutoStarters">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="luaConfig">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="luaConfig">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="contactList">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="contactList">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="resources">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="resources">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="homeScreenDesign">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="homeScreenDesign">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="filterSettings">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="filterSettings">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
	<xsd:complexType name="AppError">
		<xsd:all>
			<xsd:element name="code" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="message" type="xsd:string" minOccurs="0"/>
			<xsd:element name="request_id" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- The phones privacy settings -->
	<xsd:complexType name="privacy">
		<xsd:all>
			<xsd:element name="sentry" type="sentry" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Settings for sentry -->
	<xsd:complexType name="sentry">
		<xsd:all>
			<!-- Whether errors in the phone should be reported with sentry
			to the developers.
			This option is subject to data protection laws in the users country.
			Activating this may require you to inform the user about this.
			 -->
			<xsd:element name="sendErrors" type="xsd:boolean" minOccurs="0"/>
			<!-- Whether the admin has already been asked to report errors.
			If true, the administrator shouldn&#x27;t be bothered anymore.
			 -->
			<xsd:element name="permissionAsked" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- A list of all users -->
	<xsd:complexType name="users">
		<xsd:sequence>
			<xsd:element name="user" type="user" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A single user -->
	<xsd:complexType name="user">
		<xsd:all>
			<!-- The name of the user used for display.
			If it is empty, the name will be used.
			 -->
			<xsd:element name="displayName" type="xsd:string" minOccurs="0"/>
			<!-- The password for the user.
			If the password is provisioned, you have to
			supply a hashed password.
			You can create a compatible hash using the
			tool provided in the web interface
			at the following url:
			&#x60;https://&lt;Your-IP&gt;/#/generateHash&#x60;.
			Over the api, you send the password over HTTPS
			in clear text, where it gets hashed in the
			webserver.
			 -->
			<xsd:element name="password">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:minLength value="8"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="role" type="role" default="user"/>
			<!-- The image for the user, base64 encoded or as http(s) uri.
			The image should not exceed 300x300px.
			 -->
			<xsd:element name="image" type="xsd:string" minOccurs="0"/>
			<!-- Indicates whether a user has to change his password.
			This flag will only be evaluated by client side logins
			and any tool handling the login should honour it.
			 -->
			<xsd:element name="changePassword" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
		<!-- The name of the user used for login.
		It is at the same time the unique id.
		 -->
		<xsd:attribute name="name" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:pattern value="[^:]*"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>

	<!-- The role for the user.
	an admin is allowed to do everything.
	A user is not allowed to configure anything by default,
	additional rights for the user have to be explicitly granted
	 -->
	<xsd:simpleType name="role">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="user"/>
			<xsd:enumeration value="admin"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A list of xpath values which are supposed to
	serve as either a allow or blocklist.
	 -->
	<xsd:complexType name="rights">
		<xsd:sequence>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Describes a contacts setup -->
	<xsd:complexType name="contacts">
		<xsd:all>
			<xsd:element name="ldap" type="ldap" minOccurs="0"/>
			<xsd:element name="smoothSync" type="smoothSync" minOccurs="0"/>
			<xsd:element name="orderBy" type="orderNameBy" minOccurs="0" default="orderByFirstname"/>
			<xsd:element name="nameFormat" type="nameFormat" minOccurs="0" default="givenNameFirst"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Describes a ldap setup -->
	<xsd:complexType name="ldap">
		<xsd:all>
			<!-- use this service or not -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- ldap server address fqdn or ip address -->
			<xsd:element name="server" type="xsd:string"/>
			<xsd:element name="ldapProtocol" type="ldapProtocol" minOccurs="0" default="ldap"/>
			<!-- ldap server port 389 or 636 (LDAPS) -->
			<xsd:element name="port" minOccurs="0" default="389">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- ldap protocol version 2 or 3 -->
			<xsd:element name="ldapVersion" type="ldapVersion" minOccurs="0" default="three"/>
			<!-- username to login -->
			<xsd:element name="username" type="xsd:string"/>
			<!-- The password to authenticate the for the ldap server -->
			<xsd:element name="password" type="xsd:string"/>
			<!-- name filter according to RFC2254 -->
			<xsd:element name="nameFilter" type="xsd:string" minOccurs="0" default="(|(cn=%*)(cn=* %*)(sn=%*)(sn=* %*)(givenName=%*)(givenName=* %*))"/>
			<!-- number filter according to RFC2254 for reverse number lookup -->
			<xsd:element name="numberFilter" type="xsd:string" minOccurs="0" default="(|(telephoneNumber=*%)(mobile=*%)(homePhone=*%))"/>
			<!-- number filter according to RFC2254 for the number suggestion list in the dialer -->
			<xsd:element name="dialerNumberFilter" type="xsd:string" minOccurs="0" default="(|(telephoneNumber=*%*)(mobile=*%*)(homePhone=*%*))"/>
			<!-- scope that will be searched -->
			<xsd:element name="baseDN" type="xsd:string" minOccurs="0"/>
			<!-- maximum size of a result list for a filtered search -->
			<xsd:element name="maxHits" minOccurs="0" default="20">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="32000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Maximum size of a result list for an unfiltered search when
			starting the contacts app
			 -->
			<xsd:element name="maxEntriesOnStart" minOccurs="0" default="100">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="32000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- what names are you looking for -->
			<xsd:element name="nameAttributes" type="xsd:string" minOccurs="0" default="cn sn givenName company o"/>
			<!-- what numbers are you looking for -->
			<xsd:element name="numberAttributes" type="xsd:string" minOccurs="0" default="mobile telephoneNumber homePhone"/>
		</xsd:all>
	</xsd:complexType>

	<!-- ldap lts modes -->
	<xsd:simpleType name="ldapProtocol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="ldap"/>
			<xsd:enumeration value="ldapStartTls"/>
			<xsd:enumeration value="ldaps"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- LDAP protocol version -->
	<xsd:simpleType name="ldapVersion">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="two"/>
			<xsd:enumeration value="three"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- set of smoothSync configuration parameters -->
	<xsd:complexType name="smoothSync">
		<xsd:sequence>
			<xsd:element name="smoothSyncConfiguration" type="smoothSyncConfiguration" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- a single smoothSync configuration parameter -->
	<xsd:complexType name="smoothSyncConfiguration">
		<xsd:sequence>
			<!-- username to login on the server -->
			<xsd:element name="username" type="xsd:string" minOccurs="0"/>
			<!-- password to login on the server -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- whether the services are read-only or not -->
			<xsd:element name="readonly" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="services" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="smoothSyncService" type="smoothSyncService" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<!-- the name of this smooth Sync config -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="smoothSyncService">
		<xsd:all>
			<xsd:element name="serviceType" type="smoothSyncServiceType" minOccurs="0" default="CardDAV"/>
			<!-- The URL of the service -->
			<xsd:element name="uri" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Type of service. -->
	<xsd:simpleType name="smoothSyncServiceType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="CalDAV"/>
			<xsd:enumeration value="CardDAV"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- name sorting order for contact query results -->
	<xsd:simpleType name="orderNameBy">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="orderByFirstname"/>
			<xsd:enumeration value="orderByLastname"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- name format for contact query results -->
	<xsd:simpleType name="nameFormat">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="givenNameFirst"/>
			<xsd:enumeration value="surnameFirst"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- 3 layer of function keys -->
	<xsd:complexType name="keyLayer">
		<xsd:all>
			<xsd:element name="phoneXtensions" type="xtensionKeyLayer" minOccurs="0" default="1"/>
			<xsd:element name="extensionModule1" type="xtensionKeyLayer" minOccurs="0" default="1"/>
			<xsd:element name="extensionModule2" type="xtensionKeyLayer" minOccurs="0" default="1"/>
			<xsd:element name="extensionModule3" type="xtensionKeyLayer" minOccurs="0" default="1"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="xtensionKeyLayer">
		<xsd:restriction base="xsd:integer">
			<xsd:minInclusive value="1"/>
			<xsd:maxInclusive value="3"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- All keys that can be configured -->
	<xsd:complexType name="keys">
		<xsd:all>
			<!-- On D-100/D-200: 18 (3x6) self-labeling Xtension keys in idle-screen. -->
			<xsd:element name="phoneXtensions" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="key" type="key" minOccurs="0" maxOccurs="18"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="extensionModule1" type="xtensionKeys" minOccurs="0"/>
			<xsd:element name="extensionModule2" type="xtensionKeys" minOccurs="0"/>
			<xsd:element name="extensionModule3" type="xtensionKeys" minOccurs="0"/>
			<xsd:element name="homeScreen" type="softKeys" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- 60 Xtension keys on an extension module. -->
	<xsd:complexType name="xtensionKeys">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0" maxOccurs="60"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- 4 keys below the display -->
	<xsd:complexType name="softKeys">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0" maxOccurs="4"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- abstracted version of a collection of keys without any upper bound -->
	<xsd:complexType name="groupedKeys">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- The group a key belongs to -->
	<xsd:simpleType name="keyGroup">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="mainModule"/>
			<xsd:enumeration value="phoneXtensions"/>
			<xsd:enumeration value="extensionModule1"/>
			<xsd:enumeration value="extensionModule2"/>
			<xsd:enumeration value="extensionModule3"/>
			<xsd:enumeration value="homeScreen"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Describes a single functionkey.
	 -->
	<xsd:complexType name="key">
		<xsd:all>
			<xsd:element name="keyConfiguration" type="keyConfiguration" minOccurs="0"/>
			<!-- Reference to the text element of the template name.
			 -->
			<xsd:element name="templateName" type="xsd:string" minOccurs="0"/>
			<!-- List of parameters.
			 -->
			<xsd:element name="parameters" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="parameter" type="keyParam" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<!-- The number of the key. Uniquely identifies a key within a module. -->
		<xsd:attribute name="keyNumber" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:integer">
					<xsd:minInclusive value="1"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<!-- The name of the key.
		If starting with @string/ an android resource is used.
		 -->
		<xsd:attribute name="label" type="xsd:string"/>
		<!-- Detail info of the key mostly displayed on a second line
		If starting with @string/ an android resource is used.
		 -->
		<xsd:attribute name="info" type="xsd:string"/>
		<!-- The icon of the key, base64 encoded.
		The icon is scaled to fit the display container.
		If starting with @drawable/ an android resource is used.
		 -->
		<xsd:attribute name="icon" type="xsd:string"/>
	</xsd:complexType>

	<!-- Various configuration parameters for a functionkey.
	This can either be:
	- lua code
	- a line (obsolete though still used, will be replaced by lua code)
	- a list of functions assigned to the key (obsolete though still used,
	  will be replaced by lua code)
	 -->
	<xsd:complexType name="keyConfiguration">
		<xsd:choice>
			<xsd:element name="lua" type="luaContent" minOccurs="0"/>
			<xsd:element name="line" type="line" minOccurs="0"/>
			<xsd:element name="function" type="keyFunction" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>

	<!-- Describes a single function for a functionkey.
	This can any one (or both) of:
	- a reaction to something
	- invoking an action
	 -->
	<xsd:complexType name="keyFunction">
		<xsd:all>
			<xsd:element name="reactions" type="keyReactions" minOccurs="0"/>
			<xsd:element name="invocations" type="keyInvocations" minOccurs="1"/>
		</xsd:all>
	</xsd:complexType>

	<!-- An array of possible reactions for a functionkey -->
	<xsd:complexType name="keyReactions">
		<xsd:sequence>
			<xsd:element name="reaction" type="keyReaction" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A reaction for a functionkey -->
	<xsd:complexType name="keyReaction">
		<xsd:choice>
			<xsd:element name="ledSetting" type="ledSetting" minOccurs="0"/>
			<xsd:element name="presence" type="presence" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="presence">
		<xsd:all>
			<xsd:element name="subscribe" type="subscribe"/>
		</xsd:all>
		<!-- Enable subscription -->
		<xsd:attribute name="enabled" type="xsd:boolean" default="true"/>
		<!-- Signal missed call via green LED -->
		<xsd:attribute name="withCalllog" type="xsd:boolean" default="true"/>
	</xsd:complexType>

	<xsd:complexType name="subscribe">
		<xsd:all>
			<xsd:element name="uri" type="uri"/>
			<!-- If left out, the first available line is used.
			 -->
			<xsd:element name="line" type="line" minOccurs="0"/>
			<!-- If the subscribeType is dialog, you can specify here
			what to listen for. In every other case, this option
			is ignored.
			 -->
			<xsd:element name="listenFor" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="type" type="subscribeType" use="required"/>
	</xsd:complexType>

	<!-- The type of the subscription -->
	<xsd:simpleType name="subscribeType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="dialog"/>
			<xsd:enumeration value="message-summary"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- LED reactions for a key -->
	<xsd:complexType name="ledSetting">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="ledColor" type="ledColor" default="off"/>
		<xsd:attribute name="ledBlinking" type="ledBlinking"/>
	</xsd:complexType>

	<!-- An array of possible actions for a functionkey -->
	<xsd:complexType name="keyInvocations">
		<xsd:sequence>
			<xsd:element name="invocation" type="keyInvocation" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- An action for a functionkey.
	This can either be:
	- A HTTP request
	- A dialogMessage
	 -->
	<xsd:complexType name="keyInvocation">
		<xsd:choice>
			<xsd:element name="http" type="keyHttpRequest" minOccurs="0"/>
			<xsd:element name="setting" type="keySetting" minOccurs="0"/>
			<xsd:element name="dialog" type="dialogMessage" minOccurs="0"/>
			<xsd:element name="invite" type="keyInvite" minOccurs="0"/>
			<xsd:element name="intent" type="keyIntent" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="keyInvite">
		<xsd:all>
			<xsd:element name="uri" type="uri"/>
			<xsd:element name="line" type="line" minOccurs="0"/>
		</xsd:all>
		<!-- do invisible call -->
		<xsd:attribute name="hidden" type="xsd:boolean"/>
		<!-- Try pickup before starting speed dial -->
		<xsd:attribute name="doPickup" type="xsd:boolean" default="true"/>
		<!-- When calling via speed dial -&gt; also add a sip-header that marks
		the call as auto-answetr so the call connects immediately without
		ringing first.
		 -->
		<xsd:attribute name="autoAnswer" type="xsd:boolean"/>
	</xsd:complexType>

	<xsd:complexType name="keyIntent">
		<xsd:all>
			<xsd:element name="action" type="xsd:string"/>
			<xsd:element name="data" type="uri" minOccurs="0"/>
			<xsd:element name="component" type="component" minOccurs="0"/>
			<xsd:element name="extras" type="bundle" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="component">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A map of &#x60;&#x27;string&#x27;: bool | int | string&#x60;
	 -->
	<xsd:complexType name="bundle">
		<xsd:sequence>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="booleanExtra">
					<xsd:complexType>
						<xsd:all>
						</xsd:all>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:boolean"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="intExtra">
					<xsd:complexType>
						<xsd:all>
						</xsd:all>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:long"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="stringExtra">
					<xsd:complexType>
						<xsd:all>
						</xsd:all>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:string"/>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="bundle_key">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="keySetting">
		<xsd:sequence>
			<xsd:element name="values" minOccurs="1" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:all>
						<xsd:element name="value" type="xsd:string" minOccurs="0"/>
						<xsd:element name="led" type="ledSetting" minOccurs="0"/>
					</xsd:all>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="other" type="ledSetting" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="path" type="uri" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="line">
		<xsd:all>
			<xsd:element name="id" type="xsd:string"/>
			<xsd:element name="component" type="component" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Creates a message dialog on the screen. -->
	<xsd:simpleType name="dialogMessage">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A HTTP request action that can be triggered by pressing a functionkey.
	 -->
	<xsd:complexType name="keyHttpRequest">
		<xsd:all>
			<xsd:element name="request" type="httpRequest" minOccurs="0"/>
			<xsd:element name="httpReactions" type="httpReactions" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="httpReactions">
		<xsd:sequence>
			<xsd:choice minOccurs="1" maxOccurs="unbounded">
				<xsd:element name="responseCode" type="httpReactionResponseCode" minOccurs="0"/>
				<xsd:element name="responseHeader" type="httpReactionResponseHeader" minOccurs="0"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="httpReactionResponseCode">
		<xsd:all>
			<xsd:element name="responseCode" type="xsd:integer" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="dialogMessage" type="dialogMessage"/>
		<xsd:attribute name="ledColor" type="ledColor" default="off"/>
		<xsd:attribute name="ledBlinking" type="ledBlinking"/>
	</xsd:complexType>

	<xsd:complexType name="httpReactionResponseHeader">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="dialogMessage" type="dialogMessage"/>
		<xsd:attribute name="ledColor" type="ledColor" default="off"/>
		<xsd:attribute name="ledBlinking" type="ledBlinking"/>
		<xsd:attribute name="header" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>

	<!-- A HTTP Request -->
	<xsd:complexType name="httpRequest">
		<xsd:all>
			<xsd:element name="httpHeader" type="httpHeader" minOccurs="0"/>
			<xsd:element name="uri" type="uri" minOccurs="0"/>
			<xsd:element name="httpContent" type="httpContent" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="httpMethod" type="httpMethod" use="required"/>
	</xsd:complexType>

	<!-- The content of an HTTP request -->
	<xsd:simpleType name="httpContent">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="uri">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Possible HTTP Methods like &#x60;GET&#x60; or &#x60;POST&#x60; -->
	<xsd:simpleType name="httpMethod">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="get"/>
			<xsd:enumeration value="post"/>
			<xsd:enumeration value="delete"/>
			<xsd:enumeration value="put"/>
			<xsd:enumeration value="patch"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Whether the LED should blink or not. -->
	<xsd:simpleType name="ledBlinking">
		<xsd:restriction base="xsd:boolean">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="luaContent">
		<xsd:all>
			<xsd:element name="code" type="luaCode"/>
			<xsd:element name="params" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="param" type="luaParam" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="keyParam">
		<xsd:all>
		</xsd:all>
		<!-- Name of the parameter, has to be unique.
		Often starts with &quot;@string/&quot; which enables to show the translated
		name in WUI and PUI.
		 -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>

	<!-- A parameter for lua scripts to be set by the template. -->
	<xsd:complexType name="luaParam">
		<xsd:all>
			<xsd:element name="value" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<!-- a lua-script -->
	<xsd:simpleType name="luaCode">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="callBindings">
		<xsd:sequence>
			<xsd:element name="callBinding" type="callBinding" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Define custom softkeys and/or a camera to be used when in-call with a certain party.
	 -->
	<xsd:complexType name="callBinding">
		<xsd:all>
			<!-- A regular expression that is matched against the sip-uri (username@host)
			of a remote party
			 -->
			<xsd:element name="remoteParty" type="xsd:string"/>
			<!-- name of one of the cameras to be shown when in-call with the
			specified remote party
			 -->
			<xsd:element name="camera" type="xsd:string" minOccurs="0"/>
			<!-- define custom softkeys to be displayed - up to two during a certain call-state. -->
			<xsd:element name="softKeys" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="inCallKey" type="inCallKey" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<!-- uniquely identifies this callBinding -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<!-- define a custom softkey to be displayed during certain call-states. -->
	<xsd:complexType name="inCallKey">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0"/>
			<!-- List of call-states in which the key should appear. -->
			<xsd:element name="callStates" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="callState" type="callState" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<!-- State of a call. E.g.: a new outgoing call starts with ringing and
	when accepted becomes connected.
	Note: When you press hold on your device, the call&#x27;s state will be
	      holding. But when instead the other party holds you, the state
	      will stay connected.
	 -->
	<xsd:simpleType name="callState">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="calling"/>
			<xsd:enumeration value="ringing"/>
			<xsd:enumeration value="holding"/>
			<xsd:enumeration value="connected"/>
			<xsd:enumeration value="disconnected"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- cameras and stuff -->
	<xsd:complexType name="devices">
		<xsd:all>
			<xsd:element name="cameras" type="ipCameras" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="ipCameras">
		<xsd:sequence>
			<xsd:element name="ipCamera" type="ipCamera" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A camera that can deliver images-files via http-get requests.
	Can be listed in our Camera App. See devices-setting if
	you want to use a Camara in calls.
	 -->
	<xsd:complexType name="ipCamera">
		<xsd:all>
			<!-- the url to use for inquiring images -->
			<xsd:element name="url" type="uri" minOccurs="0"/>
			<!-- how often to update the image. -->
			<xsd:element name="refreshRateInMs" minOccurs="0" default="1000">
				<xsd:simpleType>
					<xsd:restriction base="xsd:long">
						<xsd:minInclusive value="100"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- User in case http-request need authorization. -->
			<xsd:element name="user" type="xsd:string" minOccurs="0"/>
			<!-- Password in case http-request need authorization. -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- Protected cameras can only be watched, when they are attached to
			an incoming call. This is intended for door-intercoms so
			passers-by don&#x27;t get spyed on.http-request need authorization.
			 -->
			<xsd:element name="privacyProtected" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="panTiltZoom" type="panTiltZoom" minOccurs="0"/>
		</xsd:all>
		<!-- uniquely identifies this camera -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<!-- Not used yet!
	Url&#x27;s to control the PTZ-features. When set they change the default-
	behaviour of certain Keys in a Video-call. E.g. volume-control is no
	longer available in favor for of access to the camera zoom.
	 -->
	<xsd:complexType name="panTiltZoom">
		<xsd:all>
			<!-- Tilt up. Accessed in Call-Screens via up navi-key. -->
			<xsd:element name="up" type="uri" minOccurs="0"/>
			<!-- Tilt down. Accessed in Call-Screens via down navi-key. -->
			<xsd:element name="down" type="uri" minOccurs="0"/>
			<!-- Pan left. Accessed in Call-Screens via left navi-key. -->
			<xsd:element name="left" type="uri" minOccurs="0"/>
			<!-- Pan right. Accessed in Call-Screens via right navi-key. -->
			<xsd:element name="right" type="uri" minOccurs="0"/>
			<!-- Zoom in. Accessed in Call-Screens via Volume-up-key. -->
			<xsd:element name="zoomIn" type="uri" minOccurs="0"/>
			<!-- Zoom out. Accessed in Call-Screens via Volume-down-key. -->
			<xsd:element name="zoomOut" type="uri" minOccurs="0"/>
			<!-- Assume default zoom and/or center. Accessed in Call-Screens via OK-key. -->
			<xsd:element name="reset" type="uri" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- The possible values a LED can have.
	These are probably not supported on all LEDs.
	 -->
	<xsd:simpleType name="ledColor">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="off"/>
			<xsd:enumeration value="red"/>
			<xsd:enumeration value="orange"/>
			<xsd:enumeration value="green"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A key/value map of a HTTP header
	&#x60;&#x60;&#x60; json
	{
	  &#x27;Accept&#x27;: &#x27;application/json&#x27;
	}
	&#x60;&#x60;&#x60;
	 -->
	<xsd:complexType name="httpHeader">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="header" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>

	<!-- Identities -->
	<xsd:complexType name="identities">
		<xsd:sequence>
			<xsd:element name="identity" type="identity" minOccurs="6" maxOccurs="6"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Describes a single identity -->
	<xsd:complexType name="identity">
		<xsd:all>
			<!-- enables the identity for registration -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- The user part of a SIP URI to register the identity -->
			<xsd:element name="username" type="xsd:string" minOccurs="0"/>
			<!-- The password to authenticate the identity register -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- The display name of the identity -->
			<xsd:element name="displayname" type="xsd:string" minOccurs="0"/>
			<!-- The SIP registrar hostname/address -->
			<xsd:element name="registrar" type="xsd:string" minOccurs="0"/>
			<!-- The SIP registrar port -->
			<xsd:element name="registrarPort" minOccurs="0" default="5060">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="dtmfMethod" type="dtmfType" minOccurs="0" default="rtpPayload"/>
			<!-- The domain of the identity (may differ from registrar).
			There are scenarios, where the registrar is a specific host e.g
			sip.example.com but the sip participants are using a different
			domain e.g alice@example.org. In thisve example, the domain
			would be example.org.
			 -->
			<xsd:element name="domain" type="xsd:string" minOccurs="0"/>
			<!-- Timeout of registration in minutes -->
			<xsd:element name="registerInterval" minOccurs="0" default="30">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="5"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Timeout of subscriptions in minutes. Shorter values can produce
			a significant performance impact.
			 -->
			<xsd:element name="subscriptionInterval" minOccurs="0" default="45">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="120"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="subscriptionFailureHandling" type="subscrFailureHandling" minOccurs="0"/>
			<xsd:element name="registrationFailureHandling" type="regFailureHandling" minOccurs="0"/>
			<xsd:element name="nat" type="nat" minOccurs="0"/>
			<xsd:element name="outboundProxy" type="outboundProxy" minOccurs="0"/>
			<xsd:element name="dialplan" type="dialplan" minOccurs="0"/>
			<!-- Use the dialplan when starting a call from the CallLog.
			 -->
			<xsd:element name="useDialplanInCallLog" type="xsd:boolean" minOccurs="0"/>
			<!-- for roaming users this setting marks wether or not a roaming user
			is logged in. Whenever a roaming user loggs out we clear the
			callists and other sensitive data. Though this setting is
			identity-based we do global clearing of all sensitive data.
			 -->
			<xsd:element name="isLoggedInRoamer" type="xsd:boolean" minOccurs="0"/>
			<!-- When primary user (first &lt;role&gt;user&lt;/role&gt; in &lt;users&gt;) has set
			an url as image -&gt; use it in calls so other side may see that
			picture.
			Is send via Call-Info header.
			Image will not be send when telephony/clir is active.
			 -->
			<xsd:element name="sendUserImage" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="audiocodecs" type="audiocodeclist" minOccurs="0"/>
			<!-- When a sip-Message (an instant text-message) is received and
			shown: also sound an alert tone or not.
			 -->
			<xsd:element name="messagesAlertWithSound" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="clir" type="clirType" minOccurs="0" default="displayAnonymous"/>
			<!-- Pbx sometimes uses P-Asserted-Identity headers to signal a
			transfer. This is usually not the case except for Auerswald
			PBXes. When set to true: phone re-interprets those headers as
			transfers if the target number is sufficiently different from
			the original number.
			 -->
			<xsd:element name="pAssertedMightBeTransfer" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- The sip-username where the phone should subscribe to to get
			information about voice-messages. It is also used to make the
			call when trying to access these messages.
			 -->
			<xsd:element name="vmb" type="xsd:string" minOccurs="0"/>
			<xsd:element name="vmbAction" type="vmbAction" minOccurs="0" default="callVmb"/>
			<!-- plays local music on hold if a call of this identity is set on
			hold. When enabled, held calls will take away one audio-channel.
			Since our phones only have 2 channels, this will limit the
			number of simultaneous calls to two.
			 -->
			<xsd:element name="localmoh" type="xsd:boolean" minOccurs="0"/>
			<!-- Activates sips (SIP over TLS) on connections with this identity.
			Most likely you have to provide a certificate for the host you
			provided to be able to connect safely and successfully.
			 -->
			<xsd:element name="secureConnection" type="xsd:boolean" minOccurs="0"/>
			<!-- Use ICE to determine audio-connection. Disable this when ICE is
			not needed/used, this helps our SipStack to add the correct IP
			in sdp-offers, especially in VPN-scenarios.
			 -->
			<xsd:element name="useIce" type="xsd:boolean" minOccurs="0"/>
			<!-- This option controls whether the IP address in SDP should be
			replaced with the IP address found in Via header of the REGISTER
			response, ONLY when STUN and ICE are not used. If the value is
			FALSE (the original behavior), then the local IP address will be
			used. If TRUE, and when STUN and ICE are disabled, then the IP
			address found in registration response will be used.
			 -->
			<xsd:element name="sdpNatRewriteUse" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- This option controls whether the IP address in SDP should be
			determined by resolving the interface by the registar address.
			this can be useful if an registar is only available on a not
			primarily routed network, for example vpn
			 -->
			<xsd:element name="sdpInterfaceDetection" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="srtp" type="srtpMode" minOccurs="0" default="disabled"/>
			<!-- SIPS scheme is used if activated. Means the whole SIP path must
			be encrypted by TLS
			 -->
			<xsd:element name="Peer2PeerTls" type="xsd:boolean" minOccurs="0"/>
			<!-- Root certificate used as a trust anchor for the host. Text in
			PEM format.
			 -->
			<xsd:element name="certificate" type="pemCert" minOccurs="0"/>
			<!-- used as pre code for the user part in an invite URI in case of a
			pickup szenario. e.g. &#x27;##06&#x27;
			 -->
			<xsd:element name="pickupCode" type="xsd:string" minOccurs="0"/>
			<!-- When set, overwrites the country-specific dial-tone you hear when
			lifting the handset. Uses an internal tone-generator-syntax
			called CPT. e.g. 425@-6;(*/0/1).
			See http://wiki.auerswald.de/doku.php?id&#x3D;en:products:comfortel-d-series:developer:callProgressTones
			 -->
			<xsd:element name="dialTone" type="xsd:string" minOccurs="0"/>
			<!-- ip version (v4, v6 or automatic) for communication with the host -->
			<xsd:element name="ipVersion" type="ipVersion" minOccurs="0" default="IpAuto"/>
			<!-- optional authentication username used by some of the providers -->
			<xsd:element name="authenticationUsername" type="xsd:string" minOccurs="0"/>
			<xsd:element name="protocolType" type="networkProtocol" minOccurs="0" default="tcp"/>
			<!-- use timeout for SIP sessions -->
			<xsd:element name="sessionTimerActive" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- timeout for SIP sessions in minutes -->
			<xsd:element name="sessionTimerValue" minOccurs="0" default="15">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="2"/>
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- the identity which this one is the fallback for (if the actual
			one cannot register) 0 :&#x3D; this is not a fallback identity
			 -->
			<xsd:element name="fallbackFor" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="6"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- ringtone assigned to this identity -->
			<xsd:element name="ringtone" type="xsd:string" minOccurs="0" default="SystemDefaultRingtone"/>
			<!-- when a party wants two way early media, this setting sets the
			mic to muted. The mute will be released automatically when the
			call is connected.
			 -->
			<xsd:element name="startEarlyMediaMuted" type="xsd:boolean" minOccurs="0"/>
			<!-- The sip-uri or number of an conference bridge. When configured
			conferences will be started in that bridge instead of locally.
			 -->
			<xsd:element name="conferenceBridge" type="xsd:string" minOccurs="0"/>
			<!-- when the dialscreen is opened, and a call will be created for
			this identity the input method will be set accoring to this
			setting
			 -->
			<xsd:element name="startDialscreenAlphanumeric" type="xsd:boolean" minOccurs="0"/>
			<!-- PjSip-option contactRewriteUse (google for more details).
			Controls how often the send contact-header gets changed. Defaults
			to 2 (lots), set to 0 to have it all but fixed or 1 for an
			intermediate state.
			 -->
			<xsd:element name="rewriteContact" minOccurs="0" default="2">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="2"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Specify the number of seconds to refresh the client registration
			before the registration expires.
			The value should be lower than the configured registration time.
			This setting is ignored when useHalvedExpiry is enabled.
			 -->
			<xsd:element name="earlyRefreshRegOffset" minOccurs="0" default="5">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="5"/>
						<xsd:maxInclusive value="3600"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Send re-register after the halved expiry duration elapsed -->
			<xsd:element name="useHalvedExpiry" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="nameSources" type="nameSourceList" minOccurs="0"/>
			<xsd:element name="nrSources" type="nrSourceList" minOccurs="0"/>
			<!-- The user name for accessing the pbx WebApi. Provisioning only. -->
			<xsd:element name="auerWebApiUser" type="xsd:string" minOccurs="0"/>
			<!-- The user password for accessing the pbx WebApi. Provisioning only. -->
			<xsd:element name="auerWebApiPasswd" type="xsd:string" minOccurs="0"/>
			<!-- The HTTPS port for accessing the pbx WebApi. Provisioning only. -->
			<xsd:element name="auerWebApiPort" minOccurs="0" default="443">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- What to do when a subscription fails. -->
	<xsd:complexType name="subscrFailureHandling">
		<xsd:all>
			<xsd:element name="retryType" type="retryType" minOccurs="0" default="linear"/>
			<!-- Interval in seconds until a subscription is retried after it got
			terminated by remote. Different subscripton-failures use this
			setting differently. E.g. a notify with
			&#x60;Subscription-State: terminated&#x60; follows this setting 1:1 while
			a subscription-request that gets answered with
			&#x60;500 Server Internal Error&#x60; multiplies this setting by 10.
			 -->
			<xsd:element name="retryInterval" minOccurs="0" default="180">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- What to do when a registration fails. -->
	<xsd:complexType name="regFailureHandling">
		<xsd:all>
			<xsd:element name="retryType" type="retryType" minOccurs="0" default="linear"/>
			<!-- Interval in seconds until a registration is retried after it failed.
			 -->
			<xsd:element name="retryInterval" minOccurs="0" default="10">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- When to retry: either never, or every xy seconds (linear) or
	quadratic (i.e. first wait xy seconds, if that retry fails wait 2
	times xy seconds, if that fails wait 4 times as long until another
	attempt).
	 -->
	<xsd:simpleType name="retryType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="never"/>
			<xsd:enumeration value="linear"/>
			<xsd:enumeration value="quadratic"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="networkInterface">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="network"/>
			<xsd:enumeration value="vpn"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- protocol used for network traffic -->
	<xsd:simpleType name="networkProtocol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="udp"/>
			<xsd:enumeration value="tcp"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="srtpMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="mandatory"/>
			<xsd:enumeration value="optional"/>
			<xsd:enumeration value="disabled"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipVersion">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="IpV4"/>
			<xsd:enumeration value="IpV6"/>
			<xsd:enumeration value="IpAuto"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Settings that are needed for networks where a network address
	translation is active
	 -->
	<xsd:complexType name="nat">
		<xsd:all>
			<xsd:element name="useStunSip" type="useStun" minOccurs="0" default="inactive"/>
			<xsd:element name="useStunRtp" type="useStun" minOccurs="0" default="inactive"/>
			<!-- interval in which keepalive packets are send. Value in seconds.
			Used to ensure that every network component in use is reminded,
			that our connection is still active.
			 -->
			<xsd:element name="keepaliveInterval" minOccurs="0" default="45">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="15"/>
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="useStun">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="inactive"/>
			<xsd:enumeration value="active"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="outboundProxy">
		<xsd:all>
			<xsd:element name="mode" type="outboundProxyMode" minOccurs="0" default="inactive"/>
			<xsd:element name="url" type="xsd:string" minOccurs="0"/>
			<xsd:element name="port" minOccurs="0" default="5060">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="url2" type="xsd:string" minOccurs="0"/>
			<xsd:element name="port2" minOccurs="0" default="5060">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="outboundProxyMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="inactive"/>
			<xsd:enumeration value="automatic"/>
			<xsd:enumeration value="manual"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- a set of rules, that are applied on outgoing calls and can modify
	the number, so that this number can be routed on the outside network.
	The order of the rules is important. The first matching rule is used.
	 -->
	<xsd:complexType name="dialplan">
		<xsd:sequence>
			<xsd:element name="rule" type="rule" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- if the pattern matches, the replace string is used. (...) defines
	blocks, that can be reused with $NUMBER. If three blocks are used in
	the pattern, we can use $1 $2 and $3 in the replace.
	 -->
	<xsd:complexType name="rule">
		<xsd:all>
			<!-- a regular expression -->
			<xsd:element name="pattern" type="xsd:string"/>
			<xsd:element name="replace" type="xsd:string"/>
		</xsd:all>
	</xsd:complexType>

	<!-- List of supported audio codecs. The order of the list is important.
	When creating a connection, the server and the client use the first
	codec, that is supported by both parties.
	 -->
	<xsd:complexType name="audiocodeclist">
		<xsd:sequence>
			<xsd:element name="audiocodec" type="audiocodec" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="audiocodec">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="G.711"/>
			<xsd:enumeration value="G.722"/>
			<xsd:enumeration value="G.726"/>
			<xsd:enumeration value="G.729"/>
			<xsd:enumeration value="iLBC"/>
			<xsd:enumeration value="speex"/>
			<xsd:enumeration value="opus"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Prioritized list of where to get the telephone number from. The
	phone needs a number e.g. to present to the user and to look up
	names. If this list is empty or refers to a source that is not
	present in a call, then the phone defaults to using the from/to
	header.
	 -->
	<xsd:complexType name="nrSourceList">
		<xsd:sequence>
			<xsd:element name="nrSource" type="nrSource" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- List of desired name sources. The order of the list is important. -->
	<xsd:complexType name="nameSourceList">
		<xsd:sequence>
			<xsd:element name="nameSource" type="nameSource" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- We distinguish between the following name sources in number-to-name
	searches:
	- &#x27;fkeys&#x27; -&gt; the phone number is searched for in all Speeddial keys
	             and (if successful) the name/label of the key is
	             delivered
	- &#x27;contacts&#x27; -&gt; the phone number is searched for in all contacts and
	                (if successful) the name is delivered
	- &#x27;sip_pai&#x27; -&gt; the name received via the P-Asserted-Identity header
	- &#x27;sip_to_from&#x27; -&gt; the name received via the To or From header
	                   depending on direction of call
	- &#x27;sip_contact&#x27; -&gt; the name received via the Contact header
	- &#x27;ldap&#x27; -&gt; a request is made to an LDAP server with the phone
	            number (if successful) a name is delivered
	 -->
	<xsd:simpleType name="nameSource">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="fkeys"/>
			<xsd:enumeration value="contacts"/>
			<xsd:enumeration value="sip_pai"/>
			<xsd:enumeration value="sip_to_from"/>
			<xsd:enumeration value="sip_contact"/>
			<xsd:enumeration value="ldap"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- We distinguish between the following number sources in a call. This
	number is displayed during the call and is used for name-lookup&#x27;s
	e.g. in ldap:
	- &#x27;sip_pai&#x27; -&gt; P-Asserted-Identity header
	- &#x27;sip_to_from&#x27; -&gt; To or From header depending on direction of call
	- &#x27;sip_contact&#x27; -&gt; Contact header
	 -->
	<xsd:simpleType name="nrSource">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="sip_pai"/>
			<xsd:enumeration value="sip_to_from"/>
			<xsd:enumeration value="sip_contact"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- When clir is enabled we set the X-Privacy-Header in outgoing calls.
	We also change the From-Header to either:
	- say the display-name is &#x27;anonymous&#x27;
	- have the username set to anonymous, i.e. anonymous@registrar
	 -->
	<xsd:simpleType name="clirType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="displayAnonymous"/>
			<xsd:enumeration value="userAnonymous"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Determines whether messages for this identity are to be handled by calling the VMB or by opening the voicemail app. This action is set by the voicemail app, depending on whether the identity is configured in the app. -->
	<xsd:simpleType name="vmbAction">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="callVmb"/>
			<xsd:enumeration value="openApp"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="audioDevice">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="speaker"/>
			<xsd:enumeration value="headset"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="sound">
		<xsd:all>
			<!-- Which ringtone shall be used by default. Defaults to &quot;Office2&quot;
			accepted values:
			  80s
			  American_Phone
			  Big_A
			  Classic1
			  Classic2
			  Classic3
			  CrazyDream
			  Door
			  DreamTheme
			  Groovy1
			  Groovy2
			  Groovy3
			  Jazz1
			  Jazz2
			  Leo
			  Office1
			  Office2
			  Office3
			  Office4
			  Old_Phone
			  Road_Trip
			  Special
			  Aldebaran
			  Talitha
			  Selenium
			  Alarm_Beep_01
			  Alarm_Beep_02
			  Scandium
			 -->
			<xsd:element name="defaultRingtone" type="xsd:string" minOccurs="0"/>
			<!-- Which tone to use for notifications. Defaults to &quot;Aldebaran&quot;
			accepted values -&gt; see defaultRingtone
			 -->
			<xsd:element name="defaultNotification" type="xsd:string" minOccurs="0"/>
			<!-- Which tone to use for alarm-notifications (popup-notifications
			with sound). Defaults to &quot;Alarm_Beep_01&quot;
			accepted values -&gt; see defaultRingtone
			 -->
			<xsd:element name="defaultAlarm" type="xsd:string" minOccurs="0"/>
			<!-- Which sound shall be used by pickup-screen. When not set (default)
			screen will use defaultNotification.
			accepted values -&gt; see defaultRingtone
			 -->
			<xsd:element name="pickupScreenNotification" type="xsd:string" minOccurs="0"/>
			<xsd:element name="volumes" type="volumes" minOccurs="0"/>
			<!-- should bluetooth connections use wideband audio -->
			<xsd:element name="useBluetoothWideband" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- List of patterns and associated ringtones that can be used to
			decide which ringtone is used for which alert info.
			 -->
			<xsd:element name="alertInfoRingtones" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="alertInfoRingtone" type="alertInfoRingtone" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- Stop the signalling (ringing or call waiting) by moving in
			front of the proximity sensor. (D-600 only)
			 -->
			<xsd:element name="stopSignallingByProximity" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="alertInfoRingtone">
		<xsd:all>
			<!-- The pattern used to search for a match in the alert info. -->
			<xsd:element name="pattern" type="xsd:string" minOccurs="0"/>
			<!-- The ringtone to be used when this pattern is matched with the alert info -->
			<xsd:element name="ringtone" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="volumes">
		<xsd:all>
			<!-- volume to use when phone is ringing -->
			<xsd:element name="ringing" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume to use when a notification becomes active -->
			<xsd:element name="notifying" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume to use when an alarm becomes active -->
			<xsd:element name="alarming" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume-level used to play audio via headset -->
			<xsd:element name="headset" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume-level used to play audio via speaker -->
			<xsd:element name="speaker" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume-level used to play audio via handset -->
			<xsd:element name="handset" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="ringtone">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="80s"/>
			<xsd:enumeration value="American_Phone"/>
			<xsd:enumeration value="Big_A"/>
			<xsd:enumeration value="Champagne_Edition"/>
			<xsd:enumeration value="Classic1"/>
			<xsd:enumeration value="Classic2"/>
			<xsd:enumeration value="Classic3"/>
			<xsd:enumeration value="CrazyDream"/>
			<xsd:enumeration value="Door"/>
			<xsd:enumeration value="DreamTheme"/>
			<xsd:enumeration value="Groovy1"/>
			<xsd:enumeration value="Groovy2"/>
			<xsd:enumeration value="Groovy3"/>
			<xsd:enumeration value="Jazz1"/>
			<xsd:enumeration value="Jazz2"/>
			<xsd:enumeration value="Leo"/>
			<xsd:enumeration value="Office1"/>
			<xsd:enumeration value="Office2"/>
			<xsd:enumeration value="Office3"/>
			<xsd:enumeration value="Office4"/>
			<xsd:enumeration value="Old_Phone"/>
			<xsd:enumeration value="Road_Trip"/>
			<xsd:enumeration value="Special"/>
			<xsd:enumeration value="Aldebaran"/>
			<xsd:enumeration value="Talitha"/>
			<xsd:enumeration value="Selenium"/>
			<xsd:enumeration value="Alarm_Beep_01"/>
			<xsd:enumeration value="Alarm_Beep_02"/>
			<xsd:enumeration value="Scandium"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ringtonesWithSystemRingtone">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="SystemDefaultRingtone"/>
			<xsd:enumeration value="80s"/>
			<xsd:enumeration value="American_Phone"/>
			<xsd:enumeration value="Big_A"/>
			<xsd:enumeration value="Champagne_Edition"/>
			<xsd:enumeration value="Classic1"/>
			<xsd:enumeration value="Classic2"/>
			<xsd:enumeration value="Classic3"/>
			<xsd:enumeration value="CrazyDream"/>
			<xsd:enumeration value="Door"/>
			<xsd:enumeration value="DreamTheme"/>
			<xsd:enumeration value="Groovy1"/>
			<xsd:enumeration value="Groovy2"/>
			<xsd:enumeration value="Groovy3"/>
			<xsd:enumeration value="Jazz1"/>
			<xsd:enumeration value="Jazz2"/>
			<xsd:enumeration value="Leo"/>
			<xsd:enumeration value="Office1"/>
			<xsd:enumeration value="Office2"/>
			<xsd:enumeration value="Office3"/>
			<xsd:enumeration value="Office4"/>
			<xsd:enumeration value="Old_Phone"/>
			<xsd:enumeration value="Road_Trip"/>
			<xsd:enumeration value="Special"/>
			<xsd:enumeration value="Aldebaran"/>
			<xsd:enumeration value="Talitha"/>
			<xsd:enumeration value="Selenium"/>
			<xsd:enumeration value="Alarm_Beep_01"/>
			<xsd:enumeration value="Alarm_Beep_02"/>
			<xsd:enumeration value="Scandium"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- settings for local telephony features. -->
	<xsd:complexType name="telephony">
		<xsd:all>
			<!-- if and how a waiting call has to be signalised -->
			<xsd:element name="callWaiting" type="callWaiting" minOccurs="0"/>
			<!-- if an incoming call shall be rejected -->
			<xsd:element name="doNotDisturb" type="doNotDisturb" minOccurs="0"/>
			<xsd:element name="callForwarding" type="callForwarding" minOccurs="0"/>
			<!-- Tells the PBX to hide the callers identity in outgoing calls. -->
			<xsd:element name="clir" type="clir" minOccurs="0"/>
			<!-- default audio device in idle like headset or speaker -->
			<xsd:element name="defaultAudioDevice" type="audioDevice" minOccurs="0" default="speaker"/>
			<!-- line to use for unspecified outgoing calls. Uses the first defined line if not defined
			 -->
			<xsd:element name="activeLine" type="line" minOccurs="0"/>
			<!-- Time delay to start the call when there is no activity. Measured in milliseconds. -1 &#x3D; never
			 -->
			<xsd:element name="callStartTimeout" type="xsd:integer" minOccurs="0" default="-1"/>
			<!-- connect incoming call automatically without user-interaction -->
			<xsd:element name="autoAccept" type="autoAccept" minOccurs="0"/>
			<!-- when an outgoing call fails (busy &#x27;CCBS&#x27;, not responding &#x27;CCNR&#x27;)
			-&gt; monitor the remote via subscription and inform the user when
			   party becomes available
			 -->
			<xsd:element name="callCompletion" type="callCompletion" minOccurs="0"/>
			<xsd:element name="callBindings" type="callBindings" minOccurs="0"/>
			<!-- decide whether the reached target or the initially called target
			should be used in the calllog.
			the default will show the called target.
			Set to true, the config will lead to the reached target stated in
			the calllog, while the initially called number can be found in
			the via section of the calllog details.
			 -->
			<xsd:element name="callLogWithReachedTarget" type="xsd:boolean" minOccurs="0"/>
			<!-- Calls received or started by the phone are logged so they are
			available in the call-log e.g. to call back a missed call or
			redial a formerly called party.
			 -->
			<xsd:element name="logCalls" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- When the phone receives too many notifies to handle all at once,
			it build&#x27;s up a queue. When this setting is enabled, each time the
			phone takes notifies out of that queue, it looks at all the queued
			notifies and only uses the most recent one from a subscription.
			Only works for subscriptions with event-type &#x27;dialog&#x27;.
			 -->
			<xsd:element name="discardObsoleteNotifies" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- start a call to a specified number after a specified time when the dialer is opened -->
			<xsd:element name="directCall" type="directCall" minOccurs="0"/>
			<xsd:element name="pickupScreen" type="pickupScreen" minOccurs="0"/>
			<!-- Convert user-input for dialing numbers from &quot;+1 (206) 555-1234&quot; to
			&quot;+12065551234&quot; before making the call. Set to false if your pbx
			actually needs the special characters.
			 -->
			<xsd:element name="cleanupPhoneNumbers" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="pickupScreen">
		<xsd:all>
			<!-- automatically opens the pickup-screen that list all available
			pickable calls from all participating keys. This screen will
			never open while user is in a call.
			 -->
			<xsd:element name="showWhenNewPickupAvailable" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="playAlarmBeep" type="playPickupAlarmBeepType" minOccurs="0" default="never"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="playPickupAlarmBeepType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="never"/>
			<xsd:enumeration value="onAutoPopup"/>
			<xsd:enumeration value="onNewPickup"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="autoAccept">
		<xsd:all>
			<!-- allow calls to automatically connect when they want to (in SIP-
			invite -&gt; Alert-Info-header with info&#x3D;alert-autoanswer)
			 -->
			<xsd:element name="immediatelyWhenRequested" type="xsd:boolean" minOccurs="0"/>
			<!-- Time delay to accept an incoming call automatically. Measured in
			milliseconds. -1 &#x3D; never
			 -->
			<xsd:element name="afterTimeout" minOccurs="0" default="-1">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-1"/>
						<xsd:maxInclusive value="60000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- sound a short signal when a call gets auto-connected -->
			<xsd:element name="withAlarmBeep" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- place ongoing calls on hold in order to connect auto-answer-call. With false just lets them knock. -->
			<xsd:element name="interruptWhenBusy" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callCompletion">
		<xsd:all>
			<!-- enables the function callCompletion -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- time to wait for &#x27;not responding&#x27; in seconds -->
			<xsd:element name="timeout" minOccurs="0" default="-1">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-1"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callWaiting">
		<xsd:all>
			<!-- enables the function callWaiting -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- enables the signalisation of a waiting call -->
			<xsd:element name="tone" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="doNotDisturb">
		<xsd:all>
			<!-- enables the function doNotDisturb -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callForwarding">
		<xsd:all>
			<xsd:element name="unconditional" type="callForwardingMethod" minOccurs="0"/>
			<xsd:element name="busy" type="callForwardingMethod" minOccurs="0"/>
			<xsd:element name="noResponse" type="callForwardingMethod" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callForwardingMethod">
		<xsd:all>
			<!-- enables call forwarding -->
			<xsd:element name="active" type="xsd:boolean"/>
			<!-- the target to forward calls to -->
			<xsd:element name="target" type="uri"/>
			<!-- the time [s] after which the call must be forwarded -->
			<xsd:element name="timeout" type="xsd:integer" minOccurs="0" default="20"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="clir">
		<xsd:all>
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="directCall">
		<xsd:all>
			<!-- the target of the direct call, if empty then the direct call deactivated -->
			<xsd:element name="target" type="uri"/>
			<!-- the time [s] after which the call will be started -->
			<xsd:element name="timeout" default="10">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="provisioning">
		<xsd:all>
			<!-- enables the provisioning -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- checks the dhcp fields 66 and 67 for an provisioning url -->
			<xsd:element name="dhcp" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- checks for a provisioning redirection on connect.redirect.auerswald.de
			 -->
			<xsd:element name="redirect" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- checks via properitary sip-multicast extension for an provisioning url
			 -->
			<xsd:element name="pbx" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- the url to use when nothing else is available -->
			<xsd:element name="url" type="uri" minOccurs="0"/>
			<!-- configuration via the established sip connection -->
			<xsd:element name="sip" type="sipProvisioning" minOccurs="0"/>
			<xsd:element name="execution" type="executionTimeProv" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="sipProvisioning">
		<xsd:all>
			<!-- allows provisioning via sip -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- list of valid sender hosts -->
			<xsd:element name="allowlist" type="allowlist" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="allowlist">
		<xsd:sequence>
			<xsd:element name="allowlistEntry" type="allowlistEntry" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="allowlistEntry">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Defines when to pull current settings via provisioning. -->
	<xsd:complexType name="executionTimeProv">
		<xsd:all>
			<xsd:element name="mondays" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="tuesdays" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="wednesdays" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="thursdays" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="fridays" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="saturdays" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="sundays" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- a time in HH:MM format. By default time will be a random value
			between 0:00 till 5:55
			 -->
			<xsd:element name="time" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:pattern value="(2[0-3]|[0-1]?[0-9]):[0-5][0-9]"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- add a random delay in seconds -->
			<xsd:element name="useRandomDelay" type="xsd:boolean" minOccurs="0"/>
			<!-- minimal delay (in seconds) to apply to the given time -->
			<xsd:element name="minimalRandomDelay" type="xsd:integer" minOccurs="0" default="60"/>
			<!-- maximum delay (in seconds) to apply to the given time -->
			<xsd:element name="maximalRandomDelay" type="xsd:integer" minOccurs="0" default="3600"/>
		</xsd:all>
	</xsd:complexType>

	<!-- defines when to execute a given task. -->
	<xsd:complexType name="executionTime">
		<xsd:all>
			<xsd:element name="mondays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="tuesdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="wednesdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="thursdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="fridays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="saturdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="sundays" type="xsd:boolean" minOccurs="0"/>
			<!-- a time in HH:MM format -->
			<xsd:element name="time" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:pattern value="(2[0-3]|[0-1]?[0-9]):[0-5][0-9]"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- add a random delay in seconds -->
			<xsd:element name="useRandomDelay" type="xsd:boolean" minOccurs="0"/>
			<!-- minimal delay (in seconds) to apply to the given time -->
			<xsd:element name="minimalRandomDelay" type="xsd:integer" minOccurs="0" default="60"/>
			<!-- maximum delay (in seconds) to apply to the given time -->
			<xsd:element name="maximalRandomDelay" type="xsd:integer" minOccurs="0" default="3600"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="update">
		<xsd:all>
			<!-- check for updates -->
			<xsd:element name="check" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- automatically install updates if available -->
			<xsd:element name="autoInstall" type="xsd:boolean" minOccurs="0"/>
			<!-- url for update server -->
			<xsd:element name="url" type="uri" minOccurs="0" default="https://update.auerswald.de"/>
			<xsd:element name="execution" type="executionTime" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- settings specific to the phone -->
	<xsd:complexType name="aboutPhone">
		<xsd:all>
			<!-- the name to display for this device when no primary user is present or appropiate. -->
			<xsd:element name="deviceName" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="network">
		<xsd:all>
			<xsd:element name="ethernet" type="ethernet" minOccurs="0"/>
			<xsd:element name="vpn" type="vpn" minOccurs="0"/>
			<xsd:element name="topology" type="topology" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="vpn">
		<xsd:all>
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="vpnType" type="vpnType" minOccurs="0" default="IpsecXauthPSK"/>
			<!-- unique identifier of the Profile -->
			<xsd:element name="name" type="xsd:string"/>
			<!-- server address or resolvable name -->
			<xsd:element name="server" type="xsd:string" minOccurs="0"/>
			<!-- username, used for xauth -->
			<xsd:element name="username" type="xsd:string" minOccurs="0"/>
			<!-- pasword, used for xauth -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- multiple entries are seperated by space -->
			<xsd:element name="dnsServers" type="xsd:string" minOccurs="0"/>
			<!-- multiple entries are seperated by space -->
			<xsd:element name="searchDomains" type="xsd:string" minOccurs="0"/>
			<!-- multiple entries are seperated by space, format 10.1.0.0/16 -->
			<xsd:element name="routes" type="xsd:string" minOccurs="0"/>
			<xsd:element name="ipsecIdentifier" type="xsd:string" minOccurs="0"/>
			<!-- preshared key, used in XauthPSK -->
			<xsd:element name="ipsecSecret" type="xsd:string" minOccurs="0"/>
			<xsd:element name="ipsecUserCert" type="pemCert" minOccurs="0"/>
			<xsd:element name="ipsecUserPrivateKey" type="pemRsaKey" minOccurs="0"/>
			<xsd:element name="ipsecCaCert" type="pemCert" minOccurs="0"/>
			<xsd:element name="ipsecServerCert" type="pemCert" minOccurs="0"/>
			<!-- ensures, that traffic designated for the vpn is never routed
			except through the ipsec tunnel. Requires a ipv4 server and dns
			entry to work.
			 -->
			<xsd:element name="ipsecLockdown" type="xsd:boolean" minOccurs="0"/>
			<!-- file content of an openvpn config file -->
			<xsd:element name="openvpnConfig" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="vpnType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="IpsecXauthPSK"/>
			<xsd:enumeration value="IpsecXauthRSA"/>
			<xsd:enumeration value="IpsecHybridRSA"/>
			<xsd:enumeration value="L2TPIpsecPSK"/>
			<xsd:enumeration value="L2TPIpsecRSA"/>
			<xsd:enumeration value="OpenVPN"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- X509 certificate in PEM format -->
	<xsd:simpleType name="pemCert">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- RSA key in PEM format -->
	<xsd:simpleType name="pemRsaKey">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ethernet">
		<xsd:all>
			<xsd:element name="ipv4" type="ipv4" minOccurs="0"/>
			<xsd:element name="ipv6" type="ipv6" minOccurs="0"/>
			<xsd:element name="vlan" type="vlan" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="vlan">
		<xsd:all>
			<xsd:element name="phoneActive" type="vlanActive" minOccurs="0"/>
			<xsd:element name="phoneId" type="vlanId" minOccurs="0"/>
			<xsd:element name="phonePriority" type="vlanPriority" minOccurs="0"/>
			<xsd:element name="workstationActive" type="vlanActive" minOccurs="0"/>
			<xsd:element name="workstationId" type="vlanId" minOccurs="0"/>
			<xsd:element name="workstationPriority" type="vlanPriority" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="vlanActive">
		<xsd:restriction base="xsd:boolean">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="vlanId">
		<xsd:restriction base="xsd:integer">
			<xsd:maxInclusive value="4095"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="vlanPriority">
		<xsd:restriction base="xsd:integer">
			<xsd:maxInclusive value="7"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv4mode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="dhcp"/>
			<xsd:enumeration value="static"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ipv4">
		<xsd:all>
			<xsd:element name="mode" type="ipv4mode" default="dhcp"/>
			<xsd:element name="address" type="ipv4address" minOccurs="0"/>
			<xsd:element name="netmask" type="ipv4netmask" minOccurs="0"/>
			<xsd:element name="gateway" type="ipv4address" minOccurs="0"/>
			<xsd:element name="dns1" type="ipv4dns" minOccurs="0"/>
			<xsd:element name="dns2" type="ipv4dns" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="ipv6mode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="automatic"/>
			<xsd:enumeration value="disable"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ipv6">
		<xsd:all>
			<xsd:element name="mode" type="ipv6mode" default="disable"/>
			<xsd:element name="privacyExtensions" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="dns1" type="ipv6address" minOccurs="0"/>
			<xsd:element name="dns2" type="ipv6address" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="ipv4address">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv4dns">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])|(\s*))"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv4netmask">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(([012]?\d|3[012])|(((0|128|192|24[08]|25[24])\.0\.0\.0)|(255\.(0|128|192|24[08]|25[24])\.0\.0)|(255\.255\.(0|128|192|24[08]|25[24])\.0)|(255\.255\.255\.(0|128|192|24[08]|25[245]))))"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv6address">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(((([0-9a-fA-F]{1,4}:){7,7}([0-9a-fA-F]{1,4}))|(([0-9a-fA-F]{1,4}:){1,7})|(([0-9a-fA-F]{1,4}:){1,6}(:[0-9a-fA-F]{1,4}))|(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|(([0-9a-fA-F]{1,4}:){1,1}(:[0-9a-fA-F]{1,4}){1,6})|(:((:[0-9a-fA-F]{1,4}){1,7})|:)){0,1})"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="topology">
		<xsd:all>
			<!-- rtp frame size in milliseconds (typically 10, 20 or 30 ms)
			values lower than 10 will be handled as 0, which enables codec
			specific behaviour (the default)
			 -->
			<xsd:element name="frameSize" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="30"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="jitterBuffer" type="jitterBuffer" minOccurs="0"/>
			<xsd:element name="stunServers" type="stunServers" minOccurs="0"/>
			<!-- outgoing port of SIP messages. -->
			<xsd:element name="localSipPort" minOccurs="0" default="5060">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1024"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Validate the hostname against the CN of the provided Certificate
			on sip tls connections.
			 -->
			<xsd:element name="checkHostname" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- send rtp data only if a voice is active. This setting takes
			effect on the next start of a stream.
			 -->
			<xsd:element name="voiceActivityDetection" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="lldp" type="lldp" minOccurs="0"/>
			<!-- send sip headers in a short form. This can be used if UDP
			transports are used and the messages are to big.
			 -->
			<xsd:element name="useCompactSipHeaders" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="jitterBuffer">
		<xsd:all>
			<!-- Initial prefetch delay in milliseconds.
			The value must be between minimumPrefetch and maximumPrefetch.
			If the value is 0 prefetch will be disabled.
			 -->
			<xsd:element name="init" type="xsd:integer" minOccurs="0"/>
			<!-- Minimum prefetch delay in milliseconds.
			 -->
			<xsd:element name="minimumPrefetch" type="xsd:integer" minOccurs="0" default="60"/>
			<!-- Maximum prefetch delay in milliseconds.
			 -->
			<xsd:element name="maximumPrefetch" type="xsd:integer" minOccurs="0" default="240"/>
			<!-- delay that can be accommodated by the jitter buffer in milliseconds.
			 -->
			<xsd:element name="max" type="xsd:integer" minOccurs="0" default="360"/>
		</xsd:all>
	</xsd:complexType>

	<!-- A list of stun-server confiugurations.
	 -->
	<xsd:complexType name="stunServers">
		<xsd:sequence>
			<xsd:element name="stunServer" type="stunServer" minOccurs="0" maxOccurs="8"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A single stun-server confiuguration.
	 -->
	<xsd:complexType name="stunServer">
		<xsd:all>
			<!-- Hostname/ip of the stun server -->
			<xsd:element name="stunUrl" type="xsd:string" minOccurs="0"/>
			<!-- port of the stun server -->
			<xsd:element name="stunPort" minOccurs="0" default="3478">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- interval in which stun requests are issued. Value in minutes. -->
			<xsd:element name="stunRequestInterval" minOccurs="0" default="5">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="lldp">
		<xsd:all>
			<!-- send and receive lldp messages -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- retransmit interval in seconds -->
			<xsd:element name="interval" minOccurs="0" default="30">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="30"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- A list of templates.
	 -->
	<xsd:complexType name="templates">
		<xsd:sequence>
			<xsd:element name="template" type="template" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A template describes a functionality that can be placed on a key.
	Foremost it describes how a key works, how the LED is set and what
	happens when key is pressed. It also carries a list of parameters
	that need to be filled when this function is assigned to key.
	 -->
	<xsd:complexType name="template">
		<xsd:all>
			<xsd:element name="keyConfiguration" type="keyConfiguration"/>
			<xsd:element name="parameters" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="parameter" type="parameter" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<!-- Text identifying the Template. Has to be unique.
		Will be referenced in key structure to store which template was used.
		Free usable text or android resource tag starting with &quot;@string/&quot;
		 -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<!-- Priority of this template when presenting a list to choose the function-type a key.
		The higher the number, the higher this type is placed in the list.
		 -->
		<xsd:attribute name="prio" type="xsd:integer" default="10"/>
		<xsd:attribute name="description" type="xsd:string"/>
		<!-- The icon of the key, base64 encoded.
		The icon is scaled to fit the display container.
		If starting with @drawable/ a android resource is used
		 -->
		<xsd:attribute name="icon" type="xsd:string"/>
		<!-- When set this will be the default-label for a key of this type.
		Can be set to refer to a value of a specific parameter via
		&quot;@param-@string/paramName&quot;
		 -->
		<xsd:attribute name="label" type="xsd:string"/>
	</xsd:complexType>

	<xsd:complexType name="parameter">
		<xsd:sequence>
			<!-- List of x-path within the key structure where the value of the
			parameter is to be inserted into.
			 -->
			<xsd:element name="path" type="xsd:string" maxOccurs="unbounded"/>
			<!-- For parameters of types text, sip_uri, web_uri, number or phoneList:
			Optionally define which values are allowed (offers combo-box in UI).
			If empty, all values are allowed.
			 -->
			<xsd:element name="choices" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="choice" type="paramChoice" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<!-- Identifies the parameter. Has to be unique.
		Free usable text or android resource tag starting with &quot;@string/&quot;
		 -->
		<xsd:attribute name="name" type="xsd:string"/>
		<!-- Type for this field. Defaults to &quot;text&quot; if unspecified.
		If set to &quot;identity&quot;, must be a valid identity index, and will
		show an identity chooser in configuration UI.
		 -->
		<xsd:attribute name="type" type="paramTypeEnum" default="text"/>
		<!-- Minimum value (for type number) or length (for type text)
		 -->
		<xsd:attribute name="min" type="xsd:integer"/>
		<!-- Maximum value (for type number) or length (for type text)
		 -->
		<xsd:attribute name="max" type="xsd:integer"/>
		<xsd:attribute name="description" type="xsd:string"/>
		<!-- Optional parameters may be left empty, the save-button in PUI
		will work without them.
		 -->
		<xsd:attribute name="optional" type="xsd:boolean"/>
	</xsd:complexType>

	<xsd:complexType name="paramChoice">
		<xsd:all>
			<xsd:element name="value" type="xsd:string"/>
			<xsd:element name="description" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="paramTypeEnum">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="text"/>
			<xsd:enumeration value="boolean"/>
			<xsd:enumeration value="identity"/>
			<xsd:enumeration value="sip_uri"/>
			<xsd:enumeration value="web_uri"/>
			<xsd:enumeration value="number"/>
			<xsd:enumeration value="phone"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="display">
		<xsd:all>
			<!-- Time till lockscreen appears on no activity. Measured in
			milliseconds. -1 &#x3D; never
			 -->
			<xsd:element name="timeout" type="xsd:integer" minOccurs="0" default="-1"/>
			<xsd:element name="contrast" minOccurs="0" default="4">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="brightness" minOccurs="0" default="160">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="57"/>
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="backlightMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="manual"/>
			<xsd:enumeration value="ambientlight"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- All these keypad-settings only work on our D600 model. -->
	<xsd:complexType name="keypad">
		<xsd:all>
			<!-- Mode of operation for keypad-backlight. -->
			<xsd:element name="backlightMode" type="backlightMode" minOccurs="0" default="ambientlight"/>
			<!-- Brightness to set keypad&#x27;s backlight to. Works as maximum in
			&#x27;ambient light&#x27; mode.
			 -->
			<xsd:element name="brightness" minOccurs="0" default="255">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- The distance (in cm) on which the proximity sensor reacts to. -->
			<xsd:element name="proximitySensorDistance" minOccurs="0" default="15">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="25"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Allow screen to wake up just by waving your hand (or other body-
			parts) in front of the keypad.
			 -->
			<xsd:element name="wakeByProximity" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="userInterface">
		<xsd:all>
			<xsd:element name="display" type="display" minOccurs="0"/>
			<xsd:element name="messages" type="messages" minOccurs="0"/>
			<xsd:element name="leds" type="leds" minOccurs="0"/>
			<xsd:element name="keypad" type="keypad" minOccurs="0"/>
			<xsd:element name="extensions" type="extensions" minOccurs="0"/>
			<!-- Define how long a received sip-message shows up as pop-up notification.
			Measured in seconds.
			0 &#x3D; no timeout
			-1 &#x3D; no pop-up, just normal notification without alert
			-2 &#x3D; no notification at all for incoming sip-messages
			 -->
			<xsd:element name="sipMessageTimeout" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-2"/>
						<xsd:maxInclusive value="86400"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="extensions">
		<xsd:all>
			<!-- whether or not all function keys should show an icon. Ignored on D-100 to D-210 -->
			<xsd:element name="showIcons" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="messages">
		<xsd:all>
			<!-- title: Calls
			message: You have &lt;X&gt; missed call(s).
			 -->
			<xsd:element name="newMissedCalls" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- Message appears when the missed call log has entries, none of
			which are new to the user.
			title: Calls
			message: You have missed calls.
			 -->
			<xsd:element name="signalSeenMissedCalls" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- title: Voicemail
			message: &lt;varies&gt;
			 -->
			<xsd:element name="newVoiceMails" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- Message appears when the mailbox has entries, none of which are
			new to the user.
			title: Voicemail
			message: &lt;varies&gt;
			 -->
			<xsd:element name="signalOldMailboxMessages" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- title: Webserver insecure
			message: Admin user must change password.
			 -->
			<xsd:element name="insecureWui" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: Provisioning error.
			message: &lt;none&gt;
			 -->
			<xsd:element name="provisioningError" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Failed to download
			message: &lt;varies&gt;
			 -->
			<xsd:element name="provisioningDownloadFailed" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Failed to install
			message: &lt;varies&gt;
			 -->
			<xsd:element name="provisioningInstallFailed" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Failed to parse the XML file
			message: &lt;varies&gt;
			 -->
			<xsd:element name="provisioningXmlParseError" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: one of [Update completed - No new firmware available. -
			       New firmware available. - Update failed - Check for
			       firmware failed. - Downloading firmware failed. - Invalid
			       firmware-image.]
			message: &lt;varies&gt;
			 -->
			<xsd:element name="updateNote" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: one of [Download of file &lt;X&gt; failed. - Download of file
			&lt;X&gt;  was successful.]-image.]
			message: &lt;none&gt; or Press to install, dismiss to delete
			 -->
			<xsd:element name="downloadManager" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: &lt;name of identity&gt;
			message: Identity registration failed. Error: ..
			 -->
			<xsd:element name="sipRegistrationFailed" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: &lt;name of identity&gt;
			message: Fallback identity active
			 -->
			<xsd:element name="fallbackIdentityActive" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: &lt;name of identity&gt;
			message: one of [This fallback identity has an invalid destination
			         identity. - Multiple fallback identities to one main
			         identity are not allowed. - A fallback identity may only
			         refer to a non fallback identity.]
			 -->
			<xsd:element name="fallbackIdentityError" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: one of [Telephony impaired. - Telephony disabled.]
			message: &lt;varies&gt;
			 -->
			<xsd:element name="noRegistrationNoCalls" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: Call completion from &lt;X&gt; pending.
			message: Delete or click to stop waiting.
			 -->
			<xsd:element name="automaticCallbackEnabled" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Call completion is now possible.
			message: Participant &lt;X&gt; is now available, do you want to call back?
			 -->
			<xsd:element name="automaticCallbackAlerting" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: Back to ongoing call
			message: &lt;name &amp; nr of call partner&gt;
			 -->
			<xsd:element name="ongoingCall" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- title: &lt;name of identity&gt;
			message: Identity used by &lt;X&gt; function key not allowed
			 -->
			<xsd:element name="keyUsesFallbackIdentity" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: &lt;varies&gt;
			message: &lt;varies&gt;
			 -->
			<xsd:element name="migrationError" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- a notification created by any lua-script that wants the message-led
			to be on
			 -->
			<xsd:element name="luaOnNotification" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- a notification created by any lua-script that wants to be off
			 -->
			<xsd:element name="luaSilentNotification" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- a notification created by any lua-script that wants to blink
			 -->
			<xsd:element name="luaBlinkingNotification" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- a notification that pops up and shows the content of an incoming sip-MESSAGE
			 -->
			<xsd:element name="sipMessage" type="msgSignalisation" minOccurs="0" default="blink"/>
		</xsd:all>
	</xsd:complexType>

	<!-- How to signal a message of a certain type.
	on &#x3D; Message gets listed in messages-screen or notification drawer.
	     It will cause the Message-LED to turn on, unless there is
	     another message that overrides this with blinking.
	blink &#x3D; Message gets listed in messages-screen or notification
	        drawer. It will cause the Message-LED to blink.
	silent &#x3D; Message gets listed in messages-screen or notification
	          drawer, but doesn&#x27;t affect the message-LED-behaviour
	off &#x3D; Message never ever appears in messages-screen or notification
	       drawer, thus also doesn&#x27;t affect the message-LED-behaviour
	 -->
	<xsd:simpleType name="msgSignalisation">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="on"/>
			<xsd:enumeration value="blink"/>
			<xsd:enumeration value="silent"/>
			<xsd:enumeration value="off"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="leds">
		<xsd:all>
			<!-- When disabeled, LED of message-key will never turn on. -->
			<xsd:element name="enableMsgLed" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Describes a single auth token -->
	<xsd:complexType name="authToken">
		<xsd:all>
			<!-- The actual token -->
			<xsd:element name="token" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:minLength value="8"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- List of all auth-tokens. -->
	<xsd:complexType name="authTokens">
		<xsd:sequence>
			<xsd:element name="authToken" type="authToken" minOccurs="0" maxOccurs="5"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="remoteAccess">
		<xsd:all>
			<!-- enable remote access via http(s) - needed for action URLs (allowCallManipulationViaHttp) -->
			<xsd:element name="webd" type="xsd:boolean" minOccurs="0"/>
			<!-- enable remote access via adb -->
			<xsd:element name="adbd" type="xsd:boolean" minOccurs="0"/>
			<!-- allow http(s)-get-requests that control calls on the phone
			(start/end/hold/transfer/..)
			can only be activated if remote acces via http(s) (webd) is allowed.
			 -->
			<xsd:element name="allowCallManipulationViaHttp" type="xsd:boolean" minOccurs="0"/>
			<!-- server where phone sends call-events to. -->
			<xsd:element name="actionUrlServer" type="xsd:string" minOccurs="0"/>
			<xsd:element name="authTokens" type="authTokens" minOccurs="0"/>
			<xsd:element name="filterSettings" type="filterSettings" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Activation switch for selective showing of menu items + List of Settings main menus -->
	<xsd:complexType name="filterSettings">
		<xsd:all>
			<xsd:element name="filterActive" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="settingsFilterList" type="settingsFilterList" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- List of main menus that will be shown. (true &#x3D;&gt; show; false &#x3D;&gt; hide) -->
	<xsd:complexType name="settingsFilterList">
		<xsd:all>
			<xsd:element name="network" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="identities" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="bluetooth" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="wifi" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="sound" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="language" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="display" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="telephony" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="functions" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="cameras" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="update" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="provisioning" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="remoteaccess" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="apps" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="time_date" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="ldap" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="backup" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Configuration of pre-installed apps and store. -->
	<xsd:complexType name="apps">
		<xsd:all>
			<!-- Enables installation of additional apps. -->
			<xsd:element name="allow_install" type="xsd:boolean" minOccurs="0"/>
			<!-- Enables access to pre-installed store &#x27;F-Droid&#x27;. -->
			<xsd:element name="store_enabled" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- Enables access to pre-installed browser &#x27;Firefox Klar&#x27;. -->
			<xsd:element name="browser_enabled" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- Enables access to pre-installed mail-app &#x27;K-9 Mail&#x27;. -->
			<xsd:element name="mail_enabled" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<!-- How to signal dtmf-digits:
	- rtpPayload: use event-packages in rtp-stream
	- inband: code tone-signal right into the rtp-stream
	- sipInfo: use sip-info messages
	 -->
	<xsd:simpleType name="dtmfType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="rtpPayload"/>
			<xsd:enumeration value="inband"/>
			<xsd:enumeration value="sipInfo"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="timeAndDate">
		<xsd:all>
			<xsd:element name="ntpEnable" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="ntpServer" type="uri" minOccurs="0" default="pool.ntp.org"/>
			<xsd:element name="timezone" type="timezone" minOccurs="0"/>
			<xsd:element name="timeHourFormat" type="timeHourFormat" minOccurs="0" default="clock24hours"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="locales">
		<xsd:all>
			<xsd:element name="deviceLanguage" type="language" minOccurs="0"/>
			<xsd:element name="webserverLanguage" type="language" minOccurs="0"/>
			<xsd:element name="deviceLocation" type="locale" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="locale">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="de_DE"/>
			<xsd:enumeration value="de_AT"/>
			<xsd:enumeration value="de_CH"/>
			<xsd:enumeration value="fr_CH"/>
			<xsd:enumeration value="it_CH"/>
			<xsd:enumeration value="en_GB"/>
			<xsd:enumeration value="fr_FR"/>
			<xsd:enumeration value="el_GR"/>
			<xsd:enumeration value="pl_PL"/>
			<xsd:enumeration value="es_ES"/>
			<xsd:enumeration value="nl_BE"/>
			<xsd:enumeration value="fr_BE"/>
			<xsd:enumeration value="de_BE"/>
			<xsd:enumeration value="nl_NL"/>
			<xsd:enumeration value="it_IT"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="language">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="de_DE"/>
			<xsd:enumeration value="en_GB"/>
			<xsd:enumeration value="fr_FR"/>
			<xsd:enumeration value="el_GR"/>
			<xsd:enumeration value="pl_PL"/>
			<xsd:enumeration value="es_ES"/>
			<xsd:enumeration value="nl_NL"/>
			<xsd:enumeration value="it_IT"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- distinguishes between 10 PM and 22:00 time representation -->
	<xsd:simpleType name="timeHourFormat">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="clock12hours"/>
			<xsd:enumeration value="clock24hours"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- time zone description in olsen names. Supports correct handling for summer/winter times
	 -->
	<xsd:simpleType name="timezone">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Pacific/Midway"/>
			<xsd:enumeration value="Pacific/Honolulu"/>
			<xsd:enumeration value="America/Anchorage"/>
			<xsd:enumeration value="America/Los_Angeles"/>
			<xsd:enumeration value="America/Tijuana"/>
			<xsd:enumeration value="America/Phoenix"/>
			<xsd:enumeration value="America/Chihuahua"/>
			<xsd:enumeration value="America/Denver"/>
			<xsd:enumeration value="America/Costa_Rica"/>
			<xsd:enumeration value="America/Chicago"/>
			<xsd:enumeration value="America/Mexico_City"/>
			<xsd:enumeration value="America/Regina"/>
			<xsd:enumeration value="America/Bogota"/>
			<xsd:enumeration value="America/New_York"/>
			<xsd:enumeration value="America/Caracas"/>
			<xsd:enumeration value="America/Barbados"/>
			<xsd:enumeration value="America/Halifax"/>
			<xsd:enumeration value="America/Manaus"/>
			<xsd:enumeration value="America/Santiago"/>
			<xsd:enumeration value="America/St_Johns"/>
			<xsd:enumeration value="America/Recife"/>
			<xsd:enumeration value="America/Sao_Paulo"/>
			<xsd:enumeration value="America/Buenos_Aires"/>
			<xsd:enumeration value="America/Godthab"/>
			<xsd:enumeration value="America/Montevideo"/>
			<xsd:enumeration value="Atlantic/South_Georgia"/>
			<xsd:enumeration value="Atlantic/Azores"/>
			<xsd:enumeration value="Atlantic/Cape_Verde"/>
			<xsd:enumeration value="Africa/Casablanca"/>
			<xsd:enumeration value="Europe/London"/>
			<xsd:enumeration value="Europe/Amsterdam"/>
			<xsd:enumeration value="Europe/Belgrade"/>
			<xsd:enumeration value="Europe/Berlin"/>
			<xsd:enumeration value="Europe/Brussels"/>
			<xsd:enumeration value="Europe/Madrid"/>
			<xsd:enumeration value="Europe/Sarajevo"/>
			<xsd:enumeration value="Africa/Windhoek"/>
			<xsd:enumeration value="Africa/Brazzaville"/>
			<xsd:enumeration value="Asia/Amman"/>
			<xsd:enumeration value="Europe/Athens"/>
			<xsd:enumeration value="Europe/Istanbul"/>
			<xsd:enumeration value="Asia/Beirut"/>
			<xsd:enumeration value="Africa/Cairo"/>
			<xsd:enumeration value="Europe/Helsinki"/>
			<xsd:enumeration value="Asia/Jerusalem"/>
			<xsd:enumeration value="Europe/Minsk"/>
			<xsd:enumeration value="Africa/Harare"/>
			<xsd:enumeration value="Asia/Baghdad"/>
			<xsd:enumeration value="Europe/Moscow"/>
			<xsd:enumeration value="Asia/Kuwait"/>
			<xsd:enumeration value="Africa/Nairobi"/>
			<xsd:enumeration value="Asia/Tehran"/>
			<xsd:enumeration value="Asia/Baku"/>
			<xsd:enumeration value="Asia/Tbilisi"/>
			<xsd:enumeration value="Asia/Yerevan"/>
			<xsd:enumeration value="Asia/Dubai"/>
			<xsd:enumeration value="Asia/Kabul"/>
			<xsd:enumeration value="Asia/Karachi"/>
			<xsd:enumeration value="Asia/Oral"/>
			<xsd:enumeration value="Asia/Yekaterinburg"/>
			<xsd:enumeration value="Asia/Calcutta"/>
			<xsd:enumeration value="Asia/Colombo"/>
			<xsd:enumeration value="Asia/Katmandu"/>
			<xsd:enumeration value="Asia/Almaty"/>
			<xsd:enumeration value="Asia/Rangoon"/>
			<xsd:enumeration value="Asia/Krasnoyarsk"/>
			<xsd:enumeration value="Asia/Bangkok"/>
			<xsd:enumeration value="Asia/Jakarta"/>
			<xsd:enumeration value="Asia/Shanghai"/>
			<xsd:enumeration value="Asia/Hong_Kong"/>
			<xsd:enumeration value="Asia/Irkutsk"/>
			<xsd:enumeration value="Asia/Kuala_Lumpur"/>
			<xsd:enumeration value="Australia/Perth"/>
			<xsd:enumeration value="Asia/Taipei"/>
			<xsd:enumeration value="Asia/Seoul"/>
			<xsd:enumeration value="Asia/Tokyo"/>
			<xsd:enumeration value="Asia/Yakutsk"/>
			<xsd:enumeration value="Australia/Adelaide"/>
			<xsd:enumeration value="Australia/Darwin"/>
			<xsd:enumeration value="Australia/Brisbane"/>
			<xsd:enumeration value="Australia/Hobart"/>
			<xsd:enumeration value="Australia/Sydney"/>
			<xsd:enumeration value="Asia/Vladivostok"/>
			<xsd:enumeration value="Pacific/Guam"/>
			<xsd:enumeration value="Asia/Magadan"/>
			<xsd:enumeration value="Pacific/Noumea"/>
			<xsd:enumeration value="Pacific/Majuro"/>
			<xsd:enumeration value="Pacific/Auckland"/>
			<xsd:enumeration value="Pacific/Fiji"/>
			<xsd:enumeration value="Pacific/Tongatapu"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="logging">
		<xsd:all>
			<!-- on D110/210: defaults to false, log will only contain errors and warnings
			on D400/600: defaults to true, log will not be restricted
			 -->
			<xsd:element name="extendedLogging" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="remotes" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="remoteLog" type="remoteLog" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- Describes a log-server -->
	<xsd:complexType name="remoteLog">
		<xsd:all>
			<xsd:element name="server" type="hostname"/>
			<xsd:element name="port" type="port"/>
			<xsd:element name="protocol" type="logProtocol"/>
			<xsd:element name="filter" type="logcatFilter" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Protocol to use for logging -->
	<xsd:simpleType name="logProtocol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="udp"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Hostname of the log server -->
	<xsd:simpleType name="hostname">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Port of the log server -->
	<xsd:simpleType name="port">
		<xsd:restriction base="xsd:integer">
			<xsd:minInclusive value="1"/>
			<xsd:maxInclusive value="65535"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Filter to use for logging. A space-separated list of TAG[:Priority].
	TAG can be &quot;*&quot; for all, Priority can be one of
	S:silent E:error W:warning I:info D:debug V:verbose.
	Default priority if omitted is [V]erbose.
	 -->
	<xsd:simpleType name="logcatFilter">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Libraries can be included into other lua-code by using its name
	within a require-statement. E.g.: &#x60;require(&quot;myAwesomeLib&quot;)&#x60;
	 -->
	<xsd:complexType name="luaLibraries">
		<xsd:sequence>
			<xsd:element name="luaLibrary" type="luaScript" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- AutoStarters are lua-scripts that continously run in the background. -->
	<xsd:complexType name="luaAutoStarters">
		<xsd:sequence>
			<xsd:element name="luaScript" type="luaScript" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="luaScript">
		<xsd:all>
			<xsd:element name="code" type="luaCode" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="name" type="xsd:string"/>
	</xsd:complexType>

	<!-- A list of arbitrary key-value pairs for lua-scripts that need to remember data over reboots. -->
	<xsd:complexType name="luaConfig">
		<xsd:sequence>
			<xsd:element name="luaConfigPair" type="luaConfigPair" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="luaConfigPair">
		<xsd:all>
			<xsd:element name="value" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<!-- The key that identifies the value. Make it very very unique so
		no other lua-script might accidentally use the same one and
		overwrites your scripts data.
		 -->
		<xsd:attribute name="key" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="resources">
		<xsd:all>
			<xsd:element name="strings" type="stringResources" minOccurs="0"/>
			<xsd:element name="drawables" type="drawableResources" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="drawableResources">
		<xsd:sequence>
			<xsd:element name="drawable" type="drawableResource" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- List of a additional translations that were not &quot;baked into&quot; the firmware.
	Can be used by templates to translate a custom parammeter-name.
	 -->
	<xsd:complexType name="stringResources">
		<xsd:sequence>
			<xsd:element name="string" type="stringResource" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="stringResource">
		<xsd:all>
			<xsd:element name="text" type="xsd:string"/>
		</xsd:all>
		<xsd:attribute name="locale" type="locale"/>
		<xsd:attribute name="name" type="resourceName" use="required"/>
	</xsd:complexType>

	<!-- List of a additional icons that were not &quot;baked into&quot; the firmware.
	 -->
	<xsd:complexType name="drawableResource">
		<xsd:all>
			<xsd:element name="icon" type="xsd:string"/>
		</xsd:all>
		<xsd:attribute name="name" type="resourceName" use="required"/>
	</xsd:complexType>

	<xsd:simpleType name="resourceName">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="([a-z_]*)"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- List of local contacts -->
	<xsd:complexType name="contactList">
		<xsd:sequence>
			<xsd:element name="contact" type="contact" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- a contact list entry -->
	<xsd:complexType name="contact">
		<xsd:all>
			<!-- The display name for the contact. -->
			<xsd:element name="displayName" type="xsd:string" minOccurs="0"/>
			<!-- The given name for the contact. -->
			<xsd:element name="givenName" type="xsd:string" minOccurs="0"/>
			<!-- The middle name for the contact. -->
			<xsd:element name="middleName" type="xsd:string" minOccurs="0"/>
			<!-- The family name for the contact. -->
			<xsd:element name="familyName" type="xsd:string" minOccurs="0"/>
			<!-- The nick name for the contact. -->
			<xsd:element name="nickName" type="xsd:string" minOccurs="0"/>
			<!-- The contact&#x27;s honorific prefix, e.g. &quot;Sir&quot; -->
			<xsd:element name="namePrefix" type="xsd:string" minOccurs="0"/>
			<!-- The contact&#x27;s honorific suffix, e.g. &quot;Jr&quot; -->
			<xsd:element name="nameSuffix" type="xsd:string" minOccurs="0"/>
			<!-- The phonetic version of the given name for the contact. -->
			<xsd:element name="phoneticGivenName" type="xsd:string" minOccurs="0"/>
			<!-- The phonetic version of the middle name for the contact. -->
			<xsd:element name="phoneticMiddleName" type="xsd:string" minOccurs="0"/>
			<!-- The phonetic version of the family name for the contact. -->
			<xsd:element name="phoneticFamilyName" type="xsd:string" minOccurs="0"/>
			<!-- The contact ist starred, if it is a favorite contact (values 0 or 1) -->
			<xsd:element name="starred" type="xsd:string" minOccurs="0"/>
			<!-- The custome ringtone of the contact -->
			<xsd:element name="ringtone" type="xsd:string" minOccurs="0"/>
			<!-- contact photo as base64 string -->
			<xsd:element name="photo" type="xsd:string" minOccurs="0"/>
			<!-- List of phone numbers. -->
			<xsd:element name="phoneNumberList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="phoneNumber" type="phoneNumber" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of e-mail addresses. -->
			<xsd:element name="emailAddressList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="emailAddress" type="emailAddress" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of postal addresses. -->
			<xsd:element name="postalAddressList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="postalAddress" type="postalAddress" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of organizations. -->
			<xsd:element name="organizationList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="organization" type="organization" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of unspecified data of the contact. -->
			<xsd:element name="additionalDataList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="additionalData" type="additionalData" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- a phone number entry -->
	<xsd:complexType name="phoneNumber">
		<xsd:all>
			<!-- The number is the primary number (values 0 or 1) -->
			<xsd:element name="isPrimary" type="xsd:string" minOccurs="0"/>
			<!-- Type of Number (like home, work, mobile, fax, etc) -->
			<xsd:element name="detailType" type="xsd:string" minOccurs="0"/>
			<!-- The phone number as the user entered it. -->
			<xsd:element name="number" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- an e-mail address entry -->
	<xsd:complexType name="emailAddress">
		<xsd:all>
			<!-- Type of e-mail address (like home, work, other, mobile, etc) -->
			<xsd:element name="detailType" type="xsd:string" minOccurs="0"/>
			<!-- The e-mail address as the user entered it. -->
			<xsd:element name="address" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- a postal address entry -->
	<xsd:complexType name="postalAddress">
		<xsd:all>
			<!-- Type of postal address (like home, work, other, etc) -->
			<xsd:element name="detailType" type="xsd:string" minOccurs="0"/>
			<!-- Can be street, avenue, road, etc. This element also includes
			the house number and room/apartment/flat/floor number.
			 -->
			<xsd:element name="street" type="xsd:string" minOccurs="0"/>
			<!-- Postal code. Usually country-wide, but sometimes specific to
			the city (e.g. &quot;2&quot; in &quot;Dublin 2, Ireland&quot; addresses).
			 -->
			<xsd:element name="postcode" type="xsd:string" minOccurs="0"/>
			<!-- A state, province, county (in Ireland), Bundesland (in
			Germany), departement (in France), etc.
			 -->
			<xsd:element name="region" type="xsd:string" minOccurs="0"/>
			<!-- Can be city, village, town, borough, etc. This is the postal
			town and not necessarily the place of residence or place of
			business.
			 -->
			<xsd:element name="city" type="xsd:string" minOccurs="0"/>
			<!-- The name or code of the country. -->
			<xsd:element name="country" type="xsd:string" minOccurs="0"/>
			<!-- This is used to disambiguate a street address when a city
			contains more than one street with the same name, or to
			specify a small place whose mail is routed through a larger
			postal town. In China it could be a county or a minor city.
			 -->
			<xsd:element name="neighborhood" type="xsd:string" minOccurs="0"/>
			<!-- Covers actual P.O. boxes, drawers, locked bags, etc. This
			is usually but not always mutually exclusive with street.
			 -->
			<xsd:element name="pobox" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- a organization entry -->
	<xsd:complexType name="organization">
		<xsd:all>
			<!-- The company as the user entered it. -->
			<xsd:element name="company" type="xsd:string" minOccurs="0"/>
			<!-- The position title at this company as the user entered it. -->
			<xsd:element name="title" type="xsd:string" minOccurs="0"/>
			<!-- The department at this company as the user entered it. -->
			<xsd:element name="department" type="xsd:string" minOccurs="0"/>
			<!-- The job description at this company as the user entered it. -->
			<xsd:element name="jobDescription" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- an additional unspecified data entry for data that could not be assigned to any other mimetype -->
	<xsd:complexType name="additionalData">
		<xsd:all>
			<xsd:element name="mimetype" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data1" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data2" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data3" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data4" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data5" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data6" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data7" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data8" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data9" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data10" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data11" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data12" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data13" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data14" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data15" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- designing the home screen -->
	<xsd:complexType name="homeScreenDesign">
		<xsd:all>
			<xsd:element name="backgroundImage" type="backgroundImage" minOccurs="0"/>
			<!-- Name of a configured camera. Its feed will be shown in the
			background of the homescreen. BackgroundImage will be ignored
			when there is a stream.
			 -->
			<xsd:element name="backgroundVideo" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- the wallpaper image may be the link to an image (http/https) on a
	webserver OR a base64 encoded image, should be jpg or png not bigger
	than 1MB.
	 -->
	<xsd:simpleType name="backgroundImage">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

  <!-- Structure of the android wifi settings
    Note: no password can be extracted, but you can restore with a password set.
    Since the settings are very technical, it is suggested to configure a wifi on your devices and creating a backup afterwards.
  -->
  <xsd:element name="wifi" type="wifiType"/>
  <xsd:complexType name="wifiType">
    <xsd:all>
      <xsd:element name="enabled" type="xsd:boolean" minOccurs="0"/>
      <xsd:element name="networks" type="networksType" minOccurs="0"/>
    </xsd:all>
    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
    <!-- version attribute -->
    <xsd:attribute name="version" type="xsd:string" default="1.30.2"/>
  </xsd:complexType>
  <xsd:complexType name="networksType">
    <xsd:sequence>
      <xsd:element name="configuration" type="wifiConfiguration" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="wifiConfiguration">
    <xsd:sequence>
      <xsd:element name="wepPassword" type="xsd:string" minOccurs="0"/>
      <xsd:element name="wpa2Password" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bssid" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fqdn" type="xsd:string" minOccurs="0"/>
      <xsd:element name="isHiddenWifi" type="xsd:boolean" minOccurs="0"/>
      <xsd:element name="priority" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="allowedAuthAlgorithms" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedGroupCiphers" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedKeyManagement" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedPairwiseCiphers" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedProtocols" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="wpa2Enterprise" type="wpa2Enterprise" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/> 
  </xsd:complexType>
  <xsd:complexType name="wpa2Enterprise">
    <xsd:all>
      <xsd:element name="method" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="phase2" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="anonymousIdentity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="identity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="password" type="xsd:string" minOccurs="0"/>
      <xsd:element name="altSubjectMatch" type="xsd:string" minOccurs="0"/>
      <xsd:element name="domainSuffixMatch" type="xsd:string" minOccurs="0"/>
      <xsd:element name="plmn" type="xsd:string" minOccurs="0"/>
      <xsd:element name="realm" type="xsd:string" minOccurs="0"/>
    </xsd:all>
  </xsd:complexType>

  <xsd:complexType name="operationType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="path" type="xsd:string" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:element name="operations">
    <xsd:complexType>
      <xsd:sequence>
	<xsd:element name="delete" minOccurs="0" maxOccurs="unbounded">
    	  <xsd:complexType>
            <xsd:attribute name="path" type="xsd:string" />
          </xsd:complexType>
        </xsd:element>
	<xsd:element name="replace" type="operationType" minOccurs="0" maxOccurs="unbounded"/>
	<xsd:element name="add" type="operationType" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="provisioningSet">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="operations" minOccurs="0"/>
        <xsd:element ref="configuration"/>
        <xsd:element ref="operations" minOccurs="0"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
