PageSourceSearch

https://www.mediabids.com/-/advertiser/print-advertising/

html mediabids.com collected 2026-09-26 13:24:22 UTC 58,026 bytes, 1,209 lines download raw bytes

1
2
3
4
5
6       
7       
8 
9
10
11
12
13
14
15
16 
17
18
19
20
21 
22
23  
24
25
26
27
28
29
30 
31
32
33 
34
35
36<!DOCTYPE html>
37<html lang="en">
38<head>
39  <!-- Meta tags -->
40	<meta charset="utf-8" />
41	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
42	<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
43	<meta name="viewport" content="width=device-width" />
44	<meta property="og:title" content="Advertiser Home Page"> 
45	<meta name="description" content="">
46    <meta name="keywords" content=""> 
47	<meta name="version" content="MBX.9.18.25.142">	
48		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
49	<META name="country" content="United States">
50	<META name="copyright" content="Mediabids.com">
51	<META name="distribution" content="global">
52	<META name="document-classification" content="general">
53	<META name="rating" content="general">
54	<LINK REL="shortcut icon" HREF="/favicon.ico">
55
56	<META name="title" content=" Pay-for-Performance Print Advertising. Generate high-converting inbound calls & leads from print ads in local and regional newspapers on a cost-per-lead basis. Newspapers = Trust. "> <META name="keywords" content=" lead generation, direct-response advertising, cost-per-response, inbound calls, pay-per-call, PFP, pay-for-performance print , performance print, PPC print, print affiliate network, affiliate marketing, affiliate advertising, revshare marketing, CPA marketing, cost-per-acquisition, performance marketing, performance media, CPL, cost-per-lead print advertising, pay-per-call print advertising, pay-per-call newspaper advertising, performance newspaper advertising"><META name="description" content="MediaBids is home to the world's largest and most comprehensive performance print advertising program, driving high-converting inbound calls and leads to a wide variety of clients across the US. Pay only for response. Generate high-quality leads on a CPL basis for home services, home improvement products, senior products & services, insurance, pet products, food/gifts + more. ">
57	<title>Advertiser Home Page</title>
58	<link rel=canonical href="https:/www.mediabids.com/-/advertiser/print-advertising/"/>
59	
60		
61				<meta name="robots" content="index, follow"/>
62			
63		 
64		
65
66
67
68
69
70
71		<!--Start of Zopim Live Chat Script-->
72<!-- Start of  Zendesk Widget script -->
73<script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=97a6dff0-e8fe-4b0f-a34d-00fa236b9e28"> </script>
73
74<!-- End of  Zendesk Widget script --> 
75
76
77	
78	<link rel="icon" href="/favicon.ico">
79	<link href="/wwwroot/js/tp/halfmoon/halfmoon-variables.min.css" rel="stylesheet" />
80	<link rel="stylesheet" href="/wwwroot/thirdparty/fontawesome/all.min.css?" type="text/css" /> 
81	<link href="/wwwroot/mediabids.css" rel="stylesheet" /> 
82	
83		<link href="/wwwroot/advertiser.css" rel="stylesheet" /> 
84	
85	
86 	
86<script  type='text/javascript'>function addLoadEvent(func) {var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func;} else { window.onload = function(){if(oldonload){oldonload(); } func();}}} const ATRAJX="ax", ATRGID="gid", ATRTSK="tsk", LNKWGT="https://www.mediabids.com/-/widgets/", TSKBLG="1046";</script>
86
87	
88
89
90
91
92
93
94<div style="display: none; position: absolute;left: -500;top: -500;z-index: -7;">
95
96      
97
98
99<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 99-100
99
100<script async src="https://www.googletagmanager.com/gtag/js?id=
100G-8GDTEFMZB3
vendor: 13 bytes, line 100
100"></script>
101<script>
102  
vendor: 136 bytes, lines 102-105
102window.dataLayer = window.dataLayer || [];
103  function gtag(){dataLayer.push(arguments);}
104  gtag('js', new Date());
105  gtag('config', '
105G-8GDTEFMZB3
vendor: 5 bytes, line 105
105');
106</script>
106
107
108
109  
110</div>
111 
112 	
112<script  type='text/javascript' src="/wwwroot/js/mediabids.js" defer ></script>
112
113	
113<script  type='text/javascript' src="/wwwroot/js/tp/halfmoon/halfmoon.min.js" defer></script>
113
114</head>  
115 
116<body  onLoad="refreshblog();" id="body" class="with-custom-webkit-scrollbars with-custom-css-scrollbars with-navbar-bottom nondimmed " >
117<div id="page-overlay" class="overlay" aria-hidden="true"><svg viewBox="0 0 100 100" width="80" height="80" class="d-block opacity-50  mx-auto" aria-label="Loading" role="img"><g id="ring" transform="rotate(0 50 50)"><circle class="spin"cx="50" cy="50" r="46" stroke="#66508d" stroke-width="6" stroke-linecap="round" fill="none" stroke-dasharray="60 260" style="transform-origin: 50% 50%;" /></g><path d="M 28 72 L 28 28 L 38 28 L 50 54 L 62 28 L 72 28 L 72 72 L 64 72 L 64 44 L 52 68 L 48 68 L 36 44 L 36 72 Z" fill="#66508d" /></svg></div>
118<a id="pagetop"></a>   
119	
120    
121
122   <div class="page-wrapper  ">
123   <div class="sticky-alerts" id="sticky-alerts"></div>
124   
125   
126
127      <div class="content-wrapper" id="content">
128 
129    <!-- Content wrapper start -->
130		
131		<header>
132		<h1 class="d-none">Advertiser Home Page</h1>	    
133		    <div class="container-fluid" id="header">
134				<div class="row h-full"> 
135			    	<a href="https://www.mediabids.com/-/publication/print-advertising/" class="col-12 col-md-9 w-half w-md-full h-half h-md-full" id="logo">Mediabids.com, Inc</a>
136				    <div class="col-12 col-md-3 align-middle mt-neg-5 text-left" id="greeting">  
137				    	<span class="ml-15 ml-md-0  mr-10 mr-md-0"><a href="https://www.mediabids.com/-/sign/up/" class="top-link  mr-5 mr-md-0">Register Now</a>
138				    	<!-- 
139				    	&nbsp;<a onclick="halfmoon.toggleModal('global-msg');" data-placement="bottom" data-toggle="tooltip" data-title="You have a Mediabids notification."><i class="fas fa-bell orange"></i></a>
140				    				    	 --> 	
141				    	<br class="d-none d-md-block"/><a href="https://www.mediabids.com/-/sign/in/?fas=true" class="login">Sign in</a></span>
142		    	 
143				    </div> 
144			  </div>
145			</div>
146		   <div class="container-fluid" id="sub-header">
147			  <div class="row">
148			    <div class="col-9">
149	 				 
150			    </div>
151			    <div class="col-3 align-middle" >  
152			    	<a href="https://www.mediabids.com/-/publication/print-advertising/?scrub=true">Publications Click Here</a> 
153			    	 
154			    </div> 
155			  </div>
156			</div>
157		</header>  
158  
159		<div class="container h-three-quarter" id="content">
160		 	<div class="row h-three-quarter" id="mb-body">
161				<div class="col">
162				<main> 
163 	<div class="container-fluid  ml-5 ml-md-0 pr-15  mr-md-0">
164	     <div class="row white green-bk mt-10">
165	     	<div class="col-4 pl-10 pl-md-20">
166				<h3 class="text-decoration-none font-normal d-none d-md-block">The Premier Print<br>Advertising Affiliate<br>Network</h3>
167				<h4 class="text-decoration-none font-normal d-block d-md-none">The Premier Print<br>Advertising Affiliate<br>Network</h4>
168			</div>
169	     	<div class="col-8 font-weight-bold">
170					<p class="font-size-16 ml-20 ml-md-0 mr-20 mr-md-0">
171						Drive High-Converting, High-Value Customers from Newspapers<br>& Magazines. Generate inbound calls, leads and sales from print ads.
172					</p> 
173					<p class="font-size-16 ml-20 ml-md-0 mr-20 mr-md-0">
174						Mediabids makes it EASY to place print ads with MINIMAL RISK.<br>If the ads don't generate leads, there's no cost to you.
175					</p>
176			</div>
177	     </div>
178 	     <div class="row">
179	     	<div class="col-6 ">
180	     		<div class="w-full mt-10 p-10 black-border grey-top-border" id="arrow">
181	     			<h3 class="pt-0 mt-0  font-normal">How Mediabids' Print<br>Advertising Affiliate Program<br>Works:</h3>
182					<ul class="pl-20">
183						<li>We distribute pay-per-call/CPA print ads to<br>
184						thousands of newspapers and magazines across the<br>
185						U.S. on behalf of select advertisers.</li>
186						<li>Mediabids handles the details - from ad resizing,<br>
187						performance tracking, publisher payment & more.</li>
188						<li>We've driven millions of new long-term customers<br>
189						to a wide variety of verticals.</li>
190					</ul>
191					<p class="font-weight-bold ">
192						Let us know what types of customers<br>
193						you are trying to reach and we will contact<br>
194						you to discuss our Print Advertising<br>
195						Affiliate Program.</p>
196					<form method="post" name="adRateRequest" action="https://www.mediabids.com/-/advertiser/ad-rates/request/">
197				  		<input type="hidden" name="command" value="process">
198				  		<input type="hidden" name="init" value="true">
199				  		<input type="hidden" name="unRegistered" value="true">				  		
200				  		<input type="hidden" name="last_name" value="N/A">
201				  		<input type="hidden" name="business_type_id" value="900">
202				  		<input type="hidden" name="defaultVal" value="Select...">  		
203				  		<input type="hidden" name="city" value="N/A">
204				  		<input type="hidden" name="state_id" value="900">
205				  		<input type="hidden" name="typeId" value="300">
206						 <label for="adl_notes" class="required">What type of leads are you interested in generating?</label>&nbsp;<br> <input  name="adl_notes" class="form-control" id="adl_notes" required="required" size="57">
207
208 
209						 <label for="first_name" class="required">Name:</label>&nbsp; <br> <input  name="first_name" class="form-control" id="first_name" required="required" size="57">
210
211 
212					     <label for="email" class="required">Email:</label>&nbsp;<br>  <input  name="email" class="form-control" id="email" required="required" size="57">
213
214 
215						 <label for="phone" class="required">Phone:</label><br> <input  name="phone" class="form-control" id="phone" required="required" size="57" maxlength="12">
216
217 
218						 <label for="biz_name" class="required">Company Name:</label>&nbsp;<br> <input  name="biz_name" class="form-control" id="biz_name" required="required" size="57">
219
220
221						 <input class="mt-10 btn btn-primary btn-block" type="submit" value="Submit">
222					</form>
223	   				<div>
224	   					<p  class="p-5 font-weight-bold white darkest-grey-bk">
224A few of the clients who have benefitted from the 
225						MediaBids Print Advertising Affiliate Program:</p>
226						<img src="/cache/featured-advertisers.png" class="w-full" border="0"/>
227	   				</div>
228		   		</div>
229 			</div>     
230	     	<div class="col-6">
231	     		<div class="m-10"> 
232		     		<div class="white p-10" id="bubbles"> 
233	   			    	<h3 class="pt-0 mt-0 font-normal">Why Print Advertising?</h3>
234	   			    	<h5 class="p-0 m-0 font-normal">PHONE CALLS FROM PRINT ADS HAVE AN AVERAGE CONVERSION RATE OF 40%!*</h5>
235	   			    	<p class="p-0 m-0  mb-10">
236	   			    		That FAR EXCEEDS online conversion rates of 1-2%. If you 
237							are not placing print ads, you are missing out on high quality 
238							new customers.<br/>
239							<div class=""><a class="underline" href="https://www.mediabids.com/-/sign/up/">Create your free account and drive  calls from print</a></div>
240							<div class="mt-10"><a class="  underline" href="/-/r/performance-print-and-newspaper-affiliate-marketing-resources">Performance Print & Newspaper Affiliate Marketing Resources</a></div>
241	   			    	</p>
242	   			    	<img class="w-full" src="/wwwroot/image/redlady.png">
243		   			 </div>
244		     		<div class="mt-10 black-border p-10 grey-top-border" id="pstack2"> 
245		   				<h3 class=" font-normal  d-none d-md-block">Print Media Strategy/Buying</h3>
246		   				<h4 class=" font-normal  d-block d-md-none">Print Media Strategy/Buying</h4>
247						With access to every print publication<br>
248						in the US and Canada, including both<br>
249						national and hyper-local magazines and<br>
250						newspapers, we will craft a print media<br>
251						strategy that will put your business in<br>
252						front of the right target audience at the<br>
253						best price possible.<br>
254						<a  class="underline" href="https://www.mediabids.com/-/sign/up/">Create your free account and<br>
255						start planning</a> 
256		   			</div>
257			     	<div class="mt-10 white green-bk p-10"> 
258						<h3 class=" font-normal  d-none d-md-block">Request ad rates from publications</h3>
259						<h4 class=" font-normal  d-block d-md-none">Request ad rates from publications</h4>
260						<p class="font-weight-bold ">
261							We have over 9,000 publications of all 
262							types in our network. You can receive rates 
263							specifically tailored to meet your needs. 
264							<a class="underline white-hover" href="https://www.mediabids.com/-/search-publications/">Learn more</a>
265						</p>
266					</div>
267				</div>
268	   		</div>
269	     </div>
270	     <div class="row">
271	     	<div class="col">
272	   			<div class="black-border-2 lt-grey-bk p-20 mt-20">
273					<div class="standard-bk p-20">
274						<div class="font-weight-bold font-size-38 green">NEWS</div>
275						<div id="blogentries" >
276						<svg viewBox="0 0 100 100" width="80" height="80" class="d-block opacity-50  mx-auto" aria-label="Loading" role="img"><g id="ring" transform="rotate(0 50 50)"><circle class="spin"cx="50" cy="50" r="46" stroke="#66508d" stroke-width="6" stroke-linecap="round" fill="none" stroke-dasharray="60 260" style="transform-origin: 50% 50%;" /></g><path d="M 28 72 L 28 28 L 38 28 L 50 54 L 62 28 L 72 28 L 72 72 L 64 72 L 64 44 L 52 68 L 48 68 L 36 44 L 36 72 Z" fill="#66508d" /></svg>
277						</div>
278					</div>
279				</div>
280	     	</div>
281	     </div>    
282		<div class="">* Based on MediaBids tracking of over 10,000 phone numbers.</div>
283   	</div>  
284   	
284<script>const ut = 1;</script>
284 
285   	
286	 	<a id="exiter" href="#"></a>
287		
287<script type='text/javascript' src="/wwwroot/js/exit-interview.js" defer ></script>
287 
288	  
289			</main>
290			 <footer class="d-flex justify-content-center ml-5 ml-md-0" id="footer">
291				<div class=" w-700 d-flex justify-content-around darker-grey-top-border-2"> 
292					    	<div class="pt-10">&copy; 2026 Mediabids Inc. All Rights Reserved.</div>
293					    	<div class="pt-10"><a href="https://www.mediabids.com/-/m/about-us">About/Contact Us</a> </div>
294					    	<div class="pt-10"><a href="https://www.mediabids.com/-/m/terms-of-service-advertiser">Terms of Service</a></div> 
295							<div class="pt-10"><a href="https://www.mediabids.com/-/m/privacy-policy">Privacy Policy</a></div>
296			  	</div>
297			</footer>
298			<!-- end content --> 
299  		</div>
300    <!-- Content wrapper end -->
301   </div>
302  <!-- Page wrapper end -->
303  	<div class="modal" id="modal-wrapper" tabindex="-1" role="dialog">
304	  <div class="modal-dialog" role="document">
305	    <div class="modal-content">
306	      <a href="#" id="modal-close" class="close"  role="button" aria-label="Close">
307	        <span >&times;</span>
308	      </a>
309	      <h5 class="modal-title" id='modal-title'></h5>
310	      <p id='modal-content'></p>
311	    </div>
312	  </div>
313	</div>
314   
315  
316    
317	  
317<script>
318		  function showTrace() { console.log("Trace disabled"); } 
319		  
320	  </script>
320
321  	<a id="scroll-top" href="#top" xonclick="scrollToTop();" class="d-none  position-fixed right-100 right-md-0 mr-md-40 p-20 pt-10 pb-10 mb-20 bottom-0 z-50 brand-bk white"><i class="fas fa-angle-double-up"></i></a>
322	
323
324
325
326
327
328
329
330<script>
331window.addEventListener("load", function(){
332window.cookieconsent.initialise({
333  "palette": {
334    "popup": {
335      "background": "#f68727", /* value for button border (e.g. #434343, #fff, transparent, red) */
336      "text": "#ffffff"        /* value for button border (e.g. #434343, #fff, transparent, red) */
337    },
338    "button": {
339      "background": "#000000", /* value for button background (e.g. #434343, #fff, transparent, red) */
340      "text": "#ffffff",       /* value for button text (e.g. #434343, #fff, transparent, red) */
341      "border": "#000000"      /* value for button border (e.g. #434343, #fff, transparent, red) */
342    }
343  },
344  "theme": "edgeless",   /* theme values: block, classic, edgeless */
345  "position": "bottom", /* position values: top, bottom, bottom-left, bottom-right */
346  "static": false,      /* set static to true to change behaviour of position value top only */
347  "showLink": false,     /* set showLink to false if you want to remove the 'Learn more' link */
348/* "type": "opt-out",      keep compliance type parameter commented to show a simple message telling your visitors that you use cookies. Set type to "opt-out" to tell visitors that you use cookies, but give them one button to disable cookies, and another to dismiss the message.
349                           or set type to "opt-in" to tell visitors that you wish to use cookies, and give them one button to enable cookies, and another to refuse them. For callback hook code example, please visit: https://cookieconsent.insites.com/documentation/disabling-cookies */
350  "content": {
351/*    "href": "", /* URL for the Learn more link. Use http:// or https:// in your URL */
352    "message": "We use cookies to ensure the best experience on our website. By using this site, you agree to our updated <a  href=\"https://www.mediabids.com/-/m/privacy-policy\" class='cc-link'>Privacy Policy</a> and our <a  href=\"https://www.mediabids.com/-/m/terms-of-service-advertiser\" class='cc-link'>Terms of Use</a>.", /* You can add your own Consent My Cookie message here */
353    "dismiss": "I AGREE" /* You can add your own button text here */
354  }
355})});
356</script>
356
357<style>
358.cc-window {
359    opacity: 1;
360    transition: opacity 1s ease
361}
362.cc-window.cc-invisible {
363    opacity: 0
364}
365.cc-animate.cc-revoke {
366    transition: transform 1s ease
367}
368.cc-animate.cc-revoke.cc-top {
369    transform: translateY(-2em)
370}
371.cc-animate.cc-revoke.cc-bottom {
372    transform: translateY(2em)
373}
374.cc-animate.cc-revoke.cc-active.cc-bottom,
375.cc-animate.cc-revoke.cc-active.cc-top,
376.cc-revoke:hover {
377    transform: translateY(0)
378}
379.cc-grower {
380    max-height: 0;
381    overflow: hidden;
382    transition: max-height 1s
383}
384.cc-link,
385.cc-revoke:hover {
386    text-decoration: underline
387}
388.cc-revoke,
389.cc-window {
390    position: fixed;
391    overflow: hidden;
392    box-sizing: border-box;
393    font-family: Helvetica, Calibri, Arial, sans-serif;
394    font-size: 16px;
395    line-height: 1.5em;
396    display: -ms-flexbox;
397    display: flex;
398    -ms-flex-wrap: nowrap;
399    flex-wrap: nowrap;
400    z-index: 9999
401}
402.cc-window.cc-static {
403    position: static
404}
405.cc-window.cc-floating {
406    padding: 2em;
407    max-width: 24em;
408    -ms-flex-direction: column;
409    flex-direction: column
410}
411.cc-window.cc-banner {
412    padding: 1em 1.8em;
413    width: 100%;
414    -ms-flex-direction: row;
415    flex-direction: row
416}  w-50
417.cc-revoke {
418    padding: .5em
419}
420.cc-header {
421    font-size: 18px;
422    font-weight: 700
423}
424.cc-btn,
425.cc-close,
426.cc-link,
427.cc-revoke {
428    cursor: pointer
429}
430.cc-link {
431    opacity: .8;
432    display: inline-block;
433    padding: .2em
434}
435.cc-link:hover {
436    opacity: 1
437}
438.cc-link:active,
439.cc-link:visited {
440    color: initial
441}
442.cc-btn {
443    display: block;
444    padding: .4em .8em;
445    font-size: .9em;
446    font-weight: 700;
447    border-width: 2px;
448    border-style: solid;
449    text-align: center;
450    white-space: nowrap
451}
452.cc-banner .cc-btn:last-child {
453    min-width: 140px
454}
455.cc-highlight .cc-btn:first-child {
456    background-color: transparent;
457    border-color: transparent
458}
459.cc-highlight .cc-btn:first-child:focus,  w-50
460.cc-highlight .cc-btn:first-child:hover {
461    background-color: transparent;
462    text-decoration: underline
463}
464.cc-close {
465    display: block;
466    position: absolute;
467    top: .5em;
468    right: .5em;
469    font-size: 1.6em;
470    opacity: .9;
471    line-height: .75
472}
473.cc-close:focus,
474.cc-close:hover {
475    opacity: 1
476}
477.cc-revoke.cc-top {
478    top: 0;
479    left: 3em;
480    border-bottom-left-radius: .5em;
481    border-bottom-right-radius: .5em
482}
483.cc-revoke.cc-bottom {
484    bottom: 0;
485    left: 3em;
486    border-top-left-radius: .5em;
487    border-top-right-radius: .5em
488}
489.cc-revoke.cc-left {
490    left: 3em;
491    right: unset
492}
493.cc-revoke.cc-right {
494    right: 3em;
495    left: unset
496}
497.cc-top {
498    top: 1em
499}
500.cc-left {
501    left: 1em
502}
503.cc-right {
504    right: 1em
505}
506.cc-bottom {
507    bottom: 1em
508}
509.cc-floating>.cc-link {
510    margin-bottom: 1em
511}
512.cc-floating .cc-message {
513    display: block;
514    margin-bottom: 1em
515}
516.cc-window.cc-floating .cc-compliance {
517    -ms-flex: 1;
518    flex: 1
519}
520.cc-window.cc-banner {
521    -ms-flex-align: center;
522    align-items: center
523}
524.cc-banner.cc-top {
525    left: 0;
526    right: 0;
527    top: 0
528}
529.cc-banner.cc-bottom {
530    left: 0;
531    right: 0;
532    bottom: 0;
533    z-index: 16000003;
534}
535.cc-banner .cc-message {
536    -ms-flex: 1;
537    flex: 1
538}
539.cc-compliance {
540    display: -ms-flexbox;
541    display: flex;
542    -ms-flex-align: center;
543    align-items: center;
544    -ms-flex-line-pack: justify;
545    align-content: space-between
546}
547.cc-compliance>.cc-btn {
548    -ms-flex: 1;
549    flex: 1
550}
551.cc-btn+.cc-btn {
552    margin-left: .5em
553}
554@media print {
555    .cc-revoke,
556    .cc-window {
557        display: none
558    }
559}
560@media screen and (max-width:900px) {
561    .cc-btn {
562        white-space: normal
563    }
564}
565@media screen and (max-width:414px) and (orientation:portrait),
566screen and (max-width:736px) and (orientation:landscape) {
567    .cc-window.cc-top {
568        top: 0
569    }
570    .cc-window.cc-bottom {
571        bottom: 0
572    }
573    .cc-window.cc-banner,
574    .cc-window.cc-left,
575    .cc-window.cc-right {
576        left: 0;
577        right: 0
578    }
579    .cc-window.cc-banner {
580        -ms-flex-direction: column;
581        flex-direction: column
582    }
583    .cc-window.cc-banner .cc-compliance {
584        -ms-flex: 1;
585        flex: 1
586    }
587    .cc-window.cc-floating {
588        max-width: none
589    }
590    .cc-window .cc-message {
591        margin-bottom: 1em
592    }
593    .cc-window.cc-banner {
594        -ms-flex-align: unset;
595        align-items: unset
596    }
597}
598.cc-floating.cc-theme-classic {
599    padding: 1.2em;
600    border-radius: 5px
601}
602.cc-floating.cc-type-info.cc-theme-classic .cc-compliance {
603    text-align: center;
604    display: inline;
605    -ms-flex: none;
606    flex: none
607}
608.cc-theme-classic .cc-btn {
609    border-radius: 5px
610}
611.cc-theme-classic .cc-btn:last-child {
612    min-width: 140px
613}
614.cc-floating.cc-type-info.cc-theme-classic .cc-btn {
615    display: inline-block
616}
617.cc-theme-edgeless.cc-window {
618    padding: 0
619}
620.cc-floating.cc-theme-edgeless .cc-message {
621    margin: 2em 2em 1.5em
622}
623.cc-banner.cc-theme-edgeless .cc-btn {
624    margin: 0;
625    padding: .8em 1.8em;
626    height: 100%
627}
628.cc-banner.cc-theme-edgeless .cc-message {
629    margin-left: 1em
630}
631.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn {
632    margin-left: 0
633}
634</style>
635<script>
636    ! function(e) {
637        if (!e.hasInitialised) {
638            var t = {
639                escapeRegExp: function(e) {
640                    return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
641                },
642                hasClass: function(e, t) {
643                    var i = " ";
644                    return 1 === e.nodeType && (i + e.className + i).replace(/[\n\t]/g, i).indexOf(i + t + i) >= 0
645                },
646                addClass: function(e, t) {
647                    e.className += " " + t
648                },
649                removeClass: function(e, t) {
650                    var i = new RegExp("\\b" + this.escapeRegExp(t) + "\\b");
651                    e.className = e.className.replace(i, "")
652                },
653                interpolateString: function(e, t) {
654                    var i = /{{([a-z][a-z0-9\-_]*)}}/gi;
655                    return e.replace(i, function(e) {
656                        return t(arguments[1]) || ""
657                    })
658                },
659                getCookie: function(e) {
660                    var t = "; " + document.cookie,
661                        i = t.split("; " + e + "=");
662                    return 2 != i.length ? void 0 : i.pop().split(";").shift()
663                },
664                setCookie: function(e, t, i, n, o) {
665                    var s = new Date;
666                    s.setDate(s.getDate() + (i || 365));
667                    var r = [e + "=" + t, "expires=" + s.toUTCString(), "path=" + (o || "/")];
668                    n && r.push("domain=" + n), document.cookie = r.join(";")
669                },
670                deepExtend: function(e, t) {
671                    for (var i in t) t.hasOwnProperty(i) && (i in e && this.isPlainObject(e[i]) && this.isPlainObject(t[i]) ? this.deepExtend(e[i], t[i]) : e[i] = t[i]);
672                    return e
673                },
674                throttle: function(e, t) {
675                    var i = !1;
676                    return function() {
677                        i || (e.apply(this, arguments), i = !0, setTimeout(function() {
678                            i = !1
679                        }, t))
680                    }
681                },
682                hash: function(e) {
683                    var t, i, n, o = 0;
684                    if (0 === e.length) return o;
685                    for (t = 0, n = e.length; t < n; ++t) i = e.charCodeAt(t), o = (o << 5) - o + i, o |= 0;
686                    return o
687                },
688                normaliseHex: function(e) {
689                    return "#" == e[0] && (e = e.substr(1)), 3 == e.length && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), e
690                },
691                getContrast: function(e) {
692                    e = this.normaliseHex(e);
693                    var t = parseInt(e.substr(0, 2), 16),
694                        i = parseInt(e.substr(2, 2), 16),
695                        n = parseInt(e.substr(4, 2), 16),
696                        o = (299 * t + 587 * i + 114 * n) / 1e3;
697                    return o >= 128 ? "#000" : "#fff"
698                },
699                getLuminance: function(e) {
700                    var t = parseInt(this.normaliseHex(e), 16),
701                        i = 38,
702                        n = (t >> 16) + i,
703                        o = (t >> 8 & 255) + i,
704                        s = (255 & t) + i,
705                        r = (16777216 + 65536 * (n < 255 ? n < 1 ? 0 : n : 255) + 256 * (o < 255 ? o < 1 ? 0 : o : 255) + (s < 255 ? s < 1 ? 0 : s : 255)).toString(16).slice(1);
706                    return "#" + r
707                },
708                isMobile: function() {
709                    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
710                },
711                isPlainObject: function(e) {
712                    return "object" == typeof e && null !== e && e.constructor == Object
713                }
714            };
715            e.status = {
716                deny: "deny",
717                allow: "allow",
718                dismiss: "dismiss"
719            }, e.transitionEnd = function() {
720                var e = document.createElement("div"),
721                    t = {
722                        t: "transitionend",
723                        OT: "oTransitionEnd",
724                        msT: "MSTransitionEnd",
725                        MozT: "transitionend",
726                        WebkitT: "webkitTransitionEnd"
727                    };
728                for (var i in t)
729                    if (t.hasOwnProperty(i) && "undefined" != typeof e.style[i + "ransition"]) return t[i];
730                return ""
731            }(), e.hasTransition = !!e.transitionEnd;
732            var i = Object.keys(e.status).map(t.escapeRegExp);
733            e.customStyles = {}, e.Popup = function() {
734                function n() {
735                    this.initialise.apply(this, arguments)
736                }
737                function o(e) {
738                    this.openingTimeout = null, t.removeClass(e, "cc-invisible")
739                }
740                function s(t) {
741                    t.style.display = "none", t.removeEventListener(e.transitionEnd, this.afterTransition), this.afterTransition = null
742                }
743                function r() {
744                    var t = this.options.onInitialise.bind(this);
745                    if (!window.navigator.cookieEnabled) return t(e.status.deny), !0;
746                    if (window.CookiesOK || window.navigator.CookiesOK) return t(e.status.allow), !0;
747                    var i = Object.keys(e.status),
748                        n = this.getStatus(),
749                        o = i.indexOf(n) >= 0;
750                    return o && t(n), o
751                }
752                function a() {
753                    var e = this.options.position.split("-"),
754                        t = [];
755                    return e.forEach(function(e) {
756                        t.push("cc-" + e)
757                    }), t
758                }
759                function c() {
760                    var e = this.options,
761                        i = "top" == e.position || "bottom" == e.position ? "banner" : "floating";
762                    t.isMobile() && (i = "floating");
763                    var n = ["cc-" + i, "cc-type-" + e.type, "cc-theme-" + e.theme];
764                    e["static"] && n.push("cc-static"), n.push.apply(n, a.call(this));
765                    p.call(this, this.options.palette);
766                    return this.customStyleSelector && n.push(this.customStyleSelector), n
767                }
768                function l() {
769                    var e = {},
770                        i = this.options;
771                    i.showLink || (i.elements.link = "", i.elements.messagelink = i.elements.message), Object.keys(i.elements).forEach(function(n) {
772                        e[n] = t.interpolateString(i.elements[n], function(e) {
773                            var t = i.content[e];
774                            return e && "string" == typeof t && t.length ? t : ""
775                        })
776                    });
777                    var n = i.compliance[i.type];
778                    n || (n = i.compliance.info), e.compliance = t.interpolateString(n, function(t) {
779                        return e[t]
780                    });
781                    var o = i.layouts[i.layout];
782                    return o || (o = i.layouts.basic), t.interpolateString(o, function(t) {
783                        return e[t]
784                    })
785                }
786                function u(i) {
787                    var n = this.options,
788                        o = document.createElement("div"),
789                        s = n.container && 1 === n.container.nodeType ? n.container : document.body;
790                    o.innerHTML = i;
791                    var r = o.children[0];
792                    return r.style.display = "none", t.hasClass(r, "cc-window") && e.hasTransition && t.addClass(r, "cc-invisible"), this.onButtonClick = h.bind(this), r.addEventListener("click", this.onButtonClick), n.autoAttach && (s.firstChild ? s.insertBefore(r, s.firstChild) : s.appendChild(r)), r
793                }
794                function h(n) {
795                    var o = n.target;
796                    if (t.hasClass(o, "cc-btn")) {
797                        var s = o.className.match(new RegExp("\\bcc-(" + i.join("|") + ")\\b")),
798                            r = s && s[1] || !1;
799                        r && (this.setStatus(r), this.close(!0))
800                    }
801                    t.hasClass(o, "cc-close") && (this.setStatus(e.status.dismiss), this.close(!0)), t.hasClass(o, "cc-revoke") && this.revokeChoice()
802                }
803                function p(e) {
804                    var i = t.hash(JSON.stringify(e)),
805                        n = "cc-color-override-" + i,
806                        o = t.isPlainObject(e);
807                    return this.customStyleSelector = o ? n : null, o && d(i, e, "." + n), o
808                }
809                function d(i, n, o) {
810                    if (e.customStyles[i]) return void++e.customStyles[i].references;
811                    var s = {},
812                        r = n.popup,
813                        a = n.button,
814                        c = n.highlight;
815                    r && (r.text = r.text ? r.text : t.getContrast(r.background), r.link = r.link ? r.link : r.text, s[o + ".cc-window"] = ["color: " + r.text, "background-color: " + r.background], s[o + ".cc-revoke"] = ["color: " + r.text, "background-color: " + r.background], s[o + " .cc-link," + o + " .cc-link:active," + o + " .cc-link:visited"] = ["color: " + r.link], a && (a.text = a.text ? a.text : t.getContrast(a.background), a.border = a.border ? a.border : "transparent", s[o + " .cc-btn"] = ["color: " + a.text, "border-color: " + a.border, "background-color: " + a.background], "transparent" != a.background && (s[o + " .cc-btn:hover, " + o + " .cc-btn:focus"] = ["background-color: " + v(a.background)]), c ? (c.text = c.text ? c.text : t.getContrast(c.background), c.border = c.border ? c.border : "transparent", s[o + " .cc-highlight .cc-btn:first-child"] = ["color: " + c.text, "border-color: " + c.border, "background-color: " + c.background]) : s[o + " .cc-highlight .cc-btn:first-child"] = ["color: " + r.text]));
816                    var l = document.createElement("style");
817                    document.head.appendChild(l), e.customStyles[i] = {
818                        references: 1,
819                        element: l.sheet
820                    };
821                    var u = -1;
822                    for (var h in s) s.hasOwnProperty(h) && l.sheet.insertRule(h + "{" + s[h].join(";") + "}", ++u)
823                }
824                function v(e) {
825                    return e = t.normaliseHex(e), "000000" == e ? "#222" : t.getLuminance(e)
826                }
827                function f(i) {
828                    if (t.isPlainObject(i)) {
829                        var n = t.hash(JSON.stringify(i)),
830                            o = e.customStyles[n];
831                        if (o && !--o.references) {
832                            var s = o.element.ownerNode;
833                            s && s.parentNode && s.parentNode.removeChild(s), e.customStyles[n] = null
834                        }
835                    }
836                }
837                function m(e, t) {
838                    for (var i = 0, n = e.length; i < n; ++i) {
839                        var o = e[i];
840                        if (o instanceof RegExp && o.test(t) || "string" == typeof o && o.length && o === t) return !0
841                    }
842                    return !1
843                }
844                function b() {
845                    var t = this.setStatus.bind(this),
846                        i = this.options.dismissOnTimeout;
847                    "number" == typeof i && i >
847= 0 && (this.dismissTimeout = window.setTimeout(function() {
848                        t(e.status.dismiss)
849                    }, Math.floor(i)));
850                    var n = this.options.dismissOnScroll;
851                    if ("number" == typeof n && n >= 0) {
852                        var o = function(i) {
853                            window.pageYOffset > Math.floor(n) && (t(e.status.dismiss), window.removeEventListener("scroll", o), this.onWindowScroll = null)
854                        };
855                        this.onWindowScroll = o, window.addEventListener("scroll", o)
856                    }
857                }
858                function y() {
859                    if ("info" != this.options.type && (this.options.revokable = !0), t.isMobile() && (this.options.animateRevokable = !1), this.options.revokable) {
860                        var e = a.call(this);
861                        this.options.animateRevokable && e.push("cc-animate"), this.customStyleSelector && e.push(this.customStyleSelector);
862                        var i = this.options.revokeBtn.replace("{{classes}}", e.join(" "));
863                        this.revokeBtn = u.call(this, i);
864                        var n = this.revokeBtn;
865                        if (this.options.animateRevokable) {
866                            var o = t.throttle(function(e) {
867                                var i = !1,
868                                    o = 20,
869                                    s = window.innerHeight - 20;
870                                t.hasClass(n, "cc-top") && e.clientY < o && (i = !0), t.hasClass(n, "cc-bottom") && e.clientY > s && (i = !0), i ? t.hasClass(n, "cc-active") || t.addClass(n, "cc-active") : t.hasClass(n, "cc-active") && t.removeClass(n, "cc-active")
871                            }, 200);
872                            this.onMouseMove = o, window.addEventListener("mousemove", o)
873                        }
874                    }
875                }
876                var g = {
877                    enabled: !0,
878                    container: null,
879                    cookie: {
880                        name: "cookieconsent_status",
881                        path: "/",
882                        domain: "",
883                        expiryDays: 365
884                    },
885                    onPopupOpen: function() {},
886                    onPopupClose: function() {},
887                    onInitialise: function(e) {},
888                    onStatusChange: function(e, t) {},
889                    onRevokeChoice: function() {},
890                    content: {
891                        header: "Cookies used on the website!",
892                        message: "This website uses cookies to ensure you get the best experience on our website.",
893                        dismiss: "Got it!",
894                        allow: "Allow cookies",
895                        deny: "Decline",
896                        link: "Learn more",
897                        href: "http://cookiesandyou.com",
898                        close: "&#x274c;"
899                    },
900                    elements: {
901                        header: '<span class="cc-header">{{header}}</span>&nbsp;',
902                        message: '<span id="cookieconsent:desc" class="cc-message">{{message}}</span>',
903                        messagelink: '<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" target="_blank">{{link}}</a></span>',
904                        dismiss: '<a aria-label="dismiss cookie message" role=button tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>',
905                        allow: '<a aria-label="allow cookies" role=button tabindex="0"  class="cc-btn cc-allow">{{allow}}</a>',
906                        deny: '<a aria-label="deny cookies" role=button tabindex="0" class="cc-btn cc-deny">{{deny}}</a>',
907                        link: '<a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" target="_blank">{{link}}</a>',
908                        close: '<span aria-label="dismiss cookie message" role=button tabindex="0" class="cc-close">{{close}}</span>'
909                    },
910                    window: '<div role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent:desc" class="cc-window {{classes}}"><!--googleoff: all-->{{children}}<!--googleon: all--></div>',
911                    revokeBtn: '<div class="cc-revoke {{classes}}">Cookie Policy</div>',
912                    compliance: {
913                        info: '<div class="cc-compliance">{{dismiss}}</div>',
914                        "opt-in": '<div class="cc-compliance cc-highlight">{{dismiss}}{{allow}}</div>',
915                        "opt-out": '<div class="cc-compliance cc-highlight">{{deny}}{{dismiss}}</div>'
916                    },
917                    type: "info",
918                    layouts: {
919                        basic: "{{messagelink}}{{compliance}}",
920                        "basic-close": "{{messagelink}}{{compliance}}{{close}}",
921                        "basic-header": "{{header}}{{message}}{{link}}{{compliance}}"
922                    },
923                    layout: "basic",
924                    position: "bottom",
925                    theme: "block",
926                    "static": !1,
927                    palette: null,
928                    revokable: !1,
929                    animateRevokable: !0,
930                    showLink: !0,
931                    dismissOnScroll: !1,
932                    dismissOnTimeout: !1,
933                    autoOpen: !0,
934                    autoAttach: !0,
935                    whitelistPage: [],
936                    blacklistPage: [],
937                    overrideHTML: null
938                };
939                return n.prototype.initialise = function(e) {
940                    this.options && this.destroy(), t.deepExtend(this.options = {}, g), t.isPlainObject(e) && t.deepExtend(this.options, e), r.call(this) && (this.options.enabled = !1), m(this.options.blacklistPage, location.pathname) && (this.options.enabled = !1), m(this.options.whitelistPage, location.pathname) && (this.options.enabled = !0);
941                    var i = this.options.window.replace("{{classes}}
941", c.call(this).join(" ")).replace("{{children}}", l.call(this)),
942                        n = this.options.overrideHTML;
943                    if ("string" == typeof n && n.length && (i = n), this.options["static"]) {
944                        var o = u.call(this, '<div class="cc-grower">' + i + "</div>");
945                        o.style.display = "", this.element = o.firstChild, this.element.style.display = "none", t.addClass(this.element, "cc-invisible")
946                    } else this.element = u.call(this, i);
947                    b.call(this), y.call(this), this.options.autoOpen && this.autoOpen()
948                }, n.prototype.destroy = function() {
949                    this.onButtonClick && this.element && (this.element.removeEventListener("click", this.onButtonClick), this.onButtonClick = null), this.dismissTimeout && (clearTimeout(this.dismissTimeout), this.dismissTimeout = null), this.onWindowScroll && (window.removeEventListener("scroll", this.onWindowScroll), this.onWindowScroll = null), this.onMouseMove && (window.removeEventListener("mousemove", this.onMouseMove), this.onMouseMove = null), this.element && this.element.parentNode && this.element.parentNode.removeChild(this.element), this.element = null, this.revokeBtn && this.revokeBtn.parentNode && this.revokeBtn.parentNode.removeChild(this.revokeBtn), this.revokeBtn = null, f(this.options.palette), this.options = null
950                }, n.prototype.open = function(t) {
951                    if (this.element) return this.isOpen() || (e.hasTransition ? this.fadeIn() : this.element.style.display = "", this.options.revokable && this.toggleRevokeButton(), this.options.onPopupOpen.call(this)), this
952                }, n.prototype.close = function(t) {
953                    if (this.element) return this.isOpen() && (e.hasTransition ? this.fadeOut() : this.element.style.display = "none", t && this.options.revokable && this.toggleRevokeButton(!0), this.options.onPopupClose.call(this)), this
954                }, n.prototype.fadeIn = function() {
955                    var i = this.element;
956                    if (e.hasTransition && i && (this.afterTransition && s.call(this, i), t.hasClass(i, "cc-invisible"))) {
957                        if (i.style.display = "", this.options["static"]) {
958                            var n = this.element.clientHeight;
959                            this.element.parentNode.style.maxHeight = n + "px"
960                        }
961                        var r = 20;
962                        this.openingTimeout = setTimeout(o.bind(this, i), r)
963                    }
964                }, n.prototype.fadeOut = function() {
965                    var i = this.element;
966                    e.hasTransition && i && (this.openingTimeout && (clearTimeout(this.openingTimeout), o.bind(this, i)), t.hasClass(i, "cc-invisible") || (this.options["static"] && (this.element.parentNode.style.maxHeight = ""), this.afterTransition = s.bind(this, i), i.addEventListener(e.transitionEnd, this.afterTransition), t.addClass(i, "cc-invisible")))
967                }, n.prototype.isOpen = function() {
968                    return this.element && "" == this.element.style.display && (!e.hasTransition || !t.hasClass(this.element, "cc-invisible"))
969                }, n.prototype.toggleRevokeButton = function(e) {
970                    this.revokeBtn && (this.revokeBtn.style.display = e ? "" : "none")
971                }, n.prototype.revokeChoice = function(e) {
972                    this.options.enabled = !0, this.clearStatus(), this.options.onRevokeChoice.call(this), e || this.autoOpen()
973                }, n.prototype.hasAnswered = function(t) {
974                    return Object.keys(e.status).indexOf(this.getStatus()) >= 0
975                }, n.prototype.hasConsented = function(t) {
976                    var i = this.getStatus();
977                    return i == e.status.allow || i == e.status.dismiss
978                }, n.prototype.autoOpen = function(e) {
979                    !this.hasAnswered() && this.options.enabled && this.open()
980                }, n.prototype.setStatus = function(i) {
981                    var n = this.options.cookie,
982                        o = t.getCookie(n.name),
983                        s = Object.keys(e.status).indexOf(o) >= 0;
984                    Object.keys(e.status).indexOf(i) >= 0 ? (t.setCookie(n.name, i, n.expiryDays, n.domain, n.path), this.options.onStatusChange.call(this, i, s)) : this.clearStatus()
985                }, n.prototype.getStatus = function() {
986                    return t.getCookie(this.options.cookie.name)
987                }, n.prototype.clearStatus = function() {
988                    var e = this.options.cookie;
989                    t.setCookie(e.name, "", -1, e.domain, e.path)
990                }, n
991            }(), e.Location = function() {
992                function e(e) {
993                    t.deepExtend(this.options = {}, s), t.isPlainObject(e) && t.deepExtend(this.options, e), this.currentServiceIndex = -1
994                }
995                function i(e, t, i) {
996                    var n, o = document.createElement("script");
997                    o.type = "text/" + (e.type || "javascript"), o.src = e.src || e, o.async = !1, o.onreadystatechange = o.onload = function() {
998                        var e = o.readyState;
999                        clearTimeout(n), t.done || e && !/loaded|complete/.test(e) || (t.done = !0, t(), o.onreadystatechange = o.onload = null)
1000                    }, document.body.appendChild(o), n = setTimeout(function() {
1001                        t.done = !0, t(), o.onreadystatechange = o.onload = null
1002                    }, i)
1003                }
1004                function n(e, t, i, n, o) {
1005                    var s = new(window.XMLHttpRequest || window.ActiveXObject)("MSXML2.XMLHTTP.3.0");
1006                    if (s.open(n ? "POST" : "GET", e, 1), s.setRequestHeader("X-Requested-With", "XMLHttpRequest"), s.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), Array.isArray(o))
1007                        for (var r = 0, a = o.length; r < a; ++r) {
1008                            var c = o[r].split(":", 2);
1009                            s.setRequestHeader(c[0].replace(/^\s+|\s+$/g, ""), c[1].replace(/^\s+|\s+$/g, ""))
1010                        }
1011                    "function" == typeof t && (s.onreadystatechange = function() {
1012                        s.readyState > 3 && t(s)
1013                    }), s.send(n)
1014                }
1015                function o(e) {
1016                    return new Error("Error [" + (e.code || "UNKNOWN") + "]: " + e.error)
1017                }
1018                var s = {
1019                    timeout: 5e3,
1020                    services: ["freegeoip", "ipinfo", "maxmind"],
1021                    serviceDefinitions: {
1022                        freegeoip: function() {
1023                            return {
1024                                url: "//freegeoip.net/json/?callback={callback}",
1025                                isScript: !0,
1026                                callback: function(e, t) {
1027                                    try {
1028                                        var i = JSON.parse(t);
1029                                        return i.error ? o(i) : {
1030                                            code: i.country_code
1031                                        }
1032                                    } catch (n) {
1033                                        return o({
1034                                            error: "Invalid response 
1034(" + n + ")"
1035                                        })
1036                                    }
1037                                }
1038                            }
1039                        },
1040                        ipinfo: function() {
1041                            return {
1042                                url: "//ipinfo.io",
1043                                headers: ["Accept: application/json"],
1044                                callback: function(e, t) {
1045                                    try {
1046                                        var i = JSON.parse(t);
1047                                        return i.error ? o(i) : {
1048                                            code: i.country
1049                                        }
1050                                    } catch (n) {
1051                                        return o({
1052                                            error: "Invalid response (" + n + ")"
1053                                        })
1054                                    }
1055                                }
1056                            }
1057                        },
1058                        ipinfodb: function(e) {
1059                            return {
1060                                url: "//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}",
1061                                isScript: !0,
1062                                callback: function(e, t) {
1063                                    try {
1064                                        var i = JSON.parse(t);
1065                                        return "ERROR" == i.statusCode ? o({
1066                                            error: i.statusMessage
1067                                        }) : {
1068                                            code: i.countryCode
1069                                        }
1070                                    } catch (n) {
1071                                        return o({
1072                                            error: "Invalid response (" + n + ")"
1073                                        })
1074                                    }
1075                                }
1076                            }
1077                        },
1078                        maxmind: function() {
1079                            return {
1080                                url: "//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js",
1081                                isScript: !0,
1082                                callback: function(e) {
1083                                    return window.geoip2 ? void geoip2.country(function(t) {
1084                                        try {
1085                                            e({
1086                                                code: t.country.iso_code
1087                                            })
1088                                        } catch (i) {
1089                                            e(o(i))
1090                                        }
1091                                    }, function(t) {
1092                                        e(o(t))
1093                                    }) : void e(new Error("Unexpected response format. The downloaded script should have exported `geoip2` to the global scope"))
1094                                }
1095                            }
1096                        }
1097                    }
1098                };
1099                return e.prototype.getNextService = function() {
1100                    var e;
1101                    do e = this.getServiceByIdx(++this.currentServiceIndex); while (this.currentServiceIndex < this.options.services.length && !e);
1102                    return e
1103                }, e.prototype.getServiceByIdx = function(e) {
1104                    var i = this.options.services[e];
1105                    if ("function" == typeof i) {
1106                        var n = i();
1107                        return n.name && t.deepExtend(n, this.options.serviceDefinitions[n.name](n)), n
1108                    }
1109                    return "string" == typeof i ? this.options.serviceDefinitions[i]() : t.isPlainObject(i) ? this.options.serviceDefinitions[i.name](i) : null
1110                }, e.prototype.locate = function(e, t) {
1111                    var i = this.getNextService();
1112                    return i ? (this.callbackComplete = e, this.callbackError = t, void this.runService(i, this.runNextServiceOnError.bind(this))) : void t(new Error("No services to run"))
1113                }, e.prototype.setupUrl = function(e) {
1114                    var t = this.getCurrentServiceOpts();
1115                    return e.url.replace(/\{(.*?)\}/g, function(i, n) {
1116                        if ("callback" === n) {
1117                            var o = "callback" + Date.now();
1118                            return window[o] = function(t) {
1119                                e.__JSONP_DATA = JSON.stringify(t)
1120                            }, o
1121                        }
1122                        if (n in t.interpolateUrl) return t.interpolateUrl[n]
1123                    })
1124                }, e.prototype.runService = function(e, t) {
1125                    var o = this;
1126                    if (e && e.url && e.callback) {
1127                        var s = e.isScript ? i : n,
1128                            r = this.setupUrl(e);
1129                        s(r, function(i) {
1130                            var n = i ? i.responseText : "";
1131                            e.__JSONP_DATA && (n = e.__JSONP_DATA, delete e.__JSONP_DATA), o.runServiceCallback.call(o, t, e, n)
1132                        }, this.options.timeout, e.data, e.headers)
1133                    }
1134                }, e.prototype.runServiceCallback = function(e, t, i) {
1135                    var n = this,
1136                        o = function(t) {
1137                            s || n.onServiceResult.call(n, e, t)
1138                        },
1139                        s = t.callback(o, i);
1140                    s && this.onServiceResult.call(this, e, s)
1141                }, e.prototype.onServiceResult = function(e, t) {
1142                    t instanceof Error || t && t.error ? e.call(this, t, null) : e.call(this, null, t)
1143                }, e.prototype.runNextServiceOnError = function(e, t) {
1144                    if (e) {
1145                        this.logError(e);
1146                        var i = this.getNextService();
1147                        i ? this.runService(i, this.runNextServiceOnError.bind(this)) : this.completeService.call(this, this.callbackError, new Error("All services failed"))
1148                    } else this.completeService.call(this, this.callbackComplete, t)
1149                }, e.prototype.getCurrentServiceOpts = function() {
1150                    var e = this.options.services[this.currentServiceIndex];
1151                    return "string" == typeof e ? {
1152                        name: e
1153                    } : "function" == typeof e ? e() : t.isPlainObject(e) ? e : {}
1154                }, e.prototype.completeService = function(e, t) {
1155                    this.currentServiceIndex = -1, e && e(t)
1156                }, e.prototype.logError = function(e) {
1157                    var t = this.currentServiceIndex,
1158                        i = this.getServiceByIdx(t);
1159                    console.error("The service[" + t + "] (" + i.url + ") responded with the following error", e)
1160                }, e
1161            }(), e.Law = function() {
1162                function e(e) {
1163                    this.initialise.apply(this, arguments)
1164                }
1165                var i = {
1166                    regionalLaw: !0,
1167                    hasLaw: ["AT", "BE", "BG", "HR", "CZ", "CY", "DK", "EE", "FI", "FR", "DE", "EL", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "SK", "SI", "ES", "SE", "GB", "UK"],
1168                    revokable: ["HR", "CY", "DK", "EE", "FR", "DE", "LV", "LT", "NL", "PT", "ES"],
1169                    explicitAction: ["HR", "IT", "ES"]
1170                };
1171                return e.prototype.initialise = function(e) {
1172                    t.deepExtend(this.options = {}, i), t.isPlainObject(e) && t.deepExtend(this.options, e)
1173                }, e.prototype.get = function(e) {
1174                    var t = this.options;
1175                    return {
1176                        hasLaw: t.hasLaw.indexOf(e) >= 0,
1177                        revokable: t.revokable.indexOf(e) >= 0,
1178                        explicitAction: t.explicitAction.indexOf(e) >= 0
1179                    }
1180                }, e.prototype.applyLaw = function(e, t) {
1181                    var i = this.get(t);
1182                    return i.hasLaw || (e.enabled = !1), this.options.regionalLaw && (i.revokable && (e.revokable = !0), i.explicitAction && (e.dismissOnScroll = !1, e.dismissOnTimeout = !1)), e
1183                }, e
1184            }(), e.initialise = function(t, i, n) {
1185                var o = new e.Law(t.law);
1186                i || (i = function() {}), n || (n = function() {}), e.getCountryCode(t, function(n) {
1187                    delete t.law, delete t.location, n.code && (t = o.applyLaw(t, n.code)), i(new e.Popup(t))
1188                }, function(i) {
1189                    delete t.law, delete t.location, n(i, new e.Popup(t))
1190                })
1191            }, e.getCountryCode = function(t, i, n) {
1192                if (t.law && t.law.countryCode) return void i({
1193                    code: t.law.countryCode
1194                });
1195                if (t.location) {
1196                    var o = new e.Location(t.location);
1197                    return void o.locate(function(e) {
1198                        i(e || {})
1199                    }, n)
1200                }
1201                i({})
1202            }, e.utils = t, e.hasInitialised = !0, window.cookieconsent = e
1203        }
1204    }(window.cookieconsent || {});
1205</script>
1205
1206 
1207</body>
1208</html> 
1209   

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.