{% if pageCount > 1 %}
<ul class="pagination">
{#{% if previous is defined %}#}
{#<li class="arrow">#}
{#<a href="{{ path(route, query|merge({(pageParameterName): previous})) }}">«</a>#}
{#</li>#}
{#{% else %}#}
{#<li class="arrow unavailable">#}
{#<a href="">«</a>#}
{#</li>#}
{#{% endif %}#}
{% if startPage > 1 %}
<li>
<a href="{{ path(route, query|merge({(pageParameterName): 1})) }}">1</a>
</li>
{% if startPage == 3 %}
<li>
<a href="{{ path(route, query|merge({(pageParameterName): 2})) }}">2</a>
</li>
{% elseif startPage != 2 %}
<li class="unavailable">
<a href="">…</a>
</li>
{% endif %}
{% endif %}
{% for page in pagesInRange %}
{% if page != current %}
<li>
<a href="{{ path(route, query|merge({(pageParameterName): page})) }}">{{ page }}</a>
</li>
{% else %}
<li class="current">
<a href="">{{ page }}</a>
</li>
{% endif %}
{% endfor %}
{% if pageCount > endPage %}
{% if pageCount > (endPage + 1) %}
{% if pageCount > (endPage + 2) %}
<li class="unavailable">
<a href="">…</a>
</li>
{% else %}
<li>
<a href="{{ path(route, query|merge({(pageParameterName): (pageCount - 1)})) }}">{{ pageCount -1 }}</a>
</li>
{% endif %}
{% endif %}
<li>
<a href="{{ path(route, query|merge({(pageParameterName): pageCount})) }}">{{ pageCount }}</a>
</li>
{% endif %}
{#{% if next is defined %}#}
{#<li>#}
{#<a href="{{ path(route, query|merge({(pageParameterName): next})) }}">»</a>#}
{#</li>#}
{#{% else %}#}
{#<li class="arrow unavailable">#}
{#<a href="">»</a>#}
{#</li>#}
{#{% endif %}#}
</ul>
{% endif %}
eyUgaWYgcGFnZUNvdW50ID4gMSAlfQogICAgPHVsIGNsYXNzPSJwYWdpbmF0aW9uIj4KCiAgICAgICAgeyN7JSBpZiBwcmV2aW91cyBpcyBkZWZpbmVkICV9I30KICAgICAgICAgICAgeyM8bGkgY2xhc3M9ImFycm93Ij4jfQogICAgICAgICAgICAgICAgeyM8YSBocmVmPSJ7eyBwYXRoKHJvdXRlLCBxdWVyeXxtZXJnZSh7KHBhZ2VQYXJhbWV0ZXJOYW1lKTogcHJldmlvdXN9KSkgfX0iPiZsYXF1bzs8L2E+I30KICAgICAgICAgICAgeyM8L2xpPiN9CiAgICAgICAgeyN7JSBlbHNlICV9I30KICAgICAgICAgICAgeyM8bGkgY2xhc3M9ImFycm93IHVuYXZhaWxhYmxlIj4jfQogICAgICAgICAgICAgICAgeyM8YSBocmVmPSIiPiZsYXF1bzs8L2E+I30KICAgICAgICAgICAgeyM8L2xpPiN9CiAgICAgICAgeyN7JSBlbmRpZiAlfSN9CgogICAgICAgIHslIGlmIHN0YXJ0UGFnZSA+IDEgJX0KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgcGF0aChyb3V0ZSwgcXVlcnl8bWVyZ2UoeyhwYWdlUGFyYW1ldGVyTmFtZSk6IDF9KSkgfX0iPjE8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIHslIGlmIHN0YXJ0UGFnZSA9PSAzICV9CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgcGF0aChyb3V0ZSwgcXVlcnl8bWVyZ2UoeyhwYWdlUGFyYW1ldGVyTmFtZSk6IDJ9KSkgfX0iPjI8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICB7JSBlbHNlaWYgc3RhcnRQYWdlICE9IDIgJX0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idW5hdmFpbGFibGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiI+JmhlbGxpcDs8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgIHslIGVuZGlmICV9CgogICAgICAgIHslIGZvciBwYWdlIGluIHBhZ2VzSW5SYW5nZSAlfQogICAgICAgICAgICB7JSBpZiBwYWdlICE9IGN1cnJlbnQgJX0KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7eyBwYXRoKHJvdXRlLCBxdWVyeXxtZXJnZSh7KHBhZ2VQYXJhbWV0ZXJOYW1lKTogcGFnZX0pKSB9fSI+e3sgcGFnZSB9fTwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIHslIGVsc2UgJX0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY3VycmVudCI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIj57eyBwYWdlIH19PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgeyUgZW5kaWYgJX0KCiAgICAgICAgeyUgZW5kZm9yICV9CgogICAgICAgIHslIGlmIHBhZ2VDb3VudCA+IGVuZFBhZ2UgJX0KICAgICAgICAgICAgeyUgaWYgcGFnZUNvdW50ID4gKGVuZFBhZ2UgKyAxKSAlfQogICAgICAgICAgICAgICAgeyUgaWYgcGFnZUNvdW50ID4gKGVuZFBhZ2UgKyAyKSAlfQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idW5hdmFpbGFibGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiPiZoZWxsaXA7PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICB7JSBlbHNlICV9CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7eyBwYXRoKHJvdXRlLCBxdWVyeXxtZXJnZSh7KHBhZ2VQYXJhbWV0ZXJOYW1lKTogKHBhZ2VDb3VudCAtIDEpfSkpIH19Ij57eyBwYWdlQ291bnQgLTEgfX08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Int7IHBhdGgocm91dGUsIHF1ZXJ5fG1lcmdlKHsocGFnZVBhcmFtZXRlck5hbWUpOiBwYWdlQ291bnR9KSkgfX0iPnt7IHBhZ2VDb3VudCB9fTwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICB7JSBlbmRpZiAlfQoKICAgICAgICB7I3slIGlmIG5leHQgaXMgZGVmaW5lZCAlfSN9CiAgICAgICAgICAgIHsjPGxpPiN9CiAgICAgICAgICAgICAgICB7IzxhIGhyZWY9Int7IHBhdGgocm91dGUsIHF1ZXJ5fG1lcmdlKHsocGFnZVBhcmFtZXRlck5hbWUpOiBuZXh0fSkpIH19Ij4mcmFxdW87PC9hPiN9CiAgICAgICAgICAgIHsjPC9saT4jfQogICAgICAgIHsjeyUgZWxzZSAlfSN9CiAgICAgICAgICAgIHsjPGxpIGNsYXNzPSJhcnJvdyB1bmF2YWlsYWJsZSI+I30KICAgICAgICAgICAgICAgIHsjPGEgaHJlZj0iIj4mcmFxdW87PC9hPiN9CiAgICAgICAgICAgIHsjPC9saT4jfQogICAgICAgIHsjeyUgZW5kaWYgJX0jfQogICAgPC91bD4KeyUgZW5kaWYgJX0K