	{{ $paginator := .paginator}}
<div id="pagination_outer" class="df_row_center">
<div id="pagination">
	<!-- Number of links either side of the current page. -->
	{{ $adjacent_links := 2 }}

	<!-- $max_links = ($adjacent_links * 2) + 1 -->
	{{ $max_links := (add (mul $adjacent_links 2) 1) }}

	<!-- $lower_limit = $adjacent_links + 1 -->
	{{ $lower_limit := (add $adjacent_links 1) }}

	<!-- $upper_limit = $paginator.TotalPages - $adjacent_links -->
	{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}

	<!-- If there's more than one page. -->
	{{ if gt $paginator.TotalPages 1 }}

		<!-- First page. -->
		{{ if ne $paginator.PageNumber 1 }}
		  <a class="pagination__link pagination__link--first" href="{{ $paginator.First.URL }}">
		    ««
		  </a>
		{{ end }}

		<!-- Previous page. -->
		{{ if $paginator.HasPrev }}
		  <a href="{{ $paginator.Prev.URL }}" class="pagination__link pagination__link--previous">
		    «
		  </a>
		{{ end }}

		<!-- Page numbers. -->
		{{ range $paginator.Pagers }}
			{{ $page_number_flag := false }}


			<!-- Advanced page numbers. -->
			{{ if gt $paginator.TotalPages $max_links }}

				<!-- Lower limit pages. -->
				<!-- If the user is on a page which is in the lower limit.  -->
				{{ if le $paginator.PageNumber $lower_limit }}

					<!-- If the current loop page is less than max_links. -->
					{{ if le .PageNumber $max_links }}
						{{ $page_number_flag = true }}
					{{ end }}

				<!-- Upper limit pages. -->
				<!-- If the user is on a page which is in the upper limit. -->
				{{ else if ge $paginator.PageNumber $upper_limit }}

					<!-- If the current loop page is greater than total pages minus $max_links -->
					{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
						{{ $page_number_flag = true }}
					{{ end }}

				<!-- Middle pages. -->
				{{ else }}

					{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
						{{ $page_number_flag = true }}
					{{ end }}

				{{ end }}


			<!-- Simple page numbers. -->
			{{ else }}

				{{ $page_number_flag = true }}

			{{ end }}

			<!-- Output page numbers. -->
			{{ if eq $page_number_flag true }}
			<a href="{{ .URL }}" class="pagination__link">
				{{ if eq $paginator.PageNumber .PageNumber }}<b>{{ end }}
				{{ .PageNumber }}
				{{ if eq $paginator.PageNumber .PageNumber }}</b>{{ end }}
			</a>
			{{ end }}

		{{ end }}

	    <!-- Next page. -->
	    {{ if $paginator.HasNext }}
	      <a href="{{ $paginator.Next.URL }}" class="pagination__link pagination__link--next">
	        »
	      </a>
	    {{ end }}

	    <!-- Last page. -->
	    {{ if ne $paginator.PageNumber $paginator.TotalPages }}
	      <a class="pagination__link pagination__link--last" href="{{ $paginator.Last.URL }}">
	        »»
	      </a>
	    {{ end }}
	{{ end }}
</div>
</div>
