<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <defaults public="false" />

        <service id="controller_name_converter" class="Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser">
            <tag name="monolog.logger" channel="request" />
            <argument type="service" id="kernel" />
        </service>

        <service id="controller_resolver" class="Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver">
            <tag name="monolog.logger" channel="request" />
            <argument type="service" id="service_container" />
            <argument type="service" id="controller_name_converter" />
            <argument type="service" id="logger" on-invalid="ignore" />
        </service>

        <service id="argument_metadata_factory" class="Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory" />

        <service id="argument_resolver" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver">
            <argument type="service" id="argument_metadata_factory" />
            <argument /> <!-- argument value resolvers -->
        </service>

        <service id="argument_resolver.request_attribute" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver">
            <tag name="controller.argument_value_resolver" priority="100" />
        </service>

        <service id="argument_resolver.request" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver">
            <tag name="controller.argument_value_resolver" priority="50" />
        </service>

        <service id="argument_resolver.session" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver">
            <tag name="controller.argument_value_resolver" priority="50" />
        </service>

        <service id="argument_resolver.service" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\ServiceValueResolver">
            <tag name="controller.argument_value_resolver" priority="-50" />
            <argument />
        </service>

        <service id="argument_resolver.default" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver">
            <tag name="controller.argument_value_resolver" priority="-100" />
        </service>

        <service id="argument_resolver.variadic" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver">
            <tag name="controller.argument_value_resolver" priority="-150" />
        </service>

        <service id="response_listener" class="Symfony\Component\HttpKernel\EventListener\ResponseListener" public="true">
            <tag name="kernel.event_subscriber" />
            <argument>%kernel.charset%</argument>
        </service>

        <service id="streamed_response_listener" class="Symfony\Component\HttpKernel\EventListener\StreamedResponseListener" public="true">
            <tag name="kernel.event_subscriber" />
        </service>

        <service id="locale_listener" class="Symfony\Component\HttpKernel\EventListener\LocaleListener" public="true">
            <tag name="kernel.event_subscriber" />
            <argument type="service" id="request_stack" />
            <argument>%kernel.default_locale%</argument>
            <argument type="service" id="router" on-invalid="ignore" />
        </service>

        <service id="validate_request_listener" class="Symfony\Component\HttpKernel\EventListener\ValidateRequestListener" public="true">
            <tag name="kernel.event_subscriber" />
        </service>

        <service id="resolve_controller_name_subscriber" class="Symfony\Bundle\FrameworkBundle\EventListener\ResolveControllerNameSubscriber">
            <argument type="service" id="controller_name_converter" />
            <tag name="kernel.event_subscriber" />
        </service>
    </services>
</container>
