sapor 0.1b1 → 0.2a1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. checksums.yaml +5 -5
  2. data/Example-Catalonia.md +361 -0
  3. data/Example-Flanders.md +486 -0
  4. data/Example-Greece.md +25 -0
  5. data/Example-Oslo.md +678 -0
  6. data/Example-UnitedKingdom-Referendum.md +132 -0
  7. data/Examples.md +9 -355
  8. data/README.md +41 -8
  9. data/bin/create_installation_package.sh +2 -2
  10. data/bin/install.sh +1 -1
  11. data/bin/sapor.rb +4 -2
  12. data/bin/sapor.sh +10 -9
  13. data/data/hu/hungary-2014.txt +1680 -0
  14. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  15. data/data/hu/hungary_2014_to_psv.rb +80 -0
  16. data/data/hu/index-2014.txt +106 -0
  17. data/data/pl/2015-gl-lis-okr.csv +42 -0
  18. data/data/pl/poland_2015_to_psv.rb +79 -0
  19. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  20. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  21. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  22. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  23. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  24. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  25. data/data/uk/united_kingdom_2015.txt +651 -0
  26. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  27. data/data/uk/united_kingdom_2017.txt +651 -0
  28. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  29. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  30. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  31. data/lib/sapor/binomials_cache.rb +1 -1
  32. data/lib/sapor/combinations_distribution.rb +43 -1
  33. data/lib/sapor/denominators.rb +67 -0
  34. data/lib/sapor/dichotomies.rb +41 -1
  35. data/lib/sapor/dichotomy.rb +31 -5
  36. data/lib/sapor/first_past_the_post.rb +6 -2
  37. data/lib/sapor/largest_remainder.rb +118 -0
  38. data/lib/sapor/log4r_logger.rb +1 -1
  39. data/lib/sapor/log_facade.rb +1 -1
  40. data/lib/sapor/{leveled_proportional.rb → multi_district_leveled_proportional.rb} +7 -7
  41. data/lib/sapor/{proportional.rb → multi_district_proportional.rb} +27 -32
  42. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  43. data/lib/sapor/number_formatter.rb +1 -1
  44. data/lib/sapor/options.rb +73 -0
  45. data/lib/sapor/poll.rb +178 -29
  46. data/lib/sapor/polychotomy.rb +100 -259
  47. data/lib/sapor/pseudorandom_multirange_enumerator.rb +1 -1
  48. data/lib/sapor/referendum_polychotomy.rb +165 -0
  49. data/lib/sapor/regional_data/area.rb +4 -2
  50. data/lib/sapor/regional_data/austria.rb +84 -0
  51. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  52. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  53. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  54. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  55. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  56. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  57. data/lib/sapor/regional_data/belgium.rb +97 -0
  58. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  59. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  60. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  61. data/lib/sapor/regional_data/catalonia-2012-2015.psv +1 -1
  62. data/lib/sapor/regional_data/catalonia-2012.psv +1 -1
  63. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  64. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  65. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  66. data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
  67. data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
  68. data/lib/sapor/regional_data/catalonia.rb +27 -21
  69. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  70. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  71. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  72. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  73. data/lib/sapor/regional_data/denmark.rb +128 -0
  74. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  75. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  76. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  77. data/lib/sapor/regional_data/estonia.rb +88 -0
  78. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  79. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  80. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  81. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  82. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  83. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  84. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  85. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  86. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  87. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  88. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  89. data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
  90. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  91. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  92. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  93. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  94. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  95. data/lib/sapor/regional_data/european_union_27_italy.rb +83 -0
  96. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  97. data/lib/sapor/regional_data/european_union_27_poland.rb +79 -0
  98. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  99. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  100. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  101. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  102. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  103. data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
  104. data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
  105. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  106. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  107. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  108. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  109. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  110. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  111. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  112. data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
  113. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  114. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  115. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  116. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  117. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  118. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  119. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  120. data/lib/sapor/regional_data/european_union_italy.rb +83 -0
  121. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  122. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  123. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  124. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  125. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  126. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  127. data/lib/sapor/regional_data/european_union_poland.rb +79 -0
  128. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  129. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  130. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  131. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  132. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  133. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  134. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  135. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  136. data/lib/sapor/regional_data/finland.rb +107 -0
  137. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  138. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  139. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  140. data/lib/sapor/regional_data/flanders.rb +115 -0
  141. data/lib/sapor/regional_data/france.rb +38 -0
  142. data/lib/sapor/regional_data/greece.rb +92 -0
  143. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  144. data/lib/sapor/regional_data/hungary.rb +116 -0
  145. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  146. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  147. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  148. data/lib/sapor/regional_data/iceland.rb +133 -0
  149. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  150. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  151. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  152. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  153. data/lib/sapor/regional_data/latvia.rb +112 -0
  154. data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
  155. data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
  156. data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
  157. data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
  158. data/lib/sapor/regional_data/luxembourg.rb +82 -0
  159. data/lib/sapor/regional_data/netherlands.rb +108 -0
  160. data/lib/sapor/regional_data/norway.rb +85 -68
  161. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  162. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  163. data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
  164. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  165. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  166. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  167. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  168. data/lib/sapor/regional_data/poland.rb +125 -0
  169. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  170. data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
  171. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  172. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  173. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  174. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  175. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  176. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  177. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  178. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  179. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  180. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  181. data/lib/sapor/regional_data/portugal.rb +101 -0
  182. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  183. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  184. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  185. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  186. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  187. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  188. data/lib/sapor/regional_data/slovakia.rb +81 -0
  189. data/lib/sapor/regional_data/slovenia.rb +114 -0
  190. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  191. data/lib/sapor/regional_data/spain.rb +136 -0
  192. data/lib/sapor/regional_data/sweden.rb +92 -0
  193. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  194. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  195. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  196. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  197. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  198. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  199. data/lib/sapor/regional_data/united_kingdom.rb +57 -1038
  200. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  201. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  202. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  203. data/lib/sapor/regional_data/utopia.rb +2 -2
  204. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  205. data/lib/sapor/regional_data/wallonia.rb +97 -0
  206. data/lib/sapor/representatives_polychotomy.rb +338 -0
  207. data/lib/sapor/single_district_proportional.rb +75 -0
  208. data/lib/sapor.rb +112 -6
  209. data/sapor.gemspec +2 -2
  210. data/spec/integration/area_spec.rb +2 -2
  211. data/spec/integration/poll_spec.rb +6 -1
  212. data/spec/integration/sample.poll +2 -1
  213. data/spec/spec_helper.rb +2 -2
  214. data/spec/unit/area_spec.rb +12 -12
  215. data/spec/unit/austria_spec.rb +76 -0
  216. data/spec/unit/belgium_brussels_spec.rb +58 -0
  217. data/spec/unit/belgium_flanders_spec.rb +62 -0
  218. data/spec/unit/belgium_spec.rb +26 -0
  219. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  220. data/spec/unit/binomials_cache_spec.rb +1 -1
  221. data/spec/unit/catalonia_spec.rb +21 -29
  222. data/spec/unit/combinations_distribution_spec.rb +1 -1
  223. data/spec/unit/denmark_spec.rb +56 -0
  224. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  225. data/spec/unit/denmark_with_e_spec.rb +57 -0
  226. data/spec/unit/denmark_with_p_spec.rb +57 -0
  227. data/spec/unit/denominators_spec.rb +8 -2
  228. data/spec/unit/dichotomies_spec.rb +1 -1
  229. data/spec/unit/dichotomy_spec.rb +1 -1
  230. data/spec/unit/estonia_spec.rb +65 -0
  231. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  232. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  233. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  234. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  235. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  236. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  237. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  238. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  239. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  240. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  241. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  242. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  243. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  244. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  245. data/spec/unit/european_union_austria_spec.rb +61 -0
  246. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  247. data/spec/unit/european_union_croatia_spec.rb +59 -0
  248. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  249. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  250. data/spec/unit/european_union_denmark_spec.rb +61 -0
  251. data/spec/unit/european_union_estonia_spec.rb +93 -0
  252. data/spec/unit/european_union_finland_spec.rb +75 -0
  253. data/spec/unit/european_union_flanders_spec.rb +56 -0
  254. data/spec/unit/european_union_france_2019_spec.rb +73 -0
  255. data/spec/unit/european_union_france_spec.rb +73 -0
  256. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  257. data/spec/unit/european_union_germany_spec.rb +90 -0
  258. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  259. data/spec/unit/european_union_greece_spec.rb +148 -0
  260. data/spec/unit/european_union_hungary_spec.rb +57 -0
  261. data/spec/unit/european_union_ireland_spec.rb +72 -0
  262. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  263. data/spec/unit/european_union_italy_spec.rb +69 -0
  264. data/spec/unit/european_union_latvia_spec.rb +76 -0
  265. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  266. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  267. data/spec/unit/european_union_malta_spec.rb +60 -0
  268. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  269. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  270. data/spec/unit/european_union_poland_spec.rb +69 -0
  271. data/spec/unit/european_union_portugal_spec.rb +77 -0
  272. data/spec/unit/european_union_romania_spec.rb +67 -0
  273. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  274. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  275. data/spec/unit/european_union_spain_spec.rb +129 -0
  276. data/spec/unit/european_union_sweden_spec.rb +89 -0
  277. data/spec/unit/finland_spec.rb +65 -0
  278. data/spec/unit/finland_with_sin_spec.rb +67 -0
  279. data/spec/unit/first_past_the_post_spec.rb +6 -5
  280. data/spec/unit/flanders_spec.rb +70 -0
  281. data/spec/unit/france_spec.rb +32 -0
  282. data/spec/unit/greece_spec.rb +118 -0
  283. data/spec/unit/hungary_spec.rb +132 -0
  284. data/spec/unit/iceland_spec.rb +57 -0
  285. data/spec/unit/largest_remainder_spec.rb +79 -0
  286. data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
  287. data/spec/unit/latvia_kpv_par_spec.rb +38 -0
  288. data/spec/unit/latvia_kpv_spec.rb +38 -0
  289. data/spec/unit/latvia_spec.rb +60 -0
  290. data/spec/unit/luxembourg_spec.rb +54 -0
  291. data/spec/unit/{leveled_proportional_spec.rb → multi_district_leveled_proportional_spec.rb} +12 -14
  292. data/spec/unit/{proportional_spec.rb → multi_district_proportional_spec.rb} +11 -16
  293. data/spec/unit/netherlands_spec.rb +107 -0
  294. data/spec/unit/norway_spec.rb +23 -6
  295. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  296. data/spec/unit/number_formatter_spec.rb +1 -1
  297. data/spec/unit/poland_spec.rb +62 -0
  298. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  299. data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
  300. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  301. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  302. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  303. data/spec/unit/poll_spec.rb +8 -3
  304. data/spec/unit/portugal_spec.rb +66 -0
  305. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  306. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  307. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  308. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  309. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  310. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  311. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +1 -1
  312. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  313. data/spec/unit/{polychotomy_spec.rb → representatives_polychotomy_spec.rb} +26 -26
  314. data/spec/unit/slovakia_spec.rb +99 -0
  315. data/spec/unit/slovenia_spec.rb +80 -0
  316. data/spec/unit/spain_spec.rb +101 -0
  317. data/spec/unit/sweden_20140914_spec.rb +112 -0
  318. data/spec/unit/sweden_spec.rb +113 -0
  319. data/spec/unit/united_kingdom_spec.rb +65 -0
  320. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  321. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  322. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  323. data/spec/unit/wallonia_spec.rb +130 -0
  324. metadata +381 -11
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  #
3
3
  # Statistical Analysis of Polling Results (SAPoR)
4
- # Copyright (C) 2014 Filip van Laenen <f.a.vanlaenen@ieee.org>
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
5
  #
6
6
  # This file is part of SAPoR.
7
7
  #
@@ -21,1055 +21,74 @@ module Sapor
21
21
  #
22
22
  # The regional data for the United Kingdom.
23
23
  #
24
- class UnitedKingdom
24
+ class UnitedKingdom < Area
25
25
  include Singleton
26
26
 
27
- # Source: BBC News Election 2010 Results, retrieved on 3 April 2015.
28
- # URL: http://news.bbc.co.uk/2/shared/election2010/results/
29
- LAST_ELECTION_RESULT = { 'Conservative' => 10_726_614,
30
- 'Labour' => 8_609_527,
31
- 'Liberal Democrat' => 6_836_824,
32
- 'Democratic Unionist Party' => 168_216,
33
- 'Scottish National Party' => 491_386,
34
- 'Sinn Féin' => 171_942,
35
- 'Plaid Cymru' => 165_394,
36
- 'Social Democratic & Labour Party' => 110_970,
37
- 'Green' => 285_616,
38
- 'Alliance Party' => 42_762,
39
- 'UK Independence Party' => 919_546,
40
- 'British National Party' => 564_331,
41
- 'Ulster Conservatives and Unionists - New Force' => 102_361,
42
- 'English Democrats' => 64_826,
43
- 'Respect-Unity Coalition' => 33_251,
44
- 'Traditional Unionist Voice' => 26_300,
45
- 'Christian Party' => 18_623,
46
- 'Independent Community and Health Concern' => 16_150,
47
- 'Trade Unionist and Socialist Coalition' => 12_275,
48
- 'Scottish Socialist Party' => 3_157,
49
- 'Other' => 321_309 }
50
-
51
- # Source: Electoral Calculus, Historical Data and Plots,
52
- # 2010 (Actual) Election Result (51k, UKIP format),
53
- # retrieved on 4 April 2015
54
- # TODO: Results for Green are hidden in Other
55
- # TODO: Local parties in Northern Ireland are hidden in Other
56
- # URL: http://www.electoralcalculus.co.uk/electdata_2010uc.txt
57
- LAST_DETAILED_ELECTION_RESULT = {
58
- # England
59
- 'Aldershot' => { 'Conservative' => 21_203, 'Labour' => 5489,
60
- 'Liberal Democrat' => 15_617,
61
- 'UK Independence Party' => 2041, 'Other' => 1034 },
62
- 'Aldridge-Brownhills' => { 'Conservative' => 22_913, 'Labour' => 7647,
63
- 'Liberal Democrat' => 6833, 'Other' => 1241 },
64
- 'Altrincham and Sale West' => { 'Conservative' => 24_176,
65
- 'Labour' => 11_073,
66
- 'Liberal Democrat' => 12_581,
67
- 'UK Independence Party' => 1563 },
68
- 'Amber Valley' => { 'Conservative' => 17_746, 'Labour' => 17_210,
69
- 'Liberal Democrat' => 6636,
70
- 'UK Independence Party' => 906, 'Other' => 3460 },
71
- 'Arundel and South Downs' => { 'Conservative' => 32_333,
72
- 'Labour' => 4835,
73
- 'Liberal Democrat' => 15_642,
74
- 'UK Independence Party' => 3172 },
75
- 'Ashfield' => { 'Conservative' => 10_698, 'Labour' => 16_239,
76
- 'Liberal Democrat' => 16_047,
77
- 'UK Independence Party' => 933, 'Other' => 4279 },
78
- 'Ashford' => { 'Conservative' => 29_878, 'Labour' => 9204,
79
- 'Liberal Democrat' => 12_581,
80
- 'UK Independence Party' => 2508, 'Other' => 1014 },
81
- 'Ashton under Lyne' => { 'Conservative' => 9510, 'Labour' => 18_604,
82
- 'Liberal Democrat' => 5703,
83
- 'UK Independence Party' => 1686,
84
- 'Other' => 2929 },
85
- 'Aylesbury' => { 'Conservative' => 27_736, 'Labour' => 6695,
86
- 'Liberal Democrat' => 15_118,
87
- 'UK Independence Party' => 3613 },
88
- 'Banbury' => { 'Conservative' => 29_703, 'Labour' => 10_773,
89
- 'Liberal Democrat' => 11_476,
90
- 'UK Independence Party' => 2806, 'Other' => 1483 },
91
- 'Barking' => { 'Conservative' => 8073, 'Labour' => 24_628,
92
- 'Liberal Democrat' => 3719,
93
- 'UK Independence Party' => 1300, 'Other' => 7623 },
94
- 'Barnsley Central' => { 'Conservative' => 6388, 'Labour' => 17_487,
95
- 'Liberal Democrat' => 6394,
96
- 'UK Independence Party' => 1727,
97
- 'Other' => 5005 },
98
- 'Barnsley East' => { 'Conservative' => 6329, 'Labour' => 18_059,
99
- 'Liberal Democrat' => 6969,
100
- 'UK Independence Party' => 1731, 'Other' => 5298 },
101
- 'Barrow and Furness' => { 'Conservative' => 16_018, 'Labour' => 21_226,
102
- 'Liberal Democrat' => 4424,
103
- 'UK Independence Party' => 841,
104
- 'Other' => 1615 },
105
- 'Basildon and Billericay' => { 'Conservative' => 21_922,
106
- 'Labour' => 9584,
107
- 'Liberal Democrat' => 6538,
108
- 'UK Independence Party' => 1591,
109
- 'Other' => 1934 },
110
- 'Basildon South and East Thurrock' => { 'Conservative' => 19_624,
111
- 'Labour' => 13_852,
112
- 'Liberal Democrat' => 5977,
113
- 'UK Independence Party' => 2639,
114
- 'Other' => 2643 },
115
- 'Basingstoke' => { 'Conservative' => 25_590, 'Labour' => 10_327,
116
- 'Liberal Democrat' => 12_414,
117
- 'UK Independence Party' => 2076, 'Other' => 247 },
118
- 'Bassetlaw' => { 'Conservative' => 16_803, 'Labour' => 25_018,
119
- 'Liberal Democrat' => 5570,
120
- 'UK Independence Party' => 1779, 'Other' => 407 },
121
- 'Bath' => { 'Conservative' => 14_768, 'Labour' => 3251,
122
- 'Liberal Democrat' => 26_651, 'UK Independence Party' => 890,
123
- 'Other' => 1526 },
124
- 'Batley and Spen' => { 'Conservative' => 17_159, 'Labour' => 21_565,
125
- 'Liberal Democrat' => 8095, 'Other' => 4290 },
126
- 'Battersea' => { 'Conservative' => 23_103, 'Labour' => 17_126,
127
- 'Liberal Democrat' => 7176,
128
- 'UK Independence Party' => 505, 'Other' => 882 },
129
- 'Beaconsfield' => { 'Conservative' => 32_053, 'Labour' => 6135,
130
- 'Liberal Democrat' => 10_271,
131
- 'UK Independence Party' => 2597, 'Other' => 1434 },
132
- 'Beckenham' => { 'Conservative' => 27_597, 'Labour' => 6893,
133
- 'Liberal Democrat' => 9813,
134
- 'UK Independence Party' => 1551, 'Other' => 1832 },
135
- 'Bedford' => { 'Conservative' => 17_546, 'Labour' => 16_193,
136
- 'Liberal Democrat' => 8957,
137
- 'UK Independence Party' => 1136, 'Other' => 1270 },
138
- 'Bedfordshire Mid' => { 'Conservative' => 28_815, 'Labour' => 8108,
139
- 'Liberal Democrat' => 13_663,
140
- 'UK Independence Party' => 2826,
141
- 'Other' => 1485 },
142
- 'Bedfordshire North East' => { 'Conservative' => 30_989,
143
- 'Labour' => 8957,
144
- 'Liberal Democrat' => 12_047,
145
- 'UK Independence Party' => 2294,
146
- 'Other' => 1265 },
147
- 'Bedfordshire South West' => { 'Conservative' => 26_815,
148
- 'Labour' => 9948,
149
- 'Liberal Democrat' => 10_166,
150
- 'UK Independence Party' => 2142,
151
- 'Other' => 1703 },
152
- 'Bermondsey and Old Southwark' => { 'Conservative' => 7638,
153
- 'Labour' => 13_060,
154
- 'Liberal Democrat' => 21_590,
155
- 'Other' => 2363 },
156
- 'Berwick-upon-Tweed' => { 'Conservative' => 14_116, 'Labour' => 5061,
157
- 'Liberal Democrat' => 16_806,
158
- 'UK Independence Party' => 1243,
159
- 'Other' => 1213 },
160
- 'Bethnal Green and Bow' => { 'Conservative' => 7071, 'Labour' => 21_784,
161
- 'Liberal Democrat' => 10_210,
162
- 'Other' => 11_663 },
163
- 'Beverley and Holderness' => { 'Conservative' => 25_063,
164
- 'Labour' => 11_224,
165
- 'Liberal Democrat' => 12_076,
166
- 'UK Independence Party' => 1845,
167
- 'Other' => 2991 },
168
- 'Bexhill and Battle' => { 'Conservative' => 28_147, 'Labour' => 6524,
169
- 'Liberal Democrat' => 15_267, 'Other' => 4649 },
170
- 'Bexleyheath and Crayford' => { 'Conservative' => 21_794,
171
- 'Labour' => 11_450,
172
- 'Liberal Democrat' => 5502,
173
- 'UK Independence Party' => 1557,
174
- 'Other' => 2879 },
175
- 'Birkenhead' => { 'Conservative' => 6687, 'Labour' => 22_082,
176
- 'Liberal Democrat' => 6554 },
177
- 'Birmingham Edgbaston' => { 'Conservative' => 15_620, 'Labour' => 16_894,
178
- 'Liberal Democrat' => 6387,
179
- 'UK Independence Party' => 732,
180
- 'Other' => 1938 },
181
- 'Birmingham Erdington' => { 'Conservative' => 11_592, 'Labour' => 14_869,
182
- 'Liberal Democrat' => 5742,
183
- 'UK Independence Party' => 842,
184
- 'Other' => 2501 },
185
- 'Birmingham Hall Green' => { 'Conservative' => 7320, 'Labour' => 16_039,
186
- 'Liberal Democrat' => 11_988,
187
- 'UK Independence Party' => 950,
188
- 'Other' => 12_430 },
189
- 'Birmingham Hodge Hill' => { 'Conservative' => 4936, 'Labour' => 22_077,
190
- 'Liberal Democrat' => 11_775,
191
- 'UK Independence Party' => 714,
192
- 'Other' => 2970 },
193
- 'Birmingham Ladywood' => { 'Conservative' => 4277, 'Labour' => 19_950,
194
- 'Liberal Democrat' => 9845,
195
- 'UK Independence Party' => 902,
196
- 'Other' => 859 },
197
- 'Birmingham Northfield' => { 'Conservative' => 14_059,
198
- 'Labour' => 16_841,
199
- 'Liberal Democrat' => 6550,
200
- 'UK Independence Party' => 1363, 'Other' => 3001 },
201
- 'Birmingham Perry Barr' => { 'Conservative' => 8960, 'Labour' => 21_142,
202
- 'Liberal Democrat' => 9234,
203
- 'UK Independence Party' => 1675,
204
- 'Other' => 1034 },
205
- 'Birmingham Selly Oak' => { 'Conservative' => 14_468, 'Labour' => 17_950,
206
- 'Liberal Democrat' => 10_371,
207
- 'UK Independence Party' => 1131,
208
- 'Other' => 2643 },
209
- 'Birmingham Yardley' => { 'Conservative' => 7836, 'Labour' => 13_160,
210
- 'Liberal Democrat' => 16_162,
211
- 'UK Independence Party' => 1190,
212
- 'Other' => 2502 },
213
- 'Bishop Auckland' => { 'Conservative' => 10_805, 'Labour' => 16_023,
214
- 'Liberal Democrat' => 9189,
215
- 'UK Independence Party' => 1119, 'Other' => 4000 },
216
- 'Blackburn' => { 'Conservative' => 11_895, 'Labour' => 21_751,
217
- 'Liberal Democrat' => 6918,
218
- 'UK Independence Party' => 942, 'Other' => 3993 },
219
- 'Blackley and Broughton' => { 'Conservative' => 6260, 'Labour' => 18_563,
220
- 'Liberal Democrat' => 4861,
221
- 'UK Independence Party' => 894,
222
- 'Other' => 3626 },
223
- 'Blackpool North and Cleveleys' => { 'Conservative' => 16_964,
224
- 'Labour' => 14_814,
225
- 'Liberal Democrat' => 5400,
226
- 'UK Independence Party' => 1659, 'Other' => 1754 },
227
- 'Blackpool South' => { 'Conservative' => 12_597, 'Labour' => 14_449,
228
- 'Liberal Democrat' => 5082,
229
- 'UK Independence Party' => 1352, 'Other' => 1712 },
230
- 'Blaydon' => { 'Conservative' => 7159, 'Labour' => 22_297,
231
- 'Liberal Democrat' => 13_180, 'Other' => 2277 },
232
- 'Blyth Valley' => { 'Conservative' => 6412, 'Labour' => 17_156,
233
- 'Liberal Democrat' => 10_488,
234
- 'UK Independence Party' => 1665, 'Other' => 2845 },
235
- 'Bognor Regis and Littlehampton' => { 'Conservative' => 24_087,
236
- 'Labour' => 6580,
237
- 'Liberal Democrat' => 11_024,
238
- 'UK Independence Party' => 3036, 'Other' => 2125 },
239
- 'Bolsover' => { 'Conservative' => 10_812, 'Labour' => 21_994,
240
- 'Liberal Democrat' => 6821,
241
- 'UK Independence Party' => 1721, 'Other' => 2640 },
242
- 'Bolton North East' => { 'Conservative' => 15_786, 'Labour' => 19_870,
243
- 'Liberal Democrat' => 5624,
244
- 'UK Independence Party' => 1815,
245
- 'Other' => 182 },
246
- 'Bolton South East' => { 'Conservative' => 10_148, 'Labour' => 18_782,
247
- 'Liberal Democrat' => 6289,
248
- 'UK Independence Party' => 1564,
249
- 'Other' => 2821 },
250
- 'Bolton West' => { 'Conservative' => 18_235, 'Labour' => 18_327,
251
- 'Liberal Democrat' => 8177,
252
- 'UK Independence Party' => 1901, 'Other' => 936 },
253
- 'Bootle' => { 'Conservative' => 3678, 'Labour' => 27_426, 'Liberal Democrat' => 6245, 'UK Independence Party' => 2514, 'Other' => 1414 },
254
- 'Boston and Skegness' => { 'Conservative' => 21_325, 'Labour' => 8899, 'Liberal Democrat' => 6371, 'UK Independence Party' => 4081, 'Other' => 2449 },
255
- 'Bosworth' => { 'Conservative' => 23_132, 'Labour' => 8674, 'Liberal Democrat' => 18_100, 'UK Independence Party' => 1098, 'Other' => 3270 },
256
- 'Bournemouth East' => { 'Conservative' => 21_320, 'Labour' => 5836, 'Liberal Democrat' => 13_592, 'UK Independence Party' => 3027, 'Other' => 249 },
257
- 'Bournemouth West' => { 'Conservative' => 18_808, 'Labour' => 6171, 'Liberal Democrat' => 13_225, 'UK Independence Party' => 2999, 'Other' => 456 },
258
- 'Bracknell' => { 'Conservative' => 27_327, 'Labour' => 8755, 'Liberal Democrat' => 11_623, 'UK Independence Party' => 2297, 'Other' => 2134 },
259
- 'Bradford East' => { 'Conservative' => 10_860, 'Labour' => 13_272, 'Liberal Democrat' => 13_637, 'Other' => 2688 },
260
- 'Bradford South' => { 'Conservative' => 11_060, 'Labour' => 15_682, 'Liberal Democrat' => 6948, 'UK Independence Party' => 1339, 'Other' => 2966 },
261
- 'Bradford West' => { 'Conservative' => 12_638, 'Labour' => 18_401, 'Liberal Democrat' => 4732, 'UK Independence Party' => 812, 'Other' => 3993 },
262
- 'Braintree' => { 'Conservative' => 25_901, 'Labour' => 9780, 'Liberal Democrat' => 9247, 'UK Independence Party' => 2477, 'Other' => 1798 },
263
- 'Brent Central' => { 'Conservative' => 5067, 'Labour' => 18_681, 'Liberal Democrat' => 20_026, 'Other' => 1549 },
264
- 'Brent North' => { 'Conservative' => 16_486, 'Labour' => 24_514, 'Liberal Democrat' => 8879, 'UK Independence Party' => 380, 'Other' => 2039 },
265
- 'Brentford and Isleworth' => { 'Conservative' => 20_022, 'Labour' => 18_064, 'Liberal Democrat' => 12_718, 'UK Independence Party' => 863, 'Other' => 2098 },
266
- 'Brentwood and Ongar' => { 'Conservative' => 28_793, 'Labour' => 4992, 'Liberal Democrat' => 11_872, 'UK Independence Party' => 2037, 'Other' => 2898 },
267
- 'Bridgwater and West Somerset' => { 'Conservative' => 24_675, 'Labour' => 9332, 'Liberal Democrat' => 15_426, 'UK Independence Party' => 2604, 'Other' => 2456 },
268
- 'Brigg and Goole' => { 'Conservative' => 19_680, 'Labour' => 14_533, 'Liberal Democrat' => 6414, 'UK Independence Party' => 1749, 'Other' => 1498 },
269
- 'Brighton Kemptown' => { 'Conservative' => 16_217, 'Labour' => 14_889, 'Liberal Democrat' => 7691, 'UK Independence Party' => 1384, 'Other' => 2524 },
270
- 'Brighton Pavilion' => { 'Conservative' => 12_275, 'Labour' => 14_986, 'Liberal Democrat' => 7159, 'UK Independence Party' => 948, 'Other' => 16_466 },
271
- 'Bristol East' => { 'Conservative' => 12_749, 'Labour' => 16_471, 'Liberal Democrat' => 10_993, 'UK Independence Party' => 1510, 'Other' => 3294 },
272
- 'Bristol North West' => { 'Conservative' => 19_115, 'Labour' => 13_059, 'Liberal Democrat' => 15_841, 'UK Independence Party' => 1175, 'Other' => 1146 },
273
- 'Bristol South' => { 'Conservative' => 11_086, 'Labour' => 18_600, 'Liberal Democrat' => 13_866, 'UK Independence Party' => 1264, 'Other' => 3561 },
274
- 'Bristol West' => { 'Conservative' => 10_169, 'Labour' => 15_227, 'Liberal Democrat' => 26_593, 'UK Independence Party' => 655, 'Other' => 2703 },
275
- 'Broadland' => { 'Conservative' => 24_338, 'Labour' => 7287, 'Liberal Democrat' => 17_046, 'UK Independence Party' => 2382, 'Other' => 1623 },
276
- 'Bromley and Chislehurst' => { 'Conservative' => 23_569, 'Labour' => 7295, 'Liberal Democrat' => 9669, 'UK Independence Party' => 1451, 'Other' => 2053 },
277
- 'Bromsgrove' => { 'Conservative' => 22_558, 'Labour' => 11_250, 'Liberal Democrat' => 10_124, 'UK Independence Party' => 2950, 'Other' => 4748 },
278
- 'Broxbourne' => { 'Conservative' => 26_844, 'Labour' => 8040, 'Liberal Democrat' => 6107, 'UK Independence Party' => 1890, 'Other' => 2777 },
279
- 'Broxtowe' => { 'Conservative' => 20_585, 'Labour' => 20_196, 'Liberal Democrat' => 8907, 'UK Independence Party' => 1194, 'Other' => 1845 },
280
- 'Buckingham' => { 'Conservative' => 22_860, 'UK Independence Party' => 8401, 'Other' => 17_074 },
281
- 'Burnley' => { 'Conservative' => 6950, 'Labour' => 13_114, 'Liberal Democrat' => 14_932, 'UK Independence Party' => 929, 'Other' => 5920 },
282
- 'Burton' => { 'Conservative' => 22_188, 'Labour' => 15_884, 'Liberal Democrat' => 7891, 'UK Independence Party' => 1451, 'Other' => 2409 },
283
- 'Bury North' => { 'Conservative' => 18_070, 'Labour' => 15_827, 'Liberal Democrat' => 7645, 'UK Independence Party' => 1282, 'Other' => 2137 },
284
- 'Bury South' => { 'Conservative' => 16_216, 'Labour' => 19_508, 'Liberal Democrat' => 8796, 'UK Independence Party' => 1017, 'Other' => 2730 },
285
- 'Bury St Edmunds' => { 'Conservative' => 27_899, 'Labour' => 9776, 'Liberal Democrat' => 15_519, 'UK Independence Party' => 3003, 'Other' => 2521 },
286
- 'Calder Valley' => { 'Conservative' => 20_397, 'Labour' => 13_966, 'Liberal Democrat' => 13_037, 'UK Independence Party' => 1173, 'Other' => 3207 },
287
- 'Camberwell and Peckham' => { 'Conservative' => 6080, 'Labour' => 27_619, 'Liberal Democrat' => 10_432, 'Other' => 2528 },
288
- 'Camborne and Redruth' => { 'Conservative' => 15_969, 'Labour' => 6945, 'Liberal Democrat' => 15_903, 'UK Independence Party' => 2152, 'Other' => 1524 },
289
- 'Cambridge' => { 'Conservative' => 12_829, 'Labour' => 12_174, 'Liberal Democrat' => 19_621, 'UK Independence Party' => 1195, 'Other' => 4311 },
290
- 'Cambridgeshire North East' => { 'Conservative' => 26_862, 'Labour' => 9274, 'Liberal Democrat' => 10_437, 'UK Independence Party' => 2991, 'Other' => 2500 },
291
- 'Cambridgeshire North West' => { 'Conservative' => 29_425, 'Labour' => 9877, 'Liberal Democrat' => 12_748, 'UK Independence Party' => 4826, 'Other' => 1407 },
292
- 'Cambridgeshire South' => { 'Conservative' => 27_995, 'Labour' => 6024, 'Liberal Democrat' => 20_157, 'UK Independence Party' => 1873, 'Other' => 3007 },
293
- 'Cambridgeshire South East' => { 'Conservative' => 27_629, 'Labour' => 4380, 'Liberal Democrat' => 21_683, 'UK Independence Party' => 2138, 'Other' => 1772 },
294
- 'Cannock Chase' => { 'Conservative' => 18_271, 'Labour' => 15_076, 'Liberal Democrat' => 7732, 'UK Independence Party' => 1580, 'Other' => 2900 },
295
- 'Canterbury' => { 'Conservative' => 22_050, 'Labour' => 7940, 'Liberal Democrat' => 16_002, 'UK Independence Party' => 1907, 'Other' => 1310 },
296
- 'Carlisle' => { 'Conservative' => 16_589, 'Labour' => 15_736, 'Liberal Democrat' => 6567, 'UK Independence Party' => 969, 'Other' => 2339 },
297
- 'Carshalton and Wallington' => { 'Conservative' => 16_920, 'Labour' => 4015, 'Liberal Democrat' => 22_180, 'UK Independence Party' => 1348, 'Other' => 1455 },
298
- 'Castle Point' => { 'Conservative' => 19_806, 'Labour' => 6609, 'Liberal Democrat' => 4232, 'Other' => 14_379 },
299
- 'Charnwood' => { 'Conservative' => 26_560, 'Labour' => 10_536, 'Liberal Democrat' => 11_531, 'UK Independence Party' => 1799, 'Other' => 3116 },
300
- 'Chatham and Aylesford' => { 'Conservative' => 20_230, 'Labour' => 14_161, 'Liberal Democrat' => 5832, 'UK Independence Party' => 1314, 'Other' => 2270 },
301
- 'Cheadle' => { 'Conservative' => 21_445, 'Labour' => 4920, 'Liberal Democrat' => 24_717, 'UK Independence Party' => 1430 },
302
- 'Chelmsford' => { 'Conservative' => 25_207, 'Labour' => 5980, 'Liberal Democrat' => 20_097, 'UK Independence Party' => 1527, 'Other' => 1782 },
303
- 'Chelsea and Fulham' => { 'Conservative' => 24_093, 'Labour' => 7371, 'Liberal Democrat' => 6473, 'UK Independence Party' => 478, 'Other' => 1441 },
304
- 'Cheltenham' => { 'Conservative' => 21_739, 'Labour' => 2703, 'Liberal Democrat' => 26_659, 'UK Independence Party' => 1192, 'Other' => 493 },
305
- 'Chesham and Amersham' => { 'Conservative' => 31_658, 'Labour' => 2942, 'Liberal Democrat' => 14_948, 'UK Independence Party' => 2129, 'Other' => 767 },
306
- 'Chester, City of' => { 'Conservative' => 18_995, 'Labour' => 16_412, 'Liberal Democrat' => 8930, 'UK Independence Party' => 1225, 'Other' => 1228 },
307
- 'Chesterfield' => { 'Conservative' => 7214, 'Labour' => 17_891, 'Liberal Democrat' => 17_342, 'UK Independence Party' => 1432, 'Other' => 1960 },
308
- 'Chichester' => { 'Conservative' => 31_427, 'Labour' => 5937, 'Liberal Democrat' => 15_550, 'UK Independence Party' => 3873 },
309
- 'Chingford and Woodford Green' => { 'Conservative' => 22_743, 'Labour' => 9780, 'Liberal Democrat' => 7242, 'UK Independence Party' => 1133, 'Other' => 2208 },
310
- 'Chippenham' => { 'Conservative' => 21_500, 'Labour' => 3620, 'Liberal Democrat' => 23_970, 'UK Independence Party' => 1783, 'Other' => 1512 },
311
- 'Chipping Barnet' => { 'Conservative' => 24_700, 'Labour' => 12_773, 'Liberal Democrat' => 10_202, 'UK Independence Party' => 1442, 'Other' => 1491 },
312
- 'Chorley' => { 'Conservative' => 18_922, 'Labour' => 21_515, 'Liberal Democrat' => 6957, 'UK Independence Party' => 2021, 'Other' => 359 },
313
- 'Christchurch' => { 'Conservative' => 27_888, 'Labour' => 4849, 'Liberal Democrat' => 12_478, 'UK Independence Party' => 4201 },
314
- 'Cities of London and Westminster' => { 'Conservative' => 19_264, 'Labour' => 8188, 'Liberal Democrat' => 7574, 'UK Independence Party' => 664, 'Other' => 1241 },
315
- 'Clacton' => { 'Conservative' => 22_867, 'Labour' => 10_799, 'Liberal Democrat' => 5577, 'Other' => 3880 },
316
- 'Cleethorpes' => { 'Conservative' => 18_939, 'Labour' => 14_641, 'Liberal Democrat' => 8192, 'UK Independence Party' => 3194 },
317
- 'Colchester' => { 'Conservative' => 15_169, 'Labour' => 5680, 'Liberal Democrat' => 22_151, 'UK Independence Party' => 1350, 'Other' => 1789 },
318
- 'Colne Valley' => { 'Conservative' => 20_440, 'Labour' => 14_589, 'Liberal Democrat' => 15_603, 'UK Independence Party' => 1163, 'Other' => 3501 },
319
- 'Congleton' => { 'Conservative' => 23_250, 'Labour' => 8747, 'Liberal Democrat' => 16_187, 'UK Independence Party' => 2147, 'Other' => 449 },
320
- 'Copeland' => { 'Conservative' => 15_866, 'Labour' => 19_699, 'Liberal Democrat' => 4365, 'UK Independence Party' => 994, 'Other' => 1863 },
321
- 'Corby' => { 'Conservative' => 22_886, 'Labour' => 20_991, 'Liberal Democrat' => 7834, 'Other' => 2525 },
322
- 'Cornwall North' => { 'Conservative' => 19_531, 'Labour' => 1971, 'Liberal Democrat' => 22_512, 'UK Independence Party' => 2300, 'Other' => 530 },
323
- 'Cornwall South East' => { 'Conservative' => 22_390, 'Labour' => 3507, 'Liberal Democrat' => 19_170, 'UK Independence Party' => 3083, 'Other' => 1467 },
324
- 'Cotswolds, The' => { 'Conservative' => 29_075, 'Labour' => 5886, 'Liberal Democrat' => 16_211, 'UK Independence Party' => 2292, 'Other' => 1368 },
325
- 'Coventry North East' => { 'Conservative' => 9609, 'Labour' => 21_384, 'Liberal Democrat' => 7210, 'UK Independence Party' => 1291, 'Other' => 3889 },
326
- 'Coventry North West' => { 'Conservative' => 13_648, 'Labour' => 19_936, 'Liberal Democrat' => 8344, 'UK Independence Party' => 1295, 'Other' => 3337 },
327
- 'Coventry South' => { 'Conservative' => 15_352, 'Labour' => 19_197, 'Liberal Democrat' => 8278, 'UK Independence Party' => 1767, 'Other' => 1330 },
328
- 'Crawley' => { 'Conservative' => 21_264, 'Labour' => 15_336, 'Liberal Democrat' => 6844, 'UK Independence Party' => 1382, 'Other' => 2678 },
329
- 'Crewe and Nantwich' => { 'Conservative' => 23_420, 'Labour' => 17_374, 'Liberal Democrat' => 7656, 'UK Independence Party' => 1414, 'Other' => 1220 },
330
- 'Croydon Central' => { 'Conservative' => 19_657, 'Labour' => 16_688, 'Liberal Democrat' => 6553, 'UK Independence Party' => 997, 'Other' => 5862 },
331
- 'Croydon North' => { 'Conservative' => 12_466, 'Labour' => 28_947, 'Liberal Democrat' => 7226, 'UK Independence Party' => 891, 'Other' => 2146 },
332
- 'Croydon South' => { 'Conservative' => 28_684, 'Labour' => 11_287, 'Liberal Democrat' => 12_866, 'UK Independence Party' => 2504, 'Other' => 981 },
333
- 'Dagenham and Rainham' => { 'Conservative' => 15_183, 'Labour' => 17_813, 'Liberal Democrat' => 3806, 'UK Independence Party' => 1569, 'Other' => 5861 },
334
- 'Darlington' => { 'Conservative' => 13_503, 'Labour' => 16_891, 'Liberal Democrat' => 10_046, 'UK Independence Party' => 1194, 'Other' => 1262 },
335
- 'Dartford' => { 'Conservative' => 24_428, 'Labour' => 13_800, 'Liberal Democrat' => 7361, 'UK Independence Party' => 1842, 'Other' => 2649 },
336
- 'Daventry' => { 'Conservative' => 29_252, 'Labour' => 8168, 'Liberal Democrat' => 10_064, 'UK Independence Party' => 2333, 'Other' => 1957 },
337
- 'Denton and Reddish' => { 'Conservative' => 9360, 'Labour' => 19_191, 'Liberal Democrat' => 6727, 'UK Independence Party' => 2060, 'Other' => 297 },
338
- 'Derby North' => { 'Conservative' => 14_283, 'Labour' => 14_896, 'Liberal Democrat' => 12_638, 'UK Independence Party' => 829, 'Other' => 2434 },
339
- 'Derby South' => { 'Conservative' => 11_729, 'Labour' => 17_851, 'Liberal Democrat' => 8430, 'UK Independence Party' => 1821, 'Other' => 1357 },
340
- 'Derbyshire Dales' => { 'Conservative' => 24_378, 'Labour' => 9061, 'Liberal Democrat' => 10_512, 'UK Independence Party' => 1779, 'Other' => 1050 },
341
- 'Derbyshire Mid' => { 'Conservative' => 22_877, 'Labour' => 11_585, 'Liberal Democrat' => 9711, 'UK Independence Party' => 1252, 'Other' => 1917 },
342
- 'Derbyshire North East' => { 'Conservative' => 15_503, 'Labour' => 17_948, 'Liberal Democrat' => 10_947, 'UK Independence Party' => 2636 },
343
- 'Derbyshire South' => { 'Conservative' => 22_935, 'Labour' => 15_807, 'Liberal Democrat' => 8012, 'UK Independence Party' => 1206, 'Other' => 2459 },
344
- 'Devizes' => { 'Conservative' => 25_519, 'Labour' => 4711, 'Liberal Democrat' => 12_514, 'UK Independence Party' => 2076, 'Other' => 1520 },
345
- 'Devon Central' => { 'Conservative' => 27_737, 'Labour' => 3715, 'Liberal Democrat' => 18_507, 'UK Independence Party' => 2870, 'Other' => 1044 },
346
- 'Devon East' => { 'Conservative' => 25_662, 'Labour' => 5721, 'Liberal Democrat' => 16_548, 'UK Independence Party' => 4346, 'Other' => 815 },
347
- 'Devon North' => { 'Conservative' => 18_484, 'Labour' => 2671, 'Liberal Democrat' => 24_305, 'UK Independence Party' => 3720, 'Other' => 2141 },
348
- 'Devon South West' => { 'Conservative' => 27_908, 'Labour' => 6193, 'Liberal Democrat' => 12_034, 'UK Independence Party' => 3084, 'Other' => 641 },
349
- 'Devon West and Torridge' => { 'Conservative' => 25_230, 'Labour' => 2917, 'Liberal Democrat' => 22_273, 'UK Independence Party' => 3021, 'Other' => 1816 },
350
- 'Dewsbury' => { 'Conservative' => 18_898, 'Labour' => 17_372, 'Liberal Democrat' => 9150, 'Other' => 8588 },
351
- 'Don Valley' => { 'Conservative' => 12_877, 'Labour' => 16_472, 'Liberal Democrat' => 7422, 'UK Independence Party' => 1904, 'Other' => 4755 },
352
- 'Doncaster Central' => { 'Conservative' => 10_340, 'Labour' => 16_569, 'Liberal Democrat' => 8795, 'UK Independence Party' => 1421, 'Other' => 4620 },
353
- 'Doncaster North' => { 'Conservative' => 8728, 'Labour' => 19_637, 'Liberal Democrat' => 6174, 'UK Independence Party' => 1797, 'Other' => 5147 },
354
- 'Dorset Mid and Poole North' => { 'Conservative' => 20_831, 'Labour' => 2748, 'Liberal Democrat' => 21_100, 'UK Independence Party' => 2109 },
355
- 'Dorset North' => { 'Conservative' => 27_640, 'Labour' => 2910, 'Liberal Democrat' => 20_015, 'UK Independence Party' => 2812, 'Other' => 764 },
356
- 'Dorset South' => { 'Conservative' => 22_667, 'Labour' => 15_224, 'Liberal Democrat' => 9557, 'UK Independence Party' => 2034, 'Other' => 828 },
357
- 'Dorset West' => { 'Conservative' => 27_287, 'Labour' => 3815, 'Liberal Democrat' => 23_364, 'UK Independence Party' => 2196, 'Other' => 675 },
358
- 'Dover' => { 'Conservative' => 22_174, 'Labour' => 16_900, 'Liberal Democrat' => 7962, 'UK Independence Party' => 1747, 'Other' => 1602 },
359
- 'Dudley North' => { 'Conservative' => 14_274, 'Labour' => 14_923, 'Liberal Democrat' => 4066, 'UK Independence Party' => 3267, 'Other' => 2072 },
360
- 'Dudley South' => { 'Conservative' => 16_450, 'Labour' => 12_594, 'Liberal Democrat' => 5989, 'UK Independence Party' => 3132 },
361
- 'Dulwich and West Norwood' => { 'Conservative' => 10_684, 'Labour' => 22_461, 'Liberal Democrat' => 13_096, 'UK Independence Party' => 707, 'Other' => 1266 },
362
- 'Durham North' => { 'Conservative' => 8622, 'Labour' => 20_698, 'Liberal Democrat' => 8617, 'UK Independence Party' => 1344, 'Other' => 1686 },
363
- 'Durham North West' => { 'Conservative' => 8766, 'Labour' => 18_539, 'Liberal Democrat' => 10_927, 'UK Independence Party' => 1259, 'Other' => 4324 },
364
- 'Durham, City of' => { 'Conservative' => 6146, 'Labour' => 20_496, 'Liberal Democrat' => 17_429, 'UK Independence Party' => 856, 'Other' => 1325 },
365
- 'Ealing Central and Acton' => { 'Conservative' => 17_944, 'Labour' => 14_228, 'Liberal Democrat' => 13_041, 'UK Independence Party' => 765, 'Other' => 1222 },
366
- 'Ealing North' => { 'Conservative' => 14_722, 'Labour' => 24_023, 'Liberal Democrat' => 6283, 'UK Independence Party' => 685, 'Other' => 1965 },
367
- 'Ealing Southall' => { 'Conservative' => 12_733, 'Labour' => 22_024, 'Liberal Democrat' => 6383, 'Other' => 1616 },
368
- 'Easington' => { 'Conservative' => 4790, 'Labour' => 20_579, 'Liberal Democrat' => 5597, 'UK Independence Party' => 1631, 'Other' => 2317 },
369
- 'East Ham' => { 'Conservative' => 7645, 'Labour' => 35_471, 'Liberal Democrat' => 5849, 'Other' => 1408 },
370
- 'Eastbourne' => { 'Conservative' => 21_223, 'Labour' => 2497, 'Liberal Democrat' => 24_658, 'UK Independence Party' => 1305, 'Other' => 2441 },
371
- 'Eastleigh' => { 'Conservative' => 21_102, 'Labour' => 5153, 'Liberal Democrat' => 24_966, 'UK Independence Party' => 1933, 'Other' => 496 },
372
- 'Eddisbury' => { 'Conservative' => 23_472, 'Labour' => 9794, 'Liberal Democrat' => 10_217, 'UK Independence Party' => 1931 },
373
- 'Edmonton' => { 'Conservative' => 12_052, 'Labour' => 21_665, 'Liberal Democrat' => 4252, 'UK Independence Party' => 1036, 'Other' => 1372 },
374
- 'Ellesmere Port and Neston' => { 'Conservative' => 15_419, 'Labour' => 19_750, 'Liberal Democrat' => 6663, 'UK Independence Party' => 1619, 'Other' => 782 },
375
- 'Elmet and Rothwell' => { 'Conservative' => 23_778, 'Labour' => 19_257, 'Liberal Democrat' => 9109, 'UK Independence Party' => 1593, 'Other' => 2052 },
376
- 'Eltham' => { 'Conservative' => 15_753, 'Labour' => 17_416, 'Liberal Democrat' => 5299, 'UK Independence Party' => 1011, 'Other' => 2485 },
377
- 'Enfield North' => { 'Conservative' => 18_804, 'Labour' => 17_112, 'Liberal Democrat' => 5403, 'UK Independence Party' => 938, 'Other' => 2196 },
378
- 'Enfield Southgate' => { 'Conservative' => 21_928, 'Labour' => 14_302, 'Liberal Democrat' => 6124, 'UK Independence Party' => 505, 'Other' => 1493 },
379
- 'Epping Forest' => { 'Conservative' => 25_148, 'Labour' => 6641, 'Liberal Democrat' => 10_017, 'UK Independence Party' => 1852, 'Other' => 2926 },
380
- 'Epsom and Ewell' => { 'Conservative' => 30_868, 'Labour' => 6538, 'Liberal Democrat' => 14_734, 'UK Independence Party' => 2549, 'Other' => 266 },
381
- 'Erewash' => { 'Conservative' => 18_805, 'Labour' => 16_304, 'Liberal Democrat' => 8343, 'UK Independence Party' => 855, 'Other' => 3335 },
382
- 'Erith and Thamesmead' => { 'Conservative' => 13_365, 'Labour' => 19_068, 'Liberal Democrat' => 5116, 'UK Independence Party' => 1139, 'Other' => 3788 },
383
- 'Esher and Walton' => { 'Conservative' => 32_134, 'Labour' => 5829, 'Liberal Democrat' => 13_541, 'UK Independence Party' => 1783, 'Other' => 1256 },
384
- 'Exeter' => { 'Conservative' => 17_221, 'Labour' => 19_942, 'Liberal Democrat' => 10_581, 'UK Independence Party' => 1930, 'Other' => 2573 },
385
- 'Fareham' => { 'Conservative' => 30_037, 'Labour' => 7719, 'Liberal Democrat' => 12_945, 'UK Independence Party' => 2235, 'Other' => 1409 },
386
- 'Faversham and Kent Mid' => { 'Conservative' => 26_250, 'Labour' => 7748, 'Liberal Democrat' => 9162, 'UK Independence Party' => 1722, 'Other' => 1830 },
387
- 'Feltham and Heston' => { 'Conservative' => 16_516, 'Labour' => 21_174, 'Liberal Democrat' => 6679, 'UK Independence Party' => 992, 'Other' => 3175 },
388
- 'Filton and Bradley Stoke' => { 'Conservative' => 19_686, 'Labour' => 12_772, 'Liberal Democrat' => 12_197, 'UK Independence Party' => 1506, 'Other' => 2140 },
389
- 'Finchley and Golders Green' => { 'Conservative' => 21_688, 'Labour' => 15_879, 'Liberal Democrat' => 8036, 'UK Independence Party' => 817, 'Other' => 737 },
390
- 'Folkestone and Hythe' => { 'Conservative' => 26_109, 'Labour' => 5719, 'Liberal Democrat' => 15_987, 'UK Independence Party' => 2439, 'Other' => 2546 },
391
- 'Forest of Dean' => { 'Conservative' => 22_853, 'Labour' => 11_789, 'Liberal Democrat' => 10_676, 'UK Independence Party' => 2522, 'Other' => 923 },
392
- 'Fylde' => { 'Conservative' => 22_826, 'Labour' => 8624, 'Liberal Democrat' => 9641, 'UK Independence Party' => 1945, 'Other' => 654 },
393
- 'Gainsborough' => { 'Conservative' => 24_266, 'Labour' => 7701, 'Liberal Democrat' => 13_707, 'UK Independence Party' => 2065, 'Other' => 1512 },
394
- 'Garston and Halewood' => { 'Conservative' => 6908, 'Labour' => 25_493, 'Liberal Democrat' => 8616, 'UK Independence Party' => 1540, 'Other' => 268 },
395
- 'Gateshead' => { 'Conservative' => 5716, 'Labour' => 20_712, 'Liberal Democrat' => 8163, 'UK Independence Party' => 1103, 'Other' => 2563 },
396
- 'Gedling' => { 'Conservative' => 17_962, 'Labour' => 19_821, 'Liberal Democrat' => 7350, 'UK Independence Party' => 1459, 'Other' => 1598 },
397
- 'Gillingham and Rainham' => { 'Conservative' => 21_624, 'Labour' => 12_944, 'Liberal Democrat' => 8484, 'UK Independence Party' => 1515, 'Other' => 2219 },
398
- 'Gloucester' => { 'Conservative' => 20_267, 'Labour' => 17_847, 'Liberal Democrat' => 9767, 'UK Independence Party' => 1808, 'Other' => 1075 },
399
- 'Gosport' => { 'Conservative' => 24_300, 'Labour' => 7944, 'Liberal Democrat' => 9887, 'UK Independence Party' => 1496, 'Other' => 3312 },
400
- 'Grantham and Stamford' => { 'Conservative' => 26_552, 'Labour' => 9503, 'Liberal Democrat' => 11_726, 'UK Independence Party' => 1604, 'Other' => 3414 },
401
- 'Gravesham' => { 'Conservative' => 22_956, 'Labour' => 13_644, 'Liberal Democrat' => 6293, 'UK Independence Party' => 2265, 'Other' => 2145 },
402
- 'Great Grimsby' => { 'Conservative' => 10_063, 'Labour' => 10_777, 'Liberal Democrat' => 7388, 'UK Independence Party' => 2043, 'Other' => 2683 },
403
- 'Great Yarmouth' => { 'Conservative' => 18_571, 'Labour' => 14_295, 'Liberal Democrat' => 6188, 'UK Independence Party' => 2066, 'Other' => 1937 },
404
- 'Greenwich and Woolwich' => { 'Conservative' => 10_109, 'Labour' => 20_262, 'Liberal Democrat' => 7498, 'Other' => 3319 },
405
- 'Guildford' => { 'Conservative' => 29_618, 'Labour' => 2812, 'Liberal Democrat' => 21_836, 'UK Independence Party' => 1021, 'Other' => 280 },
406
- 'Hackney North and Stoke Newington' => { 'Conservative' => 6759, 'Labour' => 25_553, 'Liberal Democrat' => 11_092, 'Other' => 3084 },
407
- 'Hackney South and Shoreditch' => { 'Conservative' => 5800, 'Labour' => 23_888, 'Liberal Democrat' => 9600, 'UK Independence Party' => 651, 'Other' => 2919 },
408
- 'Halesowen and Rowley Regis' => { 'Conservative' => 18_115, 'Labour' => 16_092, 'Liberal Democrat' => 6515, 'UK Independence Party' => 2824, 'Other' => 433 },
409
- 'Halifax' => { 'Conservative' => 14_806, 'Labour' => 16_278, 'Liberal Democrat' => 8335, 'UK Independence Party' => 654, 'Other' => 3482 },
410
- 'Haltemprice and Howden' => { 'Conservative' => 24_486, 'Labour' => 7630, 'Liberal Democrat' => 12_884, 'Other' => 3737 },
411
- 'Halton' => { 'Conservative' => 8339, 'Labour' => 23_843, 'Liberal Democrat' => 5718, 'UK Independence Party' => 1228, 'Other' => 2210 },
412
- 'Hammersmith' => { 'Conservative' => 17_261, 'Labour' => 20_810, 'Liberal Democrat' => 7567, 'UK Independence Party' => 551, 'Other' => 1263 },
413
- 'Hampshire East' => { 'Conservative' => 29_137, 'Labour' => 4043, 'Liberal Democrat' => 15_640, 'UK Independence Party' => 1477, 'Other' => 1020 },
414
- 'Hampshire North East' => { 'Conservative' => 32_075, 'Labour' => 5173, 'Liberal Democrat' => 13_478, 'UK Independence Party' => 2213 },
415
- 'Hampshire North West' => { 'Conservative' => 31_072, 'Labour' => 6980, 'Liberal Democrat' => 12_489, 'UK Independence Party' => 2751 },
416
- 'Hampstead and Kilburn' => { 'Conservative' => 17_290, 'Labour' => 17_332, 'Liberal Democrat' => 16_491, 'UK Independence Party' => 408, 'Other' => 1301 },
417
- 'Harborough' => { 'Conservative' => 26_894, 'Labour' => 6981, 'Liberal Democrat' => 17_097, 'UK Independence Party' => 1462, 'Other' => 2511 },
418
- 'Harlow' => { 'Conservative' => 19_691, 'Labour' => 14_766, 'Liberal Democrat' => 5990, 'UK Independence Party' => 1591, 'Other' => 1840 },
419
- 'Harrogate and Knaresborough' => { 'Conservative' => 24_305, 'Labour' => 3413, 'Liberal Democrat' => 23_266, 'UK Independence Party' => 1056, 'Other' => 1094 },
420
- 'Harrow East' => { 'Conservative' => 21_435, 'Labour' => 18_032, 'Liberal Democrat' => 6850, 'UK Independence Party' => 896, 'Other' => 793 },
421
- 'Harrow West' => { 'Conservative' => 16_968, 'Labour' => 20_111, 'Liberal Democrat' => 7458, 'UK Independence Party' => 954, 'Other' => 625 },
422
- 'Hartlepool' => { 'Conservative' => 10_758, 'Labour' => 16_267, 'Liberal Democrat' => 6533, 'UK Independence Party' => 2682, 'Other' => 2002 },
423
- 'Harwich and North Essex' => { 'Conservative' => 23_001, 'Labour' => 9774, 'Liberal Democrat' => 11_554, 'UK Independence Party' => 2527, 'Other' => 2144 },
424
- 'Hastings and Rye' => { 'Conservative' => 20_468, 'Labour' => 18_475, 'Liberal Democrat' => 7825, 'UK Independence Party' => 1397, 'Other' => 1649 },
425
- 'Havant' => { 'Conservative' => 22_433, 'Labour' => 7777, 'Liberal Democrat' => 10_273, 'UK Independence Party' => 2611, 'Other' => 809 },
426
- 'Hayes and Harlington' => { 'Conservative' => 12_553, 'Labour' => 23_377, 'Liberal Democrat' => 3726, 'Other' => 2981 },
427
- 'Hazel Grove' => { 'Conservative' => 14_114, 'Labour' => 5234, 'Liberal Democrat' => 20_485, 'UK Independence Party' => 2148 },
428
- 'Hemel Hempstead' => { 'Conservative' => 24_721, 'Labour' => 10_295, 'Liberal Democrat' => 11_315, 'UK Independence Party' => 1254, 'Other' => 1886 },
429
- 'Hemsworth' => { 'Conservative' => 10_662, 'Labour' => 20_506, 'Liberal Democrat' => 5667, 'Other' => 7005 },
430
- 'Hendon' => { 'Conservative' => 19_635, 'Labour' => 19_529, 'Liberal Democrat' => 5734, 'UK Independence Party' => 958, 'Other' => 518 },
431
- 'Henley' => { 'Conservative' => 30_054, 'Labour' => 5835, 'Liberal Democrat' => 13_466, 'UK Independence Party' => 1817, 'Other' => 2348 },
432
- 'Hereford and South Herefordshire' => { 'Conservative' => 22_366, 'Labour' => 3506, 'Liberal Democrat' => 19_885, 'UK Independence Party' => 1638, 'Other' => 986 },
433
- 'Herefordshire North' => { 'Conservative' => 24_631, 'Labour' => 3373, 'Liberal Democrat' => 14_744, 'UK Independence Party' => 2701, 'Other' => 2119 },
434
- 'Hertford and Stortford' => { 'Conservative' => 29_810, 'Labour' => 7620, 'Liberal Democrat' => 14_373, 'UK Independence Party' => 1716, 'Other' => 1858 },
435
- 'Hertfordshire North East' => { 'Conservative' => 26_995, 'Labour' => 8291, 'Liberal Democrat' => 11_801, 'UK Independence Party' => 2075, 'Other' => 1263 },
436
- 'Hertfordshire South West' => { 'Conservative' => 30_773, 'Labour' => 6526, 'Liberal Democrat' => 15_853, 'UK Independence Party' => 1450, 'Other' => 2148 },
437
- 'Hertsmere' => { 'Conservative' => 26_476, 'Labour' => 8871, 'Liberal Democrat' => 8210, 'UK Independence Party' => 1712, 'Other' => 2001 },
438
- 'Hexham' => { 'Conservative' => 18_795, 'Labour' => 8253, 'Liberal Democrat' => 13_007, 'Other' => 3428 },
439
- 'Heywood and Middleton' => { 'Conservative' => 12_528, 'Labour' => 18_499, 'Liberal Democrat' => 10_474, 'UK Independence Party' => 1215, 'Other' => 3409 },
440
- 'High Peak' => { 'Conservative' => 20_587, 'Labour' => 15_910, 'Liberal Democrat' => 10_993, 'UK Independence Party' => 1690, 'Other' => 1157 },
441
- 'Hitchin and Harpenden' => { 'Conservative' => 29_869, 'Labour' => 7413, 'Liberal Democrat' => 14_598, 'UK Independence Party' => 1663, 'Other' => 1164 },
442
- 'Holborn and St Pancras' => { 'Conservative' => 11_134, 'Labour' => 25_198, 'Liberal Democrat' => 15_256, 'UK Independence Party' => 587, 'Other' => 2474 },
443
- 'Hornchurch and Upminster' => { 'Conservative' => 27_469, 'Labour' => 11_098, 'Liberal Democrat' => 7426, 'UK Independence Party' => 2848, 'Other' => 4549 },
444
- 'Hornsey and Wood Green' => { 'Conservative' => 9174, 'Labour' => 18_720, 'Liberal Democrat' => 25_595, 'Other' => 1553 },
445
- 'Horsham' => { 'Conservative' => 29_447, 'Labour' => 4189, 'Liberal Democrat' => 17_987, 'UK Independence Party' => 2839, 'Other' => 1379 },
446
- 'Houghton and Sunderland South' => { 'Conservative' => 8147, 'Labour' => 19_137, 'Liberal Democrat' => 5292, 'UK Independence Party' => 1022, 'Other' => 4423 },
447
- 'Hove' => { 'Conservative' => 18_294, 'Labour' => 16_426, 'Liberal Democrat' => 11_240, 'UK Independence Party' => 1206, 'Other' => 2653 },
448
- 'Huddersfield' => { 'Conservative' => 11_253, 'Labour' => 15_725, 'Liberal Democrat' => 10_023, 'Other' => 3523 },
449
- 'Hull East' => { 'Conservative' => 5667, 'Labour' => 16_387, 'Liberal Democrat' => 7790, 'UK Independence Party' => 2745, 'Other' => 1595 },
450
- 'Hull North' => { 'Conservative' => 4365, 'Labour' => 13_044, 'Liberal Democrat' => 12_403, 'UK Independence Party' => 1358, 'Other' => 2121 },
451
- 'Hull West and Hessle' => { 'Conservative' => 6361, 'Labour' => 13_378, 'Liberal Democrat' => 7636, 'UK Independence Party' => 1688, 'Other' => 2442 },
452
- 'Huntingdon' => { 'Conservative' => 26_516, 'Labour' => 5982, 'Liberal Democrat' => 15_697, 'UK Independence Party' => 3258, 'Other' => 2813 },
453
- 'Hyndburn' => { 'Conservative' => 14_441, 'Labour' => 17_531, 'Liberal Democrat' => 5033, 'UK Independence Party' => 1481, 'Other' => 4186 },
454
- 'Ilford North' => { 'Conservative' => 21_506, 'Labour' => 16_102, 'Liberal Democrat' => 5966, 'UK Independence Party' => 871, 'Other' => 2573 },
455
- 'Ilford South' => { 'Conservative' => 14_014, 'Labour' => 25_301, 'Liberal Democrat' => 8679, 'UK Independence Party' => 1132, 'Other' => 2065 },
456
- 'Ipswich' => { 'Conservative' => 18_371, 'Labour' => 16_292, 'Liberal Democrat' => 8556, 'UK Independence Party' => 1365, 'Other' => 2357 },
457
- 'Isle of Wight' => { 'Conservative' => 32_810, 'Labour' => 8169, 'Liberal Democrat' => 22_283, 'UK Independence Party' => 2435, 'Other' => 4567 },
458
- 'Islington North' => { 'Conservative' => 6339, 'Labour' => 24_276, 'Liberal Democrat' => 11_875, 'UK Independence Party' => 716, 'Other' => 1348 },
459
- 'Islington South and Finsbury' => { 'Conservative' => 8449, 'Labour' => 18_407, 'Liberal Democrat' => 14_838, 'UK Independence Party' => 701, 'Other' => 1160 },
460
- 'Jarrow' => { 'Conservative' => 8002, 'Labour' => 20_910, 'Liberal Democrat' => 7163, 'Other' => 2709 },
461
- 'Keighley' => { 'Conservative' => 20_003, 'Labour' => 17_063, 'Liberal Democrat' => 7059, 'UK Independence Party' => 1470, 'Other' => 2097 },
462
- 'Kenilworth and Southam' => { 'Conservative' => 25_945, 'Labour' => 6949, 'Liberal Democrat' => 13_393, 'UK Independence Party' => 1214, 'Other' => 930 },
463
- 'Kensington' => { 'Conservative' => 17_595, 'Labour' => 8979, 'Liberal Democrat' => 6872, 'UK Independence Party' => 754, 'Other' => 950 },
464
- 'Kettering' => { 'Conservative' => 23_247, 'Labour' => 14_153, 'Liberal Democrat' => 7498, 'Other' => 2430 },
465
- 'Kingston and Surbiton' => { 'Conservative' => 20_868, 'Labour' => 5337, 'Liberal Democrat' => 28_428, 'UK Independence Party' => 1450, 'Other' => 1028 },
466
- 'Kingswood' => { 'Conservative' => 19_362, 'Labour' => 16_917, 'Liberal Democrat' => 8072, 'UK Independence Party' => 1528, 'Other' => 2027 },
467
- 'Knowsley' => { 'Conservative' => 4004, 'Labour' => 31_650, 'Liberal Democrat' => 5964, 'UK Independence Party' => 1145, 'Other' => 1895 },
468
- 'Lancashire West' => { 'Conservative' => 17_540, 'Labour' => 21_883, 'Liberal Democrat' => 6573, 'UK Independence Party' => 1775, 'Other' => 702 },
469
- 'Lancaster and Fleetwood' => { 'Conservative' => 15_404, 'Labour' => 15_071, 'Liberal Democrat' => 8167, 'UK Independence Party' => 1020, 'Other' => 3039 },
470
- 'Leeds Central' => { 'Conservative' => 7541, 'Labour' => 18_434, 'Liberal Democrat' => 7789, 'Other' => 3630 },
471
- 'Leeds East' => { 'Conservative' => 8763, 'Labour' => 19_056, 'Liberal Democrat' => 6618, 'Other' => 3376 },
472
- 'Leeds North East' => { 'Conservative' => 15_742, 'Labour' => 20_287, 'Liberal Democrat' => 9310, 'UK Independence Party' => 842, 'Other' => 1354 },
473
- 'Leeds North West' => { 'Conservative' => 11_550, 'Labour' => 9132, 'Liberal Democrat' => 20_653, 'UK Independence Party' => 600, 'Other' => 1548 },
474
- 'Leeds West' => { 'Conservative' => 7641, 'Labour' => 16_389, 'Liberal Democrat' => 9373, 'UK Independence Party' => 1140, 'Other' => 4209 },
475
- 'Leicester East' => { 'Conservative' => 11_722, 'Labour' => 25_804, 'Liberal Democrat' => 6817, 'UK Independence Party' => 725, 'Other' => 2927 },
476
- 'Leicester South' => { 'Conservative' => 10_066, 'Labour' => 21_479, 'Liberal Democrat' => 12_671, 'UK Independence Party' => 720, 'Other' => 2188 },
477
- 'Leicester West' => { 'Conservative' => 9728, 'Labour' => 13_745, 'Liberal Democrat' => 8107, 'UK Independence Party' => 883, 'Other' => 3356 },
478
- 'Leicestershire North West' => { 'Conservative' => 23_147, 'Labour' => 15_636, 'Liberal Democrat' => 8639, 'UK Independence Party' => 1134, 'Other' => 3396 },
479
- 'Leicestershire South' => { 'Conservative' => 27_000, 'Labour' => 11_392, 'Liberal Democrat' => 11_476, 'UK Independence Party' => 1988, 'Other' => 2721 },
480
- 'Leigh' => { 'Conservative' => 9284, 'Labour' => 21_295, 'Liberal Democrat' => 8049, 'UK Independence Party' => 1535, 'Other' => 4169 },
481
- 'Lewes' => { 'Conservative' => 18_401, 'Labour' => 2508, 'Liberal Democrat' => 26_048, 'UK Independence Party' => 1728, 'Other' => 1403 },
482
- 'Lewisham Deptford' => { 'Conservative' => 5551, 'Labour' => 22_132, 'Liberal Democrat' => 9633, 'Other' => 3904 },
483
- 'Lewisham East' => { 'Conservative' => 9850, 'Labour' => 17_966, 'Liberal Democrat' => 11_750, 'UK Independence Party' => 771, 'Other' => 1382 },
484
- 'Lewisham West and Penge' => { 'Conservative' => 11_489, 'Labour' => 18_501, 'Liberal Democrat' => 12_673, 'UK Independence Party' => 1117, 'Other' => 1248 },
485
- 'Leyton and Wanstead' => { 'Conservative' => 8928, 'Labour' => 17_511, 'Liberal Democrat' => 11_095, 'UK Independence Party' => 1080, 'Other' => 1545 },
486
- 'Lichfield' => { 'Conservative' => 28_048, 'Labour' => 10_230, 'Liberal Democrat' => 10_365, 'UK Independence Party' => 2920 },
487
- 'Lincoln' => { 'Conservative' => 17_163, 'Labour' => 16_105, 'Liberal Democrat' => 9256, 'UK Independence Party' => 1004, 'Other' => 2193 },
488
- 'Liverpool Riverside' => { 'Conservative' => 4243, 'Labour' => 22_998, 'Liberal Democrat' => 8825, 'UK Independence Party' => 674, 'Other' => 2061 },
489
- 'Liverpool Walton' => { 'Conservative' => 2241, 'Labour' => 24_709, 'Liberal Democrat' => 4891, 'UK Independence Party' => 898, 'Other' => 1596 },
490
- 'Liverpool Wavertree' => { 'Conservative' => 2830, 'Labour' => 20_132, 'Liberal Democrat' => 12_965, 'UK Independence Party' => 890, 'Other' => 1097 },
491
- 'Liverpool West Derby' => { 'Conservative' => 3311, 'Labour' => 22_953, 'Liberal Democrat' => 4486, 'UK Independence Party' => 1093, 'Other' => 3941 },
492
- 'Loughborough' => { 'Conservative' => 21_971, 'Labour' => 18_227, 'Liberal Democrat' => 9675, 'UK Independence Party' => 925, 'Other' => 2040 },
493
- 'Louth and Horncastle' => { 'Conservative' => 25_065, 'Labour' => 8760, 'Liberal Democrat' => 11_194, 'UK Independence Party' => 2183, 'Other' => 3292 },
494
- 'Ludlow' => { 'Conservative' => 25_720, 'Labour' => 3272, 'Liberal Democrat' => 15_971, 'UK Independence Party' => 2127, 'Other' => 1642 },
495
- 'Luton North' => { 'Conservative' => 13_672, 'Labour' => 21_192, 'Liberal Democrat' => 4784, 'UK Independence Party' => 1564, 'Other' => 1806 },
496
- 'Luton South' => { 'Conservative' => 12_396, 'Labour' => 14_725, 'Liberal Democrat' => 9567, 'UK Independence Party' => 975, 'Other' => 4553 },
497
- 'Macclesfield' => { 'Conservative' => 23_503, 'Labour' => 10_164, 'Liberal Democrat' => 11_544, 'UK Independence Party' => 1418, 'Other' => 3430 },
498
- 'Maidenhead' => { 'Conservative' => 31_937, 'Labour' => 3795, 'Liberal Democrat' => 15_168, 'UK Independence Party' => 1243, 'Other' => 1577 },
499
- 'Maidstone and The Weald' => { 'Conservative' => 23_491, 'Labour' => 4769, 'Liberal Democrat' => 17_602, 'UK Independence Party' => 1637, 'Other' => 1429 },
500
- 'Makerfield' => { 'Conservative' => 8210, 'Labour' => 20_700, 'Liberal Democrat' => 7082, 'Other' => 7779 },
501
- 'Maldon' => { 'Conservative' => 28_661, 'Labour' => 6070, 'Liberal Democrat' => 9254, 'UK Independence Party' => 2446, 'Other' => 1464 },
502
- 'Manchester Central' => { 'Conservative' => 4704, 'Labour' => 21_059, 'Liberal Democrat' => 10_620, 'UK Independence Party' => 607, 'Other' => 2937 },
503
- 'Manchester Gorton' => { 'Conservative' => 4224, 'Labour' => 19_211, 'Liberal Democrat' => 12_508, 'Other' => 2382 },
504
- 'Manchester Withington' => { 'Conservative' => 5005, 'Labour' => 18_216, 'Liberal Democrat' => 20_110, 'UK Independence Party' => 698, 'Other' => 1002 },
505
- 'Mansfield' => { 'Conservative' => 12_741, 'Labour' => 18_753, 'Liberal Democrat' => 7469, 'UK Independence Party' => 2985, 'Other' => 6447 },
506
- 'Meon Valley' => { 'Conservative' => 28_818, 'Labour' => 3266, 'Liberal Democrat' => 16_693, 'UK Independence Party' => 1490, 'Other' => 971 },
507
- 'Meriden' => { 'Conservative' => 26_956, 'Labour' => 10_703, 'Liberal Democrat' => 9278, 'UK Independence Party' => 1378, 'Other' => 3847 },
508
- 'Middlesbrough' => { 'Conservative' => 6283, 'Labour' => 15_351, 'Liberal Democrat' => 6662, 'UK Independence Party' => 1236, 'Other' => 3923 },
509
- 'Middlesbrough South and Cleveland East' => { 'Conservative' => 16_461, 'Labour' => 18_138, 'Liberal Democrat' => 7340, 'UK Independence Party' => 1881, 'Other' => 2394 },
510
- 'Milton Keynes North' => { 'Conservative' => 23_419, 'Labour' => 14_458, 'Liberal Democrat' => 11_894, 'UK Independence Party' => 1772, 'Other' => 2345 },
511
- 'Milton Keynes South' => { 'Conservative' => 23_034, 'Labour' => 17_833, 'Liberal Democrat' => 9787, 'UK Independence Party' => 2074, 'Other' => 2605 },
512
- 'Mitcham and Morden' => { 'Conservative' => 11_056, 'Labour' => 24_722, 'Liberal Democrat' => 5202, 'UK Independence Party' => 857, 'Other' => 1960 },
513
- 'Mole Valley' => { 'Conservative' => 31_263, 'Labour' => 3804, 'Liberal Democrat' => 15_610, 'UK Independence Party' => 2752, 'Other' => 895 },
514
- 'Morecambe and Lunesdale' => { 'Conservative' => 18_035, 'Labour' => 17_169, 'Liberal Democrat' => 5791, 'UK Independence Party' => 1843, 'Other' => 598 },
515
- 'Morley and Outwood' => { 'Conservative' => 17_264, 'Labour' => 18_365, 'Liberal Democrat' => 8186, 'UK Independence Party' => 1506, 'Other' => 3535 },
516
- 'New Forest East' => { 'Conservative' => 26_443, 'Labour' => 4915, 'Liberal Democrat' => 15_136, 'UK Independence Party' => 2518, 'Other' => 1024 },
517
- 'New Forest West' => { 'Conservative' => 27_980, 'Labour' => 4666, 'Liberal Democrat' => 11_084, 'UK Independence Party' => 2783, 'Other' => 1059 },
518
- 'Newark' => { 'Conservative' => 27_590, 'Labour' => 11_438, 'Liberal Democrat' => 10_246, 'UK Independence Party' => 1954 },
519
- 'Newbury' => { 'Conservative' => 33_057, 'Labour' => 2505, 'Liberal Democrat' => 20_809, 'UK Independence Party' => 1475, 'Other' => 743 },
520
- 'Newcastle upon Tyne Central' => { 'Conservative' => 6611, 'Labour' => 15_694, 'Liberal Democrat' => 8228, 'UK Independence Party' => 754, 'Other' => 2870 },
521
- 'Newcastle upon Tyne East' => { 'Conservative' => 6068, 'Labour' => 17_043, 'Liberal Democrat' => 12_590, 'Other' => 2139 },
522
- 'Newcastle upon Tyne North' => { 'Conservative' => 7966, 'Labour' => 17_950, 'Liberal Democrat' => 14_536, 'UK Independence Party' => 1285, 'Other' => 2209 },
523
- 'Newcastle-under-Lyme' => { 'Conservative' => 14_841, 'Labour' => 16_393, 'Liberal Democrat' => 8466, 'UK Independence Party' => 3491 },
524
- 'Newton Abbot' => { 'Conservative' => 20_774, 'Labour' => 3387, 'Liberal Democrat' => 20_251, 'UK Independence Party' => 3088, 'Other' => 783 },
525
- 'Norfolk Mid' => { 'Conservative' => 25_123, 'Labour' => 8857, 'Liberal Democrat' => 11_267, 'UK Independence Party' => 2800, 'Other' => 2718 },
526
- 'Norfolk North' => { 'Conservative' => 15_928, 'Labour' => 2896, 'Liberal Democrat' => 27_554, 'UK Independence Party' => 2680, 'Other' => 603 },
527
- 'Norfolk North West' => { 'Conservative' => 25_916, 'Labour' => 6353, 'Liberal Democrat' => 11_106, 'UK Independence Party' => 1841, 'Other' => 2584 },
528
- 'Norfolk South' => { 'Conservative' => 27_133, 'Labour' => 7252, 'Liberal Democrat' => 16_193, 'UK Independence Party' => 2329, 'Other' => 2086 },
529
- 'Norfolk South West' => { 'Conservative' => 23_753, 'Labour' => 9119, 'Liberal Democrat' => 10_613, 'UK Independence Party' => 3061, 'Other' => 2604 },
530
- 'Normanton, Pontefract and Castleford' => { 'Conservative' => 11_314, 'Labour' => 22_293, 'Liberal Democrat' => 7585, 'Other' => 5047 },
531
- 'Northampton North' => { 'Conservative' => 13_735, 'Labour' => 11_799, 'Liberal Democrat' => 11_250, 'UK Independence Party' => 1238, 'Other' => 2249 },
532
- 'Northampton South' => { 'Conservative' => 15_917, 'Labour' => 9913, 'Liberal Democrat' => 7579, 'UK Independence Party' => 1897, 'Other' => 3672 },
533
- 'Northamptonshire South' => { 'Conservative' => 33_081, 'Labour' => 10_380, 'Liberal Democrat' => 12_603, 'UK Independence Party' => 2406, 'Other' => 1420 },
534
- 'Norwich North' => { 'Conservative' => 17_280, 'Labour' => 13_379, 'Liberal Democrat' => 7783, 'UK Independence Party' => 1878, 'Other' => 2253 },
535
- 'Norwich South' => { 'Conservative' => 10_902, 'Labour' => 13_650, 'Liberal Democrat' => 13_960, 'UK Independence Party' => 1145, 'Other' => 7894 },
536
- 'Nottingham East' => { 'Conservative' => 7846, 'Labour' => 15_022, 'Liberal Democrat' => 8053, 'UK Independence Party' => 1138, 'Other' => 1053 },
537
- 'Nottingham North' => { 'Conservative' => 8508, 'Labour' => 16_646, 'Liberal Democrat' => 5849, 'UK Independence Party' => 1338, 'Other' => 1944 },
538
- 'Nottingham South' => { 'Conservative' => 13_437, 'Labour' => 15_209, 'Liberal Democrat' => 9406, 'UK Independence Party' => 967, 'Other' => 1770 },
539
- 'Nuneaton' => { 'Conservative' => 18_536, 'Labour' => 16_467, 'Liberal Democrat' => 6846, 'Other' => 2797 },
540
- 'Old Bexley and Sidcup' => { 'Conservative' => 24_625, 'Labour' => 8768, 'Liberal Democrat' => 6996, 'UK Independence Party' => 1532, 'Other' => 3571 },
541
- 'Oldham East and Saddleworth' => { 'Conservative' => 11_773, 'Labour' => 14_186, 'Liberal Democrat' => 14_083, 'UK Independence Party' => 1720, 'Other' => 2758 },
542
- 'Oldham West and Royton' => { 'Conservative' => 10_151, 'Labour' => 19_503, 'Liberal Democrat' => 8193, 'UK Independence Party' => 1387, 'Other' => 3676 },
543
- 'Orpington' => { 'Conservative' => 29_200, 'Labour' => 4400, 'Liberal Democrat' => 12_000, 'UK Independence Party' => 1360, 'Other' => 1951 },
544
- 'Oxford East' => { 'Conservative' => 9727, 'Labour' => 21_938, 'Liberal Democrat' => 17_357, 'UK Independence Party' => 1202, 'Other' => 1427 },
545
- 'Oxford West and Abingdon' => { 'Conservative' => 23_906, 'Labour' => 5999, 'Liberal Democrat' => 23_730, 'UK Independence Party' => 1518, 'Other' => 1327 },
546
- 'Pendle' => { 'Conservative' => 17_512, 'Labour' => 13_927, 'Liberal Democrat' => 9095, 'UK Independence Party' => 1476, 'Other' => 3035 },
547
- 'Penistone and Stocksbridge' => { 'Conservative' => 14_516, 'Labour' => 17_565, 'Liberal Democrat' => 9800, 'UK Independence Party' => 1936, 'Other' => 2699 },
548
- 'Penrith and The Border' => { 'Conservative' => 24_071, 'Labour' => 5834, 'Liberal Democrat' => 12_830, 'UK Independence Party' => 1259, 'Other' => 1093 },
549
- 'Peterborough' => { 'Conservative' => 18_133, 'Labour' => 13_272, 'Liberal Democrat' => 8816, 'UK Independence Party' => 3007, 'Other' => 1699 },
550
- 'Plymouth Moor View' => { 'Conservative' => 13_845, 'Labour' => 15_433, 'Liberal Democrat' => 7016, 'UK Independence Party' => 3188, 'Other' => 2044 },
551
- 'Plymouth Sutton and Devonport' => { 'Conservative' => 15_050, 'Labour' => 13_901, 'Liberal Democrat' => 10_829, 'UK Independence Party' => 2854, 'Other' => 1260 },
552
- 'Poole' => { 'Conservative' => 22_532, 'Labour' => 6041, 'Liberal Democrat' => 14_991, 'UK Independence Party' => 2507, 'Other' => 1365 },
553
- 'Poplar and Limehouse' => { 'Conservative' => 12_649, 'Labour' => 18_679, 'Liberal Democrat' => 5209, 'UK Independence Party' => 565, 'Other' => 9598 },
554
- 'Portsmouth North' => { 'Conservative' => 19_533, 'Labour' => 12_244, 'Liberal Democrat' => 8874, 'UK Independence Party' => 1812, 'Other' => 1655 },
555
- 'Portsmouth South' => { 'Conservative' => 13_721, 'Labour' => 5640, 'Liberal Democrat' => 18_921, 'UK Independence Party' => 876, 'Other' => 2106 },
556
- 'Preston' => { 'Conservative' => 7060, 'Labour' => 15_668, 'Liberal Democrat' => 7935, 'UK Independence Party' => 1462, 'Other' => 380 },
557
- 'Pudsey' => { 'Conservative' => 18_874, 'Labour' => 17_215, 'Liberal Democrat' => 10_224, 'UK Independence Party' => 1221, 'Other' => 1549 },
558
- 'Putney' => { 'Conservative' => 21_223, 'Labour' => 11_170, 'Liberal Democrat' => 6907, 'UK Independence Party' => 435, 'Other' => 1050 },
559
- 'Rayleigh and Wickford' => { 'Conservative' => 30_257, 'Labour' => 7577, 'Liberal Democrat' => 7919, 'UK Independence Party' => 2211, 'Other' => 4379 },
560
- 'Reading East' => { 'Conservative' => 21_269, 'Labour' => 12_729, 'Liberal Democrat' => 13_664, 'UK Independence Party' => 1086, 'Other' => 1237 },
561
- 'Reading West' => { 'Conservative' => 20_523, 'Labour' => 14_519, 'Liberal Democrat' => 9546, 'UK Independence Party' => 1508, 'Other' => 1434 },
562
- 'Redcar' => { 'Conservative' => 5790, 'Labour' => 13_741, 'Liberal Democrat' => 18_955, 'UK Independence Party' => 1875, 'Other' => 1602 },
563
- 'Redditch' => { 'Conservative' => 19_138, 'Labour' => 13_317, 'Liberal Democrat' => 7750, 'UK Independence Party' => 1497, 'Other' => 2316 },
564
- 'Reigate' => { 'Conservative' => 26_688, 'Labour' => 5672, 'Liberal Democrat' => 13_097, 'UK Independence Party' => 2089, 'Other' => 2432 },
565
- 'Ribble South' => { 'Conservative' => 23_396, 'Labour' => 17_842, 'Liberal Democrat' => 7271, 'UK Independence Party' => 1895, 'Other' => 1054 },
566
- 'Ribble Valley' => { 'Conservative' => 26_298, 'Labour' => 11_529, 'Liberal Democrat' => 10_732, 'UK Independence Party' => 3496, 'Other' => 232 },
567
- 'Richmond' => { 'Conservative' => 33_541, 'Labour' => 8150, 'Liberal Democrat' => 10_205, 'Other' => 1516 },
568
- 'Richmond Park' => { 'Conservative' => 29_461, 'Labour' => 2979, 'Liberal Democrat' => 25_370, 'UK Independence Party' => 669, 'Other' => 789 },
569
- 'Rochdale' => { 'Conservative' => 8305, 'Labour' => 16_699, 'Liberal Democrat' => 15_810, 'UK Independence Party' => 1999, 'Other' => 3094 },
570
- 'Rochester and Strood' => { 'Conservative' => 23_604, 'Labour' => 13_651, 'Liberal Democrat' => 7800, 'Other' => 2916 },
571
- 'Rochford and Southend East' => { 'Conservative' => 19_509, 'Labour' => 8459, 'Liberal Democrat' => 8084, 'UK Independence Party' => 2405, 'Other' => 3174 },
572
- 'Romford' => { 'Conservative' => 26_031, 'Labour' => 9077, 'Liberal Democrat' => 5572, 'UK Independence Party' => 2050, 'Other' => 3751 },
573
- 'Romsey and Southampton North' => { 'Conservative' => 24_345, 'Labour' => 3116, 'Liberal Democrat' => 20_189, 'UK Independence Party' => 1289 },
574
- 'Rossendale and Darwen' => { 'Conservative' => 19_691, 'Labour' => 15_198, 'Liberal Democrat' => 8541, 'UK Independence Party' => 1617, 'Other' => 2081 },
575
- 'Rother Valley' => { 'Conservative' => 13_281, 'Labour' => 19_147, 'Liberal Democrat' => 8111, 'UK Independence Party' => 2613, 'Other' => 3606 },
576
- 'Rotherham' => { 'Conservative' => 6279, 'Labour' => 16_741, 'Liberal Democrat' => 5994, 'UK Independence Party' => 2220, 'Other' => 6272 },
577
- 'Rugby' => { 'Conservative' => 20_901, 'Labour' => 14_901, 'Liberal Democrat' => 9434, 'UK Independence Party' => 406, 'Other' => 1826 },
578
- 'Ruislip, Northwood and Pinner' => { 'Conservative' => 28_866, 'Labour' => 9806, 'Liberal Democrat' => 8345, 'UK Independence Party' => 1351, 'Other' => 1837 },
579
- 'Runnymede and Weybridge' => { 'Conservative' => 26_915, 'Labour' => 6446, 'Liberal Democrat' => 10_406, 'UK Independence Party' => 3146, 'Other' => 1237 },
580
- 'Rushcliffe' => { 'Conservative' => 27_470, 'Labour' => 11_128, 'Liberal Democrat' => 11_659, 'UK Independence Party' => 2179, 'Other' => 1251 },
581
- 'Rutland and Melton' => { 'Conservative' => 28_228, 'Labour' => 7893, 'Liberal Democrat' => 14_228, 'UK Independence Party' => 2526, 'Other' => 2345 },
582
- 'Saffron Walden' => { 'Conservative' => 30_155, 'Labour' => 5288, 'Liberal Democrat' => 14_913, 'UK Independence Party' => 2228, 'Other' => 1785 },
583
- 'Salford and Eccles' => { 'Conservative' => 8497, 'Labour' => 16_655, 'Liberal Democrat' => 10_930, 'UK Independence Party' => 1084, 'Other' => 4367 },
584
- 'Salisbury' => { 'Conservative' => 23_859, 'Labour' => 3690, 'Liberal Democrat' => 17_893, 'UK Independence Party' => 1392, 'Other' => 1647 },
585
- 'Scarborough and Whitby' => { 'Conservative' => 21_108, 'Labour' => 12_978, 'Liberal Democrat' => 11_093, 'UK Independence Party' => 1484, 'Other' => 2619 },
586
- 'Scunthorpe' => { 'Conservative' => 12_091, 'Labour' => 14_640, 'Liberal Democrat' => 6774, 'UK Independence Party' => 1686, 'Other' => 1843 },
587
- 'Sedgefield' => { 'Conservative' => 9445, 'Labour' => 18_141, 'Liberal Democrat' => 8033, 'UK Independence Party' => 1479, 'Other' => 3124 },
588
- 'Sefton Central' => { 'Conservative' => 16_445, 'Labour' => 20_307, 'Liberal Democrat' => 9656, 'UK Independence Party' => 2055 },
589
- 'Selby and Ainsty' => { 'Conservative' => 25_562, 'Labour' => 13_297, 'Liberal Democrat' => 9180, 'UK Independence Party' => 1635, 'Other' => 2054 },
590
- 'Sevenoaks' => { 'Conservative' => 28_076, 'Labour' => 6541, 'Liberal Democrat' => 10_561, 'UK Independence Party' => 1782, 'Other' => 2448 },
591
- 'Sheffield Brightside and Hillsborough' => { 'Conservative' => 4468, 'Labour' => 21_400, 'Liberal Democrat' => 7768, 'UK Independence Party' => 1596, 'Other' => 3682 },
592
- 'Sheffield Central' => { 'Conservative' => 4206, 'Labour' => 17_138, 'Liberal Democrat' => 16_973, 'UK Independence Party' => 652, 'Other' => 2499 },
593
- 'Sheffield Hallam' => { 'Conservative' => 12_040, 'Labour' => 8228, 'Liberal Democrat' => 27_324, 'UK Independence Party' => 1195, 'Other' => 2348 },
594
- 'Sheffield Heeley' => { 'Conservative' => 7081, 'Labour' => 17_409, 'Liberal Democrat' => 11_602, 'UK Independence Party' => 1530, 'Other' => 3249 },
595
- 'Sheffield South East' => { 'Conservative' => 7202, 'Labour' => 20_169, 'Liberal Democrat' => 9664, 'UK Independence Party' => 1889, 'Other' => 2484 },
596
- 'Sherwood' => { 'Conservative' => 19_211, 'Labour' => 18_997, 'Liberal Democrat' => 7283, 'UK Independence Party' => 1490, 'Other' => 1973 },
597
- 'Shipley' => { 'Conservative' => 24_002, 'Labour' => 14_058, 'Liberal Democrat' => 9890, 'Other' => 1477 },
598
- 'Shrewsbury and Atcham' => { 'Conservative' => 23_313, 'Labour' => 10_915, 'Liberal Democrat' => 15_369, 'UK Independence Party' => 1627, 'Other' => 1821 },
599
- 'Shropshire North' => { 'Conservative' => 26_692, 'Labour' => 9406, 'Liberal Democrat' => 10_864, 'UK Independence Party' => 2432, 'Other' => 2475 },
600
- 'Sittingbourne and Sheppey' => { 'Conservative' => 24_313, 'Labour' => 11_930, 'Liberal Democrat' => 7943, 'UK Independence Party' => 2610, 'Other' => 1782 },
601
- 'Skipton and Ripon' => { 'Conservative' => 27_685, 'Labour' => 5498, 'Liberal Democrat' => 17_735, 'UK Independence Party' => 1909, 'Other' => 1897 },
602
- 'Sleaford and North Hykeham' => { 'Conservative' => 30_719, 'Labour' => 10_051, 'Liberal Democrat' => 10_814, 'UK Independence Party' => 2163, 'Other' => 5783 },
603
- 'Slough' => { 'Conservative' => 16_361, 'Labour' => 21_884, 'Liberal Democrat' => 6943, 'UK Independence Party' => 1517, 'Other' => 1037 },
604
- 'Solihull' => { 'Conservative' => 23_460, 'Labour' => 4891, 'Liberal Democrat' => 23_635, 'UK Independence Party' => 1200, 'Other' => 1943 },
605
- 'Somerset North' => { 'Conservative' => 28_549, 'Labour' => 6448, 'Liberal Democrat' => 20_687, 'UK Independence Party' => 2257 },
606
- 'Somerset North East' => { 'Conservative' => 21_130, 'Labour' => 16_216, 'Liberal Democrat' => 11_433, 'UK Independence Party' => 1754, 'Other' => 670 },
607
- 'Somerton and Frome' => { 'Conservative' => 26_976, 'Labour' => 2675, 'Liberal Democrat' => 28_793, 'UK Independence Party' => 1932, 'Other' => 236 },
608
- 'South Holland and The Deepings' => { 'Conservative' => 29_639, 'Labour' => 7024, 'Liberal Democrat' => 7759, 'UK Independence Party' => 3246, 'Other' => 2520 },
609
- 'South Shields' => { 'Conservative' => 7886, 'Labour' => 18_995, 'Liberal Democrat' => 5189, 'Other' => 4448 },
610
- 'Southampton Itchen' => { 'Conservative' => 16_134, 'Labour' => 16_326, 'Liberal Democrat' => 9256, 'UK Independence Party' => 1928, 'Other' => 768 },
611
- 'Southampton Test' => { 'Conservative' => 14_588, 'Labour' => 17_001, 'Liberal Democrat' => 9865, 'UK Independence Party' => 1726, 'Other' => 1007 },
612
- 'Southend West' => { 'Conservative' => 20_086, 'Labour' => 5850, 'Liberal Democrat' => 12_816, 'UK Independence Party' => 1714, 'Other' => 3140 },
613
- 'Southport' => { 'Conservative' => 15_683, 'Labour' => 4116, 'Liberal Democrat' => 21_707, 'UK Independence Party' => 2251 },
614
- 'Spelthorne' => { 'Conservative' => 22_261, 'Labour' => 7789, 'Liberal Democrat' => 12_242, 'UK Independence Party' => 4009, 'Other' => 1003 },
615
- 'St Albans' => { 'Conservative' => 21_533, 'Labour' => 9288, 'Liberal Democrat' => 19_228, 'UK Independence Party' => 2028, 'Other' => 758 },
616
- 'St Austell and Newquay' => { 'Conservative' => 18_877, 'Labour' => 3386, 'Liberal Democrat' => 20_189, 'UK Independence Party' => 1757, 'Other' => 3029 },
617
- 'St Helens North' => { 'Conservative' => 9940, 'Labour' => 23_041, 'Liberal Democrat' => 8992, 'UK Independence Party' => 2100, 'Other' => 483 },
618
- 'St Helens South and Whiston' => { 'Conservative' => 8209, 'Labour' => 24_364, 'Liberal Democrat' => 10_242, 'UK Independence Party' => 1226, 'Other' => 2040 },
619
- 'St Ives' => { 'Conservative' => 17_900, 'Labour' => 3751, 'Liberal Democrat' => 19_619, 'UK Independence Party' => 2560, 'Other' => 2091 },
620
- 'Stafford' => { 'Conservative' => 22_047, 'Labour' => 16_587, 'Liberal Democrat' => 8211, 'UK Independence Party' => 1727, 'Other' => 1667 },
621
- 'Staffordshire Moorlands' => { 'Conservative' => 19_793, 'Labour' => 13_104, 'Liberal Democrat' => 7338, 'UK Independence Party' => 3580 },
622
- 'Staffordshire South' => { 'Conservative' => 26_834, 'Labour' => 10_244, 'Liberal Democrat' => 8427, 'UK Independence Party' => 2753, 'Other' => 2182 },
623
- 'Stalybridge and Hyde' => { 'Conservative' => 13_445, 'Labour' => 16_189, 'Liberal Democrat' => 6965, 'UK Independence Party' => 1342, 'Other' => 2938 },
624
- 'Stevenage' => { 'Conservative' => 18_491, 'Labour' => 14_913, 'Liberal Democrat' => 7432, 'UK Independence Party' => 2004, 'Other' => 1811 },
625
- 'Stockport' => { 'Conservative' => 9913, 'Labour' => 16_697, 'Liberal Democrat' => 9778, 'UK Independence Party' => 862, 'Other' => 1878 },
626
- 'Stockton North' => { 'Conservative' => 10_247, 'Labour' => 16_923, 'Liberal Democrat' => 6342, 'UK Independence Party' => 1556, 'Other' => 4430 },
627
- 'Stockton South' => { 'Conservative' => 19_577, 'Labour' => 19_245, 'Liberal Democrat' => 7600, 'UK Independence Party' => 1471, 'Other' => 2391 },
628
- 'Stoke-on-Trent Central' => { 'Conservative' => 6833, 'Labour' => 12_605, 'Liberal Democrat' => 7039, 'UK Independence Party' => 1402, 'Other' => 4591 },
629
- 'Stoke-on-Trent North' => { 'Conservative' => 9580, 'Labour' => 17_815, 'Liberal Democrat' => 7120, 'UK Independence Party' => 2485, 'Other' => 3196 },
630
- 'Stoke-on-Trent South' => { 'Conservative' => 11_316, 'Labour' => 15_446, 'Liberal Democrat' => 6323, 'UK Independence Party' => 1363, 'Other' => 5404 },
631
- 'Stone' => { 'Conservative' => 23_890, 'Labour' => 9770, 'Liberal Democrat' => 10_598, 'UK Independence Party' => 2481, 'Other' => 490 },
632
- 'Stourbridge' => { 'Conservative' => 20_153, 'Labour' => 14_989, 'Liberal Democrat' => 7733, 'UK Independence Party' => 2103, 'Other' => 2256 },
633
- 'Stratford-on-Avon' => { 'Conservative' => 26_052, 'Labour' => 4809, 'Liberal Democrat' => 14_706, 'UK Independence Party' => 1846, 'Other' => 3129 },
634
- 'Streatham' => { 'Conservative' => 8578, 'Labour' => 20_037, 'Liberal Democrat' => 16_778, 'Other' => 1444 },
635
- 'Stretford and Urmston' => { 'Conservative' => 12_886, 'Labour' => 21_821, 'Liberal Democrat' => 7601, 'UK Independence Party' => 1508, 'Other' => 1094 },
636
- 'Stroud' => { 'Conservative' => 23_679, 'Labour' => 22_380, 'Liberal Democrat' => 8955, 'UK Independence Party' => 1301, 'Other' => 1658 },
637
- 'Suffolk Central and Ipswich North' => { 'Conservative' => 27_125, 'Labour' => 8636, 'Liberal Democrat' => 13_339, 'UK Independence Party' => 2361, 'Other' => 1959 },
638
- 'Suffolk Coastal' => { 'Conservative' => 25_475, 'Labour' => 8812, 'Liberal Democrat' => 16_347, 'UK Independence Party' => 3156, 'Other' => 1103 },
639
- 'Suffolk South' => { 'Conservative' => 24_550, 'Labour' => 7368, 'Liberal Democrat' => 15_861, 'UK Independence Party' => 3637 },
640
- 'Suffolk West' => { 'Conservative' => 24_312, 'Labour' => 7089, 'Liberal Democrat' => 11_262, 'UK Independence Party' => 3085, 'Other' => 2341 },
641
- 'Sunderland Central' => { 'Conservative' => 12_770, 'Labour' => 19_495, 'Liberal Democrat' => 7191, 'UK Independence Party' => 1094, 'Other' => 1913 },
642
- 'Surrey East' => { 'Conservative' => 31_007, 'Labour' => 4925, 'Liberal Democrat' => 14_133, 'UK Independence Party' => 3770, 'Other' => 805 },
643
- 'Surrey Heath' => { 'Conservative' => 31_326, 'Labour' => 5552, 'Liberal Democrat' => 14_037, 'UK Independence Party' => 3432 },
644
- 'Surrey South West' => { 'Conservative' => 33_605, 'Labour' => 3419, 'Liberal Democrat' => 17_287, 'UK Independence Party' => 1486, 'Other' => 1462 },
645
- 'Sussex Mid' => { 'Conservative' => 28_329, 'Labour' => 3689, 'Liberal Democrat' => 20_927, 'UK Independence Party' => 1423, 'Other' => 1487 },
646
- 'Sutton and Cheam' => { 'Conservative' => 20_548, 'Labour' => 3376, 'Liberal Democrat' => 22_156, 'UK Independence Party' => 950, 'Other' => 1478 },
647
- 'Sutton Coldfield' => { 'Conservative' => 27_303, 'Labour' => 10_298, 'Liberal Democrat' => 9117, 'UK Independence Party' => 1587, 'Other' => 2284 },
648
- 'Swindon North' => { 'Conservative' => 22_408, 'Labour' => 15_348, 'Liberal Democrat' => 8668, 'UK Independence Party' => 1842, 'Other' => 2029 },
649
- 'Swindon South' => { 'Conservative' => 19_687, 'Labour' => 16_143, 'Liberal Democrat' => 8305, 'UK Independence Party' => 2029, 'Other' => 955 },
650
- 'Tamworth' => { 'Conservative' => 21_238, 'Labour' => 15_148, 'Liberal Democrat' => 7516, 'UK Independence Party' => 2253, 'Other' => 235 },
651
- 'Tatton' => { 'Conservative' => 24_687, 'Labour' => 7803, 'Liberal Democrat' => 10_200, 'Other' => 2541 },
652
- 'Taunton Deane' => { 'Conservative' => 24_538, 'Labour' => 2967, 'Liberal Democrat' => 28_531, 'UK Independence Party' => 2114 },
653
- 'Telford' => { 'Conservative' => 14_996, 'Labour' => 15_974, 'Liberal Democrat' => 6399, 'UK Independence Party' => 2428, 'Other' => 1513 },
654
- 'Tewkesbury' => { 'Conservative' => 25_472, 'Labour' => 6253, 'Liberal Democrat' => 19_162, 'UK Independence Party' => 2230, 'Other' => 844 },
655
- 'Thanet North' => { 'Conservative' => 22_826, 'Labour' => 9298, 'Liberal Democrat' => 8400, 'UK Independence Party' => 2819 },
656
- 'Thanet South' => { 'Conservative' => 22_043, 'Labour' => 14_426, 'Liberal Democrat' => 6935, 'UK Independence Party' => 2529 },
657
- 'Thirsk and Malton' => { 'Conservative' => 20_167, 'Labour' => 5169, 'Liberal Democrat' => 8886, 'UK Independence Party' => 2502, 'Other' => 1418 },
658
- 'Thornbury and Yate' => { 'Conservative' => 17_916, 'Labour' => 3385, 'Liberal Democrat' => 25_032, 'UK Independence Party' => 1709, 'Other' => 184 },
659
- 'Thurrock' => { 'Conservative' => 16_869, 'Labour' => 16_777, 'Liberal Democrat' => 4901, 'UK Independence Party' => 3390, 'Other' => 3884 },
660
- 'Tiverton and Honiton' => { 'Conservative' => 27_614, 'Labour' => 4907, 'Liberal Democrat' => 18_294, 'UK Independence Party' => 3277, 'Other' => 802 },
661
- 'Tonbridge and Malling' => { 'Conservative' => 29_723, 'Labour' => 6476, 'Liberal Democrat' => 11_545, 'UK Independence Party' => 1911, 'Other' => 1659 },
662
- 'Tooting' => { 'Conservative' => 19_514, 'Labour' => 22_038, 'Liberal Democrat' => 7509, 'UK Independence Party' => 624, 'Other' => 970 },
663
- 'Torbay' => { 'Conservative' => 19_048, 'Labour' => 3231, 'Liberal Democrat' => 23_126, 'UK Independence Party' => 2628, 'Other' => 1177 },
664
- 'Totnes' => { 'Conservative' => 21_940, 'Labour' => 3538, 'Liberal Democrat' => 17_013, 'UK Independence Party' => 2890, 'Other' => 2462 },
665
- 'Tottenham' => { 'Conservative' => 6064, 'Labour' => 24_128, 'Liberal Democrat' => 7197, 'UK Independence Party' => 466, 'Other' => 2832 },
666
- 'Truro and Falmouth' => { 'Conservative' => 20_349, 'Labour' => 4697, 'Liberal Democrat' => 19_914, 'UK Independence Party' => 1911, 'Other' => 1897 },
667
- 'Tunbridge Wells' => { 'Conservative' => 28_302, 'Labour' => 5448, 'Liberal Democrat' => 12_726, 'UK Independence Party' => 2054, 'Other' => 1790 },
668
- 'Twickenham' => { 'Conservative' => 20_343, 'Labour' => 4583, 'Liberal Democrat' => 32_483, 'UK Independence Party' => 868, 'Other' => 1444 },
669
- 'Tynemouth' => { 'Conservative' => 18_121, 'Labour' => 23_860, 'Liberal Democrat' => 7845, 'UK Independence Party' => 900, 'Other' => 1942 },
670
- 'Tyneside North' => { 'Conservative' => 8514, 'Labour' => 23_505, 'Liberal Democrat' => 10_621, 'UK Independence Party' => 1306, 'Other' => 2459 },
671
- 'Uxbridge and South Ruislip' => { 'Conservative' => 21_758, 'Labour' => 10_542, 'Liberal Democrat' => 8995, 'UK Independence Party' => 1234, 'Other' => 2547 },
672
- 'Vauxhall' => { 'Conservative' => 9301, 'Labour' => 21_498, 'Liberal Democrat' => 10_847, 'Other' => 1545 },
673
- 'Wakefield' => { 'Conservative' => 15_841, 'Labour' => 17_454, 'Liberal Democrat' => 7256, 'Other' => 3893 },
674
- 'Wallasey' => { 'Conservative' => 13_071, 'Labour' => 21_578, 'Liberal Democrat' => 5693, 'UK Independence Party' => 1205, 'Other' => 107 },
675
- 'Walsall North' => { 'Conservative' => 12_395, 'Labour' => 13_385, 'Liberal Democrat' => 4754, 'UK Independence Party' => 1737, 'Other' => 3916 },
676
- 'Walsall South' => { 'Conservative' => 14_456, 'Labour' => 16_211, 'Liberal Democrat' => 5880, 'UK Independence Party' => 3449, 'Other' => 886 },
677
- 'Walthamstow' => { 'Conservative' => 5734, 'Labour' => 21_252, 'Liberal Democrat' => 11_774, 'UK Independence Party' => 823, 'Other' => 1411 },
678
- 'Wansbeck' => { 'Conservative' => 6714, 'Labour' => 17_548, 'Liberal Democrat' => 10_517, 'UK Independence Party' => 974, 'Other' => 2520 },
679
- 'Wantage' => { 'Conservative' => 29_284, 'Labour' => 7855, 'Liberal Democrat' => 15_737, 'UK Independence Party' => 2421, 'Other' => 1044 },
680
- 'Warley' => { 'Conservative' => 9484, 'Labour' => 20_240, 'Liberal Democrat' => 5929, 'UK Independence Party' => 2617 },
681
- 'Warrington North' => { 'Conservative' => 13_364, 'Labour' => 20_135, 'Liberal Democrat' => 9196, 'Other' => 1516 },
682
- 'Warrington South' => { 'Conservative' => 19_641, 'Labour' => 18_088, 'Liberal Democrat' => 15_094, 'UK Independence Party' => 1624, 'Other' => 427 },
683
- 'Warwick and Leamington' => { 'Conservative' => 20_876, 'Labour' => 17_363, 'Liberal Democrat' => 8977, 'UK Independence Party' => 926, 'Other' => 890 },
684
- 'Warwickshire North' => { 'Conservative' => 18_993, 'Labour' => 18_939, 'Liberal Democrat' => 5481, 'UK Independence Party' => 1335, 'Other' => 2517 },
685
- 'Washington and Sunderland West' => { 'Conservative' => 8157, 'Labour' => 19_615, 'Liberal Democrat' => 6382, 'UK Independence Party' => 1267, 'Other' => 1913 },
686
- 'Watford' => { 'Conservative' => 19_291, 'Labour' => 14_750, 'Liberal Democrat' => 17_866, 'UK Independence Party' => 1199, 'Other' => 2102 },
687
- 'Waveney' => { 'Conservative' => 20_571, 'Labour' => 19_802, 'Liberal Democrat' => 6811, 'UK Independence Party' => 2684, 'Other' => 1273 },
688
- 'Wealden' => { 'Conservative' => 31_090, 'Labour' => 5266, 'Liberal Democrat' => 13_911, 'UK Independence Party' => 3319, 'Other' => 1383 },
689
- 'Weaver Vale' => { 'Conservative' => 16_953, 'Labour' => 15_962, 'Liberal Democrat' => 8196, 'UK Independence Party' => 1018, 'Other' => 1861 },
690
- 'Wellingborough' => { 'Conservative' => 24_918, 'Labour' => 13_131, 'Liberal Democrat' => 8848, 'UK Independence Party' => 1636, 'Other' => 3128 },
691
- 'Wells' => { 'Conservative' => 23_760, 'Labour' => 4198, 'Liberal Democrat' => 24_560, 'UK Independence Party' => 1711, 'Other' => 1635 },
692
- 'Welwyn Hatfield' => { 'Conservative' => 27_894, 'Labour' => 10_471, 'Liberal Democrat' => 8010, 'UK Independence Party' => 1643, 'Other' => 954 },
693
- 'Wentworth and Dearne' => { 'Conservative' => 7396, 'Labour' => 21_316, 'Liberal Democrat' => 6787, 'UK Independence Party' => 3418, 'Other' => 3189 },
694
- 'West Bromwich East' => { 'Conservative' => 10_961, 'Labour' => 17_657, 'Liberal Democrat' => 4993, 'UK Independence Party' => 984, 'Other' => 3355 },
695
- 'West Bromwich West' => { 'Conservative' => 10_612, 'Labour' => 16_263, 'Liberal Democrat' => 4336, 'UK Independence Party' => 1566, 'Other' => 3394 },
696
- 'West Ham' => { 'Conservative' => 6888, 'Labour' => 29_422, 'Liberal Democrat' => 5392, 'UK Independence Party' => 766, 'Other' => 4483 },
697
- 'Westminster North' => { 'Conservative' => 15_251, 'Labour' => 17_377, 'Liberal Democrat' => 5513, 'UK Independence Party' => 315, 'Other' => 1142 },
698
- 'Westmorland and Lonsdale' => { 'Conservative' => 18_632, 'Labour' => 1158, 'Liberal Democrat' => 30_896, 'UK Independence Party' => 801 },
699
- 'Weston-Super-Mare' => { 'Conservative' => 23_356, 'Labour' => 5772, 'Liberal Democrat' => 20_665, 'UK Independence Party' => 1406, 'Other' => 1517 },
700
- 'Wigan' => { 'Conservative' => 10_917, 'Labour' => 21_404, 'Liberal Democrat' => 6797, 'UK Independence Party' => 2516, 'Other' => 2506 },
701
- 'Wiltshire North' => { 'Conservative' => 25_114, 'Labour' => 3239, 'Liberal Democrat' => 17_631, 'UK Independence Party' => 1908, 'Other' => 807 },
702
- 'Wiltshire South West' => { 'Conservative' => 25_321, 'Labour' => 5613, 'Liberal Democrat' => 14_954, 'UK Independence Party' => 2684, 'Other' => 446 },
703
- 'Wimbledon' => { 'Conservative' => 23_257, 'Labour' => 10_550, 'Liberal Democrat' => 11_849, 'UK Independence Party' => 914, 'Other' => 825 },
704
- 'Winchester' => { 'Conservative' => 27_155, 'Labour' => 3051, 'Liberal Democrat' => 24_107, 'UK Independence Party' => 1139, 'Other' => 503 },
705
- 'Windsor' => { 'Conservative' => 30_172, 'Labour' => 4910, 'Liberal Democrat' => 11_118, 'UK Independence Party' => 1612, 'Other' => 1776 },
706
- 'Wirral South' => { 'Conservative' => 15_745, 'Labour' => 16_276, 'Liberal Democrat' => 6611, 'UK Independence Party' => 1274 },
707
- 'Wirral West' => { 'Conservative' => 16_726, 'Labour' => 14_290, 'Liberal Democrat' => 6630, 'UK Independence Party' => 899, 'Other' => 827 },
708
- 'Witham' => { 'Conservative' => 24_448, 'Labour' => 8656, 'Liberal Democrat' => 9252, 'UK Independence Party' => 3060, 'Other' => 1419 },
709
- 'Witney' => { 'Conservative' => 33_973, 'Labour' => 7511, 'Liberal Democrat' => 11_233, 'UK Independence Party' => 2001, 'Other' => 3051 },
710
- 'Woking' => { 'Conservative' => 26_551, 'Labour' => 4246, 'Liberal Democrat' => 19_744, 'UK Independence Party' => 1997, 'Other' => 248 },
711
- 'Wokingham' => { 'Conservative' => 28_754, 'Labour' => 5516, 'Liberal Democrat' => 15_262, 'UK Independence Party' => 1664, 'Other' => 3332 },
712
- 'Wolverhampton North East' => { 'Conservative' => 11_964, 'Labour' => 14_448, 'Liberal Democrat' => 4711, 'UK Independence Party' => 1138, 'Other' => 2633 },
713
- 'Wolverhampton South East' => { 'Conservative' => 9912, 'Labour' => 16_505, 'Liberal Democrat' => 5277, 'UK Independence Party' => 2675, 'Other' => 338 },
714
- 'Wolverhampton South West' => { 'Conservative' => 16_344, 'Labour' => 15_653, 'Liberal Democrat' => 6430, 'UK Independence Party' => 1487, 'Other' => 246 },
715
- 'Worcester' => { 'Conservative' => 19_358, 'Labour' => 16_376, 'Liberal Democrat' => 9525, 'UK Independence Party' => 1360, 'Other' => 2355 },
716
- 'Worcestershire Mid' => { 'Conservative' => 27_770, 'Labour' => 7613, 'Liberal Democrat' => 11_906, 'UK Independence Party' => 3049, 'Other' => 593 },
717
- 'Worcestershire West' => { 'Conservative' => 27_213, 'Labour' => 3661, 'Liberal Democrat' => 20_459, 'UK Independence Party' => 2119, 'Other' => 641 },
718
- 'Workington' => { 'Conservative' => 13_290, 'Labour' => 17_865, 'Liberal Democrat' => 5318, 'UK Independence Party' => 876, 'Other' => 1910 },
719
- 'Worsley and Eccles South' => { 'Conservative' => 13_555, 'Labour' => 17_892, 'Liberal Democrat' => 6883, 'UK Independence Party' => 2037, 'Other' => 1334 },
720
- 'Worthing East and Shoreham' => { 'Conservative' => 23_458, 'Labour' => 8087, 'Liberal Democrat' => 12_353, 'UK Independence Party' => 2984, 'Other' => 1515 },
721
- 'Worthing West' => { 'Conservative' => 25_416, 'Labour' => 5800, 'Liberal Democrat' => 13_687, 'UK Independence Party' => 2924, 'Other' => 1296 },
722
- 'Wrekin, The' => { 'Conservative' => 21_922, 'Labour' => 12_472, 'Liberal Democrat' => 8019, 'UK Independence Party' => 2050, 'Other' => 1505 },
723
- 'Wycombe' => { 'Conservative' => 23_423, 'Labour' => 8326, 'Liberal Democrat' => 13_863, 'UK Independence Party' => 2123, 'Other' => 416 },
724
- 'Wyre and Preston North' => { 'Conservative' => 26_877, 'Labour' => 10_932, 'Liberal Democrat' => 11_033, 'UK Independence Party' => 2466 },
725
- 'Wyre Forest' => { 'Conservative' => 18_793, 'Labour' => 7298, 'Liberal Democrat' => 6040, 'UK Independence Party' => 1498, 'Other' => 17_270 },
726
- 'Wythenshawe and Sale East' => { 'Conservative' => 10_412, 'Labour' => 17_987, 'Liberal Democrat' => 9107, 'UK Independence Party' => 1405, 'Other' => 1840 },
727
- 'Yeovil' => { 'Conservative' => 18_807, 'Labour' => 2991, 'Liberal Democrat' => 31_843, 'UK Independence Party' => 2357, 'Other' => 1162 },
728
- 'York Central' => { 'Conservative' => 12_122, 'Labour' => 18_573, 'Liberal Democrat' => 11_694, 'UK Independence Party' => 1100, 'Other' => 2994 },
729
- 'York Outer' => { 'Conservative' => 22_912, 'Labour' => 9108, 'Liberal Democrat' => 19_224, 'UK Independence Party' => 1100, 'Other' => 956 },
730
- 'Yorkshire East' => { 'Conservative' => 24_328, 'Labour' => 10_401, 'Liberal Democrat' => 10_842, 'UK Independence Party' => 2142, 'Other' => 3541 },
731
- # Wales
732
- 'Aberavon' => { 'Conservative' => 4411, 'Labour' => 16_073, 'Liberal Democrat' => 5034, 'UK Independence Party' => 489, 'Plaid Cymru' => 2198, 'Other' => 2753 },
733
- 'Aberconwy' => { 'Conservative' => 10_734, 'Labour' => 7336, 'Liberal Democrat' => 5786, 'UK Independence Party' => 632, 'Plaid Cymru' => 5341, 'Other' => 137 },
734
- 'Alyn and Deeside' => { 'Conservative' => 12_885, 'Labour' => 15_804, 'Liberal Democrat' => 7308, 'UK Independence Party' => 1009, 'Plaid Cymru' => 1549, 'Other' => 1368 },
735
- 'Arfon' => { 'Conservative' => 4416, 'Labour' => 7928, 'Liberal Democrat' => 3666, 'UK Independence Party' => 685, 'Plaid Cymru' => 9383 },
736
- 'Blaenau Gwent' => { 'Conservative' => 2265, 'Labour' => 16_974, 'Liberal Democrat' => 3285, 'UK Independence Party' => 488, 'Plaid Cymru' => 1333, 'Other' => 8050 },
737
- 'Brecon and Radnorshire' => { 'Conservative' => 14_182, 'Labour' => 4096, 'Liberal Democrat' => 17_929, 'UK Independence Party' => 876, 'Plaid Cymru' => 989, 'Other' => 773 },
738
- 'Bridgend' => { 'Conservative' => 11_668, 'Labour' => 13_931, 'Liberal Democrat' => 8658, 'UK Independence Party' => 801, 'Plaid Cymru' => 2269, 'Other' => 1020 },
739
- 'Caerphilly' => { 'Conservative' => 6622, 'Labour' => 17_377, 'Liberal Democrat' => 5688, 'UK Independence Party' => 910, 'Plaid Cymru' => 6460, 'Other' => 1635 },
740
- 'Cardiff Central' => { 'Conservative' => 7799, 'Labour' => 10_400, 'Liberal Democrat' => 14_976, 'UK Independence Party' => 765, 'Plaid Cymru' => 1246, 'Other' => 965 },
741
- 'Cardiff North' => { 'Conservative' => 17_860, 'Labour' => 17_666, 'Liberal Democrat' => 8724, 'UK Independence Party' => 1130, 'Plaid Cymru' => 1588, 'Other' => 662 },
742
- 'Cardiff South and Penarth' => { 'Conservative' => 12_553, 'Labour' => 17_262, 'Liberal Democrat' => 9875, 'UK Independence Party' => 1145, 'Plaid Cymru' => 1851, 'Other' => 1683 },
743
- 'Cardiff West' => { 'Conservative' => 12_143, 'Labour' => 16_894, 'Liberal Democrat' => 7186, 'UK Independence Party' => 1117, 'Plaid Cymru' => 2868, 'Other' => 750 },
744
- 'Carmarthen East and Dinefwr' => { 'Conservative' => 8506, 'Labour' => 10_065, 'Liberal Democrat' => 4609, 'UK Independence Party' => 1285, 'Plaid Cymru' => 13_546 },
745
- 'Carmarthen West and Pembrokeshire South' => { 'Conservative' => 16_649, 'Labour' => 13_226, 'Liberal Democrat' => 4890, 'UK Independence Party' => 1146, 'Plaid Cymru' => 4232, 'Other' => 364 },
746
- 'Ceredigion' => { 'Conservative' => 4421, 'Labour' => 2210, 'Liberal Democrat' => 19_139, 'UK Independence Party' => 977, 'Plaid Cymru' => 10_815, 'Other' => 696 },
747
- 'Clwyd South' => { 'Conservative' => 10_477, 'Labour' => 13_311, 'Liberal Democrat' => 5965, 'UK Independence Party' => 819, 'Plaid Cymru' => 3009, 'Other' => 1100 },
748
- 'Clwyd West' => { 'Conservative' => 15_833, 'Labour' => 9414, 'Liberal Democrat' => 5801, 'UK Independence Party' => 864, 'Plaid Cymru' => 5864, 'Other' => 335 },
749
- 'Cynon Valley' => { 'Conservative' => 3010, 'Labour' => 15_681, 'Liberal Democrat' => 4120, 'UK Independence Party' => 1001, 'Plaid Cymru' => 6064 },
750
- 'Delyn' => { 'Conservative' => 12_811, 'Labour' => 15_083, 'Liberal Democrat' => 5747, 'UK Independence Party' => 655, 'Plaid Cymru' => 1844, 'Other' => 844 },
751
- 'Dwyfor Meirionnydd' => { 'Conservative' => 6447, 'Labour' => 4021, 'Liberal Democrat' => 3538, 'UK Independence Party' => 776, 'Plaid Cymru' => 12_814, 'Other' => 1310 },
752
- 'Gower' => { 'Conservative' => 13_333, 'Labour' => 16_016, 'Liberal Democrat' => 7947, 'UK Independence Party' => 652, 'Plaid Cymru' => 2760, 'Other' => 963 },
753
- 'Islwyn' => { 'Conservative' => 4854, 'Labour' => 17_069, 'Liberal Democrat' => 3597, 'UK Independence Party' => 936, 'Plaid Cymru' => 4518, 'Other' => 3716 },
754
- 'Llanelli' => { 'Conservative' => 5381, 'Labour' => 15_916, 'Liberal Democrat' => 3902, 'UK Independence Party' => 1047, 'Plaid Cymru' => 11_215 },
755
- 'Merthyr Tydfil and Rhymney' => { 'Conservative' => 2412, 'Labour' => 14_007, 'Liberal Democrat' => 9951, 'UK Independence Party' => 872, 'Plaid Cymru' => 1621, 'Other' => 3213 },
756
- 'Monmouth' => { 'Conservative' => 22_466, 'Labour' => 12_041, 'Liberal Democrat' => 9026, 'UK Independence Party' => 1126, 'Plaid Cymru' => 1273, 'Other' => 587 },
757
- 'Montgomeryshire' => { 'Conservative' => 13_976, 'Labour' => 2407, 'Liberal Democrat' => 12_792, 'UK Independence Party' => 1128, 'Plaid Cymru' => 2802, 'Other' => 708 },
758
- 'Neath' => { 'Conservative' => 4847, 'Labour' => 17_172, 'Liberal Democrat' => 5535, 'UK Independence Party' => 829, 'Plaid Cymru' => 7397, 'Other' => 1342 },
759
- 'Newport East' => { 'Conservative' => 7918, 'Labour' => 12_744, 'Liberal Democrat' => 11_094, 'UK Independence Party' => 677, 'Plaid Cymru' => 724, 'Other' => 1291 },
760
- 'Newport West' => { 'Conservative' => 12_845, 'Labour' => 16_389, 'Liberal Democrat' => 6587, 'UK Independence Party' => 1144, 'Plaid Cymru' => 1122, 'Other' => 1633 },
761
- 'Ogmore' => { 'Conservative' => 5398, 'Labour' => 18_644, 'Liberal Democrat' => 5260, 'UK Independence Party' => 780, 'Plaid Cymru' => 3326, 'Other' => 1242 },
762
- 'Pontypridd' => { 'Conservative' => 5932, 'Labour' => 14_220, 'Liberal Democrat' => 11_435, 'UK Independence Party' => 1229, 'Plaid Cymru' => 2673, 'Other' => 1182 },
763
- 'Preseli Pembrokeshire' => { 'Conservative' => 16_944, 'Labour' => 12_339, 'Liberal Democrat' => 5759, 'UK Independence Party' => 906, 'Plaid Cymru' => 3654 },
764
- 'Rhondda' => { 'Conservative' => 1993, 'Labour' => 17_183, 'Liberal Democrat' => 3309, 'UK Independence Party' => 358, 'Plaid Cymru' => 5630, 'Other' => 2599 },
765
- 'Swansea East' => { 'Conservative' => 4823, 'Labour' => 16_819, 'Liberal Democrat' => 5981, 'UK Independence Party' => 839, 'Plaid Cymru' => 2181, 'Other' => 2033 },
766
- 'Swansea West' => { 'Conservative' => 7407, 'Labour' => 12_335, 'Liberal Democrat' => 11_831, 'UK Independence Party' => 716, 'Plaid Cymru' => 1437, 'Other' => 1867 },
767
- 'Torfaen' => { 'Conservative' => 7541, 'Labour' => 16_847, 'Liberal Democrat' => 6264, 'UK Independence Party' => 862, 'Plaid Cymru' => 2005, 'Other' => 4121 },
768
- 'Vale of Clwyd' => { 'Conservative' => 12_508, 'Labour' => 15_017, 'Liberal Democrat' => 4472, 'UK Independence Party' => 515, 'Plaid Cymru' => 2068, 'Other' => 954 },
769
- 'Vale of Glamorgan' => { 'Conservative' => 20_341, 'Labour' => 16_034, 'Liberal Democrat' => 7403, 'UK Independence Party' => 1529, 'Plaid Cymru' => 2667, 'Other' => 693 },
770
- 'Wrexham' => { 'Conservative' => 8375, 'Labour' => 12_161, 'Liberal Democrat' => 8503, 'UK Independence Party' => 774, 'Plaid Cymru' => 2029, 'Other' => 1134 },
771
- 'Ynys Mon' => { 'Conservative' => 7744, 'Labour' => 11_490, 'Liberal Democrat' => 2592, 'UK Independence Party' => 1201, 'Plaid Cymru' => 9029, 'Other' => 2388 },
772
- # Scotland
773
- 'Aberdeen North' => { 'Conservative' => 4666, 'Labour' => 16_746,
774
- 'Liberal Democrat' => 7001,
775
- 'Scottish National Party' => 8385, 'Other' => 903 },
776
- 'Aberdeen South' => { 'Conservative' => 8914, 'Labour' => 15_722,
777
- 'Liberal Democrat' => 12_216,
778
- 'Scottish National Party' => 5102,
779
- 'Other' => 1080 },
780
- 'Aberdeenshire West and Kincardine' => { 'Conservative' => 13_678,
781
- 'Labour' => 6159,
782
- 'Liberal Democrat' => 17_362,
783
- 'UK Independence Party' => 397,
784
- 'Scottish National Party' => 7086, 'Other' => 513 },
785
- 'Airdrie and Shotts' => { 'Conservative' => 3133, 'Labour' => 20_849,
786
- 'Liberal Democrat' => 2898,
787
- 'Scottish National Party' => 8441,
788
- 'Other' => 528 },
789
- 'Angus' => { 'Conservative' => 11_738, 'Labour' => 6535,
790
- 'Liberal Democrat' => 4090, 'UK Independence Party' => 577,
791
- 'Scottish National Party' => 15_020 },
792
- 'Argyll and Bute' => { 'Conservative' => 10_861, 'Labour' => 10_274,
793
- 'Liberal Democrat' => 14_292,
794
- 'Scottish National Party' => 8563,
795
- 'Other' => 1217 },
796
- 'Ayr Carrick and Cumnock' => { 'Conservative' => 11_721,
797
- 'Labour' => 21_632,
798
- 'Liberal Democrat' => 4264,
799
- 'Scottish National Party' => 8276 },
800
- 'Ayrshire Central' => { 'Conservative' => 8943, 'Labour' => 20_950,
801
- 'Liberal Democrat' => 5236,
802
- 'Scottish National Party' => 8364,
803
- 'Other' => 422 },
804
- 'Ayrshire North and Arran' => { 'Conservative' => 7212,
805
- 'Labour' => 21_860,
806
- 'Liberal Democrat' => 4630,
807
- 'Scottish National Party' => 11_965,
808
- 'Other' => 449 },
809
- 'Banff and Buchan' => { 'Conservative' => 11_841, 'Labour' => 5382,
810
- 'Liberal Democrat' => 4365,
811
- 'Scottish National Party' => 15_868,
812
- 'Other' => 1010 },
813
- 'Berwickshire, Roxburgh and Selkirk' => { 'Conservative' => 16_555,
814
- 'Labour' => 5003,
815
- 'Liberal Democrat' => 22_230,
816
- 'UK Independence Party' => 595,
817
- 'Scottish National Party' => 4497, 'Other' => 134 },
818
- 'Caithness Sutherland and Easter Ross' => { 'Conservative' => 3744,
819
- 'Labour' => 7081,
820
- 'Liberal Democrat' => 11_907,
821
- 'Scottish National Party' => 5516, 'Other' => 520 },
822
- 'Coatbridge, Chryston and Bellshill' => { 'Conservative' => 3374,
823
- 'Labour' => 27_728,
824
- 'Liberal Democrat' => 3519,
825
- 'Scottish National Party' => 7014 },
826
- 'Cumbernauld, Kilsyth and Kirkintilloch East' => { 'Conservative' => 3407,
827
- 'Labour' => 23_549,
828
- 'Liberal Democrat' => 3924, 'Scottish National Party' => 9794, 'Other' => 476 },
829
- 'Dumfries and Galloway' => { 'Conservative' => 16_501,
830
- 'Labour' => 23_950,
831
- 'Liberal Democrat' => 4608,
832
- 'UK Independence Party' => 695,
833
- 'Scottish National Party' => 6419 },
834
- 'Dumfriesshire, Clydesdale and Tweeddale' => { 'Conservative' => 17_457,
835
- 'Labour' => 13_263,
836
- 'Liberal Democrat' => 9080,
837
- 'UK Independence Party' => 637, 'Scottish National Party' => 4945, 'Other' => 510 },
838
- 'Dunbartonshire East' => { 'Conservative' => 7431, 'Labour' => 16_367,
839
- 'Liberal Democrat' => 18_551,
840
- 'UK Independence Party' => 545,
841
- 'Scottish National Party' => 5054 },
842
- 'Dunbartonshire West' => { 'Conservative' => 3242, 'Labour' => 25_905,
843
- 'Liberal Democrat' => 3434,
844
- 'UK Independence Party' => 683,
845
- 'Scottish National Party' => 8497,
846
- 'Other' => 505 },
847
- 'Dundee East' => { 'Conservative' => 6177, 'Labour' => 13_529,
848
- 'Liberal Democrat' => 4285,
849
- 'UK Independence Party' => 431,
850
- 'Scottish National Party' => 15_350, 'Other' => 796 },
851
- 'Dundee West' => { 'Conservative' => 3461, 'Labour' => 17_994,
852
- 'Liberal Democrat' => 4233,
853
- 'Scottish National Party' => 10_716, 'Other' => 722 },
854
- 'Dunfermline and West Fife' => { 'Conservative' => 3305,
855
- 'Labour' => 22_639,
856
- 'Liberal Democrat' => 17_169,
857
- 'UK Independence Party' => 633,
858
- 'Scottish National Party' => 5201 },
859
- 'East Kilbride, Strathaven and Lesmahagow' => { 'Conservative' => 6613,
860
- 'Labour' => 26_241,
861
- 'Liberal Democrat' => 5052, 'Scottish National Party' => 11_738, 'Other' => 1302 },
862
- 'East Lothian' => { 'Conservative' => 9661, 'Labour' => 21_919,
863
- 'Liberal Democrat' => 8288,
864
- 'UK Independence Party' => 548,
865
- 'Scottish National Party' => 7883, 'Other' => 862 },
866
- 'Edinburgh East' => { 'Conservative' => 4358, 'Labour' => 17_314,
867
- 'Liberal Democrat' => 7751,
868
- 'Scottish National Party' => 8133,
869
- 'Other' => 2309 },
870
- 'Edinburgh North and Leith' => { 'Conservative' => 7079,
871
- 'Labour' => 17_740,
872
- 'Liberal Democrat' => 16_016,
873
- 'Scottish National Party' => 4568,
874
- 'Other' => 1953 },
875
- 'Edinburgh South' => { 'Conservative' => 9452, 'Labour' => 15_215,
876
- 'Liberal Democrat' => 14_899,
877
- 'Scottish National Party' => 3354,
878
- 'Other' => 881 },
879
- 'Edinburgh South West' => { 'Conservative' => 11_026, 'Labour' => 19_473,
880
- 'Liberal Democrat' => 8194,
881
- 'Scottish National Party' => 5530,
882
- 'Other' => 1239 },
883
- 'Edinburgh West' => { 'Conservative' => 10_767, 'Labour' => 12_881,
884
- 'Liberal Democrat' => 16_684,
885
- 'Scottish National Party' => 6115 },
886
- 'Falkirk' => { 'Conservative' => 5698, 'Labour' => 23_207,
887
- 'Liberal Democrat' => 5225,
888
- 'UK Independence Party' => 1283,
889
- 'Scottish National Party' => 15_364 },
890
- 'Fife North East' => { 'Conservative' => 8715, 'Labour' => 6869,
891
- 'Liberal Democrat' => 17_763,
892
- 'UK Independence Party' => 1032,
893
- 'Scottish National Party' => 5685 },
894
- 'Glasgow Central' => { 'Conservative' => 2158, 'Labour' => 15_908,
895
- 'Liberal Democrat' => 5010,
896
- 'UK Independence Party' => 246,
897
- 'Scottish National Party' => 5357,
898
- 'Other' => 1901 },
899
- 'Glasgow East' => { 'Conservative' => 1453, 'Labour' => 19_797,
900
- 'Liberal Democrat' => 1617,
901
- 'UK Independence Party' => 209,
902
- 'Scottish National Party' => 7957, 'Other' => 1131 },
903
- 'Glasgow North' => { 'Conservative' => 2089, 'Labour' => 13_181,
904
- 'Liberal Democrat' => 9283,
905
- 'Scottish National Party' => 3530, 'Other' => 1530 },
906
- 'Glasgow North East' => { 'Conservative' => 1569, 'Labour' => 20_100,
907
- 'Liberal Democrat' => 2262,
908
- 'Scottish National Party' => 4158,
909
- 'Other' => 1320 },
910
- 'Glasgow North West' => { 'Conservative' => 3537, 'Labour' => 19_233,
911
- 'Liberal Democrat' => 5622,
912
- 'Scottish National Party' => 5430,
913
- 'Other' => 1760 },
914
- 'Glasgow South' => { 'Conservative' => 4592, 'Labour' => 20_736,
915
- 'Liberal Democrat' => 4739,
916
- 'Scottish National Party' => 8078, 'Other' => 1949 },
917
- 'Glasgow South West' => { 'Conservative' => 2084, 'Labour' => 19_863,
918
- 'Liberal Democrat' => 2870,
919
- 'Scottish National Party' => 5192,
920
- 'Other' => 1772 },
921
- 'Glenrothes' => { 'Conservative' => 2922, 'Labour' => 25_247,
922
- 'Liberal Democrat' => 3108,
923
- 'UK Independence Party' => 425,
924
- 'Scottish National Party' => 8799 },
925
- 'Gordon' => { 'Conservative' => 9111, 'Labour' => 9811,
926
- 'Liberal Democrat' => 17_575,
927
- 'Scottish National Party' => 10_827, 'Other' => 1451 },
928
- 'Inverclyde' => { 'Conservative' => 4502, 'Labour' => 20_993,
929
- 'Liberal Democrat' => 5007,
930
- 'UK Independence Party' => 433,
931
- 'Scottish National Party' => 6577 },
932
- 'Inverness Nairn Badenoch and Strathspey' => { 'Conservative' => 6278,
933
- 'Labour' => 10_407,
934
- 'Liberal Democrat' => 19_172, 'UK Independence Party' => 574, 'Scottish National Party' => 8803, 'Other' => 1852 },
935
- 'Kilmarnock and Loudoun' => { 'Conservative' => 6592, 'Labour' => 24_460,
936
- 'Liberal Democrat' => 3419,
937
- 'Scottish National Party' => 12_082 },
938
- 'Kirkcaldy and Cowdenbeath' => { 'Conservative' => 4258,
939
- 'Labour' => 29_559,
940
- 'Liberal Democrat' => 4269,
941
- 'UK Independence Party' => 760,
942
- 'Scottish National Party' => 6550,
943
- 'Other' => 406 },
944
- 'Lanark and Hamilton East' => { 'Conservative' => 6981,
945
- 'Labour' => 23_258,
946
- 'Liberal Democrat' => 5249,
947
- 'UK Independence Party' => 616,
948
- 'Scottish National Party' => 9780,
949
- 'Other' => 670 },
950
- 'Linlithgow and East Falkirk' => { 'Conservative' => 6146,
951
- 'Labour' => 25_634,
952
- 'Liberal Democrat' => 6589,
953
- 'Scottish National Party' => 13_081 },
954
- 'Livingston' => { 'Conservative' => 5158, 'Labour' => 23_215,
955
- 'Liberal Democrat' => 5316,
956
- 'UK Independence Party' => 443,
957
- 'Scottish National Party' => 12_424, 'Other' => 1351 },
958
- 'Midlothian' => { 'Conservative' => 4661, 'Labour' => 18_449,
959
- 'Liberal Democrat' => 6711,
960
- 'UK Independence Party' => 364,
961
- 'Scottish National Party' => 8100, 'Other' => 957 },
962
- 'Moray' => { 'Conservative' => 10_683, 'Labour' => 7007,
963
- 'Liberal Democrat' => 5956, 'UK Independence Party' => 1085,
964
- 'Scottish National Party' => 16_273 },
965
- 'Motherwell and Wishaw' => { 'Conservative' => 3660, 'Labour' => 23_910,
966
- 'Liberal Democrat' => 3840,
967
- 'Scottish National Party' => 7104,
968
- 'Other' => 609 },
969
- 'Na h-Eileanan An Iar (Western Isles)' => { 'Conservative' => 647,
970
- 'Labour' => 4838,
971
- 'Liberal Democrat' => 1097,
972
- 'Scottish National Party' => 6723, 'Other' => 1412 },
973
- 'Ochil and South Perthshire' => { 'Conservative' => 10_342,
974
- 'Labour' => 19_131,
975
- 'Liberal Democrat' => 5754,
976
- 'UK Independence Party' => 689,
977
- 'Scottish National Party' => 13_944,
978
- 'Other' => 609 },
979
- 'Orkney and Shetland' => { 'Conservative' => 2032, 'Labour' => 2061,
980
- 'Liberal Democrat' => 11_989,
981
- 'UK Independence Party' => 1222,
982
- 'Scottish National Party' => 2042 },
983
- 'Paisley and Renfrewshire North' => { 'Conservative' => 6381,
984
- 'Labour' => 23_613,
985
- 'Liberal Democrat' => 4597,
986
- 'Scottish National Party' => 8333,
987
- 'Other' => 783 },
988
- 'Paisley and Renfrewshire South' => { 'Conservative' => 3979,
989
- 'Labour' => 23_842,
990
- 'Liberal Democrat' => 3812,
991
- 'Scottish National Party' => 7228,
992
- 'Other' => 1137 },
993
- 'Perth and North Perthshire' => { 'Conservative' => 14_739,
994
- 'Labour' => 7923,
995
- 'Liberal Democrat' => 5954,
996
- 'Scottish National Party' => 19_118,
997
- 'Other' => 534 },
998
- 'Renfrewshire East' => { 'Conservative' => 15_567, 'Labour' => 25_987,
999
- 'Liberal Democrat' => 4720,
1000
- 'UK Independence Party' => 372,
1001
- 'Scottish National Party' => 4535 },
1002
- 'Ross Skye and Lochaber' => { 'Conservative' => 4260, 'Labour' => 5265,
1003
- 'Liberal Democrat' => 18_335,
1004
- 'UK Independence Party' => 659,
1005
- 'Scottish National Party' => 5263,
1006
- 'Other' => 1056 },
1007
- 'Rutherglen and Hamilton West' => { 'Conservative' => 4540,
1008
- 'Labour' => 28_566,
1009
- 'Liberal Democrat' => 5636,
1010
- 'UK Independence Party' => 675,
1011
- 'Scottish National Party' => 7564 },
1012
- 'Stirling' => { 'Conservative' => 11_254, 'Labour' => 19_558,
1013
- 'Liberal Democrat' => 6797,
1014
- 'UK Independence Party' => 395,
1015
- 'Scottish National Party' => 8091, 'Other' => 746 },
1016
- # Northern-Ireland
1017
- 'Antrim East' => { 'Conservative' => 7223, 'Labour' => 2019,
1018
- 'Liberal Democrat' => 13_993, 'Other' => 5203 },
1019
- 'Antrim North' => { 'Conservative' => 4634, 'Labour' => 3738,
1020
- 'Liberal Democrat' => 19_672, 'Other' => 9088 },
1021
- 'Antrim South' => { 'Conservative' => 10_353, 'Labour' => 2955,
1022
- 'Liberal Democrat' => 11_536, 'Other' => 4436 },
1023
- 'Belfast East' => { 'Conservative' => 7305, 'Labour' => 365,
1024
- 'Liberal Democrat' => 11_306, 'Other' => 14_695 },
1025
- 'Belfast North' => { 'Conservative' => 2837, 'Labour' => 4544,
1026
- 'Liberal Democrat' => 14_812, 'Other' => 2212 },
1027
- 'Belfast South' => { 'Conservative' => 5910, 'Labour' => 14_026,
1028
- 'Liberal Democrat' => 8100, 'Other' => 6150 },
1029
- 'Belfast West' => { 'Conservative' => 1000, 'Labour' => 5261,
1030
- 'Liberal Democrat' => 2436, 'Other' => 596 },
1031
- 'Down North' => { 'Conservative' => 6817, 'Labour' => 680,
1032
- 'Other' => 25_734 },
1033
- 'Down South' => { 'Conservative' => 3093, 'Labour' => 20_648,
1034
- 'Liberal Democrat' => 3645, 'Other' => 2967 },
1035
- 'Fermanagh and South Tyrone' => { 'Labour' => 3574, 'Other' => 21_925 },
1036
- 'Foyle' => { 'Conservative' => 1221, 'Labour' => 16_922,
1037
- 'Liberal Democrat' => 4489, 'Other' => 3159 },
1038
- 'Lagan Valley' => { 'Conservative' => 7713, 'Labour' => 1835,
1039
- 'Liberal Democrat' => 18_199, 'Other' => 7328 },
1040
- 'Londonderry East' => { 'Conservative' => 6218, 'Labour' => 5399,
1041
- 'Liberal Democrat' => 12_097, 'Other' => 4494 },
1042
- 'Newry and Armagh' => { 'Conservative' => 8558, 'Labour' => 10_526,
1043
- 'Liberal Democrat' => 5764, 'Other' => 1201 },
1044
- 'Strangford' => { 'Conservative' => 9050, 'Labour' => 2164,
1045
- 'Liberal Democrat' => 14_926, 'Other' => 5204 },
1046
- 'Tyrone West' => { 'Conservative' => 5281, 'Labour' => 5212,
1047
- 'Liberal Democrat' => 7365, 'Other' => 1367 },
1048
- 'Ulster Mid' => { 'Conservative' => 4509, 'Labour' => 5826,
1049
- 'Liberal Democrat' => 5876, 'Other' => 3392 },
1050
- 'Upper Bann' => { 'Conservative' => 10_639, 'Labour' => 5276,
1051
- 'Liberal Democrat' => 14_000, 'Other' => 1231 }
1052
- }
1053
-
1054
- ELECTORAL_SYSTEM = FirstPastThePost.new(LAST_ELECTION_RESULT,
1055
- LAST_DETAILED_ELECTION_RESULT)
1056
-
1057
27
  def area_code
1058
28
  'UK'
1059
29
  end
1060
30
 
1061
- def population_size
1062
- # Source: BBC News Election 2010 Results, retrieved on 3 April 2015.
1063
- # URL: http://news.bbc.co.uk/2/shared/election2010/results/
1064
- 29_691_380
31
+ def coalitions
32
+ [['Conservative Party'], ['Conservative Party', 'Liberal Democrats'],
33
+ ['Conservative Party', 'Plaid Cymru'],
34
+ ['Conservative Party', 'Plaid Cymru', 'Scottish National Party'],
35
+ ['Conservative Party', 'Scottish National Party'],
36
+ ['Labour Party'], ['Labour Party', 'Liberal Democrats'],
37
+ ['Labour Party', 'Liberal Democrats', 'Plaid Cymru'],
38
+ ['Labour Party', 'Liberal Democrats', 'Plaid Cymru',
39
+ 'Scottish National Party'],
40
+ ['Labour Party', 'Liberal Democrats', 'Scottish National Party'],
41
+ ['Labour Party', 'Plaid Cymru'],
42
+ ['Labour Party', 'Plaid Cymru', 'Scottish National Party'],
43
+ ['Labour Party', 'Scottish National Party']]
1065
44
  end
1066
45
 
1067
46
  def no_of_seats
1068
- LAST_DETAILED_ELECTION_RESULT.size
47
+ election_results_of_2017.size
48
+ end
49
+
50
+ def overall_election_results_of_2017
51
+ if @overall_election_results_of_2017.nil?
52
+ @overall_election_results_of_2017 = \
53
+ summarize_election_results(election_results_of_2017)
54
+ end
55
+ @overall_election_results_of_2017
56
+ end
57
+
58
+ def population_size
59
+ # Source: Wikipedia article the general election in the United Kingdom,
60
+ # retrieved on 17 November 2018.
61
+ # URL: https://en.wikipedia.org/wiki/United_Kingdom_general_election,_2017
62
+ 32_204_124
1069
63
  end
1070
64
 
1071
65
  def seats(simulation)
1072
- ELECTORAL_SYSTEM.project(simulation)
66
+ electoral_system.project(simulation)
67
+ end
68
+
69
+ def threshold
70
+ nil
71
+ end
72
+
73
+ private
74
+
75
+ def election_results_of_2017
76
+ if @election_results_of_2017.nil?
77
+ @election_results_of_2017 = load_election_results(
78
+ 'united_kingdom-20170608.psv'
79
+ )
80
+ end
81
+ @election_results_of_2017
82
+ end
83
+
84
+ def electoral_system
85
+ if @electoral_system.nil?
86
+ @electoral_system = FirstPastThePost.new(
87
+ overall_election_results_of_2017,
88
+ election_results_of_2017
89
+ )
90
+ end
91
+ @electoral_system
1073
92
  end
1074
93
  end
1075
94
  end