<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
	license agreements. See the NOTICE file distributed with this work for additional 
	information regarding copyright ownership. The ASF licenses this file to 
	you under the Apache License, Version 2.0 (the "License"); you may not use 
	this file except in compliance with the License. You may obtain a copy of 
	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
	by applicable law or agreed to in writing, software distributed under the 
	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
	OF ANY KIND, either express or implied. See the License for the specific 
	language governing permissions and limitations under the License. -->
<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.A' activate='start'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.A' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.A' />
		</service>
		<reference name='b'
			interface='org.apache.felix.scr.integration.components.felix3680.B'
			bind='bindB' />
		<reference name='c'
			interface='org.apache.felix.scr.integration.components.felix3680.C'
			bind='bindC' />
		<reference name='d'
			interface='org.apache.felix.scr.integration.components.felix3680.D'
			bind='bindD' />
		<reference name='e'
			interface='org.apache.felix.scr.integration.components.felix3680.E'
			bind='bindE' />
		<reference name='f'
			interface='org.apache.felix.scr.integration.components.felix3680.F'
			bind='bindF' />
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.B' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.B' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.B' />
		</service>
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.C' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.C' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.C' />
		</service>
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.D' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.D' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.D' />
		</service>
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.E' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.E' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.E' />
		</service>
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.F' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.F' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.F' />
		</service>
		<reference name='g'
			interface='org.apache.felix.scr.integration.components.felix3680.G'
			bind='bindG' />
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.G' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.G' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.G' />
		</service>
		<reference name='h'
			interface='org.apache.felix.scr.integration.components.felix3680.H'
			bind='bindH' />
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.H' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.H' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.H' />
		</service>
		<reference name='i'
			interface='org.apache.felix.scr.integration.components.felix3680.I'
			bind='bindI' />
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.I' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.I' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.I' />
		</service>
		<reference name='j'
			interface='org.apache.felix.scr.integration.components.felix3680.J'
			bind='bindJ' />
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.J' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.J' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.J' />
		</service>
		<reference name='k'
			interface='org.apache.felix.scr.integration.components.felix3680.K'
			bind='bindK' />
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.K' enabled='false' activate='start' deactivate='stop'>
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.K' />
		<service>
			<provide interface='org.apache.felix.scr.integration.components.felix3680.K' />
		</service>
	</scr:component>

	<scr:component xmlns:scr='http://www.osgi.org/xmlns/scr/v1.1.0'
		name='org.apache.felix.scr.integration.components.felix3680.Main'
		activate='start' deactivate='stop' enabled="false">
		<implementation
			class='org.apache.felix.scr.integration.components.felix3680.Main' />
		<reference name='a'
			interface='org.apache.felix.scr.integration.components.felix3680.A'
			cardinality='0..n' bind='bindA' unbind='unbindA' policy='dynamic' />
		<reference name='logService' interface='org.osgi.service.log.LogService'
			bind='bindLogService' />
		<reference name='sCR' interface='org.apache.felix.scr.ScrService'
			bind='bindSCR' />
	</scr:component>
</components>
