# coding: utf-8
from types import SimpleNamespace

from datetime import datetime, timedelta
from unittest.mock import patch

from dateutil.relativedelta import relativedelta
from jinja2 import Undefined, Markup
from mock import Mock

from app.jinja_filters import (
    format_date, format_conditional_date, format_currency, get_currency_symbol,
    format_multilined_string, format_percentage, format_date_range,
    format_household_member_name, format_datetime,
    format_number_to_alphabetic_letter, format_unit, format_currency_for_input,
    format_number, format_unordered_list, format_unit_input_label,
    format_household_member_name_possessive, concatenated_list,
    calculate_years_difference, get_current_date, as_london_tz, max_value,
    min_value, get_question_title, get_answer_label,
    format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom,
    format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list)
from tests.app.app_context_test_case import AppContextTestCase


class TestJinjaFilters(AppContextTestCase):  # pylint: disable=too-many-public-methods
    def setUp(self):
        self.autoescape_context = Mock(autoescape=True)
        super(TestJinjaFilters, self).setUp()

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='en_GB'))
    def test_format_currency_for_input(self):
        self.assertEqual(format_currency_for_input('100', 2), '100.00')
        self.assertEqual(format_currency_for_input('100.0', 2), '100.00')
        self.assertEqual(format_currency_for_input('100.00', 2), '100.00')
        self.assertEqual(format_currency_for_input('1000'), '1,000')
        self.assertEqual(format_currency_for_input('10000'), '10,000')
        self.assertEqual(format_currency_for_input('100000000'), '100,000,000')
        self.assertEqual(format_currency_for_input('100000000', 2), '100,000,000.00')
        self.assertEqual(format_currency_for_input(0, 2), '0.00')
        self.assertEqual(format_currency_for_input(0), '0')
        self.assertEqual(format_currency_for_input(''), '')
        self.assertEqual(format_currency_for_input(None), '')
        self.assertEqual(format_currency_for_input(Undefined()), '')

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='en_GB'))
    def test_get_currency_symbol(self):
        self.assertEqual(get_currency_symbol('GBP'), '£')
        self.assertEqual(get_currency_symbol('EUR'), '€')
        self.assertEqual(get_currency_symbol('USD'), 'US$')
        self.assertEqual(get_currency_symbol('JPY'), 'JP¥')
        self.assertEqual(get_currency_symbol(''), '')

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='en_GB'))
    def test_format_currency(self):
        self.assertEqual(format_currency(self.autoescape_context, '11', 'GBP'), "<span class='date'>£11.00</span>")
        self.assertEqual(format_currency(self.autoescape_context, '11.99', 'GBP'), "<span class='date'>£11.99</span>")
        self.assertEqual(format_currency(self.autoescape_context, '11000', 'USD'), "<span class='date'>US$11,000.00</span>")
        self.assertEqual(format_currency(self.autoescape_context, 0), "<span class='date'>£0.00</span>")
        self.assertEqual(format_currency(self.autoescape_context, 0.00), "<span class='date'>£0.00</span>")
        self.assertEqual(format_currency(self.autoescape_context, '', ), "<span class='date'></span>")
        self.assertEqual(format_currency(self.autoescape_context, None), "<span class='date'></span>")
        self.assertEqual(format_currency(self.autoescape_context, Undefined()), "<span class='date'></span>")

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='en_GB'))
    def test_format_number(self):
        self.assertEqual(format_number(123), '123')
        self.assertEqual(format_number('123.4'), '123.4')
        self.assertEqual(format_number('123.40'), '123.4')
        self.assertEqual(format_number('1000'), '1,000')
        self.assertEqual(format_number('10000'), '10,000')
        self.assertEqual(format_number('100000000'), '100,000,000')
        self.assertEqual(format_number(0), '0')
        self.assertEqual(format_number(0.00), '0')
        self.assertEqual(format_number(''), '')
        self.assertEqual(format_number(None), '')
        self.assertEqual(format_number(Undefined()), '')

    def test_format_multilined_string_matches_carriage_return(self):
        # Given
        new_line = 'this is on a new\rline'

        # When
        format_value = format_multilined_string(self.autoescape_context, new_line)

        self.assertEqual(format_value, 'this is on a new<br>line')

    def test_format_multilined_string_matches_new_line(self):
        # Given
        new_line = 'this is on a new\nline'

        # When
        format_value = format_multilined_string(self.autoescape_context,
                                                new_line)

        self.assertEqual(format_value, 'this is on a new<br>line')

    def test_format_multilined_string_matches_carriage_return_new_line(self):
        # Given
        new_line = 'this is on a new\r\nline'

        # When
        format_value = format_multilined_string(self.autoescape_context, new_line)

        self.assertEqual(format_value, 'this is on a new<br>line')

    def test_format_multilined_string(self):
        # Given
        new_line = 'this is\ron a\nnew\r\nline'

        # When
        format_value = format_multilined_string(self.autoescape_context,
                                                new_line)

        self.assertEqual(format_value, 'this is<br>on a<br>new<br>line')

    def test_format_multilined_string_auto_escape(self):
        # Given
        new_line = '<'

        # When
        format_value = format_multilined_string(self.autoescape_context, new_line)

        self.assertEqual(str(format_value), '&lt;')

    def test_get_current_date(self):
        # Given
        date_format = '%-d %B %Y'

        # When
        format_value = get_current_date(self.autoescape_context)
        current_date = as_london_tz(datetime.utcnow()).strftime(date_format)

        # Then
        self.assertEqual(format_value, "<span class='date'>{date}</span>".format(date=current_date))

    def test_format_date(self):
        # Given
        date = '2017-01-01'

        # When
        with self.app_request_context('/'):
            format_value = format_date(self.autoescape_context, date)

        # Then
        self.assertEqual(format_value, "<span class='date'>1 January 2017</span>")

    def test_format_date_month_year(self):
        # Given
        date = '2017-01'

        # When
        with self.app_request_context('/'):
            format_value = format_date(self.autoescape_context, date)

        # Then
        self.assertEqual(format_value, "<span class='date'>January 2017</span>")

    def test_format_date_markup(self):
        # Given
        date = [Markup('2017-01')]

        # When
        with self.app_request_context('/'):
            format_value = format_date(self.autoescape_context, date)

        # Then
        self.assertEqual(format_value, "<span class='date'>January 2017</span>")

    def test_format_date_non_string(self):
        # Given
        date = 123

        # When
        format_value = format_date(self.autoescape_context, date)

        # Then
        self.assertEqual(format_value, 123)

    def test_format_date_none(self):
        # Given
        date = None

        # When
        format_value = format_date(self.autoescape_context, date)

        # Then
        self.assertIsNone(format_value)

    def test_format_date_time_in_bst(self):
        # Given
        date_time = '2018-03-29T11:59:13.528680'

        # When
        with self.app_request_context('/'):
            format_value = format_datetime(self.autoescape_context, date_time)

        # Then
        self.assertEqual(format_value, "<span class='date'>29 March 2018 at 12:59</span>")

    def test_format_date_time_in_gmt(self):
        # Given
        date_time = '2018-10-28T11:59:13.528680'

        # When
        with self.app_request_context('/'):
            format_value = format_datetime(self.autoescape_context, date_time)

        # Then
        self.assertEqual(format_value, "<span class='date'>28 October 2018 at 11:59</span>")

    def test_format_conditional_date_not_date(self):
        # Given       no test for integers this check was removed from jinja_filters

        invalid_input = [('1', None),
                         ('1-1-1', None)]

        # When
        for nonsense in invalid_input:
            date1 = nonsense[0]
            date2 = nonsense[1]
            with self.assertRaises(Exception) as exception:
                format_conditional_date(self.autoescape_context, date1, date2)
        # Then
            self.assertIn("does not match format '%Y-%m'", str(exception.exception))

    def test_format_conditional_date_not_set(self):
        # Given

        # When
        with self.assertRaises(Exception) as exception:
            format_conditional_date(self.autoescape_context, None, None)

        # Then
        self.assertIn('No valid dates passed to format_conditional_dates filter', str(exception.exception))

    def test_format_conditional_date(self):
        # Given

        datelist = [('2016-01-12', '2016-02-12', '12 January 2016'),
                    ('2017-12-23', None, '23 December 2017'),
                    (None, '2017-12-24', '24 December 2017')]

        # When
        with self.app_request_context('/'):
            for triple in datelist:
                date1 = triple[0]
                date2 = triple[1]

                format_value = format_conditional_date(self.autoescape_context, date1, date2)

                # Then
                self.assertEqual(format_value, "<span class='date'>{date}</span>".format(date=triple[2]))

    def test_calculate_years_difference(self):
        with patch('app.setup.get_session_store', return_value=None):
            # Given
            ten_years_ago = (datetime.today()+relativedelta(years=-10)).strftime('%Y-%m-%d')

            date_list = [('2017-01-30', '2018-01-30', '1 year'),
                         ('2015-02-02', '2018-02-01', '2 years'),
                         ('2016-02-29', '2017-02-28', '1 year'),
                         ('2016-02-29', '2020-02-28', '3 years'),
                         (ten_years_ago, 'now', '10 years')]

            for dates in date_list:
                start_date = dates[0]
                end_date = dates[1]

                # When
                calculated_value = calculate_years_difference(start_date, end_date)

                # Then
                self.assertEqual(calculated_value, dates[2])

    def test_calculate_years_difference_none(self):
        # Given
        with self.assertRaises(Exception) as e:

            # When
            calculate_years_difference(None, '2017-01-17')

        # Then
        self.assertEqual('Valid date(s) not passed to calculate_years_difference filter', str(e.exception))

    def test_format_date_range(self):
        # Given
        start_date = '2017-01-01'
        end_date = '2017-01-31'

        # When
        with self.app_request_context('/'):
            format_value = format_date_range(self.autoescape_context, start_date, end_date)

        # Then
        self.assertEqual(format_value, "<span class='date'>1 January 2017</span> to <span class='date'>31 January 2017</span>")

    def test_format_date_range_missing_end_date(self):
        # Given
        start_date = '2017-01-01'

        # When
        with self.app_request_context('/'):
            format_value = format_date_range(self.autoescape_context, start_date)

        # Then
        self.assertEqual(format_value, "<span class='date'>1 January 2017</span>")

    def test_format_household_member_name(self):
        # Given
        name = ['John', 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John Doe')

    def test_format_household_member_name_no_surname(self):
        # Given
        name = ['John', '']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John')

    def test_format_household_member_name_surname_is_none(self):
        # Given
        name = ['John', None]

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John')

    def test_format_household_member_name_no_first_name(self):
        # Given
        name = ['', 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'Doe')

    def test_format_household_member_name_first_name_is_none(self):
        # Given
        name = [None, 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'Doe')

    def test_format_household_member_name_first_middle_and_last(self):
        # Given
        name = ['John', 'J', 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John J Doe')

    def test_format_household_member_name_no_middle_name(self):
        # Given
        name = ['John', '', 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John Doe')

    def test_format_household_member_name_middle_name_is_none(self):
        # Given
        name = ['John', None, 'Doe']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John Doe')

    def test_format_household_member_name_trim_spaces(self):
        # Given
        name = ['John  ', '   Doe   ']

        # When
        format_value = format_household_member_name(name)

        self.assertEqual(format_value, 'John Doe')

    def test_format_household_member_name_possessive(self):
        # Given
        name = ['John', 'Doe']

        # When
        format_value = format_household_member_name_possessive(name)

        self.assertEqual(format_value, 'John Doe\u2019s')

    def test_format_household_member_name_possessive_with_no_names(self):
        # Given
        name = [Undefined(), Undefined()]

        # When
        format_value = format_household_member_name_possessive(name)

        self.assertIsNone(format_value)

    def test_format_household_member_name_possessive_trailing_s(self):
        # Given
        name = ['John', 'Does']

        # When
        format_value = format_household_member_name_possessive(name)

        self.assertEqual(format_value, 'John Does\u2019')

    def test_concatenated_list(self):
        # Given
        list_items = ['1 The ONS', 'Newport', 'NP108XG']

        # When
        format_value = concatenated_list(list_items)

        self.assertEqual(format_value, '1 The ONS, Newport, NP108XG')

    def test_concatenated_list_one_entry(self):
        # Given
        list_items = ['One entry']

        # When
        format_value = concatenated_list(list_items)

        self.assertEqual(format_value, 'One entry')

    def test_concatenated_list_trim_white_spaces_and_trailing_commas(self):
        # Given
        list_items = ['', '1 The ONS  ', 'Newport  ', '  NP108XG', '']

        # When
        format_value = concatenated_list(list_items)

        self.assertEqual(format_value, '1 The ONS, Newport, NP108XG')

    def test_format_percentage(self):
        self.assertEqual(format_percentage('100'), '100%')
        self.assertEqual(format_percentage(100), '100%')
        self.assertEqual(format_percentage(4.5), '4.5%')

    def test_format_number_to_alphabetic_letter(self):
        self.assertEqual(format_number_to_alphabetic_letter(0), 'a')
        self.assertEqual(format_number_to_alphabetic_letter(4), 'e')
        self.assertEqual(format_number_to_alphabetic_letter(25), 'z')
        self.assertEqual(format_number_to_alphabetic_letter(-1), '')

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='en_GB'))
    def test_format_unit(self):
        self.assertEqual(format_unit('length-meter', 100), '100 m')
        self.assertEqual(format_unit('length-centimeter', 100), '100 cm')
        self.assertEqual(format_unit('length-mile', 100), '100 mi')
        self.assertEqual(format_unit('length-kilometer', 100), '100 km')
        self.assertEqual(format_unit('area-square-meter', 100), '100 m²')
        self.assertEqual(format_unit('area-square-centimeter', 100), '100 cm²')
        self.assertEqual(format_unit('area-square-kilometer', 100), '100 km²')
        self.assertEqual(format_unit('area-square-mile', 100), '100 sq mi')
        self.assertEqual(format_unit('area-hectare', 100), '100 ha')
        self.assertEqual(format_unit('area-acre', 100), '100 ac')
        self.assertEqual(format_unit('volume-cubic-meter', 100), '100 m³')
        self.assertEqual(format_unit('volume-cubic-centimeter', 100), '100 cm³')
        self.assertEqual(format_unit('volume-liter', 100), '100 l')
        self.assertEqual(format_unit('volume-hectoliter', 100), '100 hl')
        self.assertEqual(format_unit('volume-megaliter', 100), '100 Ml')
        self.assertEqual(format_unit('duration-hour', 100), '100 hrs')
        self.assertEqual(format_unit('duration-hour', 100, 'long'), '100 hours')
        self.assertEqual(format_unit('duration-year', 100, 'long'), '100 years')

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='cy'))
    def test_format_unit_welsh(self):
        self.assertEqual(format_unit('duration-hour', 100), '100 awr')
        self.assertEqual(format_unit('duration-year', 100), '100 bl')
        self.assertEqual(format_unit('duration-hour', 100, 'long'), '100 awr')
        self.assertEqual(format_unit('duration-year', 100, 'long'), '100 mlynedd')

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='en_GB'))
    def test_format_unit_input_label(self):
        self.assertEqual(format_unit_input_label('length-meter'), 'm')
        self.assertEqual(format_unit_input_label('length-centimeter'), 'cm')
        self.assertEqual(format_unit_input_label('length-mile'), 'mi')
        self.assertEqual(format_unit_input_label('length-kilometer'), 'km')
        self.assertEqual(format_unit_input_label('area-square-meter'), 'm²')
        self.assertEqual(format_unit_input_label('area-square-centimeter'), 'cm²')
        self.assertEqual(format_unit_input_label('area-square-kilometer'), 'km²')
        self.assertEqual(format_unit_input_label('area-square-mile'), 'sq mi')
        self.assertEqual(format_unit_input_label('area-hectare'), 'ha')
        self.assertEqual(format_unit_input_label('area-acre'), 'ac')
        self.assertEqual(format_unit_input_label('volume-cubic-meter'), 'm³')
        self.assertEqual(format_unit_input_label('volume-cubic-centimeter'), 'cm³')
        self.assertEqual(format_unit_input_label('volume-liter'), 'l')
        self.assertEqual(format_unit_input_label('volume-hectoliter'), 'hl')
        self.assertEqual(format_unit_input_label('volume-megaliter'), 'Ml')
        self.assertEqual(format_unit_input_label('duration-hour'), 'hr')
        self.assertEqual(format_unit_input_label('duration-hour', 'long'), 'hours')
        self.assertEqual(format_unit_input_label('duration-year'), 'yr')
        self.assertEqual(format_unit_input_label('duration-year', 'long'), 'years')

    @patch('app.jinja_filters.flask_babel.get_locale', Mock(return_value='cy'))
    def test_format_unit_input_label_welsh(self):
        self.assertEqual(format_unit_input_label('duration-hour'), 'awr')
        self.assertEqual(format_unit_input_label('duration-hour', 'long'), 'awr')
        self.assertEqual(format_unit_input_label('duration-year'), 'bl')
        self.assertEqual(format_unit_input_label('duration-year', 'long'), 'flynedd')


    def test_format_year_month_duration(self):
        with self.app_request_context('/'):
            self.assertEqual(format_duration({'years': 5, 'months': 4}), '5 years 4 months')
            self.assertEqual(format_duration({'years': 5, 'months': 0}), '5 years')
            self.assertEqual(format_duration({'years': 0, 'months': 4}), '4 months')
            self.assertEqual(format_duration({'years': 1, 'months': 1}), '1 year 1 month')
            self.assertEqual(format_duration({'years': 0, 'months': 0}), '0 months')

    def test_format_year_duration(self):
        with self.app_request_context('/'):
            self.assertEqual(format_duration({'years': 5}), '5 years')
            self.assertEqual(format_duration({'years': 1}), '1 year')
            self.assertEqual(format_duration({'years': 0}), '0 years')

    def test_format_month_duration(self):
        with self.app_request_context('/'):
            self.assertEqual(format_duration({'months': 5}), '5 months')
            self.assertEqual(format_duration({'months': 1}), '1 month')
            self.assertEqual(format_duration({'months': 0}), '0 months')

    def test_format_unordered_list(self):
        list_items = [['item 1', 'item 2']]

        formatted_value = format_unordered_list(self.autoescape_context, list_items)

        expected_value = '<ul><li>item 1</li><li>item 2</li></ul>'

        self.assertEqual(expected_value, formatted_value)

    def test_format_unordered_list_with_no_input(self):
        list_items = []

        formatted_value = format_unordered_list(self.autoescape_context, list_items)

        self.assertEqual('', formatted_value)

    def test_format_unordered_list_with_empty_list(self):
        list_items = [[]]

        formatted_value = format_unordered_list(self.autoescape_context, list_items)

        self.assertEqual('', formatted_value)

    def test_max_value(self):
        # Given
        two_ints = (1, 2)

        # When
        max_of_two = max_value(*two_ints)

        # Then
        self.assertEqual(max_of_two, 2)

    def test_max_value_none(self):
        # Given
        one_int = (1, None)

        # When
        max_of_two = max_value(*one_int)

        # Then
        self.assertEqual(max_of_two, 1)

    def test_max_value_undefined(self):
        # Given
        args = ('foo', Undefined())

        # When
        with self.assertRaises(Exception) as exception:
            max_value(*args)

        # Then
        self.assertIn(
            "Cannot determine maximum of incompatible types max(<class 'str'>,"
            " <class 'jinja2.runtime.Undefined'>)", str(exception.exception))

    def test_max_values_incompatible(self):
        # Given
        args = (1, 'abc')

        # When
        with self.assertRaises(Exception) as exception:
            max_value(*args)

        # Then
        self.assertIn(
            "Cannot determine maximum of incompatible types max(<class 'int'>,"
            " <class 'str'>)", str(exception.exception))

    def test_max_values_compatible(self):
        # Given
        args = (-1, True)

        # When
        max_of_two = max_value(*args)

        # Then
        self.assertEqual(max_of_two, True)

    def test_max_value_str(self):
        # Given
        two_str = ('a', 'abc')

        # When
        max_of_two = max_value(*two_str)

        # Then
        self.assertEqual(max_of_two, 'abc')

    def test_max_value_date(self):
        # Given
        now = datetime.utcnow()
        then = now - timedelta(seconds=60)
        two_dates = (then, now)

        # When
        max_of_two = max_value(*two_dates)

        # Then
        self.assertEqual(max_of_two, now)

    def test_min_value(self):
        # Given
        two_ints = (1, 2)

        # When
        min_of_two = min_value(*two_ints)

        # Then
        self.assertEqual(min_of_two, 1)

    def test_min_value_none(self):
        # Given
        one_int = (1, None)

        # When
        min_of_two = min_value(*one_int)

        # Then
        self.assertEqual(min_of_two, 1)

    def test_min_value_undefined(self):
        # Given
        args = ('foo', Undefined())

        # When
        with self.assertRaises(Exception) as exception:
            min_value(*args)

        # Then
        self.assertIn(
            "Cannot determine minimum of incompatible types min(<class 'str'>,"
            " <class 'jinja2.runtime.Undefined'>)", str(exception.exception))

    def test_min_values_incompatible(self):
        # Given
        args = (1, 'abc')

        # When
        with self.assertRaises(Exception) as exception:
            min_value(*args)

        # Then
        self.assertIn(
            "Cannot determine minimum of incompatible types min(<class 'int'>,"
            " <class 'str'>)", str(exception.exception))

    def test_min_values_compatible(self):
        # Given
        args = (-1, True)

        # When
        min_of_two = min_value(*args)

        # Then
        self.assertEqual(min_of_two, -1)

    def test_min_value_str(self):
        # Given
        two_str = ('a', 'abc')

        # When
        min_of_two = min_value(*two_str)

        # Then
        self.assertEqual(min_of_two, 'a')

    def test_min_value_date(self):
        # Given
        now = datetime.utcnow()
        then = now - timedelta(seconds=60)
        two_dates = (then, now)

        # When
        min_of_two = min_value(*two_dates)

        # Then
        self.assertEqual(min_of_two, then)

    def test_get_question_title_with_title_value(self):
        # Given
        question_id = 'question'
        context = SimpleNamespace(
            parent={
                'question': {
                    'id': 'question',
                    'title': 'question_title'
                }
            }
        )

        # When
        title = get_question_title(context, question_id)

        # Then
        self.assertEqual(title, 'question_title')

    def test_get_question_title_with_question_titles(self):
        # Given
        question_id = 'question'
        context = SimpleNamespace(
            parent={
                'question': {
                    'id': 'question'
                },
                'content': {
                    'question_titles': {
                        'question': 'default_question_title'
                    }
                }
            }
        )

        # When
        title = get_question_title(context, question_id)

        # Then
        self.assertEqual(title, 'default_question_title')

    def test_get_answer_label_with_answer_label(self):
        # Given
        answer_id = 'answer'
        question_id = 'question'
        context = SimpleNamespace(
            parent={
                'question': {
                    'id': 'question',
                    'answers': [{
                        'id': 'answer',
                        'label': 'answer_label'
                    }]
                }
            }
        )

        # When
        answer_label = get_answer_label(context, answer_id, question_id)

        # Then
        self.assertEqual(answer_label, 'answer_label')

    def test_get_answer_label_with_no_answer_label_and_title(self):
        # Given
        answer_id = 'answer'
        question_id = 'question'
        context = SimpleNamespace(
            parent={
                'question': {
                    'id': 'question',
                    'title': 'question_title',
                    'answers': [{
                        'id': 'answer'
                    }]
                }
            }
        )

        # When
        answer_label = get_answer_label(context, answer_id, question_id)

        # Then
        self.assertEqual(answer_label, 'question_title')

    def test_get_answer_label_with_no_answer_label_and_question_titles(self):
        # Given
        answer_id = 'answer'
        question_id = 'question'
        context = SimpleNamespace(
            parent={
                'question': {
                    'id': 'question',
                    'answers': [{
                        'id': 'answer'
                    }]
                },
                'content': {
                    'question_titles': {
                        'question': 'default_question_title'
                    }
                }
            }
        )

        # When
        answer_label = get_answer_label(context, answer_id, question_id)

        # Then
        self.assertEqual(answer_label, 'default_question_title')

    def test_offset_date_from_day(self):
        test_cases = [
            # (Input Date, offset, day of week, expected output)
            ('2018-08-10', {}, 'SU', '2018-08-05'), # Friday outputs previous Sunday
            ('2018-08-05', {}, 'SU', '2018-07-29'), # Sunday outputs previous Sunday (Must be a full Sunday)
            ('2018-08-06', {}, 'SU', '2018-08-05'), # Monday outputs previous Sunday
            ('2018-08-06', {'days': -1}, 'SU', '2018-08-04'), # Previous sunday with -1 day offset
            ('2018-08-05', {'weeks': 1}, 'SU', '2018-08-05'), # Previous sunday with +1 month offset, back to input
            ('2018-08-10', {}, 'FR', '2018-08-03'), # Friday outputs previous Friday
            ('2018-08-10T13:32:20.365665', {}, 'FR', '2018-08-03'), # Ensure we can handle datetime input
            ('2018-08-10', {'weeks': 4}, 'FR', '2018-08-31'), # Friday outputs previous Friday + 4 weeks
            ('2018-08-10', {'bad_period': 4}, 'FR', '2018-08-03'), # Friday outputs previous Friday + nothing
            ('2018-08-10', {'years': 1}, 'FR', '2019-08-03'), # Friday outputs previous Friday + 1 year
            ('2018-08-10', {'years': 1, 'weeks': 1, 'days': 1}, 'FR', '2019-08-11'), # Friday outputs previous Friday + 1 year + 1 week + 1 day
        ]
        for case in test_cases:
            self.assertEqual(calculate_offset_from_weekday_in_last_whole_week(*case[0:3]), case[3])

    def test_bad_day_of_week_offset_date_from_day(self):
        with self.assertRaises(Exception):
            calculate_offset_from_weekday_in_last_whole_week('2018-08-10', {}, 'BA')

    def test_offset_date_defaults_to_now_if_date_not_passed(self):
        with patch('app.jinja_filters.datetime') as mock_datetime:
            # pylint: disable=unnecessary-lambda
            mock_datetime.utcnow.return_value = datetime(2018, 8, 10)
            mock_datetime.strftime.side_effect = lambda *args, **kw: datetime.strftime(*args, **kw)

            result = calculate_offset_from_weekday_in_last_whole_week(None, {}, 'SU')
            self.assertEqual(result, '2018-08-05')

    def test_format_date_custom(self):
        test_cases = [
            # Input Date, date format, show year
            ('2018-08-14', 'EEEE d MMMM YYYY', 'Tuesday 14 August 2018'),
            ('2018-08-14', 'EEEE d MMMM', 'Tuesday 14 August'),
            ('2018-08-14', 'EEEE d', 'Tuesday 14'),
            ('2018-08-14', 'd MMMM YYYY', '14 August 2018'),
        ]

        with self.app_request_context('/'):
            for case in test_cases:
                self.assertEqual(
                    format_date_custom(self.autoescape_context, *case[0:2]),
                    "<span class='date'>{}</span>".format(case[2])
                )

    def test_format_date_range_no_repeated_month_year(self):
        test_cases = [
            # Start Date, End Date, Date Format, Output Expected First, Output Expected Second
            ('2018-08-14', '2018-08-16', 'EEEE d MMMM YYYY', 'Tuesday 14', 'Thursday 16 August 2018'),
            ('2018-07-31', '2018-08-16', 'EEEE d MMMM YYYY', 'Tuesday 31 July', 'Thursday 16 August 2018'),
            ('2017-12-31', '2018-08-16', 'EEEE d MMMM YYYY', 'Sunday 31 December 2017', 'Thursday 16 August 2018'),
            ('2017-12-31', '2018-08-16', 'MMMM YYYY', 'December 2017', 'August 2018'),
            ('2018-08-14', '2018-08-16', 'MMMM YYYY', 'August 2018', 'August 2018'),
            ('2017-12-31', '2018-08-16', 'YYYY', '2017', '2018'),
            ('2017-07-31', '2018-08-16', 'YYYY', '2017', '2018'),
            ('2018-08-14', '2018-08-16', 'EEEE d', 'Tuesday 14', 'Thursday 16')
        ]

        with self.app_request_context('/'):
            for case in test_cases:
                self.assertEqual(
                    format_date_range_no_repeated_month_year(self.autoescape_context, *case[0:3]),
                    "<span class='date'>{}</span> to <span class='date'>{}</span>".format(case[3], case[4])
                )

    @patch('app.jinja_filters.format_unordered_list')
    def test_format_repeated_summaries_unformatted(self, patched_format): # pylint: disable=no-self-use

        test_cases = [
            # (input list, expected output)
            ([['John', 'Smith'], [['Jane', 'Sarah'], ['Smith', 'Smythe']]], ['John Smith', 'Jane Smith', 'Sarah Smythe']),
            ([['John', 'Smith']], ['John Smith']),
            ([['John', 'Smith'], ['Andy', 'Smith'], ['David', 'Smith']], ['John Smith', 'Andy Smith', 'David Smith']),
            ([[['Jane', 'Sarah'], ['Smith', 'Smith']]], ['Jane Smith', 'Sarah Smith']),
            ([[['David', 'Sarah'], ['Smith', 'Smith']]], ['David Smith', 'Sarah Smith']),
            ([[['David', 'Sarah'], ['', 'Smith']]], ['David', 'Sarah Smith']),
            ([['John', 'Smith'], [[], []]], ['John Smith'])
        ]

        for case in test_cases:
            format_repeating_summary(None, case[0])
            # Format unordered list takes a list of lists
            patched_format.assert_called_with(None, [[Markup(x) for x in case[1]]])

    def test_format_repeated_summaries_no_input(self):

        self.assertEqual('', format_repeating_summary(None, []))

    def test_format_repeated_summaries_delimiters(self):
        self.autoescape_context = Mock(autoescape=True)
        output = format_repeating_summary(self.autoescape_context, [['', '51 Testing Gardens', '', 'Bristol', 'BS9 1AW']], delimiter=', ')
        self.assertEqual(output, '<ul><li>51 Testing Gardens, Bristol, BS9 1AW</li></ul>')

    def test_format_address_list_undefined_values(self):
        user_entered_address = [Undefined(), Undefined(), Undefined(), Undefined(), Undefined()]
        metadata_address = ['123', 'Testy', 'Place', 'Newport', 'NP5 7AR']
        self.assertEqual('123<br />Testy<br />Place<br />Newport<br />NP5 7AR',
                         format_address_list(user_entered_address, metadata_address))

    def test_format_address_list_missing_values(self):
        user_entered_address = ['44', 'Testing', '', 'Swansea', '']
        metadata_address = ['123', 'Testy', 'Place', 'Newport', 'NP5 7AR']
        self.assertEqual('44<br />Testing<br />Swansea',
                         format_address_list(user_entered_address, metadata_address))

    def test_format_address_list_None_value(self):
        user_entered_address = [None, None, None, None, None]
        metadata_address = [None, None, None, None, None]
        with self.assertRaises(Exception):
            format_address_list(user_entered_address, metadata_address)

    def test_format_address_list_no_values_in_answer(self):
        user_entered_address = ['', '', '', '', '']
        metadata_address = ['123', 'Testy', 'Place', 'Newport', 'NP5 7AR']
        self.assertEqual('123<br />Testy<br />Place<br />Newport<br />NP5 7AR',
                         format_address_list(user_entered_address, metadata_address))

    def test_format_address_list_no_metadata(self):
        user_entered_address = ['44', 'Testing', 'Gardens', 'Swansea', 'SA1 1AA']
        metadata_address = []
        self.assertEqual('44<br />Testing<br />Gardens<br />Swansea<br />SA1 1AA',
                         format_address_list(user_entered_address, metadata_address))

    def test_format_address_list(self):
        user_entered_address = ['44', 'Testing', 'Gardens', 'Swansea', 'SA1 1AA']
        metadata_address = ['123', 'Testy', 'Place', 'Newport', 'NP5 7AR']
        self.assertEqual('44<br />Testing<br />Gardens<br />Swansea<br />SA1 1AA',
                         format_address_list(user_entered_address, metadata_address))

    def test_format_address_list_concatenated_list_no_values(self):
        answer_address = ['', '', '']
        metadata_address = ['', '', '']

        with self.assertRaises(Exception) as error:
            format_address_list(answer_address, metadata_address)

        self.assertEqual('No valid address passed to format_address_list filter', error.exception.args[0])

[((32497, 32545), 'unittest.mock.patch', 'patch', (['"""app.jinja_filters.format_unordered_list"""'], {}), "('app.jinja_filters.format_unordered_list')\n", (32502, 32545), False, 'from unittest.mock import patch\n'), ((1195, 1216), 'mock.Mock', 'Mock', ([], {'autoescape': '(True)'}), '(autoescape=True)\n', (1199, 1216), False, 'from mock import Mock\n'), ((1319, 1345), 'mock.Mock', 'Mock', ([], {'return_value': '"""en_GB"""'}), "(return_value='en_GB')\n", (1323, 1345), False, 'from mock import Mock\n'), ((2293, 2319), 'mock.Mock', 'Mock', ([], {'return_value': '"""en_GB"""'}), "(return_value='en_GB')\n", (2297, 2319), False, 'from mock import Mock\n'), ((2707, 2733), 'mock.Mock', 'Mock', ([], {'return_value': '"""en_GB"""'}), "(return_value='en_GB')\n", (2711, 2733), False, 'from mock import Mock\n'), ((3716, 3742), 'mock.Mock', 'Mock', ([], {'return_value': '"""en_GB"""'}), "(return_value='en_GB')\n", (3720, 3742), False, 'from mock import Mock\n'), ((4554, 4613), 'app.jinja_filters.format_multilined_string', 'format_multilined_string', (['self.autoescape_context', 'new_line'], {}), '(self.autoescape_context, new_line)\n', (4578, 4613), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4844, 4903), 'app.jinja_filters.format_multilined_string', 'format_multilined_string', (['self.autoescape_context', 'new_line'], {}), '(self.autoescape_context, new_line)\n', (4868, 4903), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((5200, 5259), 'app.jinja_filters.format_multilined_string', 'format_multilined_string', (['self.autoescape_context', 'new_line'], {}), '(self.autoescape_context, new_line)\n', (5224, 5259), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((5477, 5536), 'app.jinja_filters.format_multilined_string', 'format_multilined_string', (['self.autoescape_context', 'new_line'], {}), '(self.autoescape_context, new_line)\n', (5501, 5536), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((5795, 5854), 'app.jinja_filters.format_multilined_string', 'format_multilined_string', (['self.autoescape_context', 'new_line'], {}), '(self.autoescape_context, new_line)\n', (5819, 5854), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((6035, 6076), 'app.jinja_filters.get_current_date', 'get_current_date', (['self.autoescape_context'], {}), '(self.autoescape_context)\n', (6051, 6076), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((7325, 7367), 'app.jinja_filters.format_date', 'format_date', (['self.autoescape_context', 'date'], {}), '(self.autoescape_context, date)\n', (7336, 7367), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((7541, 7583), 'app.jinja_filters.format_date', 'format_date', (['self.autoescape_context', 'date'], {}), '(self.autoescape_context, date)\n', (7552, 7583), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((11993, 12027), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (12021, 12027), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((12224, 12258), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (12252, 12258), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((12458, 12492), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (12486, 12492), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((12687, 12721), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (12715, 12721), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((12922, 12956), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (12950, 12956), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((13167, 13201), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (13195, 13201), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((13411, 13445), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (13439, 13445), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((13660, 13694), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (13688, 13694), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((13903, 13937), 'app.jinja_filters.format_household_member_name', 'format_household_member_name', (['name'], {}), '(name)\n', (13931, 13937), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((14137, 14182), 'app.jinja_filters.format_household_member_name_possessive', 'format_household_member_name_possessive', (['name'], {}), '(name)\n', (14176, 14182), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((14414, 14459), 'app.jinja_filters.format_household_member_name_possessive', 'format_household_member_name_possessive', (['name'], {}), '(name)\n', (14453, 14459), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((14660, 14705), 'app.jinja_filters.format_household_member_name_possessive', 'format_household_member_name_possessive', (['name'], {}), '(name)\n', (14699, 14705), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((14916, 14945), 'app.jinja_filters.concatenated_list', 'concatenated_list', (['list_items'], {}), '(list_items)\n', (14933, 14945), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15156, 15185), 'app.jinja_filters.concatenated_list', 'concatenated_list', (['list_items'], {}), '(list_items)\n', (15173, 15185), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15442, 15471), 'app.jinja_filters.concatenated_list', 'concatenated_list', (['list_items'], {}), '(list_items)\n', (15459, 15471), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16144, 16170), 'mock.Mock', 'Mock', ([], {'return_value': '"""en_GB"""'}), "(return_value='en_GB')\n", (16148, 16170), False, 'from mock import Mock\n'), ((17591, 17614), 'mock.Mock', 'Mock', ([], {'return_value': '"""cy"""'}), "(return_value='cy')\n", (17595, 17614), False, 'from mock import Mock\n'), ((18013, 18039), 'mock.Mock', 'Mock', ([], {'return_value': '"""en_GB"""'}), "(return_value='en_GB')\n", (18017, 18039), False, 'from mock import Mock\n'), ((19598, 19621), 'mock.Mock', 'Mock', ([], {'return_value': '"""cy"""'}), "(return_value='cy')\n", (19602, 19621), False, 'from mock import Mock\n'), ((21236, 21294), 'app.jinja_filters.format_unordered_list', 'format_unordered_list', (['self.autoescape_context', 'list_items'], {}), '(self.autoescape_context, list_items)\n', (21257, 21294), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((21530, 21588), 'app.jinja_filters.format_unordered_list', 'format_unordered_list', (['self.autoescape_context', 'list_items'], {}), '(self.autoescape_context, list_items)\n', (21551, 21588), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((21748, 21806), 'app.jinja_filters.format_unordered_list', 'format_unordered_list', (['self.autoescape_context', 'list_items'], {}), '(self.autoescape_context, list_items)\n', (21769, 21806), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((21964, 21984), 'app.jinja_filters.max_value', 'max_value', (['*two_ints'], {}), '(*two_ints)\n', (21973, 21984), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((22158, 22177), 'app.jinja_filters.max_value', 'max_value', (['*one_int'], {}), '(*one_int)\n', (22167, 22177), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((23111, 23127), 'app.jinja_filters.max_value', 'max_value', (['*args'], {}), '(*args)\n', (23120, 23127), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((23306, 23325), 'app.jinja_filters.max_value', 'max_value', (['*two_str'], {}), '(*two_str)\n', (23315, 23325), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((23452, 23469), 'datetime.datetime.utcnow', 'datetime.utcnow', ([], {}), '()\n', (23467, 23469), False, 'from datetime import datetime, timedelta\n'), ((23582, 23603), 'app.jinja_filters.max_value', 'max_value', (['*two_dates'], {}), '(*two_dates)\n', (23591, 23603), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((23772, 23792), 'app.jinja_filters.min_value', 'min_value', (['*two_ints'], {}), '(*two_ints)\n', (23781, 23792), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((23966, 23985), 'app.jinja_filters.min_value', 'min_value', (['*one_int'], {}), '(*one_int)\n', (23975, 23985), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((24919, 24935), 'app.jinja_filters.min_value', 'min_value', (['*args'], {}), '(*args)\n', (24928, 24935), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((25112, 25131), 'app.jinja_filters.min_value', 'min_value', (['*two_str'], {}), '(*two_str)\n', (25121, 25131), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((25256, 25273), 'datetime.datetime.utcnow', 'datetime.utcnow', ([], {}), '()\n', (25271, 25273), False, 'from datetime import datetime, timedelta\n'), ((25386, 25407), 'app.jinja_filters.min_value', 'min_value', (['*two_dates'], {}), '(*two_dates)\n', (25395, 25407), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((25591, 25678), 'types.SimpleNamespace', 'SimpleNamespace', ([], {'parent': "{'question': {'id': 'question', 'title': 'question_title'}}"}), "(parent={'question': {'id': 'question', 'title':\n    'question_title'}})\n", (25606, 25678), False, 'from types import SimpleNamespace\n'), ((25817, 25857), 'app.jinja_filters.get_question_title', 'get_question_title', (['context', 'question_id'], {}), '(context, question_id)\n', (25835, 25857), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((26052, 26185), 'types.SimpleNamespace', 'SimpleNamespace', ([], {'parent': "{'question': {'id': 'question'}, 'content': {'question_titles': {'question':\n    'default_question_title'}}}"}), "(parent={'question': {'id': 'question'}, 'content': {\n    'question_titles': {'question': 'default_question_title'}}})\n", (26067, 26185), False, 'from types import SimpleNamespace\n'), ((26403, 26443), 'app.jinja_filters.get_question_title', 'get_question_title', (['context', 'question_id'], {}), '(context, question_id)\n', (26421, 26443), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((26670, 26786), 'types.SimpleNamespace', 'SimpleNamespace', ([], {'parent': "{'question': {'id': 'question', 'answers': [{'id': 'answer', 'label':\n    'answer_label'}]}}"}), "(parent={'question': {'id': 'question', 'answers': [{'id':\n    'answer', 'label': 'answer_label'}]}})\n", (26685, 26786), False, 'from types import SimpleNamespace\n'), ((27002, 27051), 'app.jinja_filters.get_answer_label', 'get_answer_label', (['context', 'answer_id', 'question_id'], {}), '(context, answer_id, question_id)\n', (27018, 27051), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((27288, 27406), 'types.SimpleNamespace', 'SimpleNamespace', ([], {'parent': "{'question': {'id': 'question', 'title': 'question_title', 'answers': [{\n    'id': 'answer'}]}}"}), "(parent={'question': {'id': 'question', 'title':\n    'question_title', 'answers': [{'id': 'answer'}]}})\n", (27303, 27406), False, 'from types import SimpleNamespace\n'), ((27618, 27667), 'app.jinja_filters.get_answer_label', 'get_answer_label', (['context', 'answer_id', 'question_id'], {}), '(context, answer_id, question_id)\n', (27634, 27667), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((27916, 28083), 'types.SimpleNamespace', 'SimpleNamespace', ([], {'parent': "{'question': {'id': 'question', 'answers': [{'id': 'answer'}]}, 'content':\n    {'question_titles': {'question': 'default_question_title'}}}"}), "(parent={'question': {'id': 'question', 'answers': [{'id':\n    'answer'}]}, 'content': {'question_titles': {'question':\n    'default_question_title'}}})\n", (27931, 28083), False, 'from types import SimpleNamespace\n'), ((28371, 28420), 'app.jinja_filters.get_answer_label', 'get_answer_label', (['context', 'answer_id', 'question_id'], {}), '(context, answer_id, question_id)\n', (28387, 28420), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((33779, 33800), 'mock.Mock', 'Mock', ([], {'autoescape': '(True)'}), '(autoescape=True)\n', (33783, 33800), False, 'from mock import Mock\n'), ((33818, 33943), 'app.jinja_filters.format_repeating_summary', 'format_repeating_summary', (['self.autoescape_context', "[['', '51 Testing Gardens', '', 'Bristol', 'BS9 1AW']]"], {'delimiter': '""", """'}), "(self.autoescape_context, [['',\n    '51 Testing Gardens', '', 'Bristol', 'BS9 1AW']], delimiter=', ')\n", (33842, 33943), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1418, 1453), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""100"""', '(2)'], {}), "('100', 2)\n", (1443, 1453), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1490, 1527), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""100.0"""', '(2)'], {}), "('100.0', 2)\n", (1515, 1527), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1564, 1602), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""100.00"""', '(2)'], {}), "('100.00', 2)\n", (1589, 1602), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1639, 1672), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""1000"""'], {}), "('1000')\n", (1664, 1672), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1708, 1742), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""10000"""'], {}), "('10000')\n", (1733, 1742), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1779, 1817), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""100000000"""'], {}), "('100000000')\n", (1804, 1817), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1859, 1900), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['"""100000000"""', '(2)'], {}), "('100000000', 2)\n", (1884, 1900), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((1945, 1976), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['(0)', '(2)'], {}), '(0, 2)\n', (1970, 1976), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2011, 2039), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['(0)'], {}), '(0)\n', (2036, 2039), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2071, 2100), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['""""""'], {}), "('')\n", (2096, 2100), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2131, 2162), 'app.jinja_filters.format_currency_for_input', 'format_currency_for_input', (['None'], {}), '(None)\n', (2156, 2162), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2386, 2412), 'app.jinja_filters.get_currency_symbol', 'get_currency_symbol', (['"""GBP"""'], {}), "('GBP')\n", (2405, 2412), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2444, 2470), 'app.jinja_filters.get_currency_symbol', 'get_currency_symbol', (['"""EUR"""'], {}), "('EUR')\n", (2463, 2470), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2502, 2528), 'app.jinja_filters.get_currency_symbol', 'get_currency_symbol', (['"""USD"""'], {}), "('USD')\n", (2521, 2528), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2562, 2588), 'app.jinja_filters.get_currency_symbol', 'get_currency_symbol', (['"""JPY"""'], {}), "('JPY')\n", (2581, 2588), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2622, 2645), 'app.jinja_filters.get_currency_symbol', 'get_currency_symbol', (['""""""'], {}), "('')\n", (2641, 2645), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2796, 2849), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', '"""11"""', '"""GBP"""'], {}), "(self.autoescape_context, '11', 'GBP')\n", (2811, 2849), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2912, 2968), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', '"""11.99"""', '"""GBP"""'], {}), "(self.autoescape_context, '11.99', 'GBP')\n", (2927, 2968), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3031, 3087), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', '"""11000"""', '"""USD"""'], {}), "(self.autoescape_context, '11000', 'USD')\n", (3046, 3087), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3156, 3199), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', '(0)'], {}), '(self.autoescape_context, 0)\n', (3171, 3199), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3261, 3306), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', '(0.0)'], {}), '(self.autoescape_context, 0.0)\n', (3276, 3306), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3369, 3413), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', '""""""'], {}), "(self.autoescape_context, '')\n", (3384, 3413), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3472, 3518), 'app.jinja_filters.format_currency', 'format_currency', (['self.autoescape_context', 'None'], {}), '(self.autoescape_context, None)\n', (3487, 3518), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3803, 3821), 'app.jinja_filters.format_number', 'format_number', (['(123)'], {}), '(123)\n', (3816, 3821), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3855, 3877), 'app.jinja_filters.format_number', 'format_number', (['"""123.4"""'], {}), "('123.4')\n", (3868, 3877), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3913, 3936), 'app.jinja_filters.format_number', 'format_number', (['"""123.40"""'], {}), "('123.40')\n", (3926, 3936), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((3972, 3993), 'app.jinja_filters.format_number', 'format_number', (['"""1000"""'], {}), "('1000')\n", (3985, 3993), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4029, 4051), 'app.jinja_filters.format_number', 'format_number', (['"""10000"""'], {}), "('10000')\n", (4042, 4051), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4088, 4114), 'app.jinja_filters.format_number', 'format_number', (['"""100000000"""'], {}), "('100000000')\n", (4101, 4114), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4156, 4172), 'app.jinja_filters.format_number', 'format_number', (['(0)'], {}), '(0)\n', (4169, 4172), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4204, 4222), 'app.jinja_filters.format_number', 'format_number', (['(0.0)'], {}), '(0.0)\n', (4217, 4222), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4255, 4272), 'app.jinja_filters.format_number', 'format_number', (['""""""'], {}), "('')\n", (4268, 4272), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((4303, 4322), 'app.jinja_filters.format_number', 'format_number', (['None'], {}), '(None)\n', (4316, 4322), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((6435, 6477), 'app.jinja_filters.format_date', 'format_date', (['self.autoescape_context', 'date'], {}), '(self.autoescape_context, date)\n', (6446, 6477), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((6749, 6791), 'app.jinja_filters.format_date', 'format_date', (['self.autoescape_context', 'date'], {}), '(self.autoescape_context, date)\n', (6760, 6791), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((6961, 6978), 'jinja2.Markup', 'Markup', (['"""2017-01"""'], {}), "('2017-01')\n", (6967, 6978), False, 'from jinja2 import Undefined, Markup\n'), ((7067, 7109), 'app.jinja_filters.format_date', 'format_date', (['self.autoescape_context', 'date'], {}), '(self.autoescape_context, date)\n', (7078, 7109), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((7837, 7888), 'app.jinja_filters.format_datetime', 'format_datetime', (['self.autoescape_context', 'date_time'], {}), '(self.autoescape_context, date_time)\n', (7852, 7888), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((8193, 8244), 'app.jinja_filters.format_datetime', 'format_datetime', (['self.autoescape_context', 'date_time'], {}), '(self.autoescape_context, date_time)\n', (8208, 8244), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((9085, 9145), 'app.jinja_filters.format_conditional_date', 'format_conditional_date', (['self.autoescape_context', 'None', 'None'], {}), '(self.autoescape_context, None, None)\n', (9108, 9145), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((9975, 10030), 'unittest.mock.patch', 'patch', (['"""app.setup.get_session_store"""'], {'return_value': 'None'}), "('app.setup.get_session_store', return_value=None)\n", (9980, 10030), False, 'from unittest.mock import patch\n'), ((10922, 10968), 'app.jinja_filters.calculate_years_difference', 'calculate_years_difference', (['None', '"""2017-01-17"""'], {}), "(None, '2017-01-17')\n", (10948, 10968), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((11301, 11365), 'app.jinja_filters.format_date_range', 'format_date_range', (['self.autoescape_context', 'start_date', 'end_date'], {}), '(self.autoescape_context, start_date, end_date)\n', (11318, 11365), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((11703, 11757), 'app.jinja_filters.format_date_range', 'format_date_range', (['self.autoescape_context', 'start_date'], {}), '(self.autoescape_context, start_date)\n', (11720, 11757), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((14349, 14360), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (14358, 14360), False, 'from jinja2 import Undefined, Markup\n'), ((14362, 14373), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (14371, 14373), False, 'from jinja2 import Undefined, Markup\n'), ((15607, 15631), 'app.jinja_filters.format_percentage', 'format_percentage', (['"""100"""'], {}), "('100')\n", (15624, 15631), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15666, 15688), 'app.jinja_filters.format_percentage', 'format_percentage', (['(100)'], {}), '(100)\n', (15683, 15688), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15723, 15745), 'app.jinja_filters.format_percentage', 'format_percentage', (['(4.5)'], {}), '(4.5)\n', (15740, 15745), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15836, 15873), 'app.jinja_filters.format_number_to_alphabetic_letter', 'format_number_to_alphabetic_letter', (['(0)'], {}), '(0)\n', (15870, 15873), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15905, 15942), 'app.jinja_filters.format_number_to_alphabetic_letter', 'format_number_to_alphabetic_letter', (['(4)'], {}), '(4)\n', (15939, 15942), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((15974, 16012), 'app.jinja_filters.format_number_to_alphabetic_letter', 'format_number_to_alphabetic_letter', (['(25)'], {}), '(25)\n', (16008, 16012), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16044, 16082), 'app.jinja_filters.format_number_to_alphabetic_letter', 'format_number_to_alphabetic_letter', (['(-1)'], {}), '(-1)\n', (16078, 16082), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16229, 16261), 'app.jinja_filters.format_unit', 'format_unit', (['"""length-meter"""', '(100)'], {}), "('length-meter', 100)\n", (16240, 16261), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16297, 16334), 'app.jinja_filters.format_unit', 'format_unit', (['"""length-centimeter"""', '(100)'], {}), "('length-centimeter', 100)\n", (16308, 16334), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16371, 16402), 'app.jinja_filters.format_unit', 'format_unit', (['"""length-mile"""', '(100)'], {}), "('length-mile', 100)\n", (16382, 16402), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16439, 16475), 'app.jinja_filters.format_unit', 'format_unit', (['"""length-kilometer"""', '(100)'], {}), "('length-kilometer', 100)\n", (16450, 16475), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16512, 16549), 'app.jinja_filters.format_unit', 'format_unit', (['"""area-square-meter"""', '(100)'], {}), "('area-square-meter', 100)\n", (16523, 16549), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16586, 16628), 'app.jinja_filters.format_unit', 'format_unit', (['"""area-square-centimeter"""', '(100)'], {}), "('area-square-centimeter', 100)\n", (16597, 16628), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16666, 16707), 'app.jinja_filters.format_unit', 'format_unit', (['"""area-square-kilometer"""', '(100)'], {}), "('area-square-kilometer', 100)\n", (16677, 16707), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16745, 16781), 'app.jinja_filters.format_unit', 'format_unit', (['"""area-square-mile"""', '(100)'], {}), "('area-square-mile', 100)\n", (16756, 16781), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16821, 16853), 'app.jinja_filters.format_unit', 'format_unit', (['"""area-hectare"""', '(100)'], {}), "('area-hectare', 100)\n", (16832, 16853), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16890, 16919), 'app.jinja_filters.format_unit', 'format_unit', (['"""area-acre"""', '(100)'], {}), "('area-acre', 100)\n", (16901, 16919), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((16956, 16994), 'app.jinja_filters.format_unit', 'format_unit', (['"""volume-cubic-meter"""', '(100)'], {}), "('volume-cubic-meter', 100)\n", (16967, 16994), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17031, 17074), 'app.jinja_filters.format_unit', 'format_unit', (['"""volume-cubic-centimeter"""', '(100)'], {}), "('volume-cubic-centimeter', 100)\n", (17042, 17074), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17112, 17144), 'app.jinja_filters.format_unit', 'format_unit', (['"""volume-liter"""', '(100)'], {}), "('volume-liter', 100)\n", (17123, 17144), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17180, 17217), 'app.jinja_filters.format_unit', 'format_unit', (['"""volume-hectoliter"""', '(100)'], {}), "('volume-hectoliter', 100)\n", (17191, 17217), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17254, 17290), 'app.jinja_filters.format_unit', 'format_unit', (['"""volume-megaliter"""', '(100)'], {}), "('volume-megaliter', 100)\n", (17265, 17290), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17327, 17360), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-hour"""', '(100)'], {}), "('duration-hour', 100)\n", (17338, 17360), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17398, 17439), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-hour"""', '(100)', '"""long"""'], {}), "('duration-hour', 100, 'long')\n", (17409, 17439), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17479, 17520), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-year"""', '(100)', '"""long"""'], {}), "('duration-year', 100, 'long')\n", (17490, 17520), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17679, 17712), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-hour"""', '(100)'], {}), "('duration-hour', 100)\n", (17690, 17712), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17750, 17783), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-year"""', '(100)'], {}), "('duration-year', 100)\n", (17761, 17783), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17820, 17861), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-hour"""', '(100)', '"""long"""'], {}), "('duration-hour', 100, 'long')\n", (17831, 17861), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((17899, 17940), 'app.jinja_filters.format_unit', 'format_unit', (['"""duration-year"""', '(100)', '"""long"""'], {}), "('duration-year', 100, 'long')\n", (17910, 17940), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18110, 18149), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""length-meter"""'], {}), "('length-meter')\n", (18133, 18149), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18181, 18225), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""length-centimeter"""'], {}), "('length-centimeter')\n", (18204, 18225), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18258, 18296), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""length-mile"""'], {}), "('length-mile')\n", (18281, 18296), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18329, 18372), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""length-kilometer"""'], {}), "('length-kilometer')\n", (18352, 18372), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18405, 18449), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""area-square-meter"""'], {}), "('area-square-meter')\n", (18428, 18449), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18482, 18531), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""area-square-centimeter"""'], {}), "('area-square-centimeter')\n", (18505, 18531), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18565, 18613), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""area-square-kilometer"""'], {}), "('area-square-kilometer')\n", (18588, 18613), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18647, 18690), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""area-square-mile"""'], {}), "('area-square-mile')\n", (18670, 18690), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18726, 18765), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""area-hectare"""'], {}), "('area-hectare')\n", (18749, 18765), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18798, 18834), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""area-acre"""'], {}), "('area-acre')\n", (18821, 18834), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18867, 18912), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""volume-cubic-meter"""'], {}), "('volume-cubic-meter')\n", (18890, 18912), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((18945, 18995), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""volume-cubic-centimeter"""'], {}), "('volume-cubic-centimeter')\n", (18968, 18995), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19029, 19068), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""volume-liter"""'], {}), "('volume-liter')\n", (19052, 19068), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19100, 19144), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""volume-hectoliter"""'], {}), "('volume-hectoliter')\n", (19123, 19144), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19177, 19220), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""volume-megaliter"""'], {}), "('volume-megaliter')\n", (19200, 19220), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19253, 19293), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-hour"""'], {}), "('duration-hour')\n", (19276, 19293), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19326, 19374), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-hour"""', '"""long"""'], {}), "('duration-hour', 'long')\n", (19349, 19374), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19410, 19450), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-year"""'], {}), "('duration-year')\n", (19433, 19450), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19483, 19531), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-year"""', '"""long"""'], {}), "('duration-year', 'long')\n", (19506, 19531), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19698, 19738), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-hour"""'], {}), "('duration-hour')\n", (19721, 19738), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19772, 19820), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-hour"""', '"""long"""'], {}), "('duration-hour', 'long')\n", (19795, 19820), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19854, 19894), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-year"""'], {}), "('duration-year')\n", (19877, 19894), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((19927, 19975), 'app.jinja_filters.format_unit_input_label', 'format_unit_input_label', (['"""duration-year"""', '"""long"""'], {}), "('duration-year', 'long')\n", (19950, 19975), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((22314, 22325), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (22323, 22325), False, 'from jinja2 import Undefined, Markup\n'), ((22411, 22427), 'app.jinja_filters.max_value', 'max_value', (['*args'], {}), '(*args)\n', (22420, 22427), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((22796, 22812), 'app.jinja_filters.max_value', 'max_value', (['*args'], {}), '(*args)\n', (22805, 22812), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((23491, 23512), 'datetime.timedelta', 'timedelta', ([], {'seconds': '(60)'}), '(seconds=60)\n', (23500, 23512), False, 'from datetime import datetime, timedelta\n'), ((24122, 24133), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (24131, 24133), False, 'from jinja2 import Undefined, Markup\n'), ((24219, 24235), 'app.jinja_filters.min_value', 'min_value', (['*args'], {}), '(*args)\n', (24228, 24235), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((24604, 24620), 'app.jinja_filters.min_value', 'min_value', (['*args'], {}), '(*args)\n', (24613, 24620), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((25295, 25316), 'datetime.timedelta', 'timedelta', ([], {'seconds': '(60)'}), '(seconds=60)\n', (25304, 25316), False, 'from datetime import datetime, timedelta\n'), ((30035, 30107), 'app.jinja_filters.calculate_offset_from_weekday_in_last_whole_week', 'calculate_offset_from_weekday_in_last_whole_week', (['"""2018-08-10"""', '{}', '"""BA"""'], {}), "('2018-08-10', {}, 'BA')\n", (30083, 30107), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((30189, 30224), 'unittest.mock.patch', 'patch', (['"""app.jinja_filters.datetime"""'], {}), "('app.jinja_filters.datetime')\n", (30194, 30224), False, 'from unittest.mock import patch\n'), ((30340, 30361), 'datetime.datetime', 'datetime', (['(2018)', '(8)', '(10)'], {}), '(2018, 8, 10)\n', (30348, 30361), False, 'from datetime import datetime, timedelta\n'), ((30484, 30548), 'app.jinja_filters.calculate_offset_from_weekday_in_last_whole_week', 'calculate_offset_from_weekday_in_last_whole_week', (['None', '{}', '"""SU"""'], {}), "(None, {}, 'SU')\n", (30532, 30548), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((33383, 33422), 'app.jinja_filters.format_repeating_summary', 'format_repeating_summary', (['None', 'case[0]'], {}), '(None, case[0])\n', (33407, 33422), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((33651, 33685), 'app.jinja_filters.format_repeating_summary', 'format_repeating_summary', (['None', '[]'], {}), '(None, [])\n', (33675, 33685), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((34121, 34132), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (34130, 34132), False, 'from jinja2 import Undefined, Markup\n'), ((34134, 34145), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (34143, 34145), False, 'from jinja2 import Undefined, Markup\n'), ((34147, 34158), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (34156, 34158), False, 'from jinja2 import Undefined, Markup\n'), ((34160, 34171), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (34169, 34171), False, 'from jinja2 import Undefined, Markup\n'), ((34173, 34184), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (34182, 34184), False, 'from jinja2 import Undefined, Markup\n'), ((34366, 34425), 'app.jinja_filters.format_address_list', 'format_address_list', (['user_entered_address', 'metadata_address'], {}), '(user_entered_address, metadata_address)\n', (34385, 34425), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((34708, 34767), 'app.jinja_filters.format_address_list', 'format_address_list', (['user_entered_address', 'metadata_address'], {}), '(user_entered_address, metadata_address)\n', (34727, 34767), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((34996, 35055), 'app.jinja_filters.format_address_list', 'format_address_list', (['user_entered_address', 'metadata_address'], {}), '(user_entered_address, metadata_address)\n', (35015, 35055), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((35349, 35408), 'app.jinja_filters.format_address_list', 'format_address_list', (['user_entered_address', 'metadata_address'], {}), '(user_entered_address, metadata_address)\n', (35368, 35408), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((35683, 35742), 'app.jinja_filters.format_address_list', 'format_address_list', (['user_entered_address', 'metadata_address'], {}), '(user_entered_address, metadata_address)\n', (35702, 35742), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((36050, 36109), 'app.jinja_filters.format_address_list', 'format_address_list', (['user_entered_address', 'metadata_address'], {}), '(user_entered_address, metadata_address)\n', (36069, 36109), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((36323, 36376), 'app.jinja_filters.format_address_list', 'format_address_list', (['answer_address', 'metadata_address'], {}), '(answer_address, metadata_address)\n', (36342, 36376), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((2219, 2230), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (2228, 2230), False, 'from jinja2 import Undefined, Markup\n'), ((3616, 3627), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (3625, 3627), False, 'from jinja2 import Undefined, Markup\n'), ((4367, 4378), 'jinja2.Undefined', 'Undefined', ([], {}), '()\n', (4376, 4378), False, 'from jinja2 import Undefined, Markup\n'), ((8769, 8831), 'app.jinja_filters.format_conditional_date', 'format_conditional_date', (['self.autoescape_context', 'date1', 'date2'], {}), '(self.autoescape_context, date1, date2)\n', (8792, 8831), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((9721, 9783), 'app.jinja_filters.format_conditional_date', 'format_conditional_date', (['self.autoescape_context', 'date1', 'date2'], {}), '(self.autoescape_context, date1, date2)\n', (9744, 9783), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((10639, 10687), 'app.jinja_filters.calculate_years_difference', 'calculate_years_difference', (['start_date', 'end_date'], {}), '(start_date, end_date)\n', (10665, 10687), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20110, 20152), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 5, 'months': 4}"], {}), "({'years': 5, 'months': 4})\n", (20125, 20152), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20203, 20245), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 5, 'months': 0}"], {}), "({'years': 5, 'months': 0})\n", (20218, 20245), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20287, 20329), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 0, 'months': 4}"], {}), "({'years': 0, 'months': 4})\n", (20302, 20329), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20372, 20414), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 1, 'months': 1}"], {}), "({'years': 1, 'months': 1})\n", (20387, 20414), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20463, 20505), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 0, 'months': 0}"], {}), "({'years': 0, 'months': 0})\n", (20478, 20505), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20634, 20663), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 5}"], {}), "({'years': 5})\n", (20649, 20663), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20705, 20734), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 1}"], {}), "({'years': 1})\n", (20720, 20734), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20775, 20804), 'app.jinja_filters.format_duration', 'format_duration', (["{'years': 0}"], {}), "({'years': 0})\n", (20790, 20804), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((20933, 20963), 'app.jinja_filters.format_duration', 'format_duration', (["{'months': 5}"], {}), "({'months': 5})\n", (20948, 20963), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((21006, 21036), 'app.jinja_filters.format_duration', 'format_duration', (["{'months': 1}"], {}), "({'months': 1})\n", (21021, 21036), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((21078, 21108), 'app.jinja_filters.format_duration', 'format_duration', (["{'months': 0}"], {}), "({'months': 0})\n", (21093, 21108), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((29851, 29911), 'app.jinja_filters.calculate_offset_from_weekday_in_last_whole_week', 'calculate_offset_from_weekday_in_last_whole_week', (['*case[0:3]'], {}), '(*case[0:3])\n', (29899, 29911), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((30431, 30461), 'datetime.datetime.strftime', 'datetime.strftime', (['*args'], {}), '(*args, **kw)\n', (30448, 30461), False, 'from datetime import datetime, timedelta\n'), ((6113, 6130), 'datetime.datetime.utcnow', 'datetime.utcnow', ([], {}), '()\n', (6128, 6130), False, 'from datetime import datetime, timedelta\n'), ((31108, 31163), 'app.jinja_filters.format_date_custom', 'format_date_custom', (['self.autoescape_context', '*case[0:2]'], {}), '(self.autoescape_context, *case[0:2])\n', (31126, 31163), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((32286, 32363), 'app.jinja_filters.format_date_range_no_repeated_month_year', 'format_date_range_no_repeated_month_year', (['self.autoescape_context', '*case[0:3]'], {}), '(self.autoescape_context, *case[0:3])\n', (32326, 32363), False, 'from app.jinja_filters import format_date, format_conditional_date, format_currency, get_currency_symbol, format_multilined_string, format_percentage, format_date_range, format_household_member_name, format_datetime, format_number_to_alphabetic_letter, format_unit, format_currency_for_input, format_number, format_unordered_list, format_unit_input_label, format_household_member_name_possessive, concatenated_list, calculate_years_difference, get_current_date, as_london_tz, max_value, min_value, get_question_title, get_answer_label, format_duration, calculate_offset_from_weekday_in_last_whole_week, format_date_custom, format_date_range_no_repeated_month_year, format_repeating_summary, format_address_list\n'), ((10081, 10097), 'datetime.datetime.today', 'datetime.today', ([], {}), '()\n', (10095, 10097), False, 'from datetime import datetime, timedelta\n'), ((10098, 10122), 'dateutil.relativedelta.relativedelta', 'relativedelta', ([], {'years': '(-10)'}), '(years=-10)\n', (10111, 10122), False, 'from dateutil.relativedelta import relativedelta\n'), ((33535, 33544), 'jinja2.Markup', 'Markup', (['x'], {}), '(x)\n', (33541, 33544), False, 'from jinja2 import Undefined, Markup\n')]