https://familyecho.com/

ID de exploración:
75a6cac0-4abd-4078-adda-08affbb9559dFinalizado
URL enviada:
https://familyecho.com/
Informe finalizado:

Enlaces: 1 encontrados

EnlaceTexto
http://www.magicbabynames.com/Baby Names

Variables JavaScript: 520 encontradas

NombreTipo
0object
1object
2object
3object
4object
5object
6object
7object
8object
9object

Mensajes de registro de la consola: 3 encontrados

TipoCategoríaRegistro
logother
URL
https://feature-adengine.snigelweb.com/familyecho.com/12802-1732271154729/adngin.js
Texto
%c【AdEngine】(SN-16539_exp-9999) queued at 1282ms and loaded in 343ms. (familyecho.com:12802-1732271154729-default) color:#2dc9ac;
errorsecurity
URL
https://familyecho.com/
Texto
Access to fetch at 'https://api.rlcdn.com/api/identity/envelope?pid=107' from origin 'https://familyecho.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
errornetwork
URL
https://api.rlcdn.com/api/identity/envelope?pid=107
Texto
Failed to load resource: net::ERR_FAILED

HTML

<html><head><script type="text/javascript" async="" src="https://static.criteo.net/js/ld/publishertag.prebid.js"></script><script type="text/javascript" async="" src="https://script.4dex.io/localstore.js"></script>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		
		<title>Family Echo - Draw, Share and Print Your Online Family Tree</title>
		
		<meta name="Description" content="Draw your family tree online and share it with relatives. Add photos and biographical details. Print the family tree or download to own computer.">

		
<!--
	This Family Echo file is Copyright (c) Familiality Ltd.

	You are not permitted to distribute, copy, modify, merge, publish,
	sublicense, rent, sell, lease, loan, decompile, reverse engineer or
	create derivative works from this file.

	This copyright and license notice must be kept in this file at all times.
-->
		
		<style>

body {margin:0px;}
body.dark {background:#282828;}
body,td,select {font-family:arial; font-size:12px; color:black;}
body.dark,.dark td,.dark th,.dark select {color:#ccc;}
a:link, a:active, a:visited {text-decoration:none; color:#009;}
.dark a:link, .dark a:active, .dark a:visited {text-decoration:none; color:#99c;}
a:hover, .dark a:hover {text-decoration:underline;}
a.selbold {color:black; font-weight:bold;}

input, select, textarea {padding:1px;}
.dark input, .dark select, .dark textarea {padding:2px; background-color:#111; color:#ccc; border-color:#999; border-style:solid; border-radius:3px; border-width:1px;}

.felogo {filter: drop-shadow(1px 1px 0px #dddddd);}
.dark .felogo {filter:  brightness(2);}
#lfamilyname {color:#7F2020;}
.dark #lfamilyname {color:#d65c5c;}
#lfamilyinfo {font-size:12px;}
#lfamilylabels {font-size:14px;}
.lfamilylabel {color:white; padding:3px 5px; border-radius:5px; background:linear-gradient(to right, #B8860B, #CD950C, #B8860B);}
#footerlang img {width:16px; height:16px; vertical-align:middle; margin-right:4px;}
#langoverlay {position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0, 0, 0, 0.5); justify-content:center; align-items:center;}
#langcontent {background:white; padding:16px; border:1px solid #999; max-height:80%; max-width:80%; overflow:auto; position:relative;}
#langlist {font-size:125%; columns:3; column-gap:2em; line-height:1.4em;}
#langclose {float:right; font-weight:bold; text-decoration:none; font-size:150%;}
#langtitle {font-size:150%; margin-bottom:1em;}
#langfooter {font-size:125%; margin-top:1em;}

.lbody {background-color:#e8e8e8;}
.dark .lbody,.dark.lbody {background-color:#111;}
.rbody {background-color:white;}
.dark .rbody {background:#282828;}
.mbody {background-color:#ddddff; border:outset #666666 2px; padding:16px;}
.dark .mbody {background:#111; border:#999 2px solid;}
.fullsize {width:100%; height:100%;}
.bordered {border:solid #666 1px;}
.dark .bordered {border-color:#999;}
.bordertop {border-top:solid #666 1px;}
.dark .bordertop {border-color:#999;}

.dark #treediv {background-color:#282828;}
#fadediv {background-image: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1));}
.dark #fadediv {background-image: linear-gradient(to bottom, rgba(40,40,40,0), rgba(40,40,40,1));}

.tm {margin-top:12px; margin-bottom:0px;}
.td {margin-top:24px; margin-bottom:0px;}
.tt {margin-top:36px; margin-bottom:0px;}
.pt {margin-top:12px; margin-bottom:24px; text-align:center; font-weight:bold; font-size:20px;}

.hiderows {display: none;}
.showrows {display: block; display:table-row-group;}

.dline,.ddotted,.ddashed {position:absolute; font-size:0px; line-height:0%;}
.dline {background-color:#444;}
.dark .dline {background-color:#bbb;}
.dline.gray {background-color:#bbb;}
.dark .dline.gray {background-color:#666;}
.ddotted {border-top:dotted; border-left:dotted;}
.ddashed {border-top:dashed; border-left:dashed;}
.ddotted,.ddashed {border-color:#444;}
.dark .ddotted, .dark .ddashed {border-color:#bbb;}
.ddotted.gray, .ddashed.gray {border-color:#bbb;}
.dark .ddotted.gray, .dark .ddashed.gray {border-color:#444;}

.dp {position:absolute; text-align:center; overflow-wrap: break-word;}
.dpt {position:absolute; bottom:4px; left:4px; right:4px;}
.dpb {position:absolute; top:4px; left:4px; right:4px;}
.dbox {border-radius:8px; border: solid #222; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);}
.dark .dbox {border-color:#ddd; box-shadow: 0 4px 8px 0 rgba(255, 255, 255, 0.1), 0 6px 20px 0 rgba(255, 255, 255, 0.09);}
.dcell {text-align:center; overflow:hidden;}
.dcell img {outline:1px solid #888; outline-offset:-1px;}
.dc {display:block; border:0 solid #000; border-width:0 1px;}
.di {position:absolute; cursor:pointer; overflow:hidden;}

.sname {font-size:18px; font-weight:bold; color:#000000; text-align:center;}
.dark .sname {color:#ccc;}
.sdefname {font-size:18px; color:#666666; text-align:center;}
.simage {border:1px #666666 solid;}
.snormal {padding:2px 4px 2px 4px;}
.sleft {color:#222222; padding:2px 2px 2px 6px; text-align:end; padding-inline-start:6px; padding-inline-end:2px;}
.dark .sleft {color:#bbb;}
.sright {width:176px; padding:2px 6px 2px 2px; padding-inline-start:2px; padding-inline-end:6px;}
.sboth {padding:2px 4px 2px 4px; text-align:center;}
.sfield {width:176px; font-family:arial; font-size:12px;}
.sfieldexpand {width:160px; font-family:arial; font-size:12px;}
.syear {width:3.5em;}
.sselect {font-family:arial; font-size:12px; max-width:240px;}
.ibutton, .sbutton, .sbutton2, .sbutton4 {font-family:arial; font-size:12px; padding:1px 2px; text-overflow:ellipsis;}
.sbutton {width:240px;}
.sbutton2 {width:112px;}
.sbutton4 {width:52px;}
.spanel {border-left:solid #666666 1px; border-right:solid #666666 1px; border-bottom:solid #666666 1px;}
.sswitch {padding-bottom:4px; border-bottom:solid #666666 1px; padding-left:5px; padding-top:5px; padding-right:5px;}
.sswitched {padding:4px; padding-bottom:5px; border-left:solid #666666 1px; border-top:solid #666666 1px; border-right:solid #666666 1px; }
.sswitch,.sswitched {word-break:break-all;}
.slist {background:white;}
.dark .slist {background:#282828;}
.slist a,.slist div {padding:2px 4px; display:block; color:#000;}
.slist a:hover {background:#ddd; text-decoration:none;}
.dark .slist a:hover {background:#444;}
a.sdatelink:hover {text-decoration:none;}
.snameedit {width:240px; text-align:center;}
.snamelist {width:240px; height:20em; padding:2px 0; background:#fff; border:1px solid black; text-align:start; overflow-x:hidden; overflow-y:auto; display:inline-block;}
.dark .snamelist {background:#282828;}
.snamelist a,.snamelist div {padding:2px 4px; display:block; color:#000;}
.snamelist a:hover {background:#ddd; text-decoration:none;}
.dark .snamelist a:hover {background:#444;}
.snamelist a.snamesel {background:#bbb;}
.dark .snamelist a.snamesel {background:#333;}

.icon {width:22px; height:22px; border:0; margin-left:2px;}
.dark .icon {filter:invert(100%); opacity:0.8;}
.iconlabel,#optionslinktext {margin-left:4px; margin-right:2px;}
.cornerbtn {width:16px; height:16px; margin:8px; cursor:pointer;}
.dark .cornerbtn {filter:invert(100%);}
.marginon {left:0px; top:0px; height:100%; margin-left:320px; margin-right:0px;}
.marginoff {left:0px; top:0px; height:100%; margin-left:0px; margin-right:0px;}
.dright {position:absolute; left:0px; width:100%}
.dleft {position:absolute; left:0px; top:0px; width:320px; border-right:solid #666666 1px; height:100%; overflow-y:auto;}

.option {height:16%; vertical-align:middle;}
input[type=range] { vertical-align:middle; padding-top:4px; padding-bottom:4px; }
input[type=range]::-ms-tooltip { display: none; }
input[type=checkbox] { vertical-align:middle; position:relative; top:-1px;}
input[type=radio] { vertical-align:middle; margin-top:-2px; }
input[type=color] { height:24px; }

.cleft {}
.cright {vertical-align:middle; width:6em; margin:1px 0;}
.creset {font-size:80%;}

.lleft {}
.lright {margin:1px 0;}

.oleft {}
.oright {width:6em; margin:1px 0;}

.pi {margin:0;}
.ps {font-weight:bold; margin:0;}
.ps a {text-decoration:none; cursor:pointer; color:black;}
.pr {font-size:150%; margin:0;}
.pa {font-size:200%; margin:0 0 6px 0;}
.pl {background:#f4f4f4; border:1px solid #ddd; padding:8px 16px; margin:6px 0;}
.dark .pl {background:#1c1c1c; border-color:#999}

.ct {width:100%; margin-top:-12px;}
.cm {text-align:center; font-weight:bold; font-size:15px; padding:18px 0 6px 6px; padding-inline-start:6px; padding-inline-end:0;}
.cl {text-align:right; padding:1px 0 1px 6px; vertical-align:baseline; font-weight:bold; padding-inline-start:6px; padding-inline-end:0;}
.cr {padding:1px 4px; vertical-align:baseline;}
.hg {margin:6px 0;}

.fboth {padding:3px 6px 3px 6px;}
#fileattachrows .snameedit, #fileattachrows .snamelist, #fileattachrows select {width:100%;}
.fattachsel {padding-bottom:4px;}
.fattachpm {white-space: nowrap; padding-left:0; text-align:right;}
.fattachpmlink {font-size:18px; font-weight:bold;}
a.fattachpmlink:hover {text-decoration:none;}

#filestable {position:relative; border-collapse:collapse; border-spacing:0;}
#filestable th, .filesrow > td {font-size:14px; padding-top:6px; padding-bottom:6px; text-align:start; box-sizing:border-box;}
#filestable th {font-weight:bold; position:sticky; top:0; background:white; border-bottom:1px #ccc solid; vertical-align:middle;}
.dark #filestable th {background:#111;}
.filesrow > td {vertical-align:top;} 
#filesheader a {color:black;}
.dark #filesheader a {color:#ccc;}
#filesrows > tr:nth-child(odd) {background: #eee;}
.dark #filesrows > tr:nth-child(odd) {background: #191919;}
.fname {padding-left:9px; padding-right:6px; padding-inline-start:9px; padding-inline-end:6px; width:25%;}
.fdesc, .fattach {padding-left:6px; padding-right:6px;}
.fdesc {width:35%;}
.fattach {width:25%;}
.fattach .snameedit, .fattach .snamelist {width:100%;}
.ftype, .fsize, .fuploaded, .fbuttons {white-space:nowrap; padding-left:12px; padding-right:6px; padding-inline-start:12px; padding-inline-end:6px;}
.fbuttons {width:5%; padding-inline-end:12px;}
#filesrows .fnone {padding:16px; font-style:italic; text-align:center; background:white;}
#filestable textarea {font-family:arial; font-size:14px; padding:2px; vertical-align:top;}

#uploaddiv td {font-size:14px;}
#uploaddiv textarea, #uploadattachrows input {font-family:arial; font-size:14px;}
.uleft {text-align:end;}
#uploadattachrows .snameedit, #uploadattachrows .snamelist, #uploadattachrows select {width:100%;}
#uploadattachrows .fattachsel {width:100%;}
#uploadattachrows .fattachpm {padding-inline-start:8px;}
#uploaddiv input[type=submit] {padding:3px 6px;}

.blankpixel {background-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== );}

@media screen and (max-width:1200px) {
	#ad-leaderboard {display:none;}
}

.nshrink1 .iconlabel {display:none;}
.nshrink2 #showzoom {display:none;}
.nshrink3 #backto {display:none;}
.nshrink4 #optionslinktext {display:none;}
.nshrink5 .buttondash {display:none;}


</style>
		
		<script language="JavaScript"><!--
		var staticMode=false;
		var hideSidebar=false;
		var noCentering=false;
		var defaultZoom=1.25;
		var defaultDetail=null;
		var defaultBirthName=0;
		var defaultSurnameFirst=0;
		var defaultMaleLeft=0;
		var defaultCousins=2;
		var defaultChildren=8;
		var defaultParents=5;
		var defaultColors={
			back : '#FFFFFF',
			male : '#D6DDFF',
			female : '#FFD6EE',
			other : '#FFFFFF',
			living : '#000000',
			deceased : '#777777'
		};
		var defaultWidth=1;
		var defaultTextSize=1;
		var defaultLines={
			current : 'thick',
			otherpartner : 'medium',
			biological : 'medium',
			otherparent : 'gray'
		};
		--></script>

		<script type="text/javascript">


var locale_value="en";
var locale_rtl=false;
var locale_names={"en":"English","ar":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabic)","fa":"\u0641\u0627\u0631\u0633\u06cc (Persian)","ur":"\u0627\u0631\u062f\u0648 (Urdu)","he":"\u05e2\u05d1\u05e8\u05d9\u05ea (Hebrew)","de":"Deutsch (German)","es":"Espa\xf1ol (Spanish)","fr":"Fran\xe7ais (French)","ru":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)","it":"Italiano (Italian)","pt":"Portugu\xeas (Portuguese)","tr":"T\xfcrk\xe7e (Turkish)","nl":"Nederlands (Dutch)","pl":"Polski (Polish)","cs":"\u010ce\u0161tina (Czech)","uk":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 (Ukrainian)","el":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac (Greek)","sv":"Svenska (Swedish)","ro":"Rom\xe2n\u0103 (Romanian)","hu":"Magyar (Hungarian)","da":"Dansk (Danish)","sk":"Sloven\u010dina (Slovak)","fi":"Suomi (Finnish)","sr":"\u0421\u0440\u043f\u0441\u043a\u0438 (Serbian)","no":"Norsk (Norwegian)","bg":"\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 (Bulgarian)","lt":"Lietuvi\u0173 (Lithuanian)","sl":"Sloven\u0161\u010dina (Slovene)","ca":"Catal\xe0 (Catalan)","et":"Eesti (Estonian)","lv":"Latvie\u0161u (Latvian)","hr":"Hrvatski (Croatian)","hy":"\u0540\u0561\u0575\u0565\u0580\u0565\u0576 (Armenian)","ka":"\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8 (Georgian)","sq":"Shqip (Albanian)","is":"\xcdslenska (Icelandic)","bs":"Bosanski (Bosnian)","mk":"\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438 (Macedonian)","hi":"\u0939\u093f\u0928\u094d\u0926\u0940 (Hindi)","bn":"\u09ac\u09be\u0982\u09b2\u09be (Bengali)","kn":"\u0c95\u0ca8\u0ccd\u0ca8\u0ca1 (Kannada)","te":"\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41 (Telugu)","mr":"\u092e\u0930\u093e\u0920\u0940 (Marathi)","gu":"\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0 (Gujarati)","ml":"\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02 (Malayalam)","pa":"\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40 (Punjabi)","ta":"\u0ba4\u0bae\u0bbf\u0bb4\u0bcd (Tamil)","ja":"\u65e5\u672c\u8a9e (Japanese)","zh":"\u4e2d\u6587 (Chinese)","vi":"Ti\u1ebfng Vi\u1ec7t (Vietnamese)","id":"Indonesia (Indonesian)","ko":"\ud55c\uad6d\uc5b4 (Korean)","th":"\u0e44\u0e17\u0e22 (Thai)","ms":"Melayu (Malay)","tl":"Filipino (Tagalog)","kk":"\u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456 (Kazakh)","si":"\u0dc3\u0dd2\u0d82\u0dc4\u0dbd (Sinhala)","my":"\u1019\u103c\u1014\u103a\u1019\u102c (Burmese)","jv":"Jawa (Javanese)","ne":"\u0928\u0947\u092a\u093e\u0932\u0940 (Nepali)","sw":"Kiswahili (Swahili)","uz":"O\u2018zbek (Uzbek)"};
var locale_phrases={"^":{"one":"^st","two":"^nd","few":"^rd","str":"^th"},"Mth_1":{"str":"Jan"},"Month_1":{"str":"January"},"Mth_2":{"str":"Feb"},"Month_2":{"str":"February"},"Mth_3":{"str":"Mar"},"Month_3":{"str":"March"},"Mth_4":{"str":"Apr"},"Month_4":{"str":"April"},"Mth_5":{"str":"May"},"Month_5":{"str":"May"},"Mth_6":{"str":"Jun"},"Month_6":{"str":"June"},"Mth_7":{"str":"Jul"},"Month_7":{"str":"July"},"Mth_8":{"str":"Aug"},"Month_8":{"str":"August"},"Mth_9":{"str":"Sep"},"Month_9":{"str":"September"},"Mth_10":{"str":"Oct"},"Month_10":{"str":"October"},"Mth_11":{"str":"Nov"},"Month_11":{"str":"November"},"Mth_12":{"str":"Dec"},"Month_12":{"str":"December"},"# ancestor/s":{"str":"# ancestors","one":"# ancestor"},"# descendant/s":{"str":"# descendants","one":"# descendant"},"# day/s old":{"str":"# days old","one":"# day old"},"# day/s":{"str":"# days","one":"# day"},"# month/s old":{"str":"# months old","one":"# month old"},"# month/s":{"str":"# months","one":"# month"},"# year/s old":{"str":"# years old","one":"# year old"},"# year/s":{"str":"# years","one":"# year"},"# file/s":{"str":"# files","one":"# file"},"# people":{"str":"# people","one":"# person"},"^ birthday":{"one":"^st birthday","two":"^nd birthday","few":"^rd birthday","str":"^th birthday"},"^ anniversary":{"one":"^st anniversary","two":"^nd anniversary","few":"^rd anniversary","str":"^th anniversary"},"Female cousin":{"str":"Cousin"},"Male cousin":{"str":"Cousin"},"Female second cousin":{"str":"Second cousin"},"Female third cousin":{"str":"Third cousin"},"Female fourth cousin":{"str":"Fourth cousin"},"Male fourth cousin":{"str":"Fourth cousin"},"Distant female cousin (# degrees)":{"str":"Distant Cousin (# degrees)"},"Distant male cousin (# degrees)":{"str":"Distant Cousin (# degrees)"},"Male second cousin":{"str":"Second cousin"},"Male third cousin":{"str":"Third cousin"}};
</script>
		<script type="text/javascript">


function GE(e){
return document.getElementById(e);
}
function SV(e,v){
GE(e).value=v?v:"";
}
function GV(e){
return GE(e).value;
}
function WV(e1,e2){
var t=GV(e1);
SV(e1,GV(e2));
SV(e2,t);
}
function SO(e,v){
var s=GE(e);
var v=v?v:"";
for(var j=0;j<s.options.length;j++){
if(s.options[j].value==v){
s.selectedIndex=j;
}
}
}
function GO(e){
var v=GE(e);
return v.options[v.selectedIndex].value;
}
function SS(e,s){
GE(e).style.display=s?"inline":"none";
}
function GS(e){
return GE(e).style.display!="none";
}
function SI(e,v){
GE(e).style.visibility=v?"visible":"hidden";
}
function GI(e){
return GE(e).style.visibility!="hidden";
}
function SD(e,v){
GE(e).disabled=v?true:false;
}
function FS(e){
GE(e).focus();
GE(e).select();
}
function SR(e,s){
GE(e).className=s?"showrows":"hiderows";
}
function SH(e,h){
GE(e).innerHTML=h;
}
function ST(e,t){
GE(e).innerHTML=EH(t);
}
function NE(s){
return s.replace(/\r\n?/g,"\n");
}
function EH(v){
return v.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
}
function EL(v){
return v?EH(v.replace(/\n/g,"^$")).replace(/\^\$/g,"<BR>"):"";
}
function CU(v){
return v?v.replace(/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,function(url){
return "<a href=\""+url+"\" target=\"_blank\">"+url+"</a>";
}):"";
}
function SB(v){
return v.replace(/\//g,"/<wbr>");
}
function DT(){
return (new Date()).getTime();
}
function BR(_23,_24,_25){
var url=_23+"ap_"+_24+".php?";
for(var j in _25){
if(_25[j]!=null){
url+=(j+"="+escape(_25[j])+"&");
}
}
return url;
}
function BA(_28,_29,_2a){
return BR(_28,_29,_2a)+"_="+(DT()+Math.random());
}
function AG(_2b,_2c,_2d,_2e){
AP(_2b,_2c,"",_2d,_2e);
}
function AP(_2f,_30,_31,_32,_33){
var xhr=new XMLHttpRequest();
xhr.open("POST",BA("ap/",_2f,_30),true);
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
_32(_2f,_33,((xhr.status==200)&&xhr.responseText)?eval("("+xhr.responseText+")"):{});
}
};
xhr.send(_31);
}
var Bw=null;
function CE(w){
Bw=w;
window.onerror=SE;
}
function TR(){
var s="";
for(var a=TR;a;a=a.caller){
s+=(a.name||a.toString().match(/function (\w*)/))+"<";
if(a.caller==a){
break;
}
}
return s;
}
function SE(m,u,l,w){
w=w||window;
if(Bw){
if(Bw.SE){
Bw.SE(m,u,l,w);
}
}else{
AP("log_js_error",{},m+"|"+(w?w.location:"")+"|"+u+"|"+l+"|",function(){
},null);
}
}
function RE(e){
alert(e);
}
function SC(n,v,s){
var d=new Date();
d.setTime(d.getTime()+365*86400000);
var t=".familyecho.com";
document.cookie=n+"="+v+"; expires="+d.toGMTString()+"; path=/"+((s&&(window.location.hostname.substr(-t.length)==t))?("; domain="+t):"");
}
function GC(n){
var cs=document.cookie.split(";");
for(var j=0;j<cs.length;j++){
var c=cs[j];
while(c.charAt(0)==" "){
c=c.substring(1,c.length);
}
if(c.substring(0,n.length+1)==(n+"=")){
return c.substring(n.length+1,c.length);
}
}
return null;
}
function UL(l){
var dw=self.screen.width,dh=self.screen.height;
if(top.innerHeight){
dw=top.innerWidth;
dh=top.innerHeight;
}else{
if(top.document.documentElement&&top.document.documentElement.clientHeight){
dw=top.document.documentElement.clientWidth;
dh=top.document.documentElement.clientHeight;
}else{
if(top.document.body){
dw=top.document.body.clientWidth;
dh=top.document.body.clientHeight;
}
}
}
var w=window.open(l.href,"uplink","toolbar=1,location=1,status=1,menubar=1,scrollbars=1,resizable=1,"+"width="+(dw-64)+",height="+(dh-64));
if(w){
w.focus();
}
return !w;
}
var Dp=false;
var Lp=false;
function _i(_4a){
return _4a;
}
function _t(_4b){
var _4c=Array.from(arguments);
_4c=_4c.slice(1);
_4b=SL(_4b,_4c);
_4b=SN(_4b,_4c);
return _4b;
}
function _h(_4d){
var _4e=Array.from(arguments);
_4e=_4e.slice(1);
_4d=SL(_4d,_4e);
_4d=SN(_4d,_4e);
_4d=EH(_4d);
_4d=SG(_4d,_4e);
return _4d;
}
var Pr=null,ordinalRules=null;
function SL(_4f,_50){
if((typeof Intl!=="undefined")&&(typeof Intl.PluralRules!==undefined)){
if(!Pr){
Pr=new Intl.PluralRules(locale_value);
}
if(!ordinalRules){
ordinalRules=new Intl.PluralRules(locale_value,{"type":"ordinal"});
}
}
var _51="str";
var _52=_4f.indexOf("#");
if(_52>=0){
if(Pr){
var _53=(_4f.substring(0,_52).match(/\$/g)||[]).length;
var _54=_50[_53];
if(Number.isInteger(parseFloat(_54))){
_51=Pr.select(parseInt(_54));
}
}
}else{
var _55=_4f.indexOf("^");
if(_55>=0){
if(ordinalRules){
var _53=(_4f.substring(0,_55).match(/\$/g)||[]).length;
var _54=_50[_53];
if(Number.isInteger(parseFloat(_54))){
_51=ordinalRules.select(parseInt(_54));
}
}
}
}
var _56=undefined;
if(locale_phrases[_4f]){
_56=locale_phrases[_4f][_51];
var _57=["str","many","few","two","one","zero"];
for(var i=0;i<_57.length;i++){
if(_56!==undefined){
break;
}else{
_56=locale_phrases[_4f][_57[i]];
}
}
}
if(_56===undefined){
_56=_4f;
}
if(Dp){
return "{"+_56+"}";
}else{
if(Lp){
return _56+_56;
}else{
return _56;
}
}
}
function SN(_59,_5a){
var _5b=(_59.match(/[\$\#\^]/g)||[]).length;
var _5c=_5b>1;
var _5d=_5c?/([\#\$\^])([1-9])/:/([\$\#\^])/;
var _5e=0;
while(true){
var _5f=_59.slice(_5e).match(_5d);
if(!_5f){
break;
}
var _60=_59.indexOf(_5f[0],_5e);
var _61=_5f[0].length;
var _62=_5f[1];
var _63=_5c?_5f[2]:1;
var _64=_5a[_63-1];
if(_64===undefined){
_64=_62;
}
if(Dp){
_64=_62+_64+_62;
}
_59=_59.substr(0,_60)+_64+_59.substr(_60+_61);
_5e=_60+_64.length;
}
_5a.splice(0,_5b);
return _59;
}
function SG(_65,_66){
var _67=0;
while(true){
var _68=_65.indexOf("&lt;",_67);
if(_68>=0){
var _69=_65.indexOf("&gt;",_68);
}
if((_68>=0)&&(_69>=0)){
var _6a=_66.shift();
if(_6a===undefined){
_6a="a href=\"#\"";
}
_6a=_6a.trim();
var _6b=_6a.search(/[ \t]/);
if(_6b<0){
_6b=_6a.length;
}
var _6c=_65.substr(_69+4);
_65=_65.substr(0,_68)+"<"+_6a+">"+_65.substr(_68+4,_69-_68-4)+"</"+_6a.substr(0,_6b)+">"+_6c;
_67=_65.length-_6c.length;
}else{
break;
}
}
return _65;
}
var Lf=null;
function LF(_6d){
Lf=_6d;
SS("footerlang",true);
var c=locale_names[locale_value];
ST("currentlang",c);
if((locale_value!="en")&&GC("langnote")){
alert(_t("Some of the $ translation is AI-generated, so it may not be perfect.",c)+" "+_t("Please contact us if you would like to help improve the $ translation.",c));
SC("langnote","");
}
}
function LL(){
var ls=[];
for(var l in locale_names){
ls[ls.length]={l:l,c:locale_names[l],s:(l==locale_value)};
}
ls=ls.sort(function(a,b){
return a.c.localeCompare(b.c);
});
return ls;
}
function LC(){
var h="<a id=\"langclose\" HREF=\"#\" TITLE=\"Close\" onClick=\"LH(); return false;\">&#x2715;</a>";
h+="<div id=\"langtitle\">Please click to choose your preferred language:</div>";
var ls=LL();
h+="<div id=\"langlist\">";
for(var i=0;i<ls.length;i++){
h+="<a href=\"#\" onClick=\"LS('"+ls[i].l+"'); return false;\">"+(ls[i].s?"<B>":"")+EH(ls[i].c)+(ls[i].s?"</B>":"")+"</a><br>";
}
h+="</div>";
h+="<div id=\"langfooter\">Some of these translations are AI-generated, so they may not be perfect.<br>"+"Please <a href=\"?page=feedback\" target=\"_blank\">contact us</a> if you would like to help improve Famliy Echo in your language.</div>";
SH("langcontent",h);
GE("langoverlay").style.display="flex";
}
function LH(){
SS("langoverlay",false);
}
function LS(l){
SC("lang",l,true);
SC("langnote",1);
if(Lf){
document.forms[Lf].submit();
}else{
var u=new URL(location.href);
var m="delete";
u.searchParams[m]("lang");
location.href=u.href;
}
}
</script>
		<script type="text/javascript">


var Fmn=["",_t("Mth_1"),_t("Mth_2"),_t("Mth_3"),_t("Mth_4"),_t("Mth_5"),_t("Mth_6"),_t("Mth_7"),_t("Mth_8"),_t("Mth_9"),_t("Mth_10"),_t("Mth_11"),_t("Mth_12")];
var Fgn={"":"","f":_t("Female"),"m":_t("Male"),"o":_t("Other")};
var Fvn={"":_t("Known date"),"app":_t("Approximate"),"bef":_t("Before"),"aft":_t("After"),"bet":_t("Date range")};
function FAA(a,v){
a[a.length]=v;
}
function FAN(a,a2){
for(var j=0;j<a2.length;j++){
if(a.indexOf(a2[j])<0){
a[a.length]=a2[j];
}
}
}
function FAI(a,ar){
for(var j=0;j<ar.length;j++){
var i=a.indexOf(ar[j]);
if(i>=0){
a.splice(i,1);
}
}
}
function FRF(f,ap,fp){
for(var i in f){
var p=f[i];
p.c=[];
p.pc={};
p.fg=false;
if(p.m&&!f[p.m]){
p.m=null;
}
if(p.f&&!f[p.f]){
p.f=null;
}
if(p.s&&!f[p.s]){
p.s=null;
}
if(p.X&&!f[p.X]){
p.X=null;
}
if(p.Y&&!f[p.Y]){
p.Y=null;
}
if(p.K&&!f[p.K]){
p.K=null;
}
if(p.L&&!f[p.L]){
p.L=null;
}
if(p.s){
p.pc[p.s]=true;
}
if(p.ep){
for(var j in p.ep){
if(p.ep[j]&&f[j]){
p.pc[j]=true;
}
}
}
}
var ai=0;
for(var i in f){
var p=f[i];
var j=0;
if(p.m||p.f){
j++;
p["m"+j]=p.m;
p["f"+j]=p.f;
p["t"+j]=p.V;
}
if(p.X||p.Y){
j++;
p["m"+j]=p.X;
p["f"+j]=p.Y;
p["t"+j]=p.W;
}
if(p.K||p.L){
j++;
p["m"+j]=p.K;
p["f"+j]=p.L;
p["t"+j]=p.Q;
}
while(j<3){
j++;
p["m"+j]=null;
p["f"+j]=null;
p["t"+j]=null;
}
var m1=p.m1;
var f1=p.f1;
var m2=p.m2;
var f2=p.f2;
var m3=p.m3;
var f3=p.f3;
p.i=i;
p.h=null;
ai++;
p.ai=ai;
if(p.p){
p.h=FDN(p,false,0);
}
if(m1&&f1){
f[m1].pc[f1]=true;
f[f1].pc[m1]=true;
}
if(m2&&f2){
f[m2].pc[f2]=true;
f[f2].pc[m2]=true;
}
if(m3&&f3){
f[m3].pc[f3]=true;
f[f3].pc[m3]=true;
}
if(m1){
FAA(f[m1].c,i);
}
if(f1&&(f1!=m1)){
FAA(f[f1].c,i);
}
if(m2&&(m2!=m1)&&(m2!=f1)){
FAA(f[m2].c,i);
}
if(f2&&(f2!=m1)&&(f2!=f1)&&(f2!=m2)){
FAA(f[f2].c,i);
}
if(m3&&(m3!=m1)&&(m3!=f1)&&(m3!=m2)&&(m3!=f2)){
FAA(f[m3].c,i);
}
if(f3&&(f3!=m1)&&(f3!=f1)&&(f3!=m2)&&(f3!=f2)&&(f3!=m3)){
FAA(f[f3].c,i);
}
}
for(var i in f){
var p=f[i];
var mi=p.m1;
var fi=p.f1;
if(!p.h){
if(i==ap){
p.h=_t("Me");
}else{
if(i==fp){
p.h=_t("Founder");
}else{
var r=p["^"];
if(r&&f[r]&&f[r].h){
var s=null;
if((r==mi)||(r==fi)){
s=FIT(p.V,p.g);
}else{
if(f[r].m==i){
s=FPT(f[r].V,p.g,"f",1);
}else{
if(f[r].f==i){
s=FPT(f[r].V,p.g,"m",1);
}else{
if(f[r].X==i){
s=FPT(f[r].W,p.g,"f",2);
}else{
if(f[r].Y==i){
s=FPT(f[r].W,p.g,"m",2);
}else{
if(f[r].K==i){
s=FPT(f[r].W,p.g,"f",3);
}else{
if(f[r].L==i){
s=FPT(f[r].W,p.g,"m",3);
}else{
if((mi&&(f[r].m==mi))||(fi&&(f[r].f==fi))){
s=FST((f[r].m==mi)&&(f[r].f==fi),p.g);
}else{
if((r==p.s)||(p.ep&&(p.ep[r]==2))){
s=_t("Partner");
}else{
if(f[r].pc[i]){
s=_t("Ex-partner");
}
}
}
}
}
}
}
}
}
}
if(s){
p.h=_t("$1 of $2",s,f[r].h);
}
}
}
}
if(!p.h){
p.h=_t("Anon #",p.ai);
}
}
p.cp=0;
for(var pi in p.pc){
p.cp++;
}
p.es=p.s||((p.cp==1)?pi:null);
}
if(fp){
FSR(f,fp,"fg",true,true,true,true,true,false);
}
}
function FSR(f,i,l,u,uu,d,dd,a,aa){
if(i&&f[i]&&!f[i][l]){
var p=f[i];
p[l]=true;
if(u){
FSR(f,p.m,l,uu,uu,dd,dd,aa,aa);
FSR(f,p.f,l,uu,uu,dd,dd,aa,aa);
FSR(f,p.X,l,uu,uu,dd,dd,aa,aa);
FSR(f,p.Y,l,uu,uu,dd,dd,aa,aa);
FSR(f,p.K,l,uu,uu,dd,dd,aa,aa);
FSR(f,p.L,l,uu,uu,dd,dd,aa,aa);
}
if(d){
for(var j=0;j<p.c.length;j++){
FSR(f,p.c[j],l,false,false,dd,dd,aa,aa);
}
}
if(a){
FSR(f,p.es,l,uu,uu,dd,dd,aa,aa);
for(var pi in p.pc){
FSR(f,pi,l,uu,uu,dd,dd,aa,aa);
}
}
}
}
function FCR(f,i,uu,dd,aa){
for(var j in f){
f[j].nf=false;
}
FSR(f,i,"nf",uu,uu,dd,dd,aa,aa);
var c=0;
for(var j in f){
if(f[j].nf){
c++;
}
}
return c-1;
}
function FDF(f,i,si,sf,st){
for(var j in f){
f[j].cf=false;
}
var q=[i];
while(q.length){
var j=q[q.length-1];
q.length--;
f[j].cf=true;
var p=f[j];
if(p){
var t=[p.m,p.f,p.X,p.Y,p.K,p.L].concat(p.c);
for(var pi in p.pc){
t[t.length]=pi;
}
for(var k=0;k<t.length;k++){
var ti=t[k];
if(ti&&f[ti]&&(!f[ti].cf)&&(ti!=si)&&((j!=sf)||(ti!=st))){
q[q.length]=ti;
}
}
}
}
var df=[];
for(var j in f){
if(!f[j].cf){
df[df.length]=j;
}
}
return df;
}
function FCS(f,i){
for(var j in f){
f[j].sf=false;
}
FSR(f,i,"sf",true,true,true,true,false,true);
FSR(f,f[i].es,"sf",false,false,true,true,false,true);
for(var pi in f[i].pc){
FSR(f,pi,"sf",false,false,true,true,false,true);
}
var sf=[];
for(var j in f){
if(f[j].sf){
sf[sf.length]=j;
}
}
return sf;
}
function FRP(f,mi,fi){
return f[mi]&&f[fi]&&(f[mi].s==fi)&&(f[fi].s==mi);
}
function FUP(f,mi,fi){
return FRP(f,mi,fi)||(f[mi]&&f[mi].ep&&(f[mi].ep[fi]==2));
}
function FGM(g){
return (g=="f")?-1:((g=="m")?1:0);
}
function FCM(p1,p2){
return (p1?FGM(p1.g):0)-(p2?FGM(p2.g):0);
}
function FPM(f,i){
var m=0;
if(i&&f[i]){
var ca=f[i].c;
for(var j=0;j<ca.length;j++){
var c=f[ca[j]];
if(c.m==i){
m--;
}
if(c.f==i){
m++;
}
if(c.X==i){
m--;
}
if(c.Y==i){
m++;
}
if(c.K==i){
m--;
}
if(c.L==i){
m++;
}
}
}
return m;
}
function FSM(f,i,si){
var cm=FPM(f,i)-FPM(f,si);
if(!cm){
cm=FCM(i?f[i]:null,si?f[si]:null);
}
return cm?(cm<0):(si?(i<si):false);
}
function FIG(g){
return (g=="m")?"f":((g=="f")?"m":null);
}
function FPL(f,i){
var p=f[i];
var ra=[];
for(var j in f){
if((j!=i)&&!p.pc[j]){
FAA(ra,j);
}
}
return ra;
}
function FSS(p,si,s){
var ps=[];
for(var pi in p.pc){
if(pi!=si){
var gpi=new String(p.gp?(p.gp[pi]||""):"");
var _60=(gpi.charAt(0)=="o");
var d=99999999;
if((gpi=="m")||(gpi=="s")||(gpi=="d")||(gpi=="a")){
if(p.mp&&p.mp[pi]){
d=p.mp[pi];
}
}else{
if(gpi=="e"){
if(p.rp&&p.rp[pi]){
d=p.rp[pi];
}
}else{
if(_60||(gpi=="r")){
if(p.bp&&p.bp[pi]){
d=p.bp[pi];
}
}
}
}
var ds=FPD(new String(d));
ds.i=pi;
ps[ps.length]=ds;
}
}
ps.sort(FCD);
var po={};
if(s&&si){
po[si]=true;
}
for(var j=0;j<ps.length;j++){
po[ps[j].i]=true;
}
return po;
}
function FAL(f,i,si){
for(var j in f){
f[j].pf=false;
}
FSR(f,i,"pf",false,false,true,true,false,false);
var pa=[];
for(var j in f){
if((!f[j].pf)&&(si!=j)){
FAA(pa,j);
}
}
return pa;
}
function FAD(d){
var p=FPD(d);
return (p.m||p.y)?true:false;
}
function FPD(d){
try{
var bce=(d.substring(0,1)=="B");
if(bce){
d=d.substring(1);
}
var yr=parseInt(d.substring(0,4),10);
if(bce){
yr=-yr;
}
return {d:parseInt(d.substring(6,8),10),m:parseInt(d.substring(4,6),10),y:yr};
}
catch(e){
return {};
}
}
function FCD(d1,d2){
if(d1.y!=d2.y){
return d1.y-d2.y;
}else{
if(d1.m!=d2.m){
return d1.m-d2.m;
}else{
return d1.d-d2.d;
}
}
}
function FPS(d,o){
var s1=FPD(d);
var p={v:"",d1:s1.d,m1:s1.m,y1:s1.y};
var hi=d.indexOf("-");
if(hi>=0){
var s2=FPD(d.substring(hi+1));
if(o&&(FCD(s1,s2)>0)){
p={v:"",d1:s2.d,m1:s2.m,y1:s2.y};
s2=s1;
}
p.v="bet";
p.d2=s2.d;
p.m2=s2.m;
p.y2=s2.y;
}else{
if(d.indexOf("~")>=0){
p.v="app";
}else{
if(d.indexOf(">")>=0){
p.v="bef";
}else{
if(d.indexOf("<")>=0){
p.v="aft";
}
}
}
}
return p;
}
function FDY(y){
var t="";
if(y){
t+=Math.abs(y);
if(y<0){
t=_t("$ BCE",t);
}
}
return t;
}
function FSD(d,m,y){
if(m){
if(d){
var f=y?"j M Y":"j M";
}else{
var f=y?"M Y":"M";
}
}else{
f=y?"Y":"";
}
return f.replaceAll("j",String(d)).replaceAll("M",Fmn[m]).replaceAll("Y",FDY(y));
}
function FDT(d,c,b){
var p=FPS(d?d.toString():"",true);
var s="";
if(p){
if(p.v=="bet"){
if(p.y1&&p.y2&&((p.y2-p.y1)==1)&&(!p.m1)&&(!p.m2)){
var s=FCT(p.y1,p.y2);
}else{
var sy=(p.y1==p.y2);
var us=false;
if(p.m1&&p.m2&&sy){
p.y1="";
}else{
if((p.y1<0)&&(p.y2<0)&&(!p.m1)&&(!p.m2)){
p.y1=-p.y1;
}
}
if(sy&&(p.m1==p.m2)&&p.d1&&p.d2){
var s1=p.d1;
us=((p.d2-p.d1)==1);
}else{
var s1=FSD(p.d1,p.m1,p.y1);
us=sy&&p.m1&&p.m2&&((p.m2-p.m1)==1)&&(!p.d1)&&(!p.d2);
}
var s2=FSD(p.d2,p.m2,p.y2);
if(s1&&s2){
var s=s1+(((s1+"").indexOf(" ")>0)?" ~ ":(us?"/":"~"))+s2;
}else{
if(s1||s2){
var s=(b?("~ "+s1+s2):(c?_t("Approx $",s1+s2):_t("approx $",s1+s2)));
}
}
}
}else{
s=FSD(p.d1,p.m1,p.y1);
if(s){
if(b){
var es={"app":"~ ","bef":"< ","aft":"> "};
s=(es[p.v]||"")+s;
}else{
var ts={"app":c?_i("Approx $"):_i("approx $"),"bef":c?_i("Before $"):_i("before $"),"aft":c?_i("After $"):_i("after $")};
if(ts[p.v]){
s=_t(ts[p.v],s);
}
}
}
}
}
return s;
}
function FYT(d){
var p=FPS(d?d.toString():"",true);
var s="";
if(p.v=="bet"){
if(p.y1&&p.y2){
if(p.y1==p.y2){
s=FDY(p.y1);
}else{
if((p.y2-p.y1)==1){
s=FCT(p.y1,p.y2);
}else{
s=Math.abs(p.y1)+"~"+FDY(p.y2);
}
}
}else{
if(p.y1||p.y2){
s="~"+FDY(p.y1)+FDY(p.y2);
}
}
}else{
s=FDY(p.y1);
if(s){
var es={"app":"~","bef":"<","aft":">"};
s=(es[p.v]||"")+s;
}
}
return s;
}
function FCT(y1,y2){
var d=1000000;
var bce=(y1<0);
if(bce){
var t=y1;
y1=-y2;
y2=-t;
}
if(Math.floor(y1/100)==Math.floor(y2/100)){
d=(Math.floor(y1/10)==Math.floor(y2/10))?10:100;
}
var s=y1+"/"+(y2%d);
if(bce){
s=_t("$ BCE",s);
}
return s;
}
function FYS(p){
if(!p){
return "";
}
var by=FYT(p.b);
var dy=(p.z=="1")?FYT(p.d):"";
var y=(by||"")+(((""+by+dy).indexOf("~")>=0)?" - ":"-")+(dy||"");
return (by||dy)?(" ("+y.trim()+")"):"";
}
function FDE(v,m,l){
v=parseInt(v);
v="0000"+((isNaN(v)||(v<0))?0:((v>m)?m:v));
return v.substring(v.length-l,v.length);
}
function FDS(d,m,y){
return ((y<0)?"B":"")+FDE((y<0)?-y:y,9999,4)+FDE(m,12,2)+FDE(d,31,2);
}
function FNS(){
var d=new Date();
return FDS(d.getDate(),1+d.getMonth(),d.getFullYear());
}
function FBS(v,d1,m1,y1,d2,m2,y2){
var s=FDS(d1,m1,y1);
if(v=="bet"){
s+="-"+FDS(d2,m2,y2);
}else{
if(v=="app"){
s+="~";
}else{
if(v=="bef"){
s+=">";
}else{
if(v=="aft"){
s+="<";
}
}
}
}
return s;
}
function FDN(p,mn,sn,sf,bn,ah,ni,ti,su){
if(!p){
return _t("Unknown");
}
var fn=p.p||"";
var n=fn;
if(!mn){
var fns=fn.trim().split(" ");
n=fns[0]||"";
}
if(ni&&p.N){
n+=(n?" ":"")+"\""+p.N+"\"";
}
if(n&&sn){
var an=bn?p.q:p.l;
if(!an){
an=bn?p.l:p.q;
}else{
if(sn>=2){
var cn=bn?p.l:p.q;
if(cn&&(cn!=an)){
an+="/"+cn;
}
}
}
if(an){
if(n){
if(sf){
n=an+" "+n;
}else{
n+=" "+an;
}
}else{
n=an;
}
}
}
if(n&&ti&&p.T){
n=p.T+" "+n;
}
if(n&&su&&p.J){
n+=" "+p.J;
}
if((!n)&&ah){
n=p.h;
}
return n;
}
function FIT(t,g){
if(t=="b"){
var gs={"f":_t("Biological daughter"),"m":_t("Biological son"),"":_t("Biological child")};
}else{
if(t=="a"){
var gs={"f":_t("Adopted daughter"),"m":_t("Adopted son"),"":_t("Adopted child")};
}else{
if(t=="f"){
var gs={"f":_t("Foster daughter"),"m":_t("Foster son"),"":_t("Foster child")};
}else{
if(t=="s"){
var gs={"f":_t("Stepdaughter"),"m":_t("Stepson"),"":_t("Stepchild")};
}else{
if(t=="g"){
var gs={"f":_t("Goddaughter"),"m":_t("Godson"),"":_t("Godchild")};
}else{
var gs={"f":_t("Daughter"),"m":_t("Son"),"":_t("Child")};
}
}
}
}
}
return gs[g]||gs[""];
}
function FPT(t,g,dg,s){
if(t=="b"){
var gs={"f":_t("Biological mother"),"m":_t("Biological father"),"":_t("Biological parent")};
}else{
if(t=="a"){
var gs={"f":_t("Adopted mother"),"m":_t("Adopted father"),"":_t("Adopted parent")};
}else{
if(t=="f"){
var gs={"f":_t("Foster mother"),"m":_t("Foster father"),"":_t("Foster parent")};
}else{
if(t=="s"){
var gs={"f":_t("Stepmother"),"m":_t("Stepfather"),"":_t("Stepparent")};
}else{
if(t=="g"){
var gs={"f":_t("Godmother"),"m":_t("Godfather"),"":_t("Godparent")};
}else{
if(s==2){
var gs={"f":_t("Second mother"),"m":_t("Second father"),"":_t("Second parent")};
}else{
if(s==3){
var gs={"f":_t("Third mother"),"m":_t("Third father"),"":_t("Third parent")};
}else{
var gs={"f":_t("Mother"),"m":_t("Father"),"":_t("Parent")};
}
}
}
}
}
}
}
return gs[g]||(((g||"").charAt(0)=="o")?gs[""]:gs[dg])||gs[""];
}
function FST(b,g){
if(b){
var gs={"f":_t("Sister"),"m":_t("Brother"),"":_t("Sibling")};
}else{
var gs={"f":_t("Half sister"),"m":_t("Half brother"),"":_t("Half sibling")};
}
return gs[g]||gs[""];
}
function FET(g){
var gs={"f":_t("Stepsister"),"m":_t("Stepbrother"),"":_t("Stepsibling")};
return gs[g]||gs[""];
}
function FPO(p,o){
var d=FPD(p.b);
if((!o)&&d.y){
return d.y*10000+d.m*100+d.d;
}
if(p.O&&!isNaN(parseFloat(p.O))){
return parseFloat(p.O);
}
return null;
}
function FBO(f,os,ys,o){
var lb=null;
var ub=null;
for(var j=0;j<os.length;j++){
var od=FPO(f[os[j]],o);
if(od!==null){
lb=lb?Math.max(lb,od):od;
}
}
for(var j=0;j<ys.length;j++){
var od=FPO(f[ys[j]],o);
if(od!==null){
ub=ub?Math.min(ub,od):od;
}
}
if(lb){
if(ub){
var o=Math.round((lb+ub)/2);
return ((o>lb)&&(o<ub))?o:((lb+ub)/2);
}else{
return lb+10000;
}
}else{
return ub?(ub-10000):(parseInt(FNS())-1000000);
}
}
function FCC(p1,p2){
var b1=FPO(p1);
var b2=FPO(p2);
if(b1==b2){
b1=FPO(p1,true);
b2=FPO(p2,true);
}
if(b1===null){
b1=99999999;
}
if(b2===null){
b2=99999999;
}
if(b1<b2){
return -1;
}else{
if(b2<b1){
return 1;
}
}
if(p1.ai<p2.ai){
return -1;
}else{
if(p1.ai>p2.ai){
return 1;
}
}
return 0;
}
function FSC(f,ci){
var cp=[];
for(var j=0;j<ci.length;j++){
cp[cp.length]=f[ci[j]];
}
cp.sort(FCC);
ci.length=0;
for(var j=0;j<cp.length;j++){
ci[ci.length]=cp[j].i;
}
}
function FPP(p,i){
var x=null;
if(i==p.m1){
x="f1";
}else{
if(i==p.f1){
x="m1";
}else{
if(i==p.m2){
x="f2";
}else{
if(i==p.f2){
x="m2";
}else{
if(i==p.m3){
x="f3";
}else{
if(i==p.f3){
x="m3";
}
}
}
}
}
}
return x;
}
function FNB(p,pi){
if((pi==p.m1)||(pi==p.f1)){
if(p.t1){
return (p.t1=="a")||(p.t1=="f")||(p.t1=="s")||(p.t1=="g");
}else{
if((p.t2=="b")||(p.t3=="b")){
return true;
}else{
return false;
}
}
}
if((pi==p.m2)||(pi==p.f2)){
if(p.t2){
return (p.t2=="a")||(p.t2=="f")||(p.t2=="s")||(p.t2=="g");
}else{
if((p.t1=="b")||(p.t3=="b")){
return true;
}else{
return false;
}
}
}
if((pi==p.m3)||(pi==p.f3)){
if(p.t3){
return (p.t3=="a")||(p.t3=="f")||(p.t3=="s")||(p.t3=="g");
}else{
if((p.t1=="b")||(p.t2=="b")){
return true;
}else{
return false;
}
}
}
return false;
}
function FSB(p,s){
return FNB(p,p["m"+s]||p["f"+s]);
}
function FPG(p,pi){
if((pi==p.m1)||(pi==p.f1)){
return (p.t1=="g");
}
if((pi==p.m2)||(pi==p.f2)){
return (p.t2=="g");
}
if((pi==p.m3)||(pi==p.f3)){
return (p.t3=="g");
}
return false;
}
function FLA(f,i){
var ac=[];
var c=f[i].c;
for(var j=0;j<c.length;j++){
var cp=f[c[j]];
var pf=FPP(cp,i);
var oi=pf?cp[pf]:null;
if(!(oi&&f[oi])){
FAA(ac,c[j]);
}
}
FSC(f,ac);
return ac;
}
function FLP(f,i,pi){
var tc=[];
var c=f[i].c;
for(var j=0;j<c.length;j++){
var cp=f[c[j]];
var pf=FPP(cp,i);
if(pf&&cp[pf]==pi){
FAA(tc,c[j]);
}
}
FSC(f,tc);
return tc;
}
function FLS(f,i,s,t){
var bs=[];
var mi=f[i]["m"+s];
var fi=f[i]["f"+s];
var cs={};
if(mi&&f[mi]){
var c=f[mi].c;
for(var j=0;j<c.length;j++){
cs[c[j]]=true;
}
}
if(fi&&f[fi]){
var c=f[fi].c;
for(var j=0;j<c.length;j++){
cs[c[j]]=true;
}
}
for(var j in cs){
if(j!=i){
if(FTM(f[j],mi,fi)){
if((!t)||(f[i].b==f[j].b)){
FAA(bs,j);
}
}
}
}
FSC(f,bs);
return bs;
}
function FLC(p1,p2){
var ps=[p1,p2];
var ts=[{},{}];
var c={};
for(var j=0;j<2;j++){
var p=ps[j];
if(p.m){
ts[j][p.m]=p.V||"";
}
if(p.f){
ts[j][p.f]=p.V||"";
}
if(p.X){
ts[j][p.X]=p.W||"";
}
if(p.Y){
ts[j][p.Y]=p.W||"";
}
if(p.K){
ts[j][p.K]=p.Q||"";
}
if(p.L){
ts[j][p.L]=p.Q||"";
}
}
for(var i in ts[0]){
if(i in ts[1]){
c[i]=""+ts[0][i]+ts[1][i];
}
}
return c;
}
function FTM(p,mi,fi){
return ((p.m1==mi)&&(p.f1==fi))||((p.m1==fi)&&(p.f1==mi))||((p.m2==mi)&&(p.f2==fi))||((p.m2==fi)&&(p.f2==mi))||((p.m3==mi)&&(p.f3==fi))||((p.m3==fi)&&(p.f3==mi));
}
function FTP(f,p,si,sp){
var cp=(p.s==si)||(p.ep&&(p.ep[si]==2))||(p.z==1);
var pl=(p.z!=1)&&(sp.z==1);
var pw=(p.z==1)&&(sp.z!=1);
var pz=p.zp&&p.zp[si];
var gpi=new String(p.gp?p.gp[si]:"");
var s="";
var cm=-FGM(sp.g);
if(((gpi=="m")&&(cp||pl))||(gpi=="s")){
if(pl){
s=cm?((cm>0)?_t("Late wife"):_t("Late husband")):_t("Late spouse");
}else{
if(pw){
s=cm?((cm>0)?_t("Widow"):_t("Widower")):_t("Widowed spouse");
}else{
s=cm?((cm>0)?_t("Wife"):_t("Husband")):_t("Spouse");
}
}
if(gpi=="s"){
s=_t("$ (separated)",s);
}
}else{
if((gpi=="m")||(gpi=="d")||(gpi=="a")){
s=cm?((cm>0)?_t("Ex-wife"):_t("Ex-husband")):_t("Ex-spouse");
}else{
if((gpi=="e")&&(cp||pl)){
if(pl){
s=(cm>0)?_t("Late fiancee"):_t("Late fiance");
}else{
s=(cm>0)?_t("Fiancee"):_t("Fiance");
}
}else{
if(gpi=="e"){
s=(cm>0)?_t("Ex-fiancee"):_t("Ex-fiance");
}else{
if((gpi=="r")&&FAD(pz)&&(!((p.z==1)&&(p.d==pz)))&&(!((sp.z==1)&&(sp.d==pz)))){
s=_t("Ex-partner");
}else{
s=pl?_t("Late partner"):(cp?_t("Partner"):_t("Ex-partner"));
}
}
}
}
}
return s;
}
function FCP(f,fi,ti,m,a){
var p={};
var s={};
var i=null;
p[fi]=".";
s[fi]=true;
while(!p[ti]){
var sn={};
if(a){
for(var si in s){
var pc=f[si].pc;
for(var i in pc){
if(i&&f[i]&&!p[i]){
p[i]="p"+si;
sn[i]=true;
}
}
}
}
for(var si in s){
var c=f[si].c;
for(var j=0;j<c.length;j++){
i=c[j];
if(i&&f[i]&&!p[i]){
p[i]=(FPG(f[i],si)?"g":"o")+si;
sn[i]=true;
}
}
}
for(var si in s){
var tp=[];
var fsi=f[si];
var tp=[(fsi.V=="g")?null:fsi.m,(fsi.V=="g")?null:fsi.f,(fsi.W=="g")?null:fsi.X,(fsi.W=="g")?null:fsi.Y,(fsi.Q=="g")?null:fsi.K,(fsi.Q=="g")?null:fsi.L];
for(var j=0;j<tp.length;j++){
var pi=tp[j];
if(pi&&f[pi]){
var c=f[pi].c;
for(var k=0;k<c.length;k++){
i=c[k];
if(i&&f[i]&&!p[i]){
p[i]="s"+si;
sn[i]=true;
}
}
}
}
}
for(var si in s){
var t=(f[si].V=="g")?"d":"a";
i=f[si].m;
if(i&&f[i]&&!p[i]){
p[i]=t+si;
sn[i]=true;
}
i=f[si].f;
if(i&&f[i]&&!p[i]){
p[i]=t+si;
sn[i]=true;
}
}
for(var si in s){
var t=(f[si].W=="g")?"d":"a";
i=f[si].X;
if(i&&f[i]&&!p[i]){
p[i]=t+si;
sn[i]=true;
}
i=f[si].Y;
if(i&&f[i]&&!p[i]){
p[i]=t+si;
sn[i]=true;
}
}
for(var si in s){
var t=(f[si].Q=="g")?"d":"a";
i=f[si].K;
if(i&&f[i]&&!p[i]){
p[i]=t+si;
sn[i]=true;
}
i=f[si].L;
if(i&&f[i]&&!p[i]){
p[i]=t+si;
sn[i]=true;
}
}
s=sn;
sc=0;
for(var j in s){
sc++;
}
if(!sc){
break;
}
}
var r=[{"t":".","i":ti}];
if(p[ti]){
i=ti;
while(true){
var ni=p[i].substring(1);
if(!ni){
break;
}
r[r.length]={"t":p[i].substring(0,1),"i":ni};
i=ni;
}
}else{
r[r.length]={"t":"x","i":fi};
}
r=r.reverse();
return m?FMP(f,r):r;
}
function FMP(f,r){
for(var j=0;j<(r.length-1);j++){
r[j].p=[{"i":r[j].i,"t":r[j].t}];
}
for(var j=0;j<(r.length-1);j++){
if((r[j].t=="a")){
var d=1;
while(r[j+d]&&(r[j+d].t=="a")){
d++;
}
if(r[j+d]&&(r[j+d].t=="s")){
var ic=true;
for(var k=1;k<=d;k++){
if(!(r[j+d+k]&&(r[j+d+k].t=="o"))){
ic=false;
break;
}
}
if(ic){
FME(r,j+1,d*2,"c"+d);
}
}
}
}
for(var j=0;j<(r.length-1);j++){
if(r[j].t=="a"){
var d=1;
while(r[j+1]&&(r[j+1].t=="a")){
FME(r,j+1,1,"a"+(++d));
}
if(r[j+1]&&(r[j+1].t=="s")){
FME(r,j+1,1,"u"+d);
if(FIM(f,r,j+1)){
FME(r,j+1,1,"u"+d);
}
}else{
if((d==1)&&FIM(f,r,j-1)){
FME(r,j,1,"ai");
}
}
}
if(r[j].t=="o"){
var d=1;
while(r[j+1]&&(r[j+1].t=="o")){
FME(r,j+1,1,"o"+(++d));
}
if(r[j-1]&&(r[j-1].t=="s")){
FME(r,j,1,"n"+d);
if(FIM(f,r,j-2)){
FME(r,j-1,1,"n"+d);
}
}else{
if((d==1)&&FIM(f,r,j+1)){
FME(r,j+1,1,"oi");
}
}
}
}
for(var j=0;j<(r.length-1);j++){
if(FIM(f,r,j)){
if(r[j+1]&&(r[j+1].t=="s")){
FME(r,j+1,1,"si");
if(FIM(f,r,j+1)){
FME(r,j+1,1,"si");
}
}else{
if(r[j-1]&&(r[j-1].t=="s")){
FME(r,j,1,"si");
}
}
}
}
for(var j=0;j<(r.length-1);j++){
if(r[j].p.length==1){
r[j].p=null;
}
}
return r;
}
function FME(r,i,n,t){
FAP(r,i,n,r[i-1].p);
r[i-1].t=t;
r.splice(i,n);
}
function FAP(r,i,n,p){
for(var j=i;j<(i+n);j++){
if(r[j].p){
FAP(r[j].p,0,r[j].p.length,p);
}else{
p[p.length]={"i":r[j].i,"t":r[j].t};
}
}
}
function FIM(f,r,j){
if(r[j]&&r[j+1]&&(r[j].t=="p")){
var jp=f[r[j].i];
var gjp=(jp&&jp.gp)?jp.gp[r[j+1].i]:"";
if((gjp=="m")||(gjp=="s")){
return true;
}
}
return false;
}
function FSE(d){
var p=FPS(d||"",true);
var e=null;
if((p.v!="bef")&&p.y1){
e={d:p.d1,m:p.m1,y:p.y1};
if(!e.m){
e.m=1;
}
if(!e.d){
e.d=1;
}
if(p.v=="app"){
e.a=true;
}
}
return e;
}
function FSL(d){
var p=FPS(d||"",true);
var l=null;
if(p.v=="bet"){
if(p.y2){
l={d:p.d2,m:p.m2,y:p.y2};
}
}else{
if(p.v!="aft"){
if(p.y1){
l={d:p.d1,m:p.m1,y:p.y1};
if(p.v=="app"){
l.a=true;
}
}
}
}
if(l){
if(!l.m){
l.m=12;
}
if(!l.d){
l.d=new Date(l.y,l.m,0).getDate();
}
}
return l;
}
function FBA(b,t){
if(b&&t){
var da=(t.d>=b.d);
var ma=(t.m>b.m)||((t.m==b.m)&&da);
var ba=(b.y<0)&&(t.y>0);
var y=t.y-b.y-(ma?0:1)-(ba?1:0);
if(y>0){
var a={"t":"y","v":y};
}else{
var m=(t.y*12+t.m)-(b.y*12+b.m)-(ba?12:0)-(da?0:1);
if(m>0){
var a={"t":"m","v":m};
}else{
var d=Math.round((new Date(t.y+10000,t.m-1,t.d)-new Date(b.y+10000,b.m-1,b.d))/86400000);
if(d>0){
var a={"t":"d","v":d};
}else{
var a={"t":"d","v":0};
}
}
}
a.a=b.a||t.a;
return a;
}else{
return null;
}
}
function FAS(a,o){
var m={"d":o?_i("# day/s old"):_i("# day/s"),"m":o?_i("# month/s old"):_i("# month/s"),"y":o?_i("# year/s old"):_i("# year/s")};
return a?(m[a.t]?_t(m[a.t],a.v):a.v):null;
}
function FDR(b,t,o){
var l=FBA(FSL(b),FSE(t));
var u=FBA(FSE(b),FSL(t));
var s="";
if(l){
if(u&&(l.t==u.t)){
if(l.v==u.v){
s=FAS(u,o);
}else{
s=FAS({t:l.t,v:(l.v+"-"+u.v)},o);
}
}else{
if(u){
s=FAS(l,o)+" - "+FAS(u,o);
}else{
s=_t("at least $",FAS(l,o));
}
}
}else{
if(u){
s=_t("at most $",FAS(u,o));
}
}
if((l&&l.a)||(u&&u.a)){
s=_t("approx $",s);
}
return s;
}
</script>
		<script type="text/javascript">


var Ecf=["back","male","female","other","living","deceased"];
var Elf=["current","otherpartner","biological","otherparent"];
var Efa={};
var Eff={};
var Efo;
var Ewp=null;
var Edt,Eda,Edc,Edm;
var Eve;
var Esd=null;
var Eeq=[];
var Esc=false;
var Ess="",Eis="";
var Eec=null;
var Epc=null;
var Esa;
var Edd,Edy,Ece,Eca,Ecd;
var Eed,Eud,Exd,Esf,Eaf;
var Elh,Ech;
var Elb=null;
var Ebi;
var Esb;
var Eoh=null;
function PL(){
if(!staticMode){
CE();
LF("topform");
}
if(hideSidebar){
ESI(false);
}
if(staticMode||(typeof (XMLHttpRequest)!="undefined")){
window.onbeforeunload=EPU;
var c=GC("zoomfactor");
var zf=parseFloat((c===null)?defaultZoom:c);
SV("showzoom",zf);
var c=GC("showdetail");
Esd=(c===null)?defaultDetail:c;
NSD(Esd);
for(var j=0;j<Ecf.length;j++){
var f=Ecf[j];
var c=GC("color"+f);
SV("color"+f,(c===null)?defaultColors[f]:decodeURIComponent(c));
}
for(var j=0;j<Elf.length;j++){
var f=Elf[j];
var c=GC("line"+f);
SV("line"+f,(c===null)?defaultLines[f]:decodeURIComponent(c));
}
var c=GC("showbirthname");
SO("showbirthname",(c===null)?defaultBirthName:c);
var c=GC("showsurnamefirst");
SO("showsurnamefirst",(c===null)?defaultSurnameFirst:c);
var c=GC("showmaleleft");
SO("showmaleleft",(c===null)?defaultMaleLeft:c);
var c=GC("showcousins");
SO("showcousins",(c===null)?defaultCousins:c);
var c=GC("showchildren");
SO("showchildren",(c===null)?defaultChildren:c);
var c=GC("showparents");
SO("showparents",(c===null)?defaultParents:c);
var c=GC("widthfactor");
var wf=parseFloat((c===null)?defaultWidth:c);
SV("showwidth",wf);
var c=GC("textsize");
var tf=parseFloat((c===null)?defaultTextSize:c);
SV("textsize",tf);
var c=GC("otheragedate");
if(c){
EWA(c);
}
Ebi=(document.all&&(navigator.userAgent.toLowerCase().indexOf("msie")>=0));
Esb=(navigator.userAgent.toLowerCase().indexOf("safari")>=0);
TIS(GE("treemargin"));
NRR();
if(staticMode){
Efo=GV("founderid");
var h=new String(window.location.hash);
if(h.length&&(h.charAt(0)=="#")){
h=h.substring(1);
}
var a=h.split(":");
var m=a[0];
var i=a[1];
if(i){
SV("viewpersonid",i);
}
if(m){
SV("viewmode",m);
}
SS("printbutton",false);
ERP(false);
}else{
Ece=true;
Eca=true;
Ecd=true;
Efo=GV("personid");
var fi=GV("familyid");
var ic=GV("importcacheid");
if(fi||ic){
AG("family_read",{f:fi,i:ic,p:GV("personid"),c:GV("checksum"),s:GV("sessionid")},EFR,fi&&(ic||GV("newscript").length));
}else{
ERP(false);
}
}
}else{
SS("treebg",false);
SS("noajax",true);
}
}
function EPR(){
NPF();
NRR();
}
function ESB(l){
if(!Esb){
if(Ebi){
Eoh=l;
setTimeout("GE('backframe').src='back.htm?"+l+"';",100);
}else{
window.location.hash=l;
}
}
}
function EBI(l){
var h=new String(l.search);
var p=h.lastIndexOf("?");
if(p>=0){
h=h.substring(p+1);
}
if(Eoh&&(Eoh!=h)){
return;
}
Eoh=null;
window.location.hash=h;
}
function EBT(){
if(!Esb){
var h=new String(window.location.hash);
if(h.length&&(h.charAt(0)=="#")){
h=h.substring(1);
}
if(Eoh&&(Eoh!=h)){
return;
}
var a=h.split(":");
var m=a[0];
var i=a[1];
Elh=Ech;
Ech=m;
if((i&&(i!=GV("viewpersonid")))||(m&&(m!=GV("viewmode")))){
if((Eec!==null)&&(i==Epc)&&(m==="view")){
EFE(false);
}else{
if(i&&Efa[i]){
SV("viewpersonid",i);
}
if(m){
SV("viewmode",m);
}
EUS(false,null,null,true,true);
}
}
}
}
function EPU(e){
if((!Esc)&&(!staticMode)){
if(GV("newscript").length||GV("importcacheid")){
e=e||window.event;
var m=_t("If you leave this page before saving, your changes to this family will be lost.");
e.returnValue=m;
return m;
}
}
}
function ESC(){
Esc=true;
}
function EFR(_17,_18,_19){
if(_19.ok){
Efa={};
if(_19.f){
if(_19.ar){
ERS(_19.t);
Ess=_19.t;
Eve=_19.v;
Ewp=_19.pw?GV("personid"):null;
Efo=_19.fp;
Edd=_19.al;
Edy=_19.ad;
Ece=_19.aw;
Eca=_19.an;
Ecd=_19.ax;
Eed=_19.ae;
Eud=_19.au;
Exd=_19.az;
Esf=_19.as;
Eaf=_19.aa;
Edt=_19.ds;
Eda=_19.da;
Edc=_19.dc;
Edm=_19.dm;
var e=GE("lfamilylabels");
e.innerHTML="";
var _1b=_19.fl;
if(_1b&&_1b.length){
for(var j=0;j<_1b.length;j++){
var s=document.createElement("span");
s.className="lfamilylabel";
s.innerText=_1b[j].charAt(0).toUpperCase()+_1b[j].substring(1);
e.appendChild(s);
}
}
if(Ewp&&GE("welcomewrite")){
SR("welcomewrite",true);
}
if(Eud){
DAD();
}
}else{
Ece=false;
Eca=false;
Ecd=false;
RE(_t("You do not have permission to view this family."));
if(GE("addfamily")){
SS("addfamily",false);
}
}
}
if(_19.m){
ERS(_19.m);
Eis=_19.m;
if(_19.ro){
staticMode=true;
Esa=true;
Ece=false;
Eca=false;
Ecd=false;
Ewp=null;
SS("do_signin",false);
SH("lfooterlinks","Family displayed via the <A HREF=\"https://www.familyecho.com/\" TARGET=\"_blank\">Family Echo</A> API.");
}
if(_19.lo){
SH("lfamilyname",_19.lo);
}
}
}else{
RE(_t("This family could not currently be loaded.")+" "+_t("This may be due to occasional system maintenance, so please try again in a few hours."));
}
ERP(_18);
}
function ERP(_1e){
ERS(GV("newscript"));
if(Esd===null){
Esd="";
for(var j in Efa){
if(Efa[j].r){
Esd="r";
}
}
NSD(Esd);
}
EUS(true,null,GV("viewmode"),true,false);
if(_1e){
ESS();
}else{
EUL(false);
}
setInterval(EBT,250);
}
function EMD(e){
e=e||window.event;
var t=e.target||e.srcElement||e;
if(!(GE("findfield").contains(t)||GE("findlist").contains(t))){
NHF();
}
}
function EUS(r,i,m,d,s){
var pi=Evp=GV("viewpersonid");
var pm=viewMode=GV("viewmode");
if(r){
var ap=GV("personid");
if(Efo&&!Efa[Efo]){
Efa[Efo]={};
}
FRF(Efa,ap,Efo);
if(ap&&Efa[ap]){
NSP(ap);
SV("name",FDN(Efa[ap],false,1,false,false,false));
SV("email",Efa[ap].e);
}else{
NSP(Efo);
}
var fc=0;
for(var j in Efa){
fc++;
}
NCP(fc);
if((staticMode||GV("familyid"))&&Efo&&Efa[Efo]){
var fb=FDN(Efa[Efo],false,1,false,false,false);
ST("lfamilyinfo",_t("Founded by $",fb));
if(!staticMode){
SS("historybutton",true);
}
}else{
ST("lfamilyinfo","");
}
}
if(i){
Evp=i;
}
if(m){
viewMode=m;
}
if((!Evp)||(!Efa[Evp])){
if(Efo&&Efa[Efo]){
Evp=Efo;
}else{
for(Evp in Efa){
break;
}
}
}
SV("viewpersonid",Evp);
SV("viewmode",viewMode);
if(Evp!=pi){
if(document.activeElement){
document.activeElement.blur();
}
}
if(viewMode=="history"){
ESI(true);
if((!Esb&&Elh!=viewMode)||(Esb&&m)){
GE("extraframe").src="history.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&s="+escape(GV("sessionid"))+(EID()?"&d=1":"");
}
SI("extradiv",true);
}else{
if(viewMode=="share"){
ESI(true);
GE("extraframe").src="share.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&i="+escape(Evp)+"&s="+escape(GV("sessionid"))+"&z="+((Efa[Evp].z!="1")?0:1)+(EID()?"&d=1":"");
SI("extradiv",true);
}else{
if(viewMode=="download"){
ESI(true);
GE("extraframe").src="download.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&s="+escape(GV("sessionid"))+(EID()?"&d=1":"");
SI("extradiv",true);
}else{
if(viewMode=="print"){
ESI(true);
if(m){
GE("extraframe").src="print.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&s="+escape(GV("sessionid"))+(EID()?"&d=1":"");
}
SI("extradiv",true);
}else{
if(viewMode=="import"){
ESI(true);
GE("extraframe").src="import.php?p="+escape(GV("personid"))+(EID()?"&d=1":"");
SI("extradiv",true);
}else{
if(viewMode=="importfinish"){
}else{
if(GI("extradiv")){
GE("extraframe").src="";
SI("extradiv",false);
}
}
}
}
}
}
}
if(navigator.userAgent.match(/(iPod|iPhone|iPad)/)&&navigator.userAgent.match(/AppleWebKit/)){
SS("extradiv",GI("extradiv"));
}
SSE(Evp,viewMode);
if(i||m){
ESB(viewMode+":"+Evp);
}
if(d||(Evp!=pi)){
TRT(Efa,Evp,GV("personid"),Esd,NGD(),NGB(),NGS(),NGR(),NGL(),NGM(),NGH(),NGA(),NGC(),pi,GV("showzoom"),GV("showwidth"),GV("textsize"),s);
NRT();
}
if(m=="path"){
SUP(Evp);
SPS();
SS("pathdiv",true);
}
if(m=="calendar"){
SUC();
SS("caltimediv",true);
ESI(true);
}
if(m=="timeline"){
SUI();
SS("caltimediv",true);
ESI(true);
}
if(viewMode=="path"){
SSP(Evp);
}else{
SS("pathdiv",false);
}
if((viewMode!="calendar")&&(viewMode!="timeline")){
SS("caltimediv",false);
}
if(r||(Evp!=pi)){
if(parent&&parent.postMessage){
parent.postMessage("focus="+Evp,"*");
}
}
}
function EUF(){
EUS(true,null,null,true,false);
}
function ERF(){
EUS(false,null,null,true,true);
}
function ERI(){
EUS(false,null,null,true,false);
}
function ESP(i,s){
EHW();
for(var j=0;j<(Eeq.length-1);j++){
if(Eeq[j]==i){
Eeq.splice(j,1);
EUS(false,i,"edit",false,s);
return;
}
}
var vm=GV("viewmode");
Eeq=[];
EUS(false,i,((vm=="share")||(vm=="print")||(vm=="history")||(vm=="path")||(vm=="calendar")||(vm=="timeline")||(vm=="users"))?null:"view",false,s);
}
function ESM(m){
EUS(false,null,m,false,false);
}
function ECS(){
Eec=GV("newscript").length;
Epc=GV("viewpersonid");
}
function ESE(r,i,b){
Eeq=[];
for(var j=1;j<i.length;j++){
Eeq[Eeq.length]=i[j];
}
Eeq[Eeq.length]=b;
EHW();
EUS(r,i[0],"edit",r,true);
}
function EFE(a){
if(a){
if(Eeq.length<=1){
ESS();
EHW();
EUS(false,Eeq.length?Eeq[0]:null,"view",false,true);
Eec=null;
}else{
EUS(false,Eeq.shift(),"edit",false,true);
}
}else{
if(Eec!==null){
ESM("view");
Efa={};
ERS(Ess);
ERS(Eis);
var ks=GV("newscript");
ks=ks.substring(0,Eec);
SV("newscript",ks);
ERS(ks);
Eec=null;
EUS(true,Epc,"view",true,true);
}else{
EUS(true,null,"view",true,true);
}
EUL(false);
}
}
function EFV(i,p,v){
if(i){
Efa[i]=Efa[i]||{};
if((p=="x")||(p=="s")){
if(Efa[i].s&&Efa[Efa[i].s]){
Efa[Efa[i].s].s=null;
}
}
if(p=="x"){
delete Efa[i];
}else{
if((p=="s")&&v){
Efa[v]=Efa[v]||{};
if(Efa[v].s&&Efa[Efa[v].s]){
Efa[Efa[v].s].s=null;
}
Efa[v].s=i;
}
Efa[i][p]=v?v:null;
}
}
}
function EPV(i1,i2,p,v){
if(i1&&i2){
Efa[i1]=Efa[i1]||{};
Efa[i2]=Efa[i2]||{};
var fn=p+"p";
Efa[i1][fn]=Efa[i1][fn]||{};
Efa[i2][fn]=Efa[i2][fn]||{};
Efa[i1][fn][i2]=v.length?v:null;
Efa[i2][fn][i1]=v.length?v:null;
}
}
function EDV(i,p,v){
if(i){
Eff[i]=Eff[i]||{};
if(p=="x"){
delete Eff[i];
}else{
if(p=="+"){
Eff[i].ps=Eff[i].ps||{};
Eff[i].ps[v]=true;
if(Efa[v]){
Efa[v].fs=Efa[v].fs||{};
Efa[v].fs[i]=true;
}
}else{
if(p=="-"){
if(Eff[i]&&Eff[i].ps){
delete Eff[i].ps[v];
}
if(Efa[v]&&Efa[v].fs){
delete Efa[v].fs[i];
}
}else{
Eff[i][p]=v;
}
}
}
}
}
function ERS(s){
var c=ECL(s);
for(var j=0;j<c.length;j++){
var e=c[j];
var t=e.t.charAt(0);
var i=e.t.substring(1);
var v=e.v.replace(/\\t/g,"\t").replace(/\\n/g,"\n").replace(/\\\\/g,"\\");
if(t=="i"){
EFV(i,e.p,v);
}else{
if(t=="p"){
var ii=i.split(" ");
EPV(ii[0],ii[1],e.p,v);
}else{
if(t=="d"){
EDV(i,e.p,v);
}
}
}
}
}
function ECL(s){
var l=NE(s).split("\n");
var c=[];
for(var j=0;j<l.length;j++){
var e=l[j].split("\t");
for(var k=1;k<e.length;k++){
c[c.length]={t:e[0],p:e[k].charAt(0),v:e[k].substring(1,e[k].length)};
}
}
return c;
}
function EOS(s){
var c=ECL(s);
var os="";
var pi=null;
var pc=[];
for(var j=0;j<c.length;j++){
var e=c[j];
if(e.t!=pi){
if(pi){
os+=pi+"\t"+pc.join("\t")+"\n";
}
pi=e.t;
pc=[];
}
var pl=pc.length;
if((pl>0)&&(pc[pl-1].charAt(0)==e.p)&&(e.p!="+")&&(e.p!="-")){
pc[pl-1]=e.p+e.v;
}else{
pc[pl]=e.p+e.v;
}
}
if(pi){
os+=pi+"\t"+pc.join("\t")+"\n";
}
return os;
}
function EFC(i,c){
for(var p in c){
var v=c[p]?NE(new String(c[p])):"";
EFV(i,p,v);
GE("newscript").value+="\ni"+i+"\t"+p.charAt(0)+EEF(v);
}
EUL(false);
}
function EPC(i1,i2,c){
for(var p in c){
var v=c[p]?NE(new String(c[p])):"";
EPV(i1,i2,p,v);
GE("newscript").value+="\np"+i1+" "+i2+"\t"+p.charAt(0)+EEF(v);
}
EUL(false);
}
function EDC(i,c){
for(var p in c){
var v=c[p]?NE(new String(c[p])):"";
EDV(i,p,v);
GE("newscript").value+="\nd"+i+"\t"+p.charAt(0)+EEF(v);
}
EUL(false);
}
function EEF(s){
return s.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/\t/g,"\\t");
}
function EFI(){
var c="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for(var j=0;j<1000;j++){
var i="";
for(var k=0;k<5;k++){
i+=c.charAt(Math.floor(Math.random()*(k?36:26)));
}
if(!Efa[i]){
break;
}
}
return i;
}
var Edf=false;
function ESS(){
if(!staticMode){
var fi=GV("familyid");
var ic=GV("importcacheid");
if(fi&&!Edf){
var len=GV("newscript").length;
if(len||ic){
Edf=true;
AP("family_append",{f:fi,i:ic,p:GV("personid"),c:GV("checksum"),v:Eve},EOS(GV("newscript")),ESR,len);
EUL(false);
}else{
Edf=true;
EUL(false);
Edf=false;
setTimeout("EUL(true);",500);
}
}
}
}
function ESR(_6e,len,_70){
Edf=false;
if(_70.ok){
Eve=_70.v;
Ess+="\n"+Eis;
Eis="";
SV("importcacheid","");
var ns=GV("newscript");
Ess+=ns.substring(0,len);
SV("newscript",ns.substring(len,ns.length));
if(_70.t){
Efa={};
ERS(_70.t);
Ess=_70.t;
ERS(GV("newscript"));
EUS(true,null,null,true,false);
}
}else{
RE(_t("The family could not be saved - please try again."));
}
EUL(true);
}
function EUL(js){
if(!staticMode){
var len=GV("newscript").length;
var ic=GV("importcacheid");
if(Edf){
p="lsaving";
}else{
if(len||ic){
p="lsave";
}else{
if(!Ece){
p=Ewp?"lwriteone":"lreadonly";
}else{
p=js?"lsaved":"linitial";
}
}
}
var es=["linitial","lreadonly","lwriteone","lsave","lsaving","lsaved"];
for(var j=0;j<es.length;j++){
SS(es[j],p==es[j]);
}
var fi=GV("familyid");
var si=GV("sessionid");
SS("savefamily",(Ece||len||ic)&&fi);
SS("sharebutton",Esf&&si&&fi&&!Eaf);
SS("usersbutton",Eaf&&si&&fi);
SS("downloadbutton",fi&&Edy&&!Eis.length);
SS("filesbutton",fi&&(Edd||Eud)&&!GS("filesdiv"));
NRR();
SSF();
}
}
function EAS(){
AP("userfamily_add",{s:GV("sessionid"),f:GV("familyid"),p:GV("personid"),c:GV("checksum")},"",EAR,null);
}
function EAR(_79,_7a,_7b){
if(_7b.ok){
ST("lfamilyname",_7b.n);
SS("addfamily",false);
}else{
RE(_7b.er||_t("The family could not be added to your account - please try again."));
}
}
function EBS(){
var ap=GV("personid");
ESP((ap&&Efa[ap])?ap:Efo,true);
}
function ECZ(zi){
EZD(zi?1.138788634756692:0.878126080186649);
}
function EZD(zd){
var zf=Math.max(0.5,Math.min(4,GV("showzoom")*zd));
SC("zoomfactor",zf);
SV("showzoom",zf);
ERF();
}
function ESZ(){
SC("zoomfactor",GV("showzoom"));
ERI();
}
function ECD(_80){
var i=_80.id;
if(i.substr(0,7)=="detail_"){
var d=i.substr(7);
var c=_80.checked;
if(d.substr(0,1)=="0"){
c=!c;
}
var ds="."+(Esd||"")+".";
if(c){
if(ds.indexOf("."+d+".")<0){
Esd=(ds+d);
}
}else{
Esd=ds.replace(new RegExp("\\."+d+"\\.","g"),".");
}
Esd=Esd.replace(/^\.+/,"").replace(/\.+$/,"");
NSD(Esd);
SC("showdetail",Esd);
ERF();
}
}
function ECA(){
var e=GE("otherage");
var v=GV("otherage");
if(v=="on"){
if(e.options.length>2){
var p=FPD(e.options[2].value);
}else{
var d=new Date();
var p={y:d.getFullYear(),m:1+d.getMonth(),d:d.getDate()};
}
var f=FDE(Math.abs(p.y),9999,4)+"-"+FDE(p.m,12,2)+"-"+FDE(p.d,31,2)+((p.y<0)?" B":"");
while(true){
var f=prompt(_t("Show ages on which date? Please enter the date in YYYY-MM-DD format and add \"B\" for BCE."),f);
if(f===null){
SV("otherage","");
break;
}
if(EWA(f)){
e.selectedIndex=2;
SC("otheragedate",f);
break;
}
}
}
ERF();
}
function EWA(f){
var b=(f.toLowerCase().indexOf("b")>=0);
var s=f.replace(/[^0-9-]/g,"").split("-");
if(s.length==3){
var y=parseInt(s[0]);
var m=parseInt(s[1]);
var o=parseInt(s[2]);
if((y>=1)&&(y<=9999)&&(m>=1)&&(m<=12)&&(o>=1)&&(o<=31)){
if(b){
y=-y;
}
GE("otherage").options[2]=new Option("on "+FSD(o,m,y),FDS(o,m,y));
return true;
}
}
return false;
}
function ECR(_90){
var i=_90.id;
if(i.substr(0,5)=="color"){
var f=i.substr(5);
SC("color"+f,_90.value);
ERF();
}
}
function ECE(_93){
var i=_93.id;
if(i.substr(0,4)=="line"){
var f=i.substr(4);
SC("line"+f,_93.value);
ERF();
}
}
function ERC(f,c){
SV("color"+f,c);
SC("color"+f,c);
ERF();
}
function ESN(){
SC("showbirthname",NGB());
ERF();
}
function ESF(){
SC("showsurnamefirst",NGS());
ERF();
}
function EML(){
SC("showmaleleft",NGM());
ERF();
}
function ECO(){
SC("showcousins",NGC());
ERF();
}
function ECH(){
SC("showchildren",NGH());
ERF();
}
function ECP(){
SC("showparents",NGH());
ERF();
}
function ECW(){
SC("widthfactor",GV("showwidth"));
ERI();
}
function ERW(){
SV("showwidth",1);
SC("widthfactor",1);
ERF();
}
function ECT(){
SC("textsize",GV("textsize"));
ERI();
}
function ERT(){
SV("textsize",1);
SC("textsize",1);
ERF();
}
function ETO(){
var s=!GS("optionsdiv");
if(s&&GS("filesdiv")){
ETF();
}
if(s&&GS("usersdiv")){
ETU();
}
SS("optionsdiv",s);
SH("optionslinktext",s?_h("Hide options"):_h("Options"));
GE("treemargin").style.paddingBottom=(s?(GE("optionsdiv").offsetHeight+"px"):0);
TCD(Evp,250);
}
function ETF(){
var s=!GS("filesdiv");
if(s&&GS("optionsdiv")){
ETO();
}
if(s&&GS("usersdiv")){
ETU();
}
if(s){
DDF(true);
DUS();
}
SS("filesdiv",s);
SS("filesbutton",!s);
SS("filestreebutton",s);
GE("treemargin").style.paddingBottom=(s?(GE("filesdiv").offsetHeight+"px"):0);
TCD(Evp,250);
}
function ETU(){
var s=!GS("usersdiv");
if(s&&GS("optionsdiv")){
ETO();
}
if(s&&GS("filesdiv")){
ETF();
}
if(s){
GE("usersframe").src="users.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&s="+escape(GV("sessionid"))+(EID()?"&d=1":"");
}
SS("usersdiv",s);
SS("usersbutton",!s);
SS("userstreebutton",s);
GE("treemargin").style.paddingBottom=(s?(GE("usersdiv").offsetHeight+"px"):0);
TCD(Evp,250);
}
function ETI(){
var w=GE("leftdiv").offsetWidth;
var s=TGS();
var v=GI("leftdiv");
ESM("view");
ESI(!v);
NRR();
TSD(s.left+(v?-w:w),s.top);
TCD(Evp,250);
}
function ESI(s){
var c=s?"marginon":"marginoff";
GE("treemargin").className=c;
GE("fileviewmargin").className=c;
GE("navmargin").className=c;
GE("welcomemargin").className=c;
GE("optionsmargin").className=c;
GE("filesmargin").className=c;
GE("usersmargin").className=c;
SI("leftdiv",s);
NSS(s);
}
function EID(){
return (document.body.className=="dark");
}
function ETD(){
if(EID()){
var oc="dark";
var nc="light";
var sb=true;
}else{
var oc="light";
var nc="dark";
var sb=false;
}
document.body.className=nc;
var fs=["extraframe","uploadiframe","usersframe"];
for(var j=0;j<fs.length;j++){
var e=GE(fs[j]).contentDocument;
if(e){
e.body.className=e.body.className.replace(oc,nc);
}
}
SS("backspan",sb);
ERF();
}
function EFB(i){
var sf=FCS(Efa,i);
SV("do_startbranch",sf.join("\t"));
document.topform.submit();
}
function EIU(r){
if(staticMode){
var e=GE("image-"+r);
return e?e.src:"image-"+r+".jpg";
}else{
return BR("ap/","image_read",{f:GV("familyid"),p:GV("personid"),c:GV("checksum"),r:r});
}
}
function EHW(){
SS("welcomediv",false);
}
function ESL(){
return {s:Ess.length,i:Eis.length,n:GV("newscript").length};
}
function ECI(c,s){
EHW();
SV("importcacheid",c);
SV("newscript","");
Efa={};
Eis=s;
ERS(s);
EUS(true,null,"view",true,false);
EUL(false);
}
function ESA(){
SV("importcacheid","");
SV("newscript","");
Efa={};
Eis="";
EUS(true,null,"edit",true,false);
EUL(false);
SS("welcomediv",true);
}
function EES(s){
SS("exporttext",s);
if(s){
SV("exporttext",GV(s).trim());
GE("exporttext").select();
GE("exporttext").scrollTop=0;
GE("exporttext").dir=(locale_rtl&&(s=="text"))?"rtl":"ltr";
}else{
SV("exporttext","");
}
var ls=["","gedcom","newscript","csv","text"];
for(var j=0;j<ls.length;j++){
GE("export_show_"+ls[j]).className=(s==ls[j])?"selbold":"";
}
}
</script>
		<script type="text/javascript">


var Btc={pd:4};
function BMG(f,i,si,pg){
var eg=0;
var p=f[i];
if(pg["m"]&&si){
if(p.gp&&p.mp){
var t=p.gp[si];
if(((t=="m")||(t=="s")||(t=="d")||(t=="a"))&&FAD(p.mp[si])){
eg=Math.max(eg,0.625);
}
}
}
if(pg["w"]&&si){
if(p.gp&&p.wp){
var t=p.gp[si];
if(((t=="m")||(t=="s")||(t=="d")||(t=="a"))&&p.wp[si]){
eg=Math.max(eg,1.125);
}
}
}
if(pg["d"]&&si){
if(p.gp&&p.dp){
if((p.gp[si]=="d")&&FAD(p.dp[si])){
eg=Math.max(eg,0.625);
}
}
}
return 1+eg;
}
function BGC(f,pi,ci,h,fl,pg,dp,_f){
var ds=[],ss=[],gs=[];
var tw=0;
for(var j=0;j<ci.length;j++){
var i=ci[j];
var p=f[i];
var d=BGD(f,i,h,fl,pg,dp);
var pr=(p.m1==pi)||(p.f1==pi);
var gr=FNB(p,pi);
if((p.m2||p.f2)&&(p.m2!=pi)&&(p.f2!=pi)&&((!_f)||((p.m2!=_f)&&(p.f2!=_f)))){
TAL(d,pr?0.05:-0.05,0,pr?0.05:-0.05,-0.55,gr?"b":"c");
}
if((p.m3||p.f3)&&(p.m3!=pi)&&(p.f3!=pi)&&((!_f)||((p.m3!=_f)&&(p.f3!=_f)))){
TAL(d,pr?0.1:-0.1,0,pr?0.1:-0.1,-0.6,gr?"b":"c");
}
ds[ds.length]=d;
ss[ss.length]=!pr;
gs[gs.length]=gr;
tw+=d.w;
}
var _1a=ds[0].l;
var lr=ds[ds.length-1].r;
return {ds:ds,ss:ss,gs:gs,tw:tw,fl:_1a,lr:lr,aw:(tw+_1a-lr)};
}
function BDC(d,dd,cx,cy,vx,vy,yo){
var ds=dd.ds;
var gs=dd.gs;
var aw=dd.aw;
var ax=[];
var x=cx-aw/2+dd.fl;
for(var j=0;j<ds.length;j++){
var cd=ds[j];
ax[j]=x-cd.l;
TAD(d,cd,ax[j],cy);
x+=cd.w;
}
BDL(d,vx,ax,vy,cy,gs,yo);
}
function BDL(d,vx,ax,vy,cy,gs,yo){
var sb=false;
var sg=false;
var _33=vx,_34=vx;
var _35=vx,_36=vx;
var ay=(vy+cy)/2+yo;
for(var j=0;j<gs.length;j++){
var x=ax[j];
if(gs[j]){
sg=true;
_34=Math.min(_34,x);
_36=Math.max(_36,x);
}else{
sb=true;
_33=Math.min(_33,x);
_35=Math.max(_35,x);
}
TAL(d,x,ay,x,cy,gs[j]?"C":"B");
}
var _3a=Math.min(_33,_34);
var _3b=Math.max(_35,_36);
for(var g=0;g<=1;g++){
if(g?sg:sb){
var s=g?"C":"B";
if((vx<_3a)||(vx>_3b)){
var x=(vx<_3a)?_3a:_3b;
var y=(vy+ay/2);
TAL(d,vx,vy,vx,y,s);
TAL(d,vx,y,x,y,s);
TAL(d,x,y,x,ay,s);
}else{
TAL(d,vx,vy,vx,ay,s);
}
TAL(d,g?_34:_33,ay,g?_36:_35,ay,s);
}
}
}
function BDD(d,f,i,si,x,y,pd,sr,da){
var p=f[i];
TAE(d,i,p,x,y);
if(pd){
if(p.m1||p.f1){
TAL(d,x,y,x,y-0.425,FSB(p,1)?"c":"b");
}
if(p.m2||p.f2){
TAL(d,x+0.05,y,x+0.05,y-0.45,FSB(p,2)?"c":"b");
}
}
if((sr!==null)&&(p.cp>((si&&p.pc[si])?1:0))){
TAL(d,x,y,x+(sr?0.475:-0.475),y,(p.s&&f[p.s]&&p.s!=si)?"s":"p");
}
if(da){
BAC(d,f,i,x,y);
}
}
function BAC(d,f,i,x,y){
var ac=FLA(f,i);
if(ac.length){
var sb=false;
var sg=false;
for(var j=0;j<ac.length;j++){
if(FNB(f[ac[j]],i)){
sg=true;
}else{
sb=true;
}
}
if(sb){
TAL(d,x,y,x,y+0.35,"b");
}
if(sg){
TAL(d,x,y,x,y+0.35,"c");
}
}
}
function BDA(d,f,i,si,h,dr,fx,cy,fl,pg,dp,_5d,pcx,_5f){
var p=f[i];
var ps=FSS(p,si,false);
var yt=0;
for(var pi in ps){
yt++;
}
var ot=Math.min(0.1*(yt-1),0.15);
var ly=cy+ot/2;
var lo=(yt>1)?(ot/(yt-1)):0;
var uo=0.1/(yt+1);
var uy=cy-0.5+uo*(yt+1);
var ax=[];
for(var pi in ps){
if(dp.p[i+"-"+pi]){
TAL(d,fx,ly,fx+(dr?0.475:-0.475),ly,FUP(f,i,pi)?"s":"p");
}else{
dp.p[i+"-"+pi]=true;
dp.p[pi+"-"+i]=true;
var pc=FLP(f,i,pi);
if(_5d){
FAI(pc,_5d);
}
BDH(d,f,i,pi,pc,h,dr,fx,cy,ly,uy,fl,pg,dp,ax,pcx,_5f);
}
ly-=lo;
uy-=uo;
}
}
function BDH(d,f,i,pi,ci,h,dr,fx,cy,ly,uy,fl,pg,dp,ax,pcx,_7b){
var g=BMG(f,i,pi,pg);
if(ci.length){
var ds=BGC(f,i,ci,h,fl,pg,dp,_7b);
var cx=dr?(d.r-ds.fl+ds.aw/2):(d.l-ds.lr-ds.aw/2);
var px=cx+(dr?0.5:-0.5);
BDC(d,ds,cx,cy+1,(pi&&f[pi])?cx:fx,ly,(pi===null)?-0.15:0);
}else{
var px=dr?(d.r):(d.l-1);
}
if(pi){
pcx[pi]=px-(dr?0.5:-0.5);
}
if(pi&&f[pi]){
var s=FUP(f,i,pi)?"S":"P";
if(ax.length){
var xo=(dr?0.5:-0.5);
var x1=ax[0]-xo*(1+(ax.length)/10);
var x2=ax[ax.length-1]+xo+xo/10;
TAL(d,fx,ly,x1,ly,s);
TAL(d,x1,ly,x1,uy,s);
TAL(d,x1,uy,x2,uy,s);
TAL(d,x2,uy,x2,ly,s);
TAL(d,x2,ly,px,ly,s);
if(Math.abs(px-x2)>=(g-1)){
TAP(d,i,pi,x2+(dr?-0.5:0.5),px,ly,false);
}else{
TAP(d,i,pi,x2+(dr?-1.5:-0.5),x2+(dr?0.5:1.5),uy,true);
}
}else{
TAL(d,fx,ly,px,ly,s);
TAP(d,i,pi,fx,px,ly,true);
}
BDD(d,f,pi,i,px,cy,true,dr,true);
ax[ax.length]=px;
}
}
function BSS(d,f,p,si,h,dr,cy,fl,pg,dp){
var li=[],ri=[];
for(var j=0;j<si.length;j++){
var r=(dr===null)?(FCC(p,f[si[j]])<0):dr;
if(r){
ri[ri.length]=si[j];
}else{
li[li.length]=si[j];
}
}
var apl=BDS(d,f,p,li,h,false,cy,fl,pg,dp);
var apr=BDS(d,f,p,ri,h,true,cy,fl,pg,dp);
var al=apl[""];
var ar=apr[""];
var ap=apl;
for(var j in apr){
ap[j]=apr[j];
}
return {al:al,ar:ar,ap:ap,ll:li.length,rl:ri.length};
}
function BDS(d,f,p,si,h,dr,cy,fl,pg,dp){
var al={"":0};
for(var j=0;j<si.length;j++){
var k=dr?j:(si.length-j-1);
var sd=BGD(f,si[k],h,fl,pg,dp);
if(sd.h==1){
var x=dr?(d.yr[cy]-sd.l):(d.yl[cy]-sd.r);
}else{
var x=dr?(d.r-sd.l):(d.l-sd.r);
}
TAD(d,sd,x,cy);
if(f[si[k]].m2||f[si[k]].f2){
TAL(d,x+0.05,cy,x+0.05,cy-0.45,FNB(f[si[k]],p.m1||p.f1)?"b":"c");
}
al[f[si[k]].i]=x;
al[""]=x;
}
return al;
}
function BPS(d,f,pi,oi,ph,h,dr,fx,fl,pg,dp){
var p=f[pi];
if(p.m1||p.f1){
if(p.m2||p.f2){
TAL(d,fx+0.05,-1,fx+0.05,-1.45,FSB(p,2)?"c":"b");
}
if(ph<=1){
TAL(d,fx,-1,fx,-1.4,FSB(p,1)?"c":"b");
}else{
var gs=[FNB(p,p.m1||p.f1)];
var ax=[fx];
var bx=fx;
var od=oi&&f[oi]&&(f[oi].f1||f[oi].m1);
if(h>0){
var bs=FLS(f,pi,1);
if(bs.length){
if(od){
var aa=BSS(d,f,p,bs,h-1,dr,-1,fl,pg,dp);
}else{
var aa=BSS(d,f,p,bs,h-1,null,-1,fl,pg,dp);
var al=aa.ll?aa.al:fx;
var ar=aa.rl?aa.ar:fx;
var bx=(al+ar)/2;
if(Math.abs(bx-fx)>Btc.pd){
bx=fx+0.5*(aa.rl-aa.ll);
}
}
var ap=aa.ap;
for(var j=0;j<bs.length;j++){
gs[gs.length]=FNB(f[bs[j]],p.m1||p.f1);
ax[ax.length]=ap[bs[j]];
}
}
}
var ad=BGA(f,pi,ph-1,od?dr:null,h<=0,fl,pg,dp);
TAD(d,ad,bx,-1);
if(h>0){
BDL(d,bx+(ad.yl[-1]+ad.yr[-1]-1)/2,ax,-2,-1,gs,0);
}
}
}
}
function BGA(f,i,h,dr,da,fl,pg,dp){
var d=TND();
var p=f[i];
if((h>0)&&!dp.a[i]){
dp.a[i]=true;
var x1=0;
var x2=0;
if(p.m1||p.f1){
if(p.m1&&p.f1){
var g=BMG(f,p.m1,p.f1,pg);
if(dr===null){
var m1=!fl;
var d1=false,d2=true;
x1-=g/2;
}else{
var m1=fl?(!dr):dr;
var d1=dr,d2=dr;
}
var i1=m1?p.m1:p.f1;
var i2=m1?p.f1:p.m1;
TAD(d,BGA(f,i1,h-1,d1,true,fl,pg,dp),x1,-1);
BDD(d,f,i1,i2,x1,-1,false,d1,true);
x2=d2?(d.r+g-1):(d.l-g);
TAD(d,BGA(f,i2,h-1,d2,true,fl,pg,dp),x2,-1);
BDD(d,f,i2,i1,x2,-1,false,d2,true);
TAL(d,x1,-1,x2,-1,FUP(f,i1,i2)?"S":"P");
TAP(d,i1,i2,x1,x2,-1,false);
}else{
var pi=p.m1||p.f1;
TAD(d,BGA(f,pi,h-1,dr,true,fl,pg,dp),x1,-1);
BDD(d,f,pi,null,x1,-1,false,f[pi].g!=(fl?"f":"m"),false);
}
if(da){
var gr=FSB(p,1);
var x=(x1+x2)/2;
TAL(d,x,-0.5,x,-1,gr?"C":"B");
TAL(d,x,-0.5,0,-0.5,gr?"C":"B");
TAL(d,0,-0.5,0,0,gr?"C":"B");
var bs=FLS(f,i,1);
if(bs.length){
var sl=false;
var sr=false;
if((dr===null)||(!p.m1)||(!p.f1)){
for(var j=0;j<bs.length;j++){
if(FCC(p,f[bs[j]])<0){
sr=true;
}else{
sl=true;
}
}
}else{
if(dr){
sr=true;
}else{
sl=true;
}
}
var lx=x-(sl?(sr?0.05:0.1):0);
TAL(d,lx,-0.5,lx+0.1,-0.5,gr?"c":"b");
}
}
}
}else{
if(p.m1||p.f1){
TAL(d,0,-0.4,0,0,FSB(p,1)?"c":"b");
}
}
if(da&&(p.m2||p.f2)){
TAL(d,0.05,-0.45,0.05,0,FSB(p,2)?"c":"b");
}
return d;
}
function BGD(f,i,h,fl,pg,dp){
var p=f[i];
var d=TND();
var sr=FSM(f,i,p.es);
var g=BMG(f,i,p.es,pg);
if(fl){
sr=!sr;
}
var sx=sr?g:-g;
if(h>0){
TAE(d,i,p,0,0);
var c=p.c.slice();
if(p.es){
FAN(c,f[p.es].c);
}
var _e3=[];
var _e4=[];
var _e5=[];
var _e6=[];
var _e7={};
var _e8={};
for(var j=0;j<c.length;j++){
var ci=c[j];
var cp=f[ci];
if((cp.m1==i)||(cp.f1==i)){
_e4[_e4.length]=ci;
if(p.es){
if((cp.m2==p.es)||(cp.f2==p.es)){
_e6[_e6.length]={j:2,i:ci};
}else{
if((cp.m3==p.es)||(cp.f3==p.es)){
_e6[_e6.length]={j:3,i:ci};
}
}
}
}else{
if((cp.m1==p.es)||(cp.f1==p.es)){
_e3[_e3.length]=ci;
if((cp.m2==i)||(cp.f2==i)){
_e5[_e5.length]={j:2,i:ci};
}else{
if((cp.m3==i)||(cp.f3==i)){
_e5[_e5.length]={j:3,i:ci};
}
}
}else{
if((cp.m2==i)||(cp.f2==i)||(cp.m3==i)||(cp.f3==i)){
_e4[_e4.length]=ci;
}else{
_e3[_e3.length]=ci;
}
}
}
}
var ac=FLA(f,i);
FAI(ac,_e3);
_e7[""]=0;
if(ac.length){
if(dp.c[i]){
BAC(d,f,i,0,0);
}else{
dp.c[i]=true;
var ds=BGC(f,i,ac,h-1,fl,pg,dp,p.es);
BDC(d,ds,0,1,0,0,0);
}
}
if(p.es){
if(dp.p[i+"-"+p.es]){
TAL(d,0,0,sr?0.475:-0.475,0,FUP(f,i,p.es)?"s":"p");
}else{
dp.p[i+"-"+p.es]=true;
dp.p[p.es+"-"+i]=true;
var tc=FLP(f,i,p.es);
FAI(tc,_e3);
if(tc.length){
var ds=BGC(f,i,tc,h-1,fl,pg,dp);
if(ac.length){
sx=sr?Math.max(g,(d.r+(ds.tw-ds.fl-ds.lr)/2+0.5)):Math.min(-g,(d.l-(ds.tw+ds.lr+ds.fl)/2-0.5));
var cx=sr?(sx-0.5):(sx+0.5);
}else{
var cx=sr?(sx-g/2):(sx+g/2);
}
BDC(d,ds,cx,1,cx,0,0);
_e7[p.es]=cx;
_e8[i]=cx;
}
TAL(d,0,0,sx,0,FUP(f,i,p.es)?"S":"P");
TAP(d,i,p.es,0,sx,0,false);
BDD(d,f,p.es,i,sx,0,true,null,false);
_e8[""]=sx;
var pac=FLA(f,p.es);
FAI(pac,_e4);
if(pac.length){
if(dp.c[p.es]){
BAC(d,f,p.es,sx,0);
}else{
dp.c[p.es]=true;
var ds=BGC(f,p.es,pac,h-1,fl,pg,dp);
BDC(d,ds,sr?(d.r+(ds.tw-ds.fl-ds.lr)/2):(d.l-(ds.tw+ds.lr+ds.fl)/2),1,sx,0,-0.15);
}
}
BDA(d,f,p.es,i,h-1,sr,sx,0,fl,pg,dp,_e4,_e8,i);
}
}
BDA(d,f,i,p.es,h-1,!sr,0,0,fl,pg,dp,_e3,_e7,p.es);
for(k=2;k<=3;k++){
var oxy=(k-1)*0.05;
for(var j=0;j<_e5.length;j++){
if(_e5[j].j==k){
var ci=_e5[j].i;
if(d.e[ci]){
var op=(f[ci]["m"+k]==i)?f[ci]["f"+k]:f[ci]["m"+k];
BDL(d,_e7[op||""]+0,[d.e[ci].x+oxy],0,1,[FSB(f[ci],k)],-oxy);
}
}
}
for(var j=0;j<_e6.length;j++){
if(_e6[j].j==k){
var ci=_e6[j].i;
if(d.e[ci]){
var op=(f[ci]["m"+k]==p.es)?f[ci]["f"+k]:f[ci]["m"+k];
BDL(d,_e8[op||""]+0,[d.e[ci].x+oxy],0,1,[FSB(f[ci],k)],-oxy);
}
}
}
}
}else{
BDD(d,f,i,null,0,0,false,sr,true);
}
return d;
}
function BGH(f,i){
var p=f[i];
if(p){
var hc=p.es;
var ac=FLA(f,i);
if(hc&&(!p.m1)&&(!p.f1)&&p.pc[hc]&&(p.cp==1)&&(ac.length==0)){
return hc;
}
}
return null;
}
function BFT(f,i,m,ch,ph,oh,fl,pg){
var p=f[i];
var hc=BGH(f,i);
if(ch&&hc&&!BGH(f,hc)){
var d=TND();
var od=BFT(f,hc,m,ch,ph,oh,fl,pg);
TAD(d,od,-od.e[i].x,-od.e[i].y);
d.e[hc].k=false;
}else{
var dp={a:{},p:{},c:{}};
var d=BGD(f,i,ch,fl,pg,dp);
if(ph>0){
var px=0;
var gs=[FSB(p,1)];
var ax=[0];
var bs=FLS(f,i,1);
if(bs.length){
var aa=BSS(d,f,p,bs,oh,null,0,fl,pg,dp);
px=(aa.al+aa.ar)/2;
if(Math.abs(px)>Btc.pd){
px=0.5*(aa.rl-aa.ll);
}
for(var j=0;j<bs.length;j++){
gs[gs.length]=FNB(f[bs[j]],p.m1||p.f1);
ax[ax.length]=aa.ap[bs[j]];
}
}
if(p.m1||p.f1){
var mx=px,fx=px;
var p2=p.m2||p.f2;
var p3=p.m3||p.f3;
BDL(d,px,ax,-1,0,gs,0);
if(p.m1&&p.f1){
dp.p[p.m1+"-"+p.f1]=true;
dp.p[p.f1+"-"+p.m1]=true;
var o=BMG(f,p.m1,p.f1,pg)/2;
mx+=(fl?o:-o);
fx+=(fl?-o:o);
TAL(d,mx,-1,fx,-1,FUP(f,p.m1,p.f1)?"S":"P");
TAP(d,p.m1,p.f1,mx,fx,-1,false);
}
if(p.m1){
BDD(d,f,p.m1,p.f1,mx,-1,false,p2?fl:null,p2);
}
if(p.f1){
BDD(d,f,p.f1,p.m1,fx,-1,false,p2?(!fl):null,p2);
}
if(p2){
var dr2=(bs.length==0)||(aa.ll>=aa.rl);
var eu={};
for(j=2;j<=3;j++){
var drj=dr2;
var mj=p["m"+j];
var fj=p["f"+j];
if(mj||fj){
var ej=null;
var ei=null;
var ex=null;
var em=false;
if(mj&&((fj==p.m1)||(fj==p.f1))&&!eu[fj]){
ej=mj;
drj=(fj==p.m1)?fl:!fl;
ei=fj;
ex=fx;
fj=null;
em=true;
}else{
if(fj&&(mj==p.m1)||(mj==p.f1)&&!eu[mj]){
ej=fj;
drj=(fj==p.m1)?fl:!fl;
ei=mj;
ex=mx;
mj=null;
em=true;
}else{
if(!(mj&&fj)){
ej=mj||fj;
if(f[ej].pc[p.m1]&&!eu[p.m1]){
drj=fl;
ei=p.m1;
ex=mx;
}else{
if(f[ej].pc[p.f1]&&!eu[p.f1]){
drj=!fl;
ei=p.f1;
ex=fx;
}else{
ej=null;
}
}
}
}
}
var gr2=FSB(p,j);
var g=ej?BMG(f,ej,ei,pg):1;
var m2x=drj?(d.yr[-1]+g-1):(d.yl[-1]-g);
var f2x=m2x;
if(mj&&fj){
var g=BMG(f,mj,fj,pg);
m2x+=(fl?(drj?g:0):(drj?0:-g));
f2x=m2x+(fl?-g:g);
TAL(d,m2x,-1,f2x,-1,FUP(f,mj,fj)?"S":"P");
TAP(d,mj,fj,m2x,f2x,-1,false);
}
var p2x=em?((m2x+ex)/2):((m2x+f2x)/2);
var oy=((j==2)&&p3)?-0.1:-0.05;
var ox=drj?(j-1)*0.05:-(j-1)*0.05;
TAL(d,ox,0,ox,-0.5+oy,gr2?"C":"B");
TAL(d,ox,-0.5+oy,p2x,-0.5+oy,gr2?"C":"B");
TAL(d,p2x,-0.5+oy,p2x,-1,gr2?"C":"B");
var bs2=FLS(f,i,j);
if(bs2.length){
TAL(d,p2x,-0.5+oy,p2x+(drj?0.1:-0.1),-0.5+oy,gr2?"c":"b");
}
if(mj){
BDD(d,f,mj,fj,m2x,-1,true,fl,false);
}
if(fj){
BDD(d,f,fj,mj,f2x,-1,true,!fl,false);
}
if(ej&&ei){
TAL(d,ex,-1,m2x,-1,FUP(f,ej,ei)?"S":"P");
TAP(d,ej,ei,ex,m2x,-1,false);
eu[ei]=true;
}
}
}
}else{
if(p.m1){
var ac=FLA(f,p.m1);
if(ac.length&&p.f1){
BDH(d,f,p.m1,null,ac,oh,fl,mx,-1,-1,-1,fl,pg,dp,[],{});
}
BDA(d,f,p.m1,p.f1,oh,fl,mx,-1,fl,pg,dp,[],{});
}
if(p.f1){
var ac=FLA(f,p.f1);
if(ac.length&&p.m1){
BDH(d,f,p.f1,null,ac,oh,!fl,fx,-1,-1,-1,fl,pg,dp,[],{});
}
BDA(d,f,p.f1,p.m1,oh,!fl,fx,-1,fl,pg,dp,[],{});
}
}
if(p.m1){
BPS(d,f,p.m1,p.f1,ph,oh,fl,mx,fl,pg,dp);
}
if(p.f1){
BPS(d,f,p.f1,p.m1,ph,oh,!fl,fx,fl,pg,dp);
}
}
}else{
if(p.m1||p.f1){
TAL(d,0,0,0,-0.425,FSB(p,1)?"c":"b");
if(p.m2||p.f2){
TAL(d,0.05,0,0.05,-0.45,FSB(p,2)?"c":"b");
}
}
}
}
d.e[i].k=true;
if(m&&d.e[m]){
d.e[m].m=true;
}
return d;
}
</script>
		<script type="text/javascript">


function NSS(s){
SS("sidehide",s);
SS("sideshow",!s);
}
function NKS(s){
SH("keylinktext",s?"Hide":"Show");
}
function NSD(d){
GE("detail_0p").checked=true;
GE("detail_0lq").checked=true;
var ds=(d+"").split(".");
var db={};
for(var i=0;i<ds.length;i++){
db[ds[i]]=true;
var e=GE("detail_"+ds[i]);
if(e){
e.checked=(ds[i].substr(0,1)=="0")?false:true;
}
}
SD("detail_pm",db["0p"]);
SD("detail_N",db["0p"]);
SD("detail_TJ",db["0p"]);
SD("detail_0lq",db["0p"]);
SS("otherage",db["age"]);
}
function NGR(){
var c={};
for(var j=0;j<Ecf.length;j++){
var f=Ecf[j];
c[f]=GV("color"+f);
}
return c;
}
function NGL(){
var l={};
for(var j=0;j<Elf.length;j++){
var f=Elf[j];
l[f]=GV("line"+f);
}
return l;
}
function NGD(){
var v=GV("otherage");
var p=FPD(v);
return p.y?v:FNS();
}
function NGB(){
return parseInt(GO("showbirthname"));
}
function NGS(){
return parseInt(GO("showsurnamefirst"));
}
function NGM(){
return parseInt(GO("showmaleleft"));
}
function NGC(){
return parseInt(GO("showcousins"));
}
function NGH(){
return parseInt(GO("showchildren"));
}
function NGA(){
return parseInt(GO("showparents"));
}
function NSP(i){
ST("backtotext",(i==GV("personid"))?_t("Back to me"):(Efa[i]?_t("Back to $",Efa[i].h):_t("Back to start")));
}
function NRT(){
}
function NPF(){
var r=GE("findfield").getBoundingClientRect();
GE("findlist").style.left=r.left+"px";
}
function NRR(){
var e=GE("navrow");
e.className="";
for(s=1;s<=5;s++){
if(e.scrollWidth<=e.offsetWidth){
break;
}
e.className+="nshrink"+s+" ";
}
}
function NCP(i){
GE("findfield").placeholder=_t("# people",i);
}
function NFF(){
NPF();
NUF(null);
SS("findlist",true);
GE("findlist").onclick=function(e){
var i=e.target.id||e.target.parentElement.id;
if(i.substring(0,5)=="list_"){
ESP(i.substring(5),true);
}
};
}
function NHF(){
SS("findlist",false);
}
function NIF(){
SS("findlist",true);
setTimeout("NUF("+GV("findfield").length+");",100);
}
function NUF(vl){
var ev=GV("findfield");
if((vl!==null)&&(vl!=ev.length)){
return;
}
NUL(GE("findlist"),ev,null,null,false);
}
function NUL(e,sv,ai,si,no){
var ss=sv.trim().toLowerCase().split(/[ \-]/);
var bn=NGB();
var bn1=(bn==1);
var sf=NGS();
if(ai===null){
ai=[];
for(var j in Efa){
ai[ai.length]=j;
}
}
var jn=[];
if(no){
var m=_t("(none)");
var i=true;
for(var k=0;k<ss.length;k++){
if(m.indexOf(ss[k])<0){
i=false;
break;
}
}
if(i){
jn[jn.length]={i:"",n:m};
}
}
for(var j=0;j<ai.length;j++){
var p=Efa[ai[j]];
var n=(FDN(p,true,2,sf,bn1,true,true,true,true)+FYS(p)).trim();
var m=n.toLowerCase();
var i=true;
for(var k=0;k<ss.length;k++){
if(m.indexOf(ss[k])<0){
i=false;
break;
}
}
if(i){
var sn1=(bn1?(p.q||p.l):(p.l||p.q))||"";
var sn2=(sn1?(bn1?p.l:p.q):"")||"";
if(sn1==sn2){
sn2="";
}
jn[jn.length]={i:ai[j],l:sn1,q:sn2,p:(p.p||""),n:n};
}
}
jn.sort(NSB);
var exp=NSR(ss);
var h="";
for(var j=0;j<jn.length;j++){
if(jn[j].n.length){
h+="<a href=\"#\" id=\"list_"+jn[j].i+"\" onclick=\"return false;\">"+NSE(jn[j].n,exp)+"</a>";
}
}
if(!h){
h="<div>"+_h("No matches found")+"</div>";
}
e.innerHTML=h;
if(locale_rtl){
e.dir="rtl";
}
var i=e.querySelector("#list_"+(si||""));
if(i){
i.className="snamesel";
e.scrollTop=i.offsetTop-(i.offsetHeight+e.offsetHeight)/2;
}
}
function NSR(ss){
var esc=/[-\/\\^$*+?.()|[\]{}]/g;
var reg="";
for(var k=0;k<ss.length;k++){
if(ss[k].length){
reg+=EH(ss[k]).replace(esc,"\\$&")+"|";
}
}
if(reg.length){
var exp=new RegExp(reg.slice(0,-1),"ig");
}else{
var exp=null;
}
return exp;
}
function NSE(t,exp){
var h=EH(t);
if(exp){
h=h.replace(exp,"<u>$&</u>");
}
return h;
}
function NSB(a,b){
if(a.l<b.l){
return -1;
}else{
if(b.l<a.l){
return 1;
}
}
if(a.q<b.q){
return -1;
}else{
if(b.q<a.q){
return 1;
}
}
if(a.p<b.p){
return -1;
}else{
if(b.p<a.p){
return 1;
}
}
if(a.n<b.n){
return -1;
}else{
if(b.n<a.n){
return 1;
}
}
return 0;
}
</script>
		<script type="text/javascript">


var ios=navigator.userAgent.match(/(iPod|iPhone|iPad)/)&&navigator.userAgent.match(/AppleWebKit/);
function TND(){
return {l:0,r:0,w:0,t:0,b:0,h:0,e:{},n:[],p:[],yl:{},yr:{}};
}
function TAE(d,i,p,x,y,k){
var di=d.e[i];
if(di){
i+=Math.random();
}
d.e[i]={p:p,x:x,y:y,k:k,d:di};
d.l=Math.min(d.l,x);
d.r=Math.max(d.r,1+x);
d.w=d.r-d.l;
d.t=Math.min(d.t,y);
d.b=Math.max(d.b,1+y);
d.h=d.b-d.t;
if(d.yl[y]===undefined){
d.yl[y]=x;
}else{
d.yl[y]=Math.min(d.yl[y],x);
}
if(d.yr[y]===undefined){
d.yr[y]=1+x;
}else{
d.yr[y]=Math.max(d.yr[y],1+x);
}
}
function TAL(d,x1,y1,x2,y2,t){
d.n[d.n.length]={x1:x1,y1:y1,x2:x2,y2:y2,t:t};
}
function TAP(d,i,si,x1,x2,y,b){
if(Math.abs(x1-x2)>1.1){
d.p[d.p.length]={i:i,si:si,x1:x1,x2:x2,y:y,b:b};
}
}
function TAD(od,d,dx,dy){
for(var j=0;j<d.n.length;j++){
var n=d.n[j];
TAL(od,n.x1+dx,n.y1+dy,n.x2+dx,n.y2+dy,n.t);
}
for(j=0;j<d.p.length;j++){
var p=d.p[j];
TAP(od,p.i,p.si,p.x1+dx,p.x2+dx,p.y+dy,p.b);
}
for(var i in d.e){
var e=d.e[i];
TAE(od,e.p.i,e.p,e.x+dx,e.y+dy,e.k);
}
}
function TDS(yb,zf,wf,bn,ts){
var ya=[yb.age,yb.bd,yb.j,yb.b,yb.v,yb.d,yb.y,yb.Z,yb.F,yb.U,yb.e,yb.e,yb.tku,yb.tku,yb.a,yb.a,yb.E,yb.I,yb.A];
var yc=0;
for(var j=0;j<ya.length;j++){
if(ya[j]){
yc++;
}
}
var sz={Tew:parseInt(((yc||yb.r||yb.pm||yb.TJ)?100:80)*zf*wf),Tnh:parseInt((yb["0p"]?0:(((bn==2)||yb.N)?50:40))*zf),Tph:parseInt((yb.r?100:0)*zf),Tdh:parseInt(20*yc*zf),Tmh:parseInt(40*zf),Ths:parseInt(20*zf),Tvs:parseInt(40*zf),Tfs:(12*zf*ts),Tds:(10*zf*ts),partnerfontsize:(9*zf*ts)};
sz.Teh=parseInt(Math.max(sz.Tnh+sz.Tph+sz.Tdh,sz.Tmh));
sz.Tep=Math.max(0,sz.Tew*0.04);
return sz;
}
function TRD(d,y,ad,bn,sf,c,ls,o,oi,wp,pr,zf,wf,ts,_35){
var _36=wp?(ios?1920:19200):0;
var _37=wp?(ios?1200:12000):0;
var yb={};
var ys=y.split(".");
for(var j=0;j<ys.length;j++){
yb[ys[j]]=true;
}
var mn=yb["pm"];
var sp=yb["r"];
var spn=!yb["0p"];
var ssn=!yb["0lq"];
var ni=yb["N"];
var tj=yb["TJ"];
var sz=TDS(yb,zf,wf,bn,ts);
var tw=(sz.Tew+sz.Ths)*d.w-sz.Ths;
var th=(sz.Teh+sz.Tvs)*d.h-sz.Tvs;
if(!wp){
ox=sz.Tew/2-d.l*(sz.Tew+sz.Ths);
oy=sz.Teh/2-d.t*(sz.Teh+sz.Tvs);
}else{
if(ios){
if(!(o.ios_width&&o.ios_height)){
o.ios_width=GE("treebg").offsetWidth;
o.ios_height=GE("treebg").offsetHeight;
}
ox=o.ios_width/2+_36/2;
oy=o.ios_height/2+_37/2;
o.style.left=(-_36/2)+"px";
o.style.top=(-_37/2)+"px";
}else{
if(oi&&o.ps[oi]&&d.e[oi]){
ox=o.ps[oi].x-d.e[oi].x*(sz.Tew+sz.Ths);
oy=o.ps[oi].y-d.e[oi].y*(sz.Teh+sz.Tvs);
}else{
ox=_36-d.l*(sz.Tew+sz.Ths);
oy=_37-d.t*(sz.Teh+sz.Tvs);
}
}
}
o.innerHTML="";
o.ps={};
o.es={l:(ox+(d.l-0.5)*(sz.Tew+sz.Ths)),t:(oy+(d.t-0.5)*(sz.Teh+sz.Tvs)),r:(ox+(d.r-0.5)*(sz.Tew+sz.Ths)),b:(oy+(d.b-0.5)*(sz.Teh+sz.Tvs))};
var s=o.style;
if(!wp){
s.width=(tw+_36*2)+"px";
s.height=(th+_37*2)+"px";
}
for(var g=1;g>=0;g--){
for(var j=0;j<d.n.length;j++){
var n=d.n[j];
var ss=TGT(n.t,ls);
if(ss.g?(!g):g){
continue;
}
var l=Math.min(n.x1,n.x2);
var r=Math.max(n.x1,n.x2);
var t=Math.min(n.y1,n.y2);
var b=Math.max(n.y1,n.y2);
var v=document.createElement("div");
v.className=((ss.d==2)?"ddashed":((ss.d==1)?"ddotted":"dline"))+(ss.g?" gray":"");
var ok=ss.d?0:ss.k;
var s=v.style;
s.width=((r==l)?ok:(r-l)*(sz.Tew+sz.Ths)+ok)+"px";
s.height=((b==t)?ok:(b-t)*(sz.Teh+sz.Tvs)-(ss.d?1:0))+"px";
s.left=ox+(l*(sz.Tew+sz.Ths))-((r==l)?(ss.k/2):(ss.k/2))+"px";
s.top=oy+(t*(sz.Teh+sz.Tvs))-((b==t)?(ss.k/2):0)+"px";
if(ss.d){
s.borderTopWidth=ss.k+"px";
s.borderLeftWidth=ss.k+"px";
}
o.appendChild(v);
}
}
for(var j=0;j<d.p.length;j++){
var p=d.p[j];
var l=Math.min(p.x1,p.x2)+0.5;
var r=Math.max(p.x1,p.x2)-0.5;
var t=p.y-(p.b?0:0.25);
var b=t+0.25;
var v=document.createElement("div");
v.className="dp";
var s=v.style;
s.width=(r-l)*(sz.Tew+sz.Ths)+sz.Ths+"px";
s.height=(b-t)*(sz.Teh+sz.Tvs)+"px";
s.left=ox+(l*(sz.Tew+sz.Ths))-sz.Ths/2+"px";
s.top=oy+(t*(sz.Teh+sz.Tvs))+"px";
s.fontSize=sz.partnerfontsize+"px";
v.innerHTML="<div class=\""+(p.b?"dpb":"dpt")+"\">"+EH(TGP(yb,d.e[p.i].p,p.si))+"</div>";
o.appendChild(v);
}
for(var i in d.e){
var e=d.e[i];
var rs="";
var fn=FDN(e.p,true,(bn==2)?2:1,sf,(bn==1),true,true,true,true);
var _53=((e.p.z=="1")&&!pr)?c.deceased:c.living;
var sh=sz.Tnh;
var ey=y?TGL(yb,ad,e.p):null;
if(sp&&e.p.r){
var er=e.p.r.split(" ");
var uf=EIU||(opener&&opener.top&&opener.top.EIU);
if(uf){
var u=uf(er[0]);
var ew=sz.Tew-sz.Tep*2;
var eh=Math.min(ew,sz.Tph);
if(er[1]&&er[2]){
if(parseInt(er[1])>parseInt(er[2])){
eh=Math.floor(ew*er[2]/er[1]);
}else{
ew=Math.floor(eh*er[1]/er[2]);
}
}
rs+="<TR HEIGHT=\""+(ey?sz.Tph:(sz.Tph+sz.Tep*2))+"\"><TD CLASS=\"dcell\" style=\"color:"+_53+"; padding:0 "+sz.Tep+"px;\"><IMG SRC=\""+u+"\" WIDTH=\""+ew+"\" HEIGHT=\""+eh+"\" TITLE=\""+EH(fn)+"\"></TD></TR>";
sh+=sz.Tph+sz.Tep*2;
}
}
if(ey){
rs+="<TR><TD CLASS=\"dcell\" STYLE=\"font-size:"+sz.Tds+"px;color:"+_53+"; padding:0 "+sz.Tep+"px;\" TITLE=\""+EH(ey.replace(/\n/g,", "))+"\">"+EL(ey)+"</TD></TR>";
sh+=sz.Tdh;
}
var sx=ox+(e.x)*(sz.Tew+sz.Ths);
var sy=oy+(e.y)*(sz.Teh+sz.Tvs);
sh=Math.max(sh,sz.Tmh);
TRB(o,sx-(sz.Tew/2),sy-(sh/2),sz.Tew,sh,e.k?3:1,(e.p.g=="f")?c.female:((e.p.g=="m")?c.male:(((e.p.g||"").charAt(0)=="o")?c.other:"#FFFFFF")),null);
var v=document.createElement("div");
v.className="di";
if(locale_rtl){
v.dir="rtl";
}
var s=v.style;
s.width=sz.Tew+"px";
s.height=sh+"px";
s.left=(sx-(sz.Tew/2))+"px";
s.top=(sy-(sh/2))+"px";
if(wp){
v.onmousedown=TCT;
v.id=i;
v.pid=e.p.i;
o.ps[i]={x:sx,y:sy};
}
if(spn){
var tn=FDN(e.p,mn,ssn?((bn==2)?2:1):0,sf,(bn==1),true,ni,tj,tj);
var ns="<TR><TD CLASS=\"dcell\" STYLE=\"font-size:"+(e.d?sz.Tds:sz.Tfs)+"px;color:"+_53+"; padding:0 "+sz.Tep+"px;\""+" TITLE=\""+(e.d?(_h("Duplicate:")+" "):"")+EH(fn)+"\">"+(e.d?"<I>"+_h("Duplicate:")+"</I><BR>":"")+(spn?(SB(EL(tn))):"")+"</TD></TR>";
}else{
var ns="";
}
v.innerHTML="<TABLE WIDTH=\"100%\" HEIGHT=\"100%\" STYLE=\"table-layout:fixed; border-collapse:collapse;\">"+ns+rs+"</TABLE>";
o.appendChild(v);
}
}
function TGT(t,ls){
var o="normal";
var tl=t.toLowerCase();
switch(tl){
case "s":
o=ls.current;
break;
case "p":
o=ls.otherpartner;
break;
case "b":
o=ls.biological;
break;
case "c":
o=ls.otherparent;
break;
}
var s={k:2,g:false,d:0};
switch(o){
case "thin":
s.k=1;
break;
case "thick":
s.k=4;
break;
case "gray":
s.g=true;
break;
case "dashed":
s.d=2;
break;
}
if(t==tl){
s.d=1;
s.k=Math.min(2,s.k);
}
return s;
}
function TGL(yb,ad,p){
var ey="";
if(yb["age"]){
var ae=false;
if((p.z==1)&&p.d){
var dl=FSL(p.d);
if(dl&&(FCD(dl,FPD(ad))>0)){
ae=true;
}
}
if((p.z!="1")||ae){
var de=p.b?FSE(p.b):null;
if(de&&(FCD(de,FPD(ad))>0)){
ey+=_t("Not yet born")+"\n";
}else{
ey+=FDR(p.b,ad,true)+"\n";
}
}
}
if(yb["bd"]){
var bs=FYT(p.b);
var ds=(p.z=="1")?FYT(p.d):"";
if(bs&&(ds||(p.z=="1"))){
ey+=bs+(((""+bs+ds).indexOf("~")>=0)?" - ":"-")+(ds||"?")+"\n";
}else{
if(bs){
ey+=_t("Born")+" "+bs+"\n";
}else{
if(ds){
ey+=_t("Died")+" "+ds+"\n";
}
}
}
}
if(yb["j"]&&p.j){
ey+=p.j+"\n";
}
if(yb["b"]||yb["v"]){
var bs=yb["b"]?FDT(p.b,false):"";
var vs=yb["v"]?(p.v||""):"";
if(bs||vs){
ey+=_t("Born")+" "+bs+((bs&&vs)?", ":"")+vs+"\n";
}
}
var az=(yb["age"]&&(p.z=="1")&&!ae)?FDR(p.b,p.d,false):null;
if((yb["d"]||az||yb["y"]||yb["Z"])&&(p.z=="1")){
var ds=yb["d"]?FDT(p.d,false):"";
var ys=yb["y"]?(p.y||""):"";
var Zs=yb["Z"]?(p.Z||""):"";
if(ds||az||ys||Zs){
ey+=_t("Died")+" "+ds+((ds&&az)?(" ("+az+")"):(az?(FDR(p.b,p.d,true)):""))+(((ds||az)&&ys)?", ":"")+ys+(Zs?(" ("+Zs+")"):"")+"\n";
}
}
if((yb["F"]||yb["U"])&&(p.z=="1")){
var Fs=yb["F"]?FDT(p.F,false):"";
var Us=yb["U"]?(p.U||""):"";
if(Fs||Us){
ey+=_t("Buried")+" "+Fs+((Fs&&Us)?", ":"")+Us+"\n";
}
}
if(yb["e"]&&p.e){
ey+=p.e.replace(/@/g,"@ ")+"\n";
}
if(yb["tku"]){
if(p.t){
ey+=p.t+" "+_t("(h)")+"\n";
}
if(p.k){
ey+=p.k+" "+_t("(w)")+"\n";
}
if(p.u){
ey+=p.u+" "+_t("(m)")+"\n";
}
}
if(yb["a"]&&p.a){
ey+=p.a+"\n";
}
if(yb["E"]&&p.E){
ey+=p.E+"\n";
}
if(yb["I"]&&p.I){
ey+=p.I+"\n";
}
if(yb["A"]&&p.A){
ey+=p.A+"\n";
}
return ey.trim();
}
function TGG(y){
var m={};
var yd=("."+y+".");
if(yd.indexOf(".sm.")>=0){
m["m"]=true;
}
if(yd.indexOf(".sw.")>=0){
m["w"]=true;
}
if(yd.indexOf(".sd.")>=0){
m["d"]=true;
}
return m;
}
function TGP(yb,p,si){
var ml="";
var dl="";
if(yb["sm"]&&p.gp&&p.mp){
var t=p.gp[si];
if((t=="m")||(t=="s")||(t=="d")||(t=="a")){
var mt=FDT(p.mp[si]);
if(mt){
ml+=mt;
}
}
}
if(yb["sw"]&&p.gp&&p.wp){
var t=p.gp[si];
if((t=="m")||(t=="s")||(t=="d")||(t=="a")&&p.wp[si]){
ml+=(ml?", ":"")+p.wp[si];
}
}
if(yb["sd"]&&p.gp&&p.dp){
if(p.gp[si]=="d"){
var dt=FDT(p.dp[si]);
if(dt){
dl+=dt;
}
}
}
return (ml?(_t("m.")+" "+ml):"")+(dl?((ml?", ":"")+_t("d.")+" "+dl):"");
}
function TCD(i,t){
var o=GE("treebg");
if(i&&o&&o.ps&&o.ps[i]){
var dw,dh;
dw=o.offsetWidth;
dh=o.offsetHeight;
if(GS("navdiv")){
dh-=GE("navdiv").offsetHeight;
}
if(GS("optionsdiv")){
dh-=GE("optionsdiv").offsetHeight;
}
if((dw<64)||(dw>4096)){
dw=self.outerWidth;
}
if((dh<64)||(dh>4096)){
dh=self.outerHeight;
}
var sx=o.ps[i].x-dw/2;
var sy=o.ps[i].y-dh/2;
if(o.es){
var as={l:sx+64,t:sy+32,r:sx+dw-32,b:sy+dh-64};
sx+=0.9*(Math.min(0,Math.max(o.es.l-as.l,o.es.r-as.r))+Math.max(0,Math.min(o.es.l-as.l,o.es.r-as.r)));
sy+=0.9*(Math.min(0,Math.max(o.es.t-as.t,o.es.b-as.b))+Math.max(0,Math.min(o.es.t-as.t,o.es.b-as.b)));
}
var scs=DT();
TSS(sx,sy,scs,scs+t,"_sel");
}
}
function TRB(o,l,t,w,h,k,bg,_8e){
v=document.createElement("div");
v.className="dbox";
var s=v.style;
if(_8e){
s.visibility="hidden";
v.id=_8e;
}
s.position="absolute";
s.width=(w)+"px";
s.height=(h)+"px";
s.left=(l-k)+"px";
s.top=(t-k)+"px";
s.background=bg;
s.borderWidth=k+"px";
o.appendChild(v);
}
var Tpd=false;
var Tdx,Tdy,moveobject;
function TGS(){
var e=GE("treebg");
if(self.pageYOffset){
scrolltop=self.pageYOffset;
scrollleft=self.pageXOffset;
}else{
if(document.documentElement&&document.documentElement.scrollTop){
scrolltop=document.documentElement.scrollTop;
scrollleft=document.documentElement.scrollLeft;
}else{
if(document.body){
scrolltop=document.body.scrollTop;
scrollleft=document.body.scrollLeft;
}
}
}
return {top:-(e.offsetTop-e.parentNode.offsetTop),left:-(e.offsetLeft-e.parentNode.offsetLeft)};
}
function TIS(o){
moveobject=o;
o.onmousedown=function(_92){
_92=_92?_92:window.event;
Tpd=true;
scrollpos=TGS();
Tdx=scrollpos.left+_92.screenX;
Tdy=scrollpos.top+_92.screenY;
};
document.onmouseup=function(_93){
Tpd=false;
};
document.onmousemove=function(_94){
_94=_94?_94:window.event;
if(Tpd){
TSS(Tdx-_94.screenX,Tdy-_94.screenY,0,0,null);
}
};
document.body.onselectstart=function(_95){
if(Tpd){
return false;
}
};
o.ontouchstart=function(_96){
if((_96.target==moveobject)&&(_96.touches.length==1)){
Tpd=true;
scrollpos=TGS();
Tdx=scrollpos.left+_96.touches[0].screenX;
Tdy=scrollpos.top+_96.touches[0].screenY;
_96.preventDefault();
}
};
o.ontouchend=function(_97){
if(Tpd){
Tpd=false;
_97.preventDefault();
}
};
o.onwheel=function(_98){
var d=_98.deltaY;
if(_98.deltaMode==1){
d/=12;
}
EZD(1-d/120);
_98.preventDefault();
};
document.ontouchmove=function(_9a){
if(Tpd){
TSS(Tdx-_9a.touches[0].screenX,Tdy-_9a.touches[0].screenY,0,0,null);
_9a.preventDefault();
}
};
}
var Tst=null,Tsf,Tsd,Tss,Tse,Tsv;
function TSS(x,y,scs,scf,scv){
if(Tst){
clearTimeout(Tst);
Tst=null;
}
Tsf=TGS();
Tsd={top:y,left:x};
Tss=scs;
Tse=scf;
Tsv=scv;
if(DT()>=scf){
TST();
}else{
Tst=setTimeout("TST()",10);
}
}
function TST(){
var n=DT();
if(n>=Tse){
TSD(Tsd.left,Tsd.top);
if(Tsv&&GE(Tsv)){
SI(Tsv,true);
}
}else{
var p=(n-Tss)/(Tse-Tss);
p=1-Math.pow(0.5,p/0.2);
TSD(Tsf.left+p*(Tsd.left-Tsf.left),Tsf.top+p*(Tsd.top-Tsf.top));
Tst=setTimeout("TST()",10);
}
}
function TSD(x,y){
if(true){
GE("treebg").style.left=-x;
GE("treebg").style.top=-y;
}
}
function TCT(){
if(parent&&parent.postMessage){
parent.postMessage("click="+this.pid,"*");
}
ESP(this.pid,true);
}
function TFE(o,i){
return (o.ps&&i)?o.ps[i]:null;
}
function TRT(f,i,m,y,ad,bn,sf,c,l,fl,ch,ph,co,pi,zf,wf,ts,s){
var o=GE("treebg");
var _b9=null;
if(TFE(o,i)){
var oi=i;
var sd=0;
if(i!=pi){
_b9="_sel";
if(GE(_b9)){
SI(_b9,false);
}
}
}else{
var oi=TFE(o,pi)?pi:null;
var sd=oi?250:0;
}
var pg=TGG(y);
TRD(BFT(f,i,m,ch,ph,co,fl,pg),y,ad,bn,sf,c,l,o,oi,true,false,zf,wf,ts,_b9);
if(s&&noCentering){
if(_b9&&GE(_b9)){
SI(_b9,true);
}
}else{
setTimeout("TCD('"+i+"', "+(s?250:0)+")",sd);
}
o=GE("treediv");
if(EID()){
o.style.backgroundColor="";
}else{
o.style.backgroundColor=c.back;
}
}
function TPH(f,p,bn,sf,s){
if(p){
var h="";
for(var j=0;j<p.length;j++){
var t=p[j].t;
var i=p[j].i;
var e=f[i];
var fn=FDN(e,true,1,sf,(bn==1),true,true,true,true);
var nj=p[j+1]||s;
var ni=nj?nj.i:null;
var n=ni?f[ni]:{};
var rt="";
switch(t){
case "p":
rt=FTP(f,e,ni,n);
if(e.gp&&((e.gp[ni]||"").charAt(0)=="o")){
rt+=" ("+e.gp[ni].substring(1)+")";
}
break;
case "o":
if(n&&((n.m==i)||(n.f==i))){
rt=FIT(n.V,n.g);
}else{
if(n&&((n.X==i)||(n.Y==i))){
rt=FIT(n.W,n.g);
}else{
if(n&&((n.K==i)||(n.L==i))){
rt=FIT(n.Q,n.g);
}
}
}
break;
case "g":
rt=FIT("g",n.g);
break;
case "s":
var sc=0;
var oc=0;
var c=FLC(e,n);
for(var k in c){
if(c[k].indexOf("s")>=0){
sc++;
}else{
oc++;
}
}
if((sc>0)&&(oc==0)){
rt=FET(n.g);
}else{
if(((e.m||e.f)&&FTM(n,e.m,e.f))||((e.X||e.Y)&&FTM(n,e.X,e.Y))||((e.K||e.L)&&FTM(n,e.K,e.L))){
rt=FST(true,n.g);
}else{
rt=FST(false,n.g);
}
}
break;
case "a":
if(ni&&((e.m==ni)||(e.f==ni))){
rt=FPT(e.V,n.g,"",1);
}else{
if(ni&&((e.X==ni)||(e.Y==ni))){
rt=FPT(e.W,n.g,"",2);
}else{
if(ni&&((e.K==ni)||(e.L==ni))){
rt=FPT(e.Q,n.g,"",3);
}
}
}
break;
case "d":
rt=FPT("g",n.g,"",1);
break;
case "oi":
if(n.g=="f"){
rt=_t("Daughter-in-law");
}else{
if(n.g=="m"){
rt=_t("Son-in-law");
}else{
rt=_t("Child-in-law");
}
}
break;
case "ai":
if(n.g=="f"){
rt=_t("Mother-in-law");
}else{
if(n.g=="m"){
rt=_t("Father-in-law");
}else{
rt=_t("Parent-in-law");
}
}
break;
case "si":
if(n.g=="f"){
rt=_t("Sister-in-law");
}else{
if(n.g=="m"){
rt=_t("Brother-in-law");
}else{
rt=_t("Sibling-in-law");
}
}
break;
case "x":
rt=_t("Unrelated");
break;
default:
var t1=t.substring(0,1);
var d=t.substring(1);
if((t1=="a")||(t1=="o")){
if(d<=2){
if(t1=="a"){
var gs={"f":_t("Grandmother"),"m":_t("Grandfather"),"":_t("Grandparent")};
}else{
var gs={"f":_t("Granddaughter"),"m":_t("Grandson"),"":_t("Grandchild")};
}
}else{
if(d==3){
if(t1=="a"){
var gs={"f":_t("Great-grandmother"),"m":_t("Great-grandfather"),"":_t("Great-grandparent")};
}else{
var gs={"f":_t("Great-granddaughter"),"m":_t("Great-grandson"),"":_t("Great-grandchild")};
}
}else{
if(d==4){
if(t1=="a"){
var gs={"f":_t("Great-great-grandmother"),"m":_t("Great-great-grandfather"),"":_t("Great-great-grandparent")};
}else{
var gs={"f":_t("Great-great-granddaughter"),"m":_t("Great-great-grandson"),"":_t("Great-great-grandchild")};
}
}else{
if(t1=="a"){
var gs={"f":_t("Great-...-grandmother (# gens)",d),"m":_t("Great-...-grandfather (# gens)",d),"":_t("Great-...-grandparent (# gens)",d)};
}else{
var gs={"f":_t("Great-...-granddaughter (# gens)",d),"m":_t("Great-...-grandson (# gens)",d),"":_t("Great-...-grandchild (# gens)",d)};
}
}
}
}
rt=gs[n.g]||gs[""];
}else{
if(t1=="c"){
if(d<=1){
var gs={"f":_t("Female cousin"),"m":_t("Male cousin"),"":_t("Cousin")};
}else{
if(d==2){
var gs={"f":_t("Female second cousin"),"m":_t("Male second cousin"),"":_t("Second cousin")};
}else{
if(d==3){
var gs={"f":_t("Female third cousin"),"m":_t("Male third cousin"),"":_t("Third cousin")};
}else{
if(d==4){
var gs={"f":_t("Female fourth cousin"),"m":_t("Male fourth cousin"),"":_t("Fourth cousin")};
}else{
var gs={"f":_t("Distant female cousin (# degrees)",d),"m":_t("Distant male cousin (# degrees)",d),"":_t("Distant cousin (# degrees)",d)};
}
}
}
}
rt=gs[n.g]||gs[""];
}else{
if(t1=="u"){
if(d<=1){
var gs={"f":_t("Aunt"),"m":_t("Uncle"),"":_t("Auncle")};
}else{
if(d==2){
var gs={"f":_t("Great-aunt"),"m":_t("Great-uncle"),"":_t("Great-auncle")};
}else{
if(d==3){
var gs={"f":_t("Great-great-aunt"),"m":_t("Great-great-uncle"),"":_t("Great-great-auncle")};
}else{
var gs={"f":_t("Great-...-aunt (# gens)",d),"m":_t("Great-...-uncle (# gens)",d),"":_t("Great-...-auncle (# gens)",d)};
}
}
}
rt=gs[n.g]||gs[""];
}else{
if(t1=="n"){
if(d<=1){
var gs={"f":_t("Niece"),"m":_t("Nephew"),"":_t("Nibling")};
}else{
if(d==2){
var gs={"f":_t("Great-niece"),"m":_t("Great-nephew"),"":_t("Great-nibling")};
}else{
if(d==3){
var gs={"f":_t("Great-great-niece"),"m":_t("Great-great-nephew"),"":_t("Great-great-nibling")};
}else{
var gs={"f":_t("Great-...-niece (# gens)",d),"m":_t("Great-...-nephew (# gens)",d),"":_t("Great-...-nibling (# gens)",d)};
}
}
}
rt=gs[n.g]||gs[""];
}
}
}
}
break;
}
if(j||!s){
h+="<p class=\"pi\" id=\"path-"+i+"\"><a href=\"#\" onClick=\"ESP('"+i+"', true); return false;\">"+EH(fn)+"</a></p>";
if(rt){
h+="<p class=\"pa\">&darr;</p>";
}
}
if(p[j].p){
h+="<p id=\"shortpath-"+i+"\" class=\"pr\"><a href=\"#\" onClick=\"SEP('"+i+"', true); return false;\" title=\""+_h("Expand this relationship")+"\">"+EH(rt)+"</a></p>";
h+="<div id=\"longpath-"+i+"\" style=\"display:none;\">";
h+="<p class=\"pr\"><a href=\"#\" onClick=\"SEP('"+i+"', false); return false;\" title=\""+_h("Contract this relationship")+"\">"+EH(rt)+"</a></p>";
h+="<div class=\"pl\">";
h+=TPH(f,p[j].p,bn,sf,p[j+1]);
h+="</div></div>";
}else{
if(rt){
h+="<p class=\"pr\">"+EH(rt)+"</p>";
}
}
}
return h;
}else{
return "";
}
}
</script>
		<script type="text/javascript">


var Sen=[{p:"personalname",N:"nickname",T:"title",J:"suffix",l:"familyname",q:"familybirth"},{e:"c_email",w:"website",B:"blog",P:"photosite",t:"hometel",k:"worktel",u:"mobile",S:"skype",a:"address",C:"othercontact"},{v:"birthplace",y:"deathplace",Z:"deathcause",U:"burialplace",j:"profession",E:"employer",I:"interests",A:"activities",o:"bionotes"}];
var Sur={w:"website",B:"blog",P:"photos"};
var Sec=",de,del,delle,la,von,van,den,der,of,the,and,y,da,dos,das,by,in,las,av,le,du,di,af,della,ap,und,do,ferch,och,zu,zur,des,bei,los,mac,ingen,el,al,dit,e,";
var Sv1={e:_t("Email"),w:_t("Website"),B:_t("Blog"),P:_t("Photo site"),t:_t("Home tel"),k:_t("Work tel"),u:_t("Mobile"),a:_t("Address"),C:_t("Other"),S:_t("Skype")};
var Sv2={v:_t("Birth place"),y:_t("Death place"),Z:_t("Cause of death"),U:_t("Burial place"),F:_t("Burial date"),j:_t("Profession"),E:_t("Company"),I:_t("Interests"),A:_t("Activities"),o:_t("Bio notes")};
var Spt={m:_t("Married"),e:_t("Engaged"),r:_t("Relationship"),s:_t("Separated"),d:_t("Divorced"),a:_t("Annulled"),o:_t("Other")};
var Sat={b:_t("Biological"),a:_t("Adopted"),f:_t("Foster"),s:_t("Step"),g:_t("Godparent")};
var Spe;
var Spa=0;
var Sed=false;
var Srl;
var Sps=null;
var Spd=null;
var Spl=null;
var disable_family_tests=false;
function SPL(){
CE(parent);
}
function SPW(i){
return Ece||(i&&(Ewp==i));
}
function SPN(p){
return FDN(p,false,1,NGS(),(NGB()==1),true);
}
function SSE(i,e){
var p=Efa[i];
if(!p){
return;
}
var pi=Spe;
Spe=i;
var md=(Spe==GV("personid"));
var v=GE("nametitle");
v.innerHTML=EH(SPN(p));
v.className=p.p?"sname":"sdefname";
SV("shareperson",_t("Invite $ to share family",p.h));
SS("hideurl",false);
GE("switchpanel3").style.display=p.cp?"block":"none";
GE("switchpanel4").style.display=(Edd||Eud)?"block":"none";
if(!md){
SV("showpath",_t("Show relationship to $",p.h));
SS("showpath",true);
}else{
SS("showpath",false);
}
var uf=p.w?"w":(p.B?"B":(p.P?"P":null));
SS("showurl",uf?true:false);
if(uf){
SV("urlmode",Sur[uf]);
GE("urllink").href=p[uf];
SV("showurl",_t("Show $1's $2",p.h,Sv1[uf].toLowerCase()));
}
SSA((((Spa==3)&&!p.cp)||((pi!=i)&&((e=="edit")||Sed)))?0:Spa,(e=="edit")?((Sed&&(pi==i))?null:true):false);
SIU(false);
}
function SSA(_a,_b){
if(Sed&&((_a!=Spa)||(_b===false))){
try{
GE("switchlink"+_a).focus();
}
catch(e){
}
}
Spa=_a;
if(_b!==null){
Sed=_b;
}
var f=Efa;
var p=f[Spe];
var md=(Spe==GV("personid"));
var pw=SPW(Spe);
if(!pw){
Sed=false;
}
for(var j=0;j<=4;j++){
GE("switchpanel"+j).className=((_a==j)?"sswitched":"sswitch");
GE("switchlink"+j).className=((_a==j)?"sswitchedlink":"");
}
var hne=p.N||p.T||p.J;
SR("personalview",(Spa==0)&&!Sed);
SR("personaledit1",(Spa==0)&&Sed);
if((_b===true)||(!Sed)){
SR("nameexpandedit",(Spa==0)&&Sed&&hne);
SS("nameexpand",!hne);
GE("personalname").className=hne?"sfield":"sfieldexpand";
}
SR("personaledit2",(Spa==0)&&Sed);
SR("personaleditdeath",(Spa==0)&&(p.z==1)&&Sed);
SR("partnersviewedit",(Spa==3));
SR("contactview",(Spa==1)&&!Sed);
SR("contactedit",(Spa==1)&&Sed);
SR("contacteditskype",(Spa==1)&&Sed&&p.S);
SR("bioview",(Spa==2)&&!Sed);
SR("bioedit1",(Spa==2)&&Sed);
SR("bioeditdeath",(Spa==2)&&(p.z==1)&&Sed);
SR("bioedit2",(Spa==2)&&Sed);
SR("filesview",(Spa==4));
SR("filesview2",(Spa==4)&&!Sed);
SR("viewfooter",pw&&(!Sed)&&(Spa!=4));
SR("editfooter",Sed&&(Spa!=4));
SR("readonlyfooter",(!staticMode)&&(!Ece)&&(!Ewp));
SR("writemefooter",(!Ece)&&pw);
SR("writenotfooter",Ewp&&!pw);
if(Spa==3){
var et=_t("Edit partnership details");
}else{
var et=md?_t("Edit my details"):_t("Edit $'s details",p.h);
}
if(Spa==4){
SS("sideuploadfile",Eud);
}
SV("editbutton",et);
SS("nonrelations",true);
SS("shareperson",(!staticMode)&&GV("sessionid")&&(p.z!="1")&&!md);
SS("nonediting",!Sed);
SR("relactions",Ece&&!Sed);
if(Sed){
var df=(_b===true);
for(var j in Sen[Spa]){
SV(Sen[Spa][j],p[j]);
if(df&&(j!="y")&&!GV(Sen[Spa][j])){
FS(Sen[Spa][j]);
df=false;
}
}
}else{
if(Ece){
SRP(false);
}
}
if(_a==1){
SP1(_b===true);
}else{
if(_a==2){
SP2(_b===true);
}else{
if(_a==3){
SP3(_b===true);
}else{
if(_a==4){
SP4(_b===true);
}else{
SP0(_b===true);
}
}
}
}
SSF();
}
function SSF(){
var om=!staticMode;
var sl=ESL();
SR("importfooter",om&&(!sl.n)&&(!sl.s)&&(!sl.i)&&Eca);
SR("clearfooter",om&&(sl.n||sl.i)&&(!sl.s)&&Ecd);
}
function SWA(p){
SSA(p,Sed);
}
function SED(){
ECS();
ESE(false,[Spe],Spe);
}
function SAS(){
EFE(true);
}
function SCS(){
EFE(false);
}
function SRR(e){
var v=GE(e);
while(v.firstChild){
v.removeChild(v.firstChild);
}
}
function SJR(e,v,h,s){
var r=document.createElement("TR");
var a=document.createElement("TD");
a.className="sboth";
a.innerHTML=h?v:EL(v);
a.colSpan=s;
r.appendChild(a);
GE(e).appendChild(r);
}
function SSR(e,t,v,h,a){
var r=document.createElement("TR");
r.vAlign=a||"top";
var a=document.createElement("TD");
a.className="sleft";
if(t){
a.innerHTML=EH(t+":");
}
var b=document.createElement("TD");
b.className="sright";
b.innerHTML=h?v:EL(v);
r.appendChild(a);
r.appendChild(b);
GE(e).appendChild(r);
return r;
}
function SUR(e,t,i,v,s){
SJR(e,"<INPUT TYPE=\"submit\" VALUE=\""+EH(t)+"\" ID=\""+EH(i+v)+"\" CLASS=\"sbutton\" onClick=\"SCB('"+EH(i)+"','"+EH(v)+"'); return false;\">",true,s);
}
function SPP(i,ra,s,no,o){
var f=Efa;
var bn=NGB();
var bn1=(bn==1);
var sf=NGS();
var v=GE(i);
v.style.display="none";
v.options.length=0;
for(var j=0;j<ra.length;j++){
if(ra[j]==s){
v.options[0]=new Option(s,s);
break;
}
}
if(!v.options.length){
v.options[0]=new Option("","");
}
if(v.personinput){
var w=v.personinput;
}else{
w=document.createElement("input");
v.parentNode.insertBefore(w,v);
v.personinput=w;
}
if(v.personlist){
var x=v.personlist;
}else{
var x=document.createElement("div");
v.parentNode.insertBefore(x,v);
v.personlist=x;
}
w.className="snameedit";
w.style.cursor="pointer";
if(locale_rtl){
w.dir="rtl";
}
w.value=(s&&f[s])?FDN(f[s],false,1,sf,bn1,true):_t("(none)");
w.onfocus=function(){
w.tohide=false;
w.oldvalue=w.value;
w.value="";
w.style.cursor="";
w.style.textAlign="start";
x.style.display="inline-block";
SGP(v,w,x,no);
};
w.oninput=function(){
SGP(v,w,x,no);
};
w.completed=function(){
w.value=w.oldvalue;
w.style.cursor="pointer";
w.style.textAlign="";
x.style.display="none";
};
w.onblur=function(){
w.tohide=true;
setTimeout(function(){
if(w.tohide){
w.completed();
}
},250);
};
w.onkeydown=function(e){
if((e.key=="Escape")||(e.key=="Enter")){
w.completed();
w.blur();
}
};
x.className="snamelist";
x.style.display="none";
x.ids=ra;
if(locale_rtl){
x.dir="rtl";
}
x.onclick=function(e){
var i=e.target.id||e.target.parentElement.id;
if(i.substring(0,5)=="list_"){
v.options.length=0;
var z=i.substring(5);
v.options[0]=new Option(z,z);
w.oldvalue=(z&&f[z])?FDN(f[z],false,1,sf,bn1,true):_t("(none)");
w.completed();
if(v.onchange){
v.onchange();
}
}else{
w.tohide=false;
}
};
x.onfocus=function(){
w.tohide=false;
};
x.onblur=function(){
w.onblur();
};
if(o){
w.focus();
}
}
function SGP(v,w,x,no){
NUL(x,w.value,x.ids,v.options[v.selectedIndex].value,no);
}
function SPT(i,b,s){
var v=GE(i);
v.options.length=0;
v.options[v.options.length]=new Option("","");
for(var j in Sat){
if((j!="b")||b){
v.options[v.options.length]=new Option(Sat[j],j);
}
}
SO(i,s);
}
function SUT(i,df){
var f=Efa;
var t=GO(i);
var w=df?_t("mother"):_t("father");
if(t&&f[t]){
var p=f[t];
if(p.g=="m"){
var w=_t("father");
}else{
if(p.g=="f"){
var w=_t("mother");
}else{
if((p.g||"").charAt(0)=="o"){
var w=_t("parent");
}
}
}
}
ST(i+"title",w);
}
function SLR(e,s){
SJR(e,"<IMG CLASS=\"blankpixel\" WIDTH=\"1\" HEIGHT=\"4\">",true,s);
}
function SRB(t,i,v){
SUR("relactions",t,i,v,1);
}
function SPR(e){
SRR("relactions");
if(e){
SS("nonrelations",false);
}
}
function SRP(e){
SPR(e);
var f=Efa;
var p=f[Spe];
if(e){
var fd=false;
var ns=false;
SRB(_t("Set parents"),"treeparents","");
var ot=p.b&&FPD(p.b).y;
var bs=FLS(f,Spe,1,ot);
if(bs.length){
SRB(ot?_t("Change multiple birth order"):_t("Change sibling order"),"changeorder","");
}
if(p.cp){
SRB(((p.cp>1)||!p.s)?_t("Change partners"):_t("Change partner"),"changespouse","");
}
if(Ecd){
if(Spe==Efo){
fd=true;
}else{
if(!disable_family_tests){
var cf=FDF(f,Efo,null,null,null);
var df=FDF(f,Efo,Spe,null,null);
if((df.length-cf.length)>1){
ns=true;
}
}
if(!ns){
SRB(_t("Delete $",p.h),"delete",Spe);
}
}
}
SRB(_t("Cancel"),"cancel","");
if(Ecd){
if(ns){
SJR("relactions","<BR>"+_h("This person cannot be deleted because that would split the tree. Try deleting outer people on the tree first."),true,1);
}
if(fd){
SJR("relactions","<BR>"+_h("This person started the tree and cannot be deleted."),true,1);
}
}else{
SJR("relactions","<BR>"+_h("You do not have permission to delete people."),true,1);
}
}else{
var md=(GV("personid")==Spe);
var ap=p.fg||Eaf||(GV("personid")==Efo);
if(Eca){
SJR("relactions",md?_t("Click to add your relatives:"):_t("Click to add relatives of $:",p.h),false,1);
if(ap){
if((p.f&&p.m)||((p.V=="s")&&(p.f||p.m))){
}else{
if(p.f){
SRB((p.m2||p.f2)?_t("Add primary mother"):_t("Add mother"),"choosemother","");
}else{
if(p.m){
SRB((p.m2||p.f2)?_t("Add primary father"):_t("Add father"),"choosefather","");
}else{
SRB((p.m2||p.f2)?_t("Add primary parents"):_t("Add new parents"),"addparents","");
}
}
}
}
SRB(_t("Add partner/ex"),"choosespouse","");
if(ap){
SRB(_t("Add brother/sister"),"addsibling","");
}
SRB(_t("Add child"),"addchild","");
if(ap){
if((p.X&&p.Y)||((p.W=="s")&&(p.X||p.Y))){
}else{
if(p.Y){
SRB(_t("Add second mother"),"choosemother2","");
}else{
if(p.X){
SRB(_t("Add second father"),"choosefather2","");
}else{
if(p.f||p.m){
SRB(_t("Add second parents"),"addparents2","");
}
}
}
}
if((p.K&&p.L)||((p.Q=="s")&&(p.K||p.L))){
}else{
if(p.L){
SRB(_t("Add third mother"),"choosemother3","");
}else{
if(p.K){
SRB(_t("Add third father"),"choosefather3","");
}else{
if((p.f||p.m)&&(p.X||p.Y)){
SRB(_t("Add third parents"),"addparents3","");
}
}
}
}
}
}
var cf=0;
for(var j in f){
cf++;
if(cf>1){
SLR("relactions",1);
SRB(_t("More actions..."),"morelactions","");
break;
}
}
if(Eca){
if(!ap){
var si=GV("sessionid");
if(md){
SJR("relactions","<BR>"+(si?_h("To add your parents, brothers or sisters, please sign in then create a new family branch."):_h("To add your parents, brothers or sisters, please create a new family branch.")),true,1);
if(si){
SRB(_t("Create new family for me"),"startbranch","");
}
}else{
SJR("relactions","<BR>"+(si?_h("To add $'s parents, brothers or sisters, a new family branch can be created after signing in.",p.h):_h("To add $'s parents, brothers or sisters, a new family branch can be created.",p.h)),true,1);
if(si){
SRB(_t("Create new family for $",p.h),"startbranch","");
}
}
}
}else{
SJR("relactions","<BR>"+_h("You do not have permission to add new people."),true,1);
}
var ad=GE("advertisement");
if(ad){
SLR("relactions",1);
SLR("relactions",1);
SJR("relactions",ad.innerHTML,true,1);
}
}
}
function SP0(e){
var f=Efa;
var p=f[Spe];
var g=p.g||"";
if(Sed){
GE("gender_f").checked=(g=="f");
GE("gender_m").checked=(g=="m");
GE("gender_o").checked=(g.charAt(0)=="o");
GE("othergenderdiv").style.display=(g.charAt(0)=="o")?"block":"none";
GE("alive").checked=(p.z!="1");
if(e){
SH("birthdate",SDH("birth","SCV('birth');"));
SSD("birth",p.b);
SH("deathdate",SDH("death","SCV('death');"));
SSD("death",p.d);
SV("othergender",(g.charAt(0)=="o")?p.g.substring(1):"");
}
}else{
SRR("personalview");
var bn=NGB();
var bn1=(bn==1);
SSR("personalview",_t("Full name"),FDN(p,true,1,NGS(),bn1,false,true,true,true),false);
if(p.q&&p.l&&(p.q!=p.l)){
SSR("personalview",bn1?_t("Surname now"):_t("Surname at birth"),bn1?p.l:p.q,false);
}
SSR("personalview",_t("Gender"),Fgn[g]?Fgn[g]:((g.charAt(0)=="o")?g.substring(1):Fgn[""]),false);
SSR("personalview",_t("Birth date"),FDT(p.b,true),false);
if(p.z==1){
SSR("personalview",_t("Death date"),FDT(p.d,true),false);
}
var ac=FCR(f,Spe,true,false,false);
var dc=FCR(f,Spe,false,true,false);
SSR("personalview",_t("Tree stats"),(ac?_t("# ancestor/s",ac):_t("No ancestors"))+", "+(dc?_t("# descendant/s",dc):_t("No descendants")));
}
}
function SEN(){
SR("nameexpandedit",true);
SS("nameexpand",false);
GE("personalname").className="sfield";
}
function SP1(e){
var f=Efa;
var p=f[Spe];
if(!Sed){
SRR("contactview");
for(var j in Sv1){
if(p[j]||((!staticMode)&&(j=="e"))){
if(j=="e"){
SSR("contactview",Sv1[j],p[j]?("<A HREF=\"mailto:"+EH(p[j])+"\" DIR=\"ltr\">"+EH(p[j])+"</A>"):"",true);
}else{
if(j=="S"){
SSR("contactview",Sv1[j],p[j]?("<A HREF=\"callto:"+EH(p[j])+"\" DIR=\"ltr\">"+EH(p[j])+"</A>"):"",true);
}else{
if((j=="w")||(j=="B")||(j=="P")){
SSR("contactview",Sv1[j],p[j]?("<A HREF=\""+EH(p[j])+"\" TARGET=\"_new\" onClick=\"return UL(this);\" DIR=\"ltr\">"+EH(p[j])+"</A>"):"",true);
}else{
if((j=="t")||(j=="k")||(j=="u")){
SSR("contactview",Sv1[j],"<SPAN DIR=\"ltr\">"+EH(p[j])+"<SPAN>",true);
}else{
SSR("contactview",Sv1[j],p[j],false);
}
}
}
}
}
}
if(staticMode&&!Esa){
SJR("contactview","&nbsp;<BR>"+_h("To protect your privacy, phone numbers, addresses and emails have been removed."),true,2);
}
}
}
function SP2(e){
var f=Efa;
var p=f[Spe];
if(Sed){
if(e){
SH("burialdate",SDH("burial","SCV('burial');"));
SSD("burial",p.F);
}
}else{
SRR("bioview");
for(var j in Sv2){
if(p[j]||(j=="v")||(j=="y")){
if(((j!="y")&&(j!="U")&&(j!="F"))||(p.z==1)){
var h=false;
if(j=="F"){
v=FDT(p[j],true);
}else{
if((j=="j")||(j=="E")||(j=="I")||(j=="A")||(j=="o")){
v=CU(EL(p[j]));
h=true;
}else{
v=p[j];
}
}
SSR("bioview",Sv2[j],v,h);
}
}
}
}
}
function S3R(f,p,pi,rc){
if(rc&&GE("partnersviewedit").firstChild){
SLR("partnersviewedit",2);
}
var cp=(p.s==pi)||(p.ep&&(p.ep[pi]==2))||(p.z==1);
var pl=(p.z!=1)&&(f[pi].z==1);
var gpi=new String(p.gp?(p.gp[pi]||""):"");
var _77=(gpi.charAt(0)=="o");
if(gpi=="m"){
var t={m:_t("Marriage date"),w:_t("Location"),z:((cp||pl)?"":_t("End date"))};
}else{
if(gpi=="e"){
var t={r:_t("Engagement date"),z:((cp||pl)?"":_t("End date"))};
}else{
if(gpi=="s"){
var t={m:_t("Marriage date"),w:_t("Location"),s:_t("Separation date")};
}else{
if(gpi=="d"){
var t={m:_t("Marriage date"),w:_t("Location"),d:_t("Divorce date")};
}else{
if(gpi=="a"){
var t={m:_t("Marriage date"),w:_t("Location"),a:_t("Annulment date")};
}else{
if(_77||(gpi=="r")){
var t={b:_t("Start date"),z:((p.s==pi)?"":_t("End date"))};
}else{
var t={};
}
}
}
}
}
}
if(rc){
SSR("partnersviewedit",FTP(f,p,pi,f[pi]),"<A HREF=\"#\" onClick=\"ESP('"+pi+"', true); return false;\">"+EH(SPN(f[pi]))+"</A>"+((_77&&(gpi.length>1)&&!Sed)?(" ("+gpi.substring(1)+")"):""),true);
}
if(Sed){
var e="partner"+pi+"g";
if(rc){
SSR("partnersviewedit","Type","<SELECT ID=\""+EH(e)+"\" CLASS=\"sselect\" onChange=\"SCP('g', '"+EH(pi)+"')\"></SELECT><DIV ID=\""+EH(e)+"odiv\" STYLE=\"margin-top:4px; display:none;\"><INPUT ID=\""+EH(e)+"o\" class=\"sfield\" onchange=\"SCP('go', '"+EH(pi)+"')\"></DIV>",true,"baseline");
var v=GE(e);
v.options.length=0;
v.options[v.options.length]=new Option("","");
for(var j in Spt){
v.options[v.options.length]=new Option(Spt[j],j);
}
if(_77){
SV(e+"o",gpi.substring(1));
}
}
SO(e,gpi.charAt(0));
GE(e+"odiv").style.display=_77?"block":"none";
for(var ti in t){
if(t[ti]){
var tpi=p[ti+"p"]?p[ti+"p"][pi]:"";
if(ti=="w"){
var e="partner"+pi+ti;
if(rc){
SSR("partnersviewedit",t[ti],"<INPUT ID=\""+EH(e)+"\" CLASS=\"sfield\" onChange=\"SCP('"+ti+"', '"+EH(pi)+"');\">",true,"middle");
}
SV(e,tpi);
}else{
S3D(pi,t[ti],ti,tpi,rc);
}
}
}
}else{
if(rc){
for(var ti in t){
if(t[ti]){
var tpi=p[ti+"p"]?p[ti+"p"][pi]:"";
SSR("partnersviewedit",t[ti],(ti=="w")?tpi:FDT(tpi,true),false);
}
}
}
}
}
function S3D(pi,t,ti,d,rc){
if(rc){
var s=EH(pi+ti);
var o="SCP('"+EH(ti)+"', '"+EH(pi)+"');";
var h=SDH("partner"+s,o);
SSR("partnersviewedit",t,h,true,"baseline");
SSD("partner"+pi+ti,d);
}
}
function SDH(i,c){
return "<SPAN ID=\""+i+"options\" STYLE=\"display:none;\"><SELECT ID=\""+i+"variant\" CLASS=\"sselect\" onChange=\""+c+"\"></SELECT>&nbsp;"+"<SPAN TITLE=\""+_h("Before the Common Era (BC)")+"\"><INPUT ID=\""+i+"bce\" TYPE=\"checkbox\" onClick=\""+c+"\"><LABEL FOR=\""+i+"bce\">"+_h("BCE")+"</LABEL></SPAN><br/></SPAN>"+"<SELECT ID=\""+i+"dom1\" CLASS=\"sselect\" TITLE=\""+_h("Day")+"\" onChange=\""+c+"\"></SELECT>&nbsp;"+"<SELECT ID=\""+i+"month1\" CLASS=\"sselect\" TITLE=\""+_h("Month")+"\" onChange=\""+c+"\"></SELECT>&nbsp;"+"<INPUT ID=\""+i+"year1\" CLASS=\"syear\" TITLE=\""+_h("Year")+"\" onChange=\""+c+"\" MAXLENGTH=4>"+"<SPAN ID=\""+i+"expand\"> <A HREF=\"#\" CLASS=\"sdatelink\" onClick=\"SDR('"+i+"')\" TITLE=\""+_h("Show more date options")+"\">"+(locale_rtl?"&#x25C4;":"&#x25BA;")+"</A></SPAN>"+"<SPAN ID=\""+i+"date2\" STYLE=\"display:none;\"> to<br/>"+"<SELECT ID=\""+i+"dom2\" CLASS=\"sselect\" TITLE=\""+_h("Day")+"\" onChange=\""+c+"\"></SELECT>&nbsp;"+"<SELECT ID=\""+i+"month2\" CLASS=\"sselect\" TITLE=\""+_h("Month")+"\" onChange=\""+c+"\"></SELECT>&nbsp;"+"<INPUT ID=\""+i+"year2\" CLASS=\"syear\" TITLE=\""+_h("Year")+"\" onChange=\""+c+"\" MAXLENGTH=4>"+" <A HREF=\"#\" CLASS=\"sdatelink\" onClick=\"SWR('"+i+"')\" TITLE=\""+_h("Swap two dates")+"\" STYLE=\"font-weight:bold;\">&#x21C5;</A></SPAN>";
}
function SDR(i){
SS(i+"options",true);
SS(i+"expand",false);
}
function SWR(i){
WV(i+"dom1",i+"dom2");
WV(i+"month1",i+"month2");
WV(i+"year1",i+"year2");
}
function SP3(e){
var f=Efa;
var p=f[Spe];
var rr=FSS(p,p.s,true);
if(Sed){
var rl=Spe;
for(var pi in rr){
rl+=" "+(p.gp?(p.gp[pi]||"").charAt(0):"")+pi+(p.ep?(p.ep[pi]||"").charAt(0):"");
}
var rc=(rl!=Srl);
Srl=rl;
}else{
Srl=null;
var rc=true;
}
if(rc){
SRR("partnersviewedit");
}
for(var pi in rr){
S3R(f,p,pi,rc);
}
}
function SP4(e){
SRR("filesview");
var p=Efa[Spe];
var l=0;
if(p.fs){
var fs=[];
for(var j in p.fs){
var f=Eff[j];
if(f){
fs[l]=Eff[j];
fs[l].i=j;
l++;
}
}
}
var t=GE("filesview");
if(l){
fs.sort(DSD);
for(var j=0;j<l;j++){
var f=fs[j];
var h="";
if(Edd){
if(DTV(f.t)){
h+="<a href=\"#\" title=\""+_h("View $1 $2",DSH(f.s),DTH(f.t))+"\" onclick=\"DSI('"+f.i+"'); return false;\">";
}else{
h+="<a href=\""+EH(DGU(f.i,true))+"\" title=\""+_h("Download $1 $2",DSH(f.s),DTH(f.t))+"\">";
}
}
h+=EH(f.n||_t("Untitled"))+(Edd?"</a>":"")+(f.d?(" &ndash; "+f.d):"");
var c=document.createElement("TD");
c.className="fboth";
c.colSpan=2;
c.innerHTML=h;
var r=document.createElement("TR");
r.appendChild(c);
t.appendChild(r);
}
}else{
var c=document.createElement("TD");
c.className="fboth";
c.colSpan=2;
c.style.textAlign="center";
c.innerHTML=_h("This person has no files attached.");
var r=document.createElement("TR");
r.appendChild(c);
t.appendChild(r);
}
}
function SSG(v){
EFC(Spe,{g:v});
EUF();
}
function SCV(i){
if(i=="birth"){
EFC(Spe,{b:SGD("birth")});
SHD("birth");
}else{
if(i=="death"){
EFC(Spe,{d:SGD("death")});
SHD("death");
}else{
if(i=="burial"){
EFC(Spe,{F:SGD("burial")});
SHD("burial");
}else{
if(i=="alive"){
EFC(Spe,{z:(GE(i).checked?"0":"1")});
}else{
if(i=="othergender"){
EFC(Spe,{g:"o"+GV(i)});
}else{
for(var k=0;k<Sen.length;k++){
for(var j in Sen[k]){
if(i==Sen[k][j]){
var c={};
var v=new String(GV(i));
v=v.replace(/^\s+|\s+$/g,"");
if((j=="p")||(j=="l")||(j=="q")){
var s=v.split(" ");
for(var w=0;w<s.length;w++){
if((s[w].length)&&(Sec.indexOf(","+s[w]+",")<0)&&(s[w].indexOf("'")<0)&&(s[w].indexOf("-")<0)){
var cp=s[w].codePointAt(0);
if((cp<4256)||(cp>4351)){
s[w]=s[w].charAt(0).toUpperCase()+s[w].substring(1);
}
}
}
v=s.join(" ");
}
if((j=="w")||(j=="B")||(j=="P")){
if(v.length&&(v.indexOf("://")<0)){
v="http://"+v;
}
}
c[j]=v;
EFC(Spe,c);
}
}
}
}
}
}
}
}
EUF();
}
function SCP(ti,pi){
var e="partner"+pi+ti;
var c={};
var oth=false;
if(ti=="g"){
c[ti]=GO(e);
}else{
if(ti=="go"){
c["g"]="o"+GV(e);
}else{
if(ti=="w"){
c[ti]=GV(e);
}else{
c[ti]=SGD(e);
SHD(e);
}
}
}
EPC(Spe,pi,c);
EUF();
if((ti=="g")&&(c[ti]=="o")){
FS(e+"o");
}
}
function SCM(s){
var f=Efa;
var tm=GO("treemother"+s);
var tf=GO("treefather"+s);
SPP("treefather"+s,FAL(f,Spe,tm),tm?f[tm].es:tf,true);
if(!GO("treefather"+s)){
SO("treefather"+s,f[Spe][(s==1)?"f":((s==2)?"X":"K")]);
}
SUT("treemother"+s,true);
SUT("treefather"+s,false);
}
function SCF(s){
SUT("treefather"+s,false);
}
function SCT(s){
var b2=(GO("treeparenttype1")!="b");
if(s<2){
SPT("treeparenttype2",b2,GO("treeparenttype2"));
}
if(s<3){
SPT("treeparenttype3",b2&&(GO("treeparenttype2")!="b"),GO("treeparenttype3"));
}
}
function SFV(i){
if(!GV(i)){
if(i=="familybirth"){
var sn=GV("familyname");
if(sn){
EFC(Spe,{q:sn});
SV(i,sn);
if(GV(i)){
GE(i).blur();
setTimeout("FS('"+i+"')",0);
}
}
}
}
}
function SAP(f,p,oi,spt,spm,apt,apm){
if(oi){
var op=f[oi];
}
var ps=[p.m1,p.f1,p.m2,p.f2,p.m3,p.f3];
var hp={};
for(var j=0;j<ps.length;j++){
if(ps[j]){
hp[ps[j]]=true;
}
}
if(oi&&(op.es||op.cp)){
if((op.es)&&!hp[op.es]){
SRB(_t(spt,SPN(f[op.es])),spm,op.es);
}
for(var pi in op.pc){
if((pi!=op.es)&&!hp[pi]){
SRB(_t(spt,SPN(f[pi])),spm,pi);
}
}
if(apm){
SRB(apt,apm,"");
}
}else{
if(apm){
SCB(apm,"");
}
}
}
function SPX(f,i1,i2,ap){
if(i1&&i2&&f[i1]&&f[i2]&&(ap||!FRP(f,i1,i2))){
if(!(f[i1].ep&&f[i1].ep[i2]&&f[i2].ep&&f[i2].ep[i1])){
EPC(i1,i2,{e:1});
}
}
}
function SCB(i,v){
var f=Efa;
var p=f[Spe];
if((i=="addparents")||(i=="addparentsstop")){
if(i=="addparents"){
ECS();
}
var pd=(p.z==1)&&(p.c.length>0);
for(var j=0;j<p.c.length;j++){
if(f[p.c[j]].z!=1){
pd=false;
}
}
var fi=EFI();
var fo={"^":Spe,g:"m",l:p.q};
if(pd){
fo.z=1;
}
EFC(fi,fo);
var mi=EFI();
var mo={"^":Spe,g:"f",s:fi,l:p.q};
if(pd){
mo.z=1;
}
EFC(mi,mo);
EFC(Spe,{m:mi,f:fi});
if(i=="addparents"){
ESE(true,[mi,fi],Spe);
}
}else{
if(i=="choosemother"){
SPR(true);
SAP(f,p,p.f,_i("Set mother to $"),"setmother",_t("Add new mother"),"addmother");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="choosefather"){
SPR(true);
SAP(f,p,p.m,_i("Set father to $"),"setfather",_t("Add new father"),"addfather");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="choosemother2"){
SPR(true);
SAP(f,p,p.Y,_i("Set second mother to $"),"setmother2",_t("Add new second mother"),"addmother2");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="choosefather2"){
SPR(true);
SAP(f,p,p.X,_i("Set second father to $"),"setfather2",_t("Add new second father"),"addfather2");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="choosemother3"){
SPR(true);
SAP(f,p,p.L,_i("Set third mother to $"),"setmother3",_t("Add new third mother"),"addmother3");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="choosefather3"){
SPR(true);
SAP(f,p,p.K,_i("Set third father to $"),"setfather3",_t("Add new third father"),"addfather3");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="changeorder"){
SPR(true);
var ot=p.b&&FPD(p.b).y;
var bs=FLS(f,Spe,1,ot);
for(var j=0;j<bs.length;j++){
if(FCC(f[bs[j]],p)>=0){
break;
}
}
SRB(_t("Move left (born earlier)"),"moveleft","");
SRB(_t("Move right (born later)"),"moveright","");
SRB(_t("Done"),"movedone","");
SD("moveleft",j<=0);
SD("moveright",j>=bs.length);
}else{
if((i=="moveleft")||(i=="moveright")){
var ot=p.b&&FPD(p.b).y;
var bs=FLS(f,Spe,1,ot);
for(var si=0;si<bs.length;si++){
if(FCC(f[bs[si]],p)>=0){
break;
}
}
for(var j=0;j<bs.length;j++){
if(FPO(f[bs[j]],ot)===null){
EFC(bs[j],{O:FBO(f,bs.slice(0,j),bs.slice(j+1),ot)});
}
}
var d=(i=="moveleft")?-1:1;
while(true){
si+=d;
if((si<0)||(si>bs.length)){
break;
}
if((si==0)||(si==bs.length)||(FPO(f[bs[si-1]],ot)!=FPO(f[bs[si]],ot))){
EFC(Spe,{O:FBO(f,bs.slice(0,si),bs.slice(si),ot)});
break;
}
}
EUF();
SCB("changeorder","");
}else{
if(i=="movedone"){
ESS();
SSA(Spa,false);
}else{
if(i=="choosespouse"){
SPR(true);
if(!p.s){
for(var pi in p.pc){
if(pi!=p.s){
SRB(_t("Set partner to $",SPN(f[pi])),"setspouse",pi);
}
}
}
if(p.s){
SRB(_t("Add new primary partner"),"addspouse","");
SRB(_t("Add new extra partner"),"addextraspouse","");
}else{
SRB(_t("Add new partner"),"addspouse","");
}
SRB(_t("Add new ex-partner"),"addexspouse","");
var ra=FPL(f,Spe);
if(ra.length){
SRB(_t("Partner with person already on tree"),"treespouse","");
}
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="changespouse"){
SPR(true);
if(!disable_family_tests){
var cf=FDF(f,Spe,null,null,null);
}
for(var pi in p.pc){
var pp=(pi==p.s);
var ep=p.ep&&(p.ep[pi]==2);
if(!pp){
SRB(_t("Set primary partner to $",SPN(f[pi])),"setspouse",pi);
}
if(pp||ep){
SRB(_t("Change $ to ex-partner",SPN(f[pi])),"toexspouse",pi);
}
if(pp||!ep){
SRB(_t("Change $ to extra partner",SPN(f[pi])),"toextraspouse",pi);
}
if(!FLP(f,Spe,pi,true).length){
if(!disable_family_tests){
var df=FDF(f,Spe,null,Spe,pi);
}
if(disable_family_tests||(df.length<=cf.length)){
SRB((pp||ep)?_t("Remove partner $",SPN(f[pi])):_t("Remove ex-partner $",SPN(f[pi])),"notanyspouse",pi);
}
}
}
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="addchild"){
SPR(true);
var vt=v;
if(v=="a"){
var bt={ep:_i("Add adopted child with $"),np:_i("Add adopted child with new partner"),xp:_i("Add adopted child without partner")};
}else{
if(v=="f"){
var bt={ep:_i("Add foster child with $"),np:_i("Add foster child with new partner"),xp:_i("Add foster child without partner")};
}else{
if(v=="g"){
var bt={ep:_i("Add godchild with $"),np:_i("Add godchild with new partner"),xp:_i("Add godchild without partner")};
}else{
var bt={ep:_i("Add child with $"),np:_i("Add child with new partner"),xp:_i("Add child without partner")};
vt=" ";
}
}
}
if(p.es){
SRB(_t(bt.ep,SPN(f[p.es])),"addchildwith",vt+p.es);
}
for(var pi in p.pc){
if(pi!=p.es){
SRB(_t(bt.ep,SPN(f[pi])),"addchildwith",vt+pi);
}
}
SRB(_t(bt.np),"addchildwithnew",v);
SRB(_t(bt.xp),"addchildwithout",v);
if(!v){
SLR("relactions",1);
SRB(_t("Add adopted child"),"addchild","a");
SRB(_t("Add foster child"),"addchild","f");
SRB(_t("Add godchild"),"addchild","g");
SLR("relactions",1);
}
SRB(_t("Cancel"),"cancel","");
SJR("relactions","<BR>"+_h("To add a child who is already on the tree, select that child and set their parent to this person."),true,1);
}else{
if(i=="addchildwith"){
ECS();
var ci=EFI();
var vt=v.substring(0,1);
var pi=v.substring(1);
var mi=FSM(f,Spe,pi)?Spe:pi;
var fi=FSM(f,Spe,pi)?pi:Spe;
var c={"^":Spe,m:mi,f:fi};
if(FRP(f,mi,fi)){
c.l=p.l;
c.q=p.l;
}
if((vt=="a")||(vt=="f")||(vt=="g")){
c.V=vt;
}
EFC(ci,c);
ESE(true,[ci],ci);
}else{
if((i=="addchildwithnew")||(i=="addchildwithout")){
ECS();
var ci=EFI();
var c={"^":Spe};
if(p.g=="m"){
c.f=Spe;
}else{
c.m=Spe;
}
if(v){
c.V=v;
}
if(i=="addchildwithnew"){
var pi=EFI();
if(p.g=="m"){
c.m=pi;
}else{
c.f=pi;
}
EFC(ci,c);
EFC(pi,{"^":ci,g:FIG(p.g)});
ESE(true,[ci,pi],ci);
}else{
c.l=p.l;
c.q=p.l;
EFC(ci,c);
ESE(true,[ci],ci);
}
}else{
if(i=="addsibling"){
ECS();
var ap=!(p.m||p.f);
if(ap){
SCB("addparentsstop","");
}
var si=EFI();
EFC(si,{"^":Spe,m:p.m,f:p.f,l:p.q,q:p.q});
ESE(true,ap?[si,p.m,p.f]:[si],si);
}else{
if(i=="addmother"){
ECS();
SPX(f,p.f,p.m,false);
var mi=EFI();
EFC(Spe,{m:mi});
EFC(mi,{"^":Spe,g:"f"});
ESE(true,[mi],Spe);
}else{
if(i=="addfather"){
ECS();
SPX(f,p.f,p.m,false);
var fi=EFI();
EFC(Spe,{f:fi});
EFC(fi,{"^":Spe,g:"m"});
ESE(true,[fi],Spe);
}else{
if(i=="addmother2"){
ECS();
SPX(f,p.X,p.Y,false);
var mi=EFI();
EFC(Spe,{X:mi});
EFC(mi,{"^":Spe,g:"f"});
ESE(true,[mi],Spe);
}else{
if(i=="addfather2"){
ECS();
SPX(f,p.X,p.Y,false);
var fi=EFI();
EFC(Spe,{Y:fi});
EFC(fi,{"^":Spe,g:"m"});
ESE(true,[fi],Spe);
}else{
if(i=="addmother3"){
ECS();
SPX(f,p.K,p.L,false);
var mi=EFI();
EFC(Spe,{K:mi});
EFC(mi,{"^":Spe,g:"f"});
ESE(true,[mi],Spe);
}else{
if(i=="addfather3"){
ECS();
SPX(f,p.K,p.L,false);
var fi=EFI();
EFC(Spe,{L:fi});
EFC(fi,{"^":Spe,g:"m"});
ESE(true,[fi],Spe);
}else{
if(i=="addspouse"){
ECS();
SPX(f,Spe,p.s,true);
var si=EFI();
EFC(si,{"^":Spe,s:Spe,l:p.l});
ESE(true,[si],Spe);
}else{
if((i=="addexspouse")||(i=="addextraspouse")){
ECS();
var si=EFI();
EFC(si,{"^":Spe});
EPC(Spe,si,{e:((i=="addextraspouse")?2:1)});
ESE(true,[si],Spe);
}else{
if((i=="toexspouse")||(i=="toextraspouse")){
if(p.s==v){
EFC(Spe,{s:""});
EFC(v,{s:""});
}
EPC(Spe,v,{e:(i=="toextraspouse")?2:1});
ESS();
EUF();
}else{
if(i=="notanyspouse"){
if(p.s==v){
EFC(Spe,{s:""});
EFC(v,{s:""});
}
if(p.ep&&p.ep[v]){
EPC(Spe,v,{e:""});
}
ESS();
EUF();
}else{
if(i=="treespouse"){
SPR(true);
SJR("relactions",_t("Choose the person to partner with:"),false,1);
SJR("relactions","<SELECT ID=\"treepartner\" CLASS=\"sselect\"></SELECT>",true,1);
SLR("relactions",1);
if(p.s){
SRB(_t("Add as primary partner"),"treeaddspouse","");
SRB(_t("Add as extra partner"),"treeaddextraspouse","");
}else{
SRB(_t("Add as partner"),"treeaddspouse","");
}
SRB(_t("Add as ex-partner"),"treeaddexspouse","");
SRB(_t("Cancel"),"cancel","");
SPP("treepartner",FPL(f,Spe),null,true,true);
}else{
if(i=="treeaddspouse"){
var si=GO("treepartner");
if(si){
SCB("setspouse",si);
}
}else{
if((i=="treeaddexspouse")||(i=="treeaddextraspouse")){
var si=GO("treepartner");
if(si){
ECS();
EPC(Spe,si,{e:(i=="treeaddextraspouse")?2:1});
ESS();
EUF();
}
}else{
if(i=="setmother"){
SPX(f,p.f,p.m,false);
EFC(Spe,{m:v});
ESS();
EUF();
}else{
if(i=="setfather"){
SPX(f,p.f,p.m,false);
EFC(Spe,{f:v});
ESS();
EUF();
}else{
if(i=="setmother2"){
SPX(f,p.X,p.Y,false);
EFC(Spe,{X:v});
ESS();
EUF();
}else{
if(i=="setfather2"){
SPX(f,p.X,p.Y,false);
EFC(Spe,{Y:v});
ESS();
EUF();
}else{
if(i=="setmother3"){
SPX(f,p.K,p.L,false);
EFC(Spe,{K:v});
ESS();
EUF();
}else{
if(i=="setfather3"){
SPX(f,p.K,p.L,false);
EFC(Spe,{L:v});
ESS();
EUF();
}else{
if(i=="setstepmother2"){
SPX(f,p.X,p.Y,false);
EFC(Spe,{X:v,W:"s"});
ESS();
EUF();
}else{
if(i=="setstepfather2"){
SPX(f,p.X,p.Y,false);
EFC(Spe,{Y:v,W:"s"});
ESS();
EUF();
}else{
if(i=="setstepmother3"){
SPX(f,p.K,p.L,false);
EFC(Spe,{K:v,Q:"s"});
ESS();
EUF();
}else{
if(i=="setstepfather3"){
SPX(f,p.K,p.L,false);
EFC(Spe,{L:v,Q:"s"});
ESS();
EUF();
}else{
if(i=="setspouse"){
SPX(f,Spe,p.s,true);
if(v){
SPX(f,v,f[v].s,true);
}
EFC(Spe,{s:v});
ESS();
EUF();
}else{
if(i=="treeparents"){
SPR(true);
for(var j=1;j<=3;j++){
if(j==2){
var lt={p:_h("Second parents"),t:_h("Type of second parents")};
}else{
if(j==3){
var lt={p:_h("Third parents"),t:_h("Type of third parents")};
}else{
var lt={p:_h("Primary parents"),t:_h("Type of primary parents")};
}
}
SJR("relactions",lt.p+" &ndash; <SPAN ID=\"treemother"+j+"title\">"+_h("mother")+"</SPAN>:",true,1);
SJR("relactions","<SELECT ID=\"treemother"+j+"\" CLASS=\"sselect\" onChange=\"SCM("+j+")\"></SELECT>",true,1);
SLR("relactions",1);
SJR("relactions",lt.p+" &ndash; <SPAN ID=\"treefather"+j+"title\">"+_h("father")+"</SPAN>:",true,1);
SJR("relactions","<SELECT ID=\"treefather"+j+"\" CLASS=\"sselect\" onChange=\"SCF("+j+")\"></SELECT>",true,1);
SLR("relactions",1);
SJR("relactions",lt.t+":",true,1);
SJR("relactions","<SELECT ID=\"treeparenttype"+j+"\" CLASS=\"sselect\" onChange=\"SCT("+j+")\"></SELECT>",true,1);
SLR("relactions",1);
SLR("relactions",1);
}
SRB(_t("OK"),"treesetparents","");
SRB(_t("Switch primary and second parents"),"switchparents","");
SRB(_t("Cancel"),"cancel","");
SPP("treemother1",FAL(f,Spe,null),p.m,true);
SPP("treefather1",FAL(f,Spe,p.m),p.f,true);
SPP("treemother2",FAL(f,Spe,null),p.X,true);
SPP("treefather2",FAL(f,Spe,p.X),p.Y,true);
SPP("treemother3",FAL(f,Spe,null),p.K,true);
SPP("treefather3",FAL(f,Spe,p.K),p.L,true);
SPT("treeparenttype1",true,p.V);
SPT("treeparenttype2",p.V!="b",p.W);
SPT("treeparenttype3",(p.V!="b")&&(p.W!="b"),p.Q);
SUT("treemother1",true);
SUT("treefather1",false);
SUT("treemother2",true);
SUT("treefather2",false);
SUT("treemother3",true);
SUT("treefather3",false);
}else{
if((i=="switchparents")||(i=="treesetparents")){
var s={m:GO("treemother1"),f:GO("treefather1"),V:GO("treeparenttype1"),X:GO("treemother2"),Y:GO("treefather2"),W:GO("treeparenttype2"),K:GO("treemother3"),L:GO("treefather3"),Q:GO("treeparenttype3")};
if(i=="switchparents"){
s={m:s.X,f:s.Y,V:s.W,X:s.m,Y:s.f,W:s.V};
}
var n={};
var o={};
for(var j in s){
if(s[j]!=(p[j]||"")){
n[j]=s[j];
o[j]=p[j];
}
}
if(!disable_family_tests){
var cf=FDF(f,Spe,null,null,null);
}
SPX(f,p.f,p.m,false);
SPX(f,p.X,p.Y,false);
SPX(f,p.K,p.L,false);
EFC(Spe,n);
EUS(true,null,null,false,false);
if(!disable_family_tests){
var df=FDF(f,Spe,null,null,null);
}
if((!disable_family_tests)&&(df.length>cf.length)){
RE(_t("This choice of parents is not allowed because it would split the tree. Please try deleting the parents and their relatives instead, or deleting this person."));
EFC(Spe,o);
}
ESS();
EUF();
}else{
if(i=="addparents2"){
SPR(true);
SRB(_t("Add adopted parents"),"addparents2go","a");
SRB(_t("Add foster parents"),"addparents2go","f");
SRB(_t("Add godmother"),"addgodparent","2m");
SRB(_t("Add godfather"),"addgodparent","2f");
if(p.V){
if(p.V!="b"){
SRB(_t("Add biological parents"),"addparents2go","b");
}
}else{
SRB(_t("Add biological parents (was adopted)"),"addparents2go","ba");
SRB(_t("Add biological parents (was fostered)"),"addparents2go","bf");
}
SAP(f,p,p.f,_i("Set stepmother to $"),"setstepmother2",null,null);
SAP(f,p,p.m,_i("Set stepfather to $"),"setstepfather2",null,null);
SRB(_t("Choose parents from tree"),"treeparents","");
SRB(_t("Cancel"),"cancel","");
}else{
if(i=="addparents3"){
SPR(true);
SRB(_t("Add adopted parents"),"addparents3go","a");
SRB(_t("Add foster parents"),"addparents3go","f");
SRB(_t("Add godmother"),"addgodparent","3m");
SRB(_t("Add godfather"),"addgodparent","3f");
SAP(f,p,p.f,_i("Set stepmother to $"),"setstepmother3",null,null);
SAP(f,p,p.m,_i("Set stepfather to $"),"setstepfather3",null,null);
SRB(_t("Choose parents from tree"),"treeparents","");
SRB(_t("Cancel"),"cancel","");
}else{
if((i=="addparents2go")||(i=="addparents3go")){
ECS();
var fi=EFI();
var fo={"^":Spe,g:"m"};
EFC(fi,fo);
var mi=EFI();
var mo={"^":Spe,g:"f",s:fi};
EFC(mi,mo);
if(i=="addparents2go"){
var po={X:mi,Y:fi,W:v.substring(0,1)};
var t1=v.substring(1,2);
if(t1){
po.V=t1;
}
}else{
var po={K:mi,L:fi,Q:v.substring(0,1)};
}
EFC(Spe,po);
ESE(true,[mi,fi],Spe);
}else{
if(i=="addgodparent"){
ECS();
switch(v){
case "2m":
var g="f";
var a="X";
var t="W";
break;
case "2f":
var g="m";
var a="Y";
var t="W";
break;
case "3m":
var g="f";
var a="K";
var t="Q";
break;
case "3f":
var g="m";
var a="L";
var t="Q";
break;
}
var fi=EFI();
var fo={"^":Spe,g:g};
EFC(fi,fo);
var po={};
po[a]=fi;
po[t]="g";
EFC(Spe,po);
ESE(true,[fi],Spe);
}else{
if(i=="delete"){
var p=Efa[v];
if(confirm(_t("Are you sure you want to permanently delete $?",SPN(p)))){
var ni=p["^"];
if((!ni)||(!f[ni])){
ni=p["^"]||p.es||p.f||p.m||p.X||p.Y||p.K||p.L||p.c[0];
}
ECS();
SPX(f,p.f,p.m,false);
SPX(f,p.X,p.Y,false);
SPX(f,p.K,p.L,false);
ESP(ni,true);
EFC(v,{x:""});
EUF();
}
}else{
if(i=="cancel"){
SSA(Spa,false);
}else{
if(i=="morelactions"){
SRP(true);
}else{
if(i=="startbranch"){
var md=(GV("personid")==Spe);
if(confirm((md?_t("This will create a new family for your relatives."):_t("This will create a new family for $'s relatives.",p.h))+" "+_t("Are you sure you want to proceed?"))){
GE("startbranch").value=_t("Please wait a few moments...");
EFB(Spe);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
function NSN(a,b){
if(a.l<b.l){
return -1;
}else{
if(b.l<a.l){
return 1;
}
}
if(a.p<b.p){
return -1;
}else{
if(b.p<a.p){
return 1;
}
}
return 0;
}
function SSD(i,d){
var v=GE(i+"variant");
v.options.length=0;
for(var j in Fvn){
v.options[v.options.length]=new Option(Fvn[j],j);
}
for(var n=1;n<=2;n++){
var v=GE(i+"dom"+n);
v.options.length=0;
v.options[v.options.length]=new Option("",0);
for(var j=1;j<=31;j++){
v.options[v.options.length]=new Option(j,j);
}
var v=GE(i+"month"+n);
v.options.length=0;
v.options[v.options.length]=new Option("",0);
for(var j=1;j<=12;j++){
v.options[v.options.length]=new Option(Fmn[j],j);
}
}
var p=FPS(d?d.toString():"");
var bce=(p.y1<0)||(p.y2<0);
SV(i+"variant",p.v);
GE(i+"bce").checked=bce;
SS(i+"options",p.v||bce);
SS(i+"expand",!(p.v||bce));
SO(i+"dom1",p.d1);
SO(i+"month1",p.m1);
SV(i+"year1",bce?-p.y1:p.y1);
SO(i+"dom2",p.d2);
SO(i+"month2",p.m2);
SV(i+"year2",bce?-p.y2:p.y2);
SHD(i);
}
function SHD(i){
var v=GV(i+"variant");
SS(i+"date2",v=="bet");
}
function SXD(i){
SS(i+"options",true);
SS(i+"expand",false);
}
function SGD(i){
var y1=GV(i+"year1");
var y2=GV(i+"year2");
if(GE(i+"bce").checked){
y1=-y1;
y2=-y2;
}
return FBS(GV(i+"variant"),GV(i+"dom1"),GV(i+"month1"),y1,GV(i+"dom2"),GV(i+"month2"),y2);
}
function SIU(u){
var p=Efa[Spe];
var r=p?p.r:null;
var pw=(!Sed)&&SPW(Spe)&&GV("familyid");
u=u&&pw;
if(u){
var v=GE("uploadiframe");
v.src="imageupload.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&i="+escape(Spe)+(r?"&r="+escape(r):"")+(EID()?"&d=1":"");
}else{
if(r){
var v=GE("personimage");
SIV(r,v);
v.title=pw?_t("Click to change photo"):"";
}
}
SV("uploadbutton",(Spe==GV("personid"))?_t("Add my photo"):_t("Add photo for $",p.h));
SS("uploadbutton",pw&&(!r)&&(!u));
SS("uploadiframe",u);
SS("personimage",r&&(!u));
}
function SIV(r,v){
var e=r.split(" ");
var s=EIU(e[0]);
if(v.src!=s){
if(e[1]&&e[2]){
v.style.width=Math.max(8,e[1])+"px";
v.style.height=Math.max(8,e[2])+"px";
}else{
v.style.width="";
v.style.height="";
v.className="blankpixel";
}
v.src=s;
}
}
function SIC(){
if(SPW(Spe)&&!Sed){
SIU(true);
}
}
function SIF(f,i,r,w,h){
EFC(i,{r:(r?(r+" "+w+" "+h):r)});
ESS();
EUF();
SIU(false);
}
function SIA(){
SIU(false);
}
function SCC(){
if(confirm(_t("Are you sure you want to clear this entire family and start again?")+" "+_t("None of your work will be saved!"))){
ESA();
}
}
function SUP(i){
if(i){
ST("pathtitle",SPN(Efa[i]));
Sps=GV("personid");
if(!(Sps&&Efa[Sps])){
Sps=Efo;
}
Spd=i;
}
SH("pathcontent",TPH(Efa,FCP(Efa,Sps,Spd,true,true||GE("pathmarried").checked),NGB(),NGS(),false));
SSP(Spe);
}
function SSP(i){
var p=Efa[i];
var e=GE("path-"+Spl);
if(e){
e.className="pi";
}
var e=GE("path-"+i);
if(e){
e.className="ps";
}
Spl=i;
}
function SEP(i,e){
GE("shortpath-"+i).style.display=e?"none":"inline-block";
GE("longpath-"+i).style.display=e?"inline-block":"none";
}
function SPS(){
var ra=[];
for(var j in Efa){
if(j!=Evp){
ra[ra.length]=j;
}
}
SPP("pathstartid",ra,Sps,false);
SHP();
}
function SHP(){
e=GE("path-"+Sps);
if(e){
e.style.display="none";
}
}
function SSS(){
Sps=GO("pathstartid");
SUP(null);
SHP();
}
function STM(){
SUP(null);
SHP();
}
function SUC(){
var t=new Date();
t.setDate(t.getDate()-1);
var y=t.getFullYear();
var m=1+t.getMonth();
var d=t.getDate();
var es=[];
for(var j in Efa){
var p=Efa[j];
if(p.b&&(p.z!=1)){
var bd=FPS(p.b);
if(bd.d1&&bd.m1&&(!bd.v)&&(((bd.y1>=(y-120))&&(bd.y1<=y))||!bd.y1)){
es[es.length]={d:bd.d1,m:bd.m1,y:bd.y1,t:"b",i1:j};
}
}
if(p.es&&(p.es>j)&&Efa[p.es]&&(Efa[p.es].es==j)&&(p.z!=1)&&(Efa[p.es].z!=1)&&p.gp&&(p.gp[p.es]=="m")&&p.mp&&p.mp[p.es]){
var md=FPS(p.mp[p.es]);
if(md.d1&&md.m1&&(!md.v)&&(((md.y1>=(y-100))&&(md.y1<=y))||!md.y1)){
es[es.length]={d:md.d1,m:md.m1,y:md.y1,t:"m",i1:j,i2:p.es};
}
}
}
for(var j=0;j<es.length;j++){
var e=es[j];
es[j].sy=y+(((e.m<m)||((e.m==m)&&(e.d<d)))?1:0);
es[j].st=new Date(es[j].sy,e.m-1,e.d).getTime();
}
es.sort(SCI);
if(es.length){
var ms=["",_t("Month_1"),_t("Month_2"),_t("Month_3"),_t("Month_4"),_t("Month_5"),_t("Month_6"),_t("Month_7"),_t("Month_8"),_t("Month_9"),_t("Month_10"),_t("Month_11"),_t("Month_12")];
var sf=NGS();
var bn=NGB();
var h="";
var lmy=0;
h+="<table class=\"ct\">";
for(var j=0;j<es.length;j++){
var e=es[j];
var my=e.m+e.sy*12;
if(e.y>=e.sy){
continue;
}
if(my!=lmy){
h+="<tr><td colspan=\"2\" class=\"cm\">"+ms[e.m]+" "+e.sy+"</td></tr>";
lmy=my;
}
h+="<tr><td class=\"cl\" style=\"white-space:nowrap;\">"+_h("^",e.d)+"</td><td class=\"cr\">";
if(e.i2){
h+="<a href=\"#\" onClick=\"ESP('"+e.i1+"', true); return false;\">"+EH(FDN(Efa[e.i1],false,1,sf,(bn==1),true,false,false,false))+"</a>";
h+=" and <a href=\"#\" onClick=\"ESP('"+e.i2+"', true); return false;\">"+EH(FDN(Efa[e.i2],false,1,sf,(bn==1),true,false,false,false))+"</a>";
}else{
h+="<a href=\"#\" onClick=\"ESP('"+e.i1+"', true); return false;\">"+EH(FDN(Efa[e.i1],true,1,sf,(bn==1),true,true,true,true))+"</a>";
}
if(e.t=="b"){
h+=" &ndash; "+(e.y?_h("^ birthday",e.sy-e.y):_h("birthday"));
}
if(e.t=="m"){
h+=" &ndash; "+(e.y?_h("^ anniversary",e.sy-e.y):_h("anniversary"));
}
h+"</td></tr>";
}
h+="</table>";
}else{
h="<div style=\"text-align:center; padding:8px;\">"+_h("There are no birthdays or anniversaries to display.")+"</div>";
}
SS("showcalendar",true);
SS("showtimeline",false);
SH("caltimecontent",h);
}
function SUI(){
var es=[];
for(var j in Efa){
var p=Efa[j];
if(p.b){
var bd=FSE(p.b)||FSL(p.b);
if(bd){
bd.t="b";
bd.i1=j;
bd.fd=p.b;
es[es.length]=bd;
}
}
if((p.z==1)&&p.d){
var dd=FSE(p.d)||FSL(p.d);
if(dd){
dd.t="d";
dd.i1=j;
dd.fd=p.d;
es[es.length]=dd;
}
}
for(var pi in p.pc){
if((pi>j)&&Efa[pi]&&p.gp&&(p.gp[pi]=="m")&&p.mp&&p.mp[pi]){
var md=FSE(p.mp[pi])||FSL(p.mp[pi]);
if(md){
md.t="m";
md.i1=j;
md.i2=pi;
md.fd=p.mp[pi];
es[es.length]=md;
}
}
}
}
es.sort(FCD);
if(es.length){
var sf=NGS();
var bn=NGB();
var h="";
var ly=-99999999;
h+="<table class=\"ct\">";
for(var j=0;j<es.length;j++){
var e=es[j];
if(e.y!=ly){
h+="<tr><td colspan=\"2\" class=\"cm\">"+FDY(e.y)+"</td></tr>";
ly=e.y;
}
var dt=FDT(e.fd,true,true);
h+="<tr><td class=\"cl\""+((dt.length<14)?" nowrap":"")+">"+dt+"</td><td class=\"cr\">";
var l1="a href=\"#\" onClick=\"ESP('"+e.i1+"', true); return false;\"";
var l2=e.i2?"a href=\"#\" onClick=\"ESP('"+e.i2+"', true); return false;\"":"";
if(e.i2){
var n1=FDN(Efa[e.i1],false,1,sf,(bn==1),true,false,false,false);
var n2=FDN(Efa[e.i2],false,1,sf,(bn==1),true,false,false,false);
}else{
var n1=FDN(Efa[e.i1],true,1,sf,(bn==1),true,true,true,true);
var n2="";
}
if(e.t=="b"){
h+=_h("<$> born",n1,l1);
}
if(e.t=="d"){
h+=_h("<$> died",n1,l1);
}
if(e.t=="m"){
h+=_h("<$1> and <$2> married",n1,n2,l1,l2);
}
h+"</td></tr>";
}
h+="</table>";
}else{
h="<div style=\"text-align:center; padding:8px;\">"+_h("There are no birth dates, death dates or marriages to display.")+"</div>";
}
SS("showcalendar",false);
SS("showtimeline",true);
SH("caltimecontent",h);
}
function SCI(e1,e2){
return e1.st-e2.st;
}
</script>
		<script type="text/javascript">


var Dsf="u";
var Dsr=true;
var Dso=["n","a","t","s","u"];
var Dec=0;
function DGU(i,d){
var f=Eff[i];
if(f){
var u="file.php?f="+escape(GV("familyid"))+"&p="+escape(GV("personid"))+"&c="+escape(GV("checksum"))+"&r="+escape(i)+"&t="+escape(f.t);
if(d){
u+="&n="+escape(f.n+(f.t?("."+f.t):""));
}
}
return u;
}
function DSI(i){
var f=Eff[i];
if(f){
var v=DTV(f.t);
var _8=(v=="iframe");
var u=DGU(i,false);
ST("fileviewname",f.n);
SH("fileviewmeta","<a href=\""+EH(DGU(i,true))+"\" title=\""+_h("Download file")+"\">"+_h("$1 $2",DSH(f.s),DTH(f.t))+"</a>");
ST("fileviewdate",_t("Uploaded $",DDT(f.u)));
if(v=="iframe"){
GE("fileviewiframe").src="";
GE("fileviewiframe").src=u;
}else{
if(v=="audio"){
GE("fileviewaudio").src="";
GE("fileviewaudio").src=u;
}else{
GE("fileviewimage").src="";
GE("fileviewimage").src=u;
}
SS("fileviewimage",v!="audio");
SS("fileviewaudio",v=="audio");
}
GE("fileviewiframe").style.display=_8?"block":"none";
GE("fileviewinline").style.display=_8?"none":"flex";
SS("fileviewdiv",true);
}
}
function DHV(){
SS("fileviewdiv",false);
}
function DST(s){
if(s>=1073741824){
return Number.parseFloat(s/1073741824).toFixed(1)+"G";
}else{
if(s>=1048576){
return Number.parseFloat(s/1048576).toFixed(1)+"M";
}else{
return Number.parseFloat(s/1024).toFixed(0)+"K";
}
}
}
function DSH(s){
return EH(DST(s));
}
function DMT(s){
if(s>=1073741824){
return Math.floor(s/1073741824)+"G";
}else{
if(s>=1048576){
return Math.floor(s/1048576)+"M";
}else{
return Math.floor(s/1024)+"K";
}
}
}
function DTT(t,e){
var x="";
if(t){
var u=t.toUpperCase();
switch(u){
case "JPG":
x=e?_t("$ image","JPEG"):_t("Image");
break;
case "JPEG":
case "BMP":
case "PNG":
case "GIF":
x=e?_t("$ image",u):_t("Image");
break;
case "TXT":
x=_t("Text");
break;
case "HTM":
x="HTML";
break;
case "MP3":
case "WAV":
case "OGG":
case "M4A":
x=e?_t("$ audio",u):_t("Audio");
break;
case "AVI":
case "WMV":
case "MPEG":
x=e?_t("$ video",u):_t("Video");
break;
case "MPG":
x=e?_t("$ video","MPEG"):_t("Video");
break;
case "MP4":
x=e?_t("$ video","MPEG4"):_t("Video");
break;
case "MPV":
x=e?_t("$ video","QuickTime"):_t("Video");
break;
case "ZIP":
case "GZ":
x=e?_t("$ archive",u):_t("Archive");
break;
case "DOC":
case "DOCX":
x=_t("Word");
break;
case "XLS":
case "XLSX":
case "XLSM":
x=_t("Excel");
break;
case "PPT":
case "PPTX":
x=_t("PowerPoint");
break;
default:
x=u;
break;
}
}
return x;
}
function DTH(t,e){
return EH(DTT(t,e));
}
function DDT(u){
var d=new Date(u*1000);
return FSD(d.getDate(),1+d.getMonth(),d.getFullYear());
}
function DCH(u){
return EH(DDT(u));
}
function DTV(t){
switch(t.toUpperCase()){
case "JPG":
case "JPEG":
case "PNG":
case "GIF":
return "image";
case "TXT":
case "HTM":
case "HTML":
case "PDF":
return "iframe";
case "MP3":
case "WAV":
case "OGG":
case "M4A":
return "audio";
}
return false;
}
function DSD(a,b){
if(a.u<b.u){
return 1;
}else{
if(a.u>b.u){
return -1;
}else{
return 0;
}
}
}
function DDF(z){
if(z){
SV("filesfind","");
GE("filestable").style.tableLayout="auto";
SS("filesuploadfile",Eud);
}else{
DFL();
}
while(Dec>0){
DEI(false);
}
var ss=GV("filesfind").trim().toLowerCase().split(" ");
var fs=[];
var l=0;
var hf=false;
for(var i in Eff){
var f=Eff[i];
hf=true;
f.i=i;
f.aa=DAO(f);
var n=(f.n||"")+" "+(f.d||"");
for(var j=0;j<f.aa.length;j++){
n+=" "+f.aa[j].s;
}
var m=n.toLowerCase();
var x=true;
for(var k=0;k<ss.length;k++){
if(m.indexOf(ss[k])<0){
x=false;
break;
}
}
if(x){
if((Dsf=="s")||(Dsf=="u")){
f.o=parseInt(f[Dsf]);
}else{
if(Dsf=="t"){
f.o=DTT(f.t).toLowerCase();
}else{
if(Dsf=="a"){
f.o=f.aa.length?f.aa[0].s:"";
}else{
f.o=new String(f.n).toLowerCase();
}
}
}
fs[l]=f;
l++;
}
}
var t=GE("filesrows");
t.innerHTML="";
if(l){
fs.sort(DSL);
var exp=NSR(ss);
for(var j=0;j<l;j++){
var f=fs[j];
var r=document.createElement("TR");
r.className="filesrow";
r.id="filesrow"+f.i;
var c=document.createElement("TD");
c.className="fname";
c.id="filename"+f.i;
c.innerHTML=DNH(f.i,f,exp);
r.appendChild(c);
var c=document.createElement("TD");
c.className="fdesc";
c.id="filedesc"+f.i;
c.innerHTML=DDH(f.i,f,exp);
r.appendChild(c);
var c=document.createElement("TD");
c.className="fattach";
c.id="fileattach"+f.i;
c.innerHTML=DAH(f.aa,exp);
r.appendChild(c);
var c=document.createElement("TD");
c.className="ftype";
c.innerHTML=DTH(f.t);
r.appendChild(c);
var c=document.createElement("TD");
c.className="fsize";
c.innerHTML=DSH(f.s);
r.appendChild(c);
var c=document.createElement("TD");
c.className="fuploaded";
c.innerHTML=DCH(f.u);
r.appendChild(c);
var c=document.createElement("TD");
c.className="fbuttons";
var h="";
if(Eed){
h+="<INPUT CLASS=\"sbutton4\" ID=\"fileedit"+EH(f.i)+"\" TYPE=\"submit\" onClick=\"DCE('"+f.i+"'); return false;\" VALUE=\""+_h("Edit")+"\"> "+"<INPUT CLASS=\"sbutton4\" ID=\"filesave"+EH(f.i)+"\" TYPE=\"submit\" onClick=\"DCS('"+f.i+"', true); return false;\" VALUE=\""+_h("Save")+"\" STYLE=\"display:none;\"> "+"<INPUT CLASS=\"sbutton4\" ID=\"filecancel"+EH(f.i)+"\" TYPE=\"submit\" onClick=\"DCS('"+f.i+"', false); return false;\" VALUE=\""+_h("Cancel")+"\" STYLE=\"display:none;\"> ";
}
if(Exd){
h+="<INPUT CLASS=\"sbutton4\" ID=\"filedelete"+EH(f.i)+"\" TYPE=\"submit\" onClick=\"DCD('"+f.i+"'); return false;\" VALUE=\""+_h("Delete")+"\">";
}
c.innerHTML=h;
r.appendChild(c);
t.appendChild(r);
}
}else{
var r=document.createElement("TR");
r.className="filesrow";
var c=document.createElement("TD");
c.className="fnone";
c.colSpan=7;
c.innerHTML=hf?_h("No files match the current search."):_h("There are currently no files in this family.");
r.appendChild(c);
t.appendChild(r);
}
for(var j=0;j<Dso.length;j++){
var o=Dso[j];
SH("filessort"+o,(Dsf==o)?(Dsr?"&#x25BC;":"&#x25B2;"):"<span style=\"visibility:hidden;\">&#x25B2;</span>");
}
}
function DUS(){
var c=0;
for(var i in Eff){
c++;
}
var h=_h("# file/s",c)+", ";
if(Eda>Edt){
h+=_h("$1 used (plus $2 in other families) of $3 available",DST(Edt),DST(Eda-Edt),DMT(Edc));
}else{
h+=_h("$1 used of $2 available",DST(Edt),DMT(Edc));
}
var np=[];
if(!Edd){
np.push(_t("download"));
}
if(!Eud){
np.push(_t("upload"));
}
if(!Eed){
np.push(_t("edit"));
}
if(!Exd){
np.push(_t("delete"));
}
if(np.length){
h+=" "+_h("You do not currently have permission to $ files.",np.join(", "));
}
SH("filesstatus",h);
}
function DFL(){
var e=GE("filestable");
if(e.style.tableLayout!="fixed"){
var cs=GE("filesheader").getElementsByTagName("th");
for(i=0;i<cs.length;i++){
cs[i].style.width=(cs[i].offsetWidth-1)+"px";
}
e.style.tableLayout="fixed";
}
}
function DNH(i,f,exp){
var h="";
if(Edd){
if(DTV(f.t)){
h+="<a href=\"#\" title=\""+_h("View file")+"\" onclick=\"DSI('"+i+"'); return false;\">";
}else{
h+="<a href=\""+EH(DGU(i,true))+"\" title=\""+_h("Download file")+"\">";
}
}
return h+NSE(f.n||_t("Untitled"),exp)+(Edd?"</a>":"");
}
function DDH(i,f,exp){
return NSE(f.d,exp);
}
function DAO(f){
var aa=[];
if(f.ps){
for(var j in f.ps){
var p=Efa[j];
if(p){
var a={i:j,n:SPN(p)};
a.s=a.n.toLowerCase();
aa.push(a);
}
}
aa.sort(DSA);
}
return aa;
}
function DAH(aa,exp){
var h="";
for(var k=0;k<aa.length;k++){
h+=(h?", ":"")+"<a href=\"#\" onclick=\"ESP('"+EH(aa[k].i)+"', true); SWA(4); return false;\">"+NSE(aa[k].n,exp)+"</a>";
}
return h?h:"none";
}
function DIF(){
DDF(false);
}
function DSL(a,b){
var r=0;
if(a.o<b.o){
r=-1;
}else{
if(a.o>b.o){
r=1;
}
}
return Dsr?(-r):r;
}
function DSA(a,b){
var r=0;
if(a.s<b.s){
r=-1;
}else{
if(a.s>b.s){
r=1;
}
}
return ((Dsf=="a")&&Dsr)?(-r):r;
}
function DCT(f,r){
if(Dsf==f){
Dsr=!Dsr;
}else{
Dsf=f;
Dsr=r;
}
DDF(false);
}
function DEI(f){
if(f){
if(Dec==0){
DFL();
SI("filesfind",false);
}
Dec++;
}else{
Dec--;
if(Dec==0){
SI("filesfind",true);
}
}
}
function DCE(i){
DEI(true);
var f=Eff[i];
var c=GE("filename"+i);
c.innerHTML="<TEXTAREA ID=\"filenameedit"+EH(i)+"\" STYLE=\"width:100%;\" ROWS=\"2\">"+EH(f.n)+"</TEXTAREA>";
var c=GE("filedesc"+i);
c.innerHTML="<TEXTAREA ID=\"filedescedit"+EH(i)+"\" STYLE=\"width:100%;\" ROWS=\"2\">"+EH(f.d)+"</TEXTAREA>";
var c=GE("fileattach"+i);
var ai="fileattachrows"+i;
c.innerHTML="<TABLE ID=\""+EH(ai)+"\" STYLE=\"width:100%; border-spacing:0;\"></TABLE>";
var aa=DAO(f);
if(aa.length){
for(var k=0;k<aa.length;k++){
DAA(ai,k==0,aa[k].i);
}
}else{
DAA(ai,true,"");
}
SS("fileedit"+i,false);
if(Exd){
SS("filedelete"+i,false);
}
SS("filesave"+i,true);
SS("filecancel"+i,true);
}
function DCS(i,s){
var f=Eff[i];
if(s){
var sf={};
var sc=0;
var ic=0;
var n=GV("filenameedit"+i);
if(n!=f.n){
sf.n=n;
sc++;
}
var d=GV("filedescedit"+i);
if(d!=f.d){
sf.d=d;
sc++;
}
var ii=DRA("fileattachrows"+i);
for(var j in ii){
if(!(f.ps&&f.ps[j])){
EDC(i,{"+":j});
ic++;
}
}
if(f.ps){
for(var j in f.ps){
if(!ii[j]){
EDC(i,{"-":j});
ic++;
}
}
}
if(sc){
EDC(i,sf);
}
if(sc||ic){
EUS(false,null,null,false,false);
ESS();
}
}
f=Eff[i];
GE("filename"+i).innerHTML=DNH(i,f);
GE("filedesc"+i).innerHTML=DDH(i,f);
GE("fileattach"+i).innerHTML=DAH(DAO(f));
SS("fileedit"+i,true);
if(Exd){
SS("filedelete"+i,true);
}
SS("filesave"+i,false);
SS("filecancel"+i,false);
DEI(false);
}
function DCD(i){
var f=Eff[i];
if(f){
if(confirm(_t("Are you sure you want to permanently delete the file $?",f.n))){
AP("file_delete",{f:GV("familyid"),p:GV("personid"),c:GV("checksum"),r:i,t:f.t},"",DDR,{i:i});
}
}
}
function DDR(_5c,_5d,_5e){
if(_5e.ok){
EDC(_5d.i,{x:""});
GE("filesrows").removeChild(GE("filesrow"+_5d.i));
var ds=parseInt(_5e.ds);
if(!isNaN(ds)){
Edt=ds;
}
var da=parseInt(_5e.da);
if(!isNaN(da)){
Eda=da;
}
DUS();
ESS();
EUS(false,null,null,false,false);
}else{
RE(_5e.er||_t("The file could not be deleted - please try again."));
}
}
function DAA(t,f,p){
var w=document.createElement("TR");
var i=new String(100000000+Math.floor(Math.random()*900000000));
w.id="fileattachrow"+i;
var m=document.createElement("TD");
m.className="fattachsel";
var s=document.createElement("select");
s.id="fileattachsel"+i;
m.appendChild(s);
w.appendChild(m);
var r=document.createElement("TD");
r.className="fattachpm";
r.innerHTML="<A HREF=\"#\" CLASS=\"fattachpmlink\" onClick=\"DDA("+EH(i)+"); return false;\" TITLE=\""+_h("Detach this person")+"\""+(f?"STYLE=\"visibility:hidden;\" ":"")+">&minus;</A> "+"<A HREF=\"#\" CLASS=\"fattachpmlink\" onClick=\"DAA('"+t+"', false); return false;\" TITLE=\""+_h("Attach another person")+"\">+</A>";
w.appendChild(r);
GE(t).appendChild(w);
var ra=[];
for(var j in Efa){
ra.push(j);
}
SPP("fileattachsel"+i,ra,p,true);
}
function DDA(i){
var e=GE("fileattachrow"+i);
e.parentNode.removeChild(e);
}
function DRA(t){
var ii={};
for(var r=GE(t).firstChild;r;r=r.nextSibling){
if(r.id.indexOf("fileattachrow")==0){
var v=GV("fileattachsel"+r.id.substring(13));
if(v){
ii[v]=true;
}
}
}
return ii;
}
function DTU(a,c){
var s=!GS("uploaddiv");
if(s){
SV("uploadfile",null);
SV("uploadname","");
SV("uploaddesc","");
SRR("uploadattachrows");
DAA("uploadattachrows",true,a);
ST("uploadmax",DMT(DMU()));
if(c){
GE("uploadfile").click();
}
}
GE("uploaddiv").style.display=s?"flex":"none";
}
function DMU(){
return Math.min(Edm,Edc-(Eda||Edt||0));
}
function DUC(){
var fnt=DUI();
if(fnt.s>DMU()){
alert(_t("This file is $1 in size, which is larger than the maximum of $2.",DST(fnt.s),DST(DMU())));
SV("uploadfile",null);
}else{
SV("uploadname",fnt.n);
}
}
function DUI(){
var f=GE("uploadfile").files.item(0);
var n="";
var t="";
var s=null;
if(f){
n=new String(f.name);
var p=n.lastIndexOf(".");
if(p>0){
t=n.substring(p+1).toLowerCase();
n=n.substring(0,p);
}
s=f.size;
}
return {f:f,n:n,t:t,s:s};
}
function DCU(){
var ii=DRA("uploadattachrows");
var fnt=DUI();
if(fnt.f){
AP("file_upload",{f:GV("familyid"),p:GV("personid"),c:GV("checksum"),t:fnt.t},fnt.f,DUR,{n:GV("uploadname")||fnt.n,t:fnt.t,d:GV("uploaddesc"),ii:ii});
}else{
RE(_t("Please select a file to upload it."));
}
}
function DUR(_7c,_7d,_7e){
if(_7e.r){
var ai=null;
EDC(_7e.r,{n:_7d.n,t:_7d.t,u:_7e.d,s:_7e.s,d:_7d.d});
for(var i in _7d.ii){
EDC(_7e.r,{"+":i});
if((i==Spe)||(ai===null)){
ai=i;
}
}
var ds=parseInt(_7e.ds);
if(!isNaN(ds)){
Edt=ds;
}
var da=parseInt(_7e.da);
if(!isNaN(da)){
Eda=da;
}
ESS();
EUS(false,ai,null,false,true);
SWA(4);
if(GS("filesdiv")){
DDF(true);
DUS();
}else{
ETF();
}
GE("uploaddiv").style.display="none";
}else{
RE(_7e.er||_t("The file could not be uploaded - please try again."));
}
}
function DAD(){
GE("main").addEventListener("dragenter",DDE);
GE("main").addEventListener("dragover",DDE);
GE("main").addEventListener("dragleave",DDL);
GE("main").addEventListener("drop",DDD);
}
var Dut=false;
var Dht=null;
function DDE(e){
e=e||window.event;
if(e.preventDefault){
e.preventDefault();
}
if(Dht){
clearTimeout(Dht);
Dht=null;
}
if(!GS("uploaddiv")){
Dut=true;
DTU("",false);
}
return false;
}
function DDL(e){
e=e||window.event;
if(e.preventDefault){
e.preventDefault();
}
if(Dut&&!Dht){
Dht=setTimeout(function(){
if(GS("uploaddiv")){
DTU();
}
Dut=false;
Dht=null;
},100);
}
return false;
}
function DDD(e){
DDE();
var f=e.dataTransfer.files;
if(f.length==1){
GE("uploadfile").files=f;
DUC();
FS("uploadname");
}
Dut=false;
return false;
}
</script>
		
		<script data-cfasync="false" async="" src="https://cdn.snigelweb.com/adengine/familyecho.com/loader.js" type="text/javascript"></script>
	<script type="text/javascript" async="" src="//cdn.snigelweb.com/prebid/8.52.0/prebid-ncm.js?v=12802-1732271154729"></script><script type="text/javascript" async="" src="//c.amazon-adsystem.com/aax2/apstag.js"></script><script type="text/javascript" async="" src="//securepubads.g.doubleclick.net/tag/js/gpt.js"></script><script type="text/javascript" async="" src="//feature-adengine.snigelweb.com/familyecho.com/12802-1732271154729/adngin.js"></script><script type="text/javascript" async="" src="//cdn.snigelweb.com/argus/argus.js"></script><script type="text/javascript" async="" src="//boot.pbstck.com/v1/tag/39a3fd4f-2a0d-4234-b957-b4adc961368e"></script><script type="text/javascript" async="" src="//cdnx.snigelweb.com/315b44bc-10e5-45a8-8f58-064d6e7317c0.js"></script><argprec0></argprec0><argprec1></argprec1><meta http-equiv="origin-trial" content="AlK2UR5SkAlj8jjdEc9p3F3xuFYlF6LYjAML3EOqw1g26eCwWPjdmecULvBH5MVPoqKYrOfPhYVL71xAXI1IBQoAAAB8eyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiV2ViVmlld1hSZXF1ZXN0ZWRXaXRoRGVwcmVjYXRpb24iLCJleHBpcnkiOjE3NTgwNjcxOTksImlzU3ViZG9tYWluIjp0cnVlfQ=="><meta http-equiv="origin-trial" content="Amm8/NmvvQfhwCib6I7ZsmUxiSCfOxWxHayJwyU1r3gRIItzr7bNQid6O8ZYaE1GSQTa69WwhPC9flq/oYkRBwsAAACCeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiV2ViVmlld1hSZXF1ZXN0ZWRXaXRoRGVwcmVjYXRpb24iLCJleHBpcnkiOjE3NTgwNjcxOTksImlzU3ViZG9tYWluIjp0cnVlfQ=="><meta http-equiv="origin-trial" content="A9wSqI5i0iwGdf6L1CERNdmsTPgVu44ewj8QxTBYgsv1LCPUVF7YmWOvTappqB1139jAymxUW/RO8zmMqo4zlAAAAACNeyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiRmxlZGdlQmlkZGluZ0FuZEF1Y3Rpb25TZXJ2ZXIiLCJleHBpcnkiOjE3MzY4MTI4MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><meta http-equiv="origin-trial" content="A+d7vJfYtay4OUbdtRPZA3y7bKQLsxaMEPmxgfhBGqKXNrdkCQeJlUwqa6EBbSfjwFtJWTrWIioXeMW+y8bWAgQAAACTeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiRmxlZGdlQmlkZGluZ0FuZEF1Y3Rpb25TZXJ2ZXIiLCJleHBpcnkiOjE3MzY4MTI4MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><script src="https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202411180101/pubads_impl.js" async=""></script><script type="text/javascript">(function() { var load = function() {!function(e){"use strict";const t=/pbstck:debug/.test(window.location.href),i=!!window.localStorage.getItem("pbstck"),n=(e,n,...o)=>{(t||i)&&console[e](`[pbstckUserSessions-b6ed2f5] [${performance.now().toFixed(2)}] ${n}`,...o.length?o:"")},o=(e,...t)=>{n("warn",e,...t)},r=(e,...t)=>{n("log",e,...t)},a=(e,...t)=>{n("error",e,...t)},s=["pbstck:","pbstck_context:"],c=()=>{const e=document.getElementsByTagName("meta"),t=Array.from(e).filter((e=>d(s,e.name))),i=new Map;t.forEach((e=>{const t=u(e.name);i.has(t)&&o(`Custom dim ${t} is present many times`),i.size<20?i.set(t,e.content):o(`Skipping custom dim ${t} with ${e.content}: limit of 20 keys exceeded`)}));const n=Object.assign({},...Array.from(i.entries()).map((([e,t])=>({[e]:t}))));return i.size>0&&r("Custom dim found :",n),n},u=e=>e.replace(/^\w+:/,""),d=(e,t)=>e.some((e=>t.startsWith(e)));var l,p;!function(e){e.HISTORY_MUTATION="_pbstck_historyMutation",e.NEW_PAGE="_pbstck_pageView",e.SESSION_TRACKING_AUTHORIZED="_pbstck_sessionTrackingAuthorized",e.SESSION_TRACKING_DECLINED="_pbstck_sessionTrackingDeclined"}(l||(l={})),function(e){e.REPLACE_STATE="replaceState",e.PUSH_STATE="pushState"}(p||(p={}));const w=e=>{window.history[e]=new Proxy(window.history[e],{apply(t,i,n){const o=window.location.href,r=t.apply(i,n),a=new CustomEvent(l.HISTORY_MUTATION,{detail:{referrer:o,stateObj:n[0],title:n[1],url:n[2],type:e}});return dispatchEvent(a),r}})};for(var m,f=[],b=0;b<256;++b)f.push((b+256).toString(16).slice(1));var h=new Uint8Array(16);function g(){if(!m&&!(m="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(h)}var v={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function y(e,t,i){if(v.randomUUID&&!t&&!e)return v.randomUUID();var n=(e=e||{}).random||(e.rng||g)();return n[6]=15&n[6]|64,n[8]=63&n[8]|128,function(e,t=0){return(f[e[t+0]]+f[e[t+1]]+f[e[t+2]]+f[e[t+3]]+"-"+f[e[t+4]]+f[e[t+5]]+"-"+f[e[t+6]]+f[e[t+7]]+"-"+f[e[t+8]]+f[e[t+9]]+"-"+f[e[t+10]]+f[e[t+11]]+f[e[t+12]]+f[e[t+13]]+f[e[t+14]]+f[e[t+15]]).toLowerCase()}(n)}const k=e=>{window.__pbstck_consent=e},S=e=>{window.__pbstck_session_tracking=e},T=()=>window.__pbstck_consent,E=()=>window.__pbstck_session_tracking,_=e=>{if("string"==typeof e){const t=e.split(/:\/\/(www.)?/g);return t.length<=1?null:t[t.length-1].split("/")[0]}const t=e.hostname;return t.startsWith("www.")?t.substring(4):t};var x;!function(e){e.DEV="dev",e.BETA="beta",e.PROD="prod"}(x||(x={}));class I extends Error{message="unknown session error"}class C extends I{message="session init error"}class A extends I{message="session parse error"}class N extends I{message="session not found error"}class O extends I{message="session obsolete error"}const D=Array(),P=(e,t)=>{const i=e.env===x.PROD?"":`_${e.env}`;return`_pbstck_session_${t.tagId.substring(0,8)}${i}`},L=e=>Date.now()-e>18e5,R=(e,t)=>{try{const n=localStorage.getItem(P(e,t));if(n){const e=JSON.parse(atob(n));if(i=e,D.every((e=>e in i)))return e;throw new A}throw new N}catch(e){if(e instanceof I)throw e;throw new A}var i},U=(e,t)=>{try{const i=R(e,t);return i.pageCount++,localStorage.setItem(P(e,t),btoa(JSON.stringify(i))),i.pageCount}catch(e){if(e instanceof I)throw e;throw new I}},M=(e,t)=>{const i=new URL(window.location.href),n={id:y(),lastUpdateTimeMs:Date.now(),pageCount:0,lastUrlVisited:window.location.href,utmSource:i.searchParams.get("utm_source")||null,utmCampaign:i.searchParams.get("utm_campaign")||null,utmContent:i.searchParams.get("utm_content")||null,utmTerm:i.searchParams.get("utm_term")||null,utmMedium:i.searchParams.get("utm_medium")||null};try{localStorage.setItem(P(e,t),btoa(JSON.stringify(n)))}catch(e){throw new C}},$=[],q=(e,t)=>{const i=$.map((i=>F(i,e,t)));if(i.length){const n=JSON.stringify(i),o=`${e.gateway}/page?${(()=>{const e=document.querySelector('meta[name="pbstck:kleanads-version"]')?.getAttribute("content")??"none",i=document.querySelector('meta[name="pbstck:config-version"]')?.getAttribute("content")??"none";return`tId=${t.tagId}&v=${e}&s=${i}&c=1`})()}`;navigator.sendBeacon&&navigator.sendBeacon(o,n)||fetch(o,{body:n,method:"POST",keepalive:!0}),r("[page] event queue dispatched",JSON.stringify(i)),$.length=0}},B=(e,t,i)=>{try{const o=V(t,i);try{const i=R(e,t);L(i.lastUpdateTimeMs)&&q(e,t)}catch(e){r("[page] session was not found or invalid, adding the new page to the queue anyway")}(n=o,$.push(n),r("[page] event queued",n),$.length)>=20&&q(e,t)}catch(e){e instanceof I?a(`[page] new page : ${e.message}`):a("[page] unknown error",e)}var n},H=(e,t)=>{B(e,t),window.addEventListener(l.SESSION_TRACKING_AUTHORIZED,(i=>{r(`[page] ${l.SESSION_TRACKING_AUTHORIZED}`,i);try{((e,t)=>{try{const i=R(e,t);if(L(i.lastUpdateTimeMs))throw new O;i.lastUpdateTimeMs=Date.now(),i.lastUrlVisited=window.location.href,localStorage.setItem(P(e,t),btoa(JSON.stringify(i)))}catch(i){if(i instanceof N||i instanceof A)return void M(e,t);if(i instanceof I)throw i;throw new I}})(e,t),q(e,t)}catch(i){i instanceof O&&(M(e,t),q(e,t))}})),window.addEventListener(l.SESSION_TRACKING_DECLINED,(i=>{r(`[page] ${l.SESSION_TRACKING_DECLINED}`,i),((e,t)=>{try{localStorage.removeItem(P(e,t))}catch(e){}})(e,t),q(e,t)})),window.addEventListener(l.HISTORY_MUTATION,(i=>{r(`[page] ${l.HISTORY_MUTATION}`,i),i.detail?.referrer.href!==window.location.href&&B(e,t,i.detail?.referrer)})),window.addEventListener("popstate",(i=>{B(e,t)})),window.document.addEventListener("visibilitychange",(()=>{r(`[page] visibility changed to ${document.visibilityState}`),"visible"!==document.visibilityState&&q(e,t)})),window.addEventListener("pagehide",(()=>{q(e,t)})),window.addEventListener("beforeunload",(()=>{q(e,t)}))},V=(e,t)=>{const i=new URL(window.location.href);return{...e,pageId:z(),pageCount:1,domain:_(window.location)??"",href:(n=window.location,n&&n.protocol&&n.host&&n.pathname?`${n.protocol}//${n.host}${n.pathname}`:"unknown"),referrer:_(t??document.referrer),consent:T(),userSessionId:null,sessionTracking:E(),utmSource:i.searchParams.get("utm_source"),utmCampaign:i.searchParams.get("utm_campaign"),utmContent:i.searchParams.get("utm_content"),utmTerm:i.searchParams.get("utm_term"),utmMedium:i.searchParams.get("utm_medium")};var n},F=(e,t,i)=>{try{const n=E();return{...e,pageCount:n?U(t,i):e.pageCount,userSessionId:n?R(t,i).id:null,consent:T(),sessionTracking:n,utmSource:n?R(t,i).utmSource:e.utmSource,utmCampaign:n?R(t,i).utmCampaign:e.utmCampaign,utmContent:n?R(t,i).utmContent:e.utmContent,utmTerm:n?R(t,i).utmTerm:e.utmTerm,utmMedium:n?R(t,i).utmMedium:e.utmMedium}}catch(t){if(t instanceof N)return e;t instanceof I?a(`[session] ${t.message}`):a("[session] unknown error",t)}return e},z=()=>{const e=y();return window.__pbstck_page_id=e,e};var G;!function(e){e[e.DENIED=0]="DENIED",e[e.GRANTED=1]="GRANTED",e[e.UNAVAILABLE=2]="UNAVAILABLE"}(G||(G={}));const j=async(e,t)=>{k(G.UNAVAILABLE),S(!1);let i=0;try{(await W(e))("addEventListener",2,(n=>{if(n){if("tcloaded"===n.eventStatus||"useractioncomplete"===n.eventStatus){k(X(n));const e=J(n)&&!t.sessionTrackingDisabled;S(e),e?dispatchEvent(new CustomEvent(l.SESSION_TRACKING_AUTHORIZED)):dispatchEvent(new CustomEvent(l.SESSION_TRACKING_DECLINED))}}else r(`[consent] wrong tcdata ${n}, waiting 200ms`),setTimeout((()=>{i++,100===i&&o("[consent] unable to retrieve cmp after 100 tries"),j(e,t)}),200)}))}catch(e){a("[consent] Error while loading tcf api")}},K=(e,t,i)=>{if(e.__tcfapi){const n=e.__tcfapi;(e=>"function"==typeof e)(e.__tcfapi)?t(n):i("__tcfapi is not a function")}else setTimeout((()=>K(e,t,i)),100)},W=e=>new Promise(((t,i)=>K(e,t,i))),X=e=>e.purpose.consents&&e.purpose.consents[1]&&e.purpose.consents[2]&&e.purpose.consents[3]&&e.purpose.consents[4]&&e.purpose.consents[7]?G.GRANTED:G.DENIED,J=e=>e.purpose.consents[1]&&e.purpose.consents[7]&&e.purpose.consents[8]?(r("[consent] SessionTracking obtained"),!0):(r("[consent] SessionTracking declined"),!1);var Y,Z,Q,ee,te,ie=-1,ne=function(e){addEventListener("pageshow",(function(t){t.persisted&&(ie=t.timeStamp,e(t))}),!0)},oe=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},re=function(){var e=oe();return e&&e.activationStart||0},ae=function(e,t){var i=oe(),n="navigate";return ie>=0?n="back-forward-cache":i&&(document.prerendering||re()>0?n="prerender":document.wasDiscarded?n="restore":i.type&&(n=i.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:n}},se=function(e,t,i){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var n=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return n.observe(Object.assign({type:e,buffered:!0},i||{})),n}}catch(e){}},ce=function(e,t,i,n){var o,r;return function(a){t.value>=0&&(a||n)&&((r=t.value-(o||0))||void 0===o)&&(o=t.value,t.delta=r,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,i),e(t))}},ue=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},de=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},le=function(e){var t=!1;return function(){t||(e(),t=!0)}},pe=-1,we=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},me=function(e){"hidden"===document.visibilityState&&pe>-1&&(pe="visibilitychange"===e.type?e.timeStamp:0,be())},fe=function(){addEventListener("visibilitychange",me,!0),addEventListener("prerenderingchange",me,!0)},be=function(){removeEventListener("visibilitychange",me,!0),removeEventListener("prerenderingchange",me,!0)},he=function(){return pe<0&&(pe=we(),fe(),ne((function(){setTimeout((function(){pe=we(),fe()}),0)}))),{get firstHiddenTime(){return pe}}},ge=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},ve=[1800,3e3],ye=function(e,t){t=t||{},ge((function(){var i,n=he(),o=ae("FCP"),r=se("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(r.disconnect(),e.startTime<n.firstHiddenTime&&(o.value=Math.max(e.startTime-re(),0),o.entries.push(e),i(!0)))}))}));r&&(i=ce(e,o,ve,t.reportAllChanges),ne((function(n){o=ae("FCP"),i=ce(e,o,ve,t.reportAllChanges),ue((function(){o.value=performance.now()-n.timeStamp,i(!0)}))})))}))},ke=[.1,.25],Se=0,Te=1/0,Ee=0,_e=function(e){e.forEach((function(e){e.interactionId&&(Te=Math.min(Te,e.interactionId),Ee=Math.max(Ee,e.interactionId),Se=Ee?(Ee-Te)/7+1:0)}))},xe=function(){return Y?Se:performance.interactionCount||0},Ie=function(){"interactionCount"in performance||Y||(Y=se("event",_e,{type:"event",buffered:!0,durationThreshold:0}))},Ce=[],Ae=new Map,Ne=0,Oe=[],De=function(e){if(Oe.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=Ce[Ce.length-1],i=Ae.get(e.interactionId);if(i||Ce.length<10||e.duration>t.latency){if(i)e.duration>i.latency?(i.entries=[e],i.latency=e.duration):e.duration===i.latency&&e.startTime===i.entries[0].startTime&&i.entries.push(e);else{var n={id:e.interactionId,latency:e.duration,entries:[e]};Ae.set(n.id,n),Ce.push(n)}Ce.sort((function(e,t){return t.latency-e.latency})),Ce.length>10&&Ce.splice(10).forEach((function(e){return Ae.delete(e.id)}))}}},Pe=function(e){var t=self.requestIdleCallback||self.setTimeout,i=-1;return e=le(e),"hidden"===document.visibilityState?e():(i=t(e),de(e)),i},Le=[200,500],Re=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},ge((function(){var i;Ie();var n,o=ae("INP"),r=function(e){Pe((function(){e.forEach(De);var t=function(){var e=Math.min(Ce.length-1,Math.floor((xe()-Ne)/50));return Ce[e]}();t&&t.latency!==o.value&&(o.value=t.latency,o.entries=t.entries,n())}))},a=se("event",r,{durationThreshold:null!==(i=t.durationThreshold)&&void 0!==i?i:40});n=ce(e,o,Le,t.reportAllChanges),a&&(a.observe({type:"first-input",buffered:!0}),de((function(){r(a.takeRecords()),n(!0)})),ne((function(){Ne=xe(),Ce.length=0,Ae.clear(),o=ae("INP"),n=ce(e,o,Le,t.reportAllChanges)})))})))},Ue=[2500,4e3],Me={},$e=[800,1800],qe=function e(t){document.prerendering?ge((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},Be=function(e,t){t=t||{};var i=ae("TTFB"),n=ce(e,i,$e,t.reportAllChanges);qe((function(){var o=oe();o&&(i.value=Math.max(o.responseStart-re(),0),i.entries=[o],n(!0),ne((function(){i=ae("TTFB",0),(n=ce(e,i,$e,t.reportAllChanges))(!0)})))}))},He={passive:!0,capture:!0},Ve=new Date,Fe=function(e,t){Z||(Z=t,Q=e,ee=new Date,je(removeEventListener),ze())},ze=function(){if(Q>=0&&Q<ee-Ve){var e={entryType:"first-input",name:Z.type,target:Z.target,cancelable:Z.cancelable,startTime:Z.timeStamp,processingStart:Z.timeStamp+Q};te.forEach((function(t){t(e)})),te=[]}},Ge=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var i=function(){Fe(e,t),o()},n=function(){o()},o=function(){removeEventListener("pointerup",i,He),removeEventListener("pointercancel",n,He)};addEventListener("pointerup",i,He),addEventListener("pointercancel",n,He)}(t,e):Fe(t,e)}},je=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,Ge,He)}))},Ke=[100,300];function We(e,t,i,n){const o=()=>{const n=document.querySelector('meta[name="pbstck:kleanads-version"]')?.getAttribute("content")??"none",o=document.querySelector('meta[name="pbstck:config-version"]')?.getAttribute("content")??"none";return`${e.toLocaleLowerCase()}=${t.toFixed(3)}&tId=${i.tagId}&v=${n}&s=${o}&c=1`},r=E(),a=JSON.stringify([{...i,href:window.location.href,name:e,value:t,customFields:{...i.customFields,pageId:window.__pbstck_page_id,pageCount:String(r?R(n,i).pageCount:1),userSessionId:r?R(n,i).id:null,sessionTracking:String(r)}}]);navigator.sendBeacon&&navigator.sendBeacon(`${n.gateway}/web-vitals?${o()}`,a)||fetch(`${n.gateway}/web-vitals?${o()}`,{body:a,method:"POST",keepalive:!0})}const Xe=(e,t)=>{!function(e,t){t=t||{},ye(le((function(){var i,n=ae("CLS",0),o=0,r=[],a=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=r[0],i=r[r.length-1];o&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(o+=e.value,r.push(e)):(o=e.value,r=[e])}})),o>n.value&&(n.value=o,n.entries=r,i())},s=se("layout-shift",a);s&&(i=ce(e,n,ke,t.reportAllChanges),de((function(){a(s.takeRecords()),i(!0)})),ne((function(){o=0,n=ae("CLS",0),i=ce(e,n,ke,t.reportAllChanges),ue((function(){return i()}))})),setTimeout(i,0))})))}((i=>We("CLS",i.value,t,e))),ye((i=>We("FCP",i.value,t,e))),function(e,t){t=t||{},ge((function(){var i,n=he(),o=ae("LCP"),r=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<n.firstHiddenTime&&(o.value=Math.max(e.startTime-re(),0),o.entries=[e],i())}))},a=se("largest-contentful-paint",r);if(a){i=ce(e,o,Ue,t.reportAllChanges);var s=le((function(){Me[o.id]||(r(a.takeRecords()),a.disconnect(),Me[o.id]=!0,i(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return Pe(s)}),!0)})),de(s),ne((function(n){o=ae("LCP"),i=ce(e,o,Ue,t.reportAllChanges),ue((function(){o.value=performance.now()-n.timeStamp,Me[o.id]=!0,i(!0)}))}))}}))}((i=>We("LCP",i.value,t,e))),function(e,t){t=t||{},ge((function(){var i,n=he(),o=ae("FID"),r=function(e){e.startTime<n.firstHiddenTime&&(o.value=e.processingStart-e.startTime,o.entries.push(e),i(!0))},a=function(e){e.forEach(r)},s=se("first-input",a);i=ce(e,o,Ke,t.reportAllChanges),s&&(de(le((function(){a(s.takeRecords()),s.disconnect()}))),ne((function(){var n;o=ae("FID"),i=ce(e,o,Ke,t.reportAllChanges),te=[],Q=-1,Z=null,je(addEventListener),n=r,te.push(n),ze()})))}))}((i=>We("FID",i.value,t,e))),Re((i=>We("INP",i.value,t,e))),Be((i=>We("TTFB",i.value,t,e)))};var Je,Ye="",Ze="function",Qe="undefined",et="object",tt="string",it="major",nt="model",ot="name",rt="type",at="vendor",st="version",ct="architecture",ut="console",dt="mobile",lt="tablet",pt="smarttv",wt="wearable",mt="embedded",ft="user-agent",bt=500,ht="brands",gt="formFactors",vt="fullVersionList",yt="platform",kt="platformVersion",St="bitness",Tt="sec-ch-ua",Et=Tt+"-full-version-list",_t=Tt+"-arch",xt=Tt+"-"+St,It=Tt+"-form-factors",Ct=Tt+"-"+dt,At=Tt+"-"+nt,Nt=Tt+"-"+yt,Ot=Nt+"-version",Dt=[ht,vt,dt,nt,yt,kt,ct,gt,St],Pt="browser",Lt="cpu",Rt="device",Ut="engine",Mt="os",$t="result",qt="Amazon",Bt="Apple",Ht="ASUS",Vt="BlackBerry",Ft="Google",zt="Huawei",Gt="Lenovo",jt="LG",Kt="Microsoft",Wt="Motorola",Xt="Samsung",Jt="Sharp",Yt="Sony",Zt="Xiaomi",Qt="Zebra",ei="Mobile ",ti=" Browser",ii="Chrome",ni="Firefox",oi="Opera",ri="Facebook",ai="Sogou",si="Windows",ci=typeof window!==Qe&&window.navigator?window.navigator:void 0,ui=ci&&ci.userAgentData?ci.userAgentData:void 0,di=function(e,t){var i={},n=t;if(!wi(t))for(var o in n={},t)for(var r in t[o])n[r]=t[o][r].concat(n[r]?n[r]:[]);for(var a in e)i[a]=n[a]&&n[a].length%2==0?n[a].concat(e[a]):e[a];return i},li=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},pi=function(e,t){if(typeof e===et&&e.length>0){for(var i in e)if(bi(e[i])==bi(t))return!0;return!1}return!!mi(e)&&-1!==bi(t).indexOf(bi(e))},wi=function(e,t){for(var i in e)return/^(browser|cpu|device|engine|os)$/.test(i)||!!t&&wi(e[i])},mi=function(e){return typeof e===tt},fi=function(e){if(e){for(var t=[],i=vi(/\\?\"/g,e).split(","),n=0;n<i.length;n++)if(i[n].indexOf(";")>-1){var o=ki(i[n]).split(";v=");t[n]={brand:o[0],version:o[1]}}else t[n]=ki(i[n]);return t}},bi=function(e){return mi(e)?e.toLowerCase():e},hi=function(e){return mi(e)?vi(/[^\d\.]/g,e).split(".")[0]:void 0},gi=function(e){for(var t in e){var i=e[t];typeof i==et&&2==i.length?this[i[0]]=i[1]:this[i]=void 0}return this},vi=function(e,t){return mi(t)?t.replace(e,Ye):t},yi=function(e){return vi(/\\?\"/g,e)},ki=function(e,t){if(mi(e))return e=vi(/^\s\s*/,e),typeof t===Qe?e:e.substring(0,bt)},Si=function(e,t){if(e&&t)for(var i,n,o,r,a,s,c=0;c<t.length&&!a;){var u=t[c],d=t[c+1];for(i=n=0;i<u.length&&!a&&u[i];)if(a=u[i++].exec(e))for(o=0;o<d.length;o++)s=a[++n],typeof(r=d[o])===et&&r.length>0?2===r.length?typeof r[1]==Ze?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3===r.length?typeof r[1]!==Ze||r[1].exec&&r[1].test?this[r[0]]=s?s.replace(r[1],r[2]):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0:4===r.length&&(this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0):this[r]=s||void 0;c+=2}},Ti=function(e,t){for(var i in t)if(typeof t[i]===et&&t[i].length>0){for(var n=0;n<t[i].length;n++)if(pi(t[i][n],e))return"?"===i?void 0:i}else if(pi(t[i],e))return"?"===i?void 0:i;return t.hasOwnProperty("*")?t["*"]:e},Ei={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},_i={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},xi={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[st,[ot,ei+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[st,[ot,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[ot,st],[/opios[\/ ]+([\w\.]+)/i],[st,[ot,oi+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[st,[ot,oi+" GX"]],[/\bopr\/([\w\.]+)/i],[st,[ot,oi]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[st,[ot,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[ot,st],[/\bddg\/([\w\.]+)/i],[st,[ot,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[st,[ot,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[st,[ot,"WeChat"]],[/konqueror\/([\w\.]+)/i],[st,[ot,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[st,[ot,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[st,[ot,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[st,[ot,"Smart "+Gt+ti]],[/(avast|avg)\/([\w\.]+)/i],[[ot,/(.+)/,"$1 Secure"+ti],st],[/\bfocus\/([\w\.]+)/i],[st,[ot,ni+" Focus"]],[/\bopt\/([\w\.]+)/i],[st,[ot,oi+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[st,[ot,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[st,[ot,"Dolphin"]],[/coast\/([\w\.]+)/i],[st,[ot,oi+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[st,[ot,"MIUI"+ti]],[/fxios\/([\w\.-]+)/i],[st,[ot,ei+ni]],[/\bqihu|(qi?ho?o?|360)browser/i],[[ot,"360"+ti]],[/\b(qq)\/([\w\.]+)/i],[[ot,/(.+)/,"$1Browser"],st],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[ot,/(.+)/,"$1"+ti],st],[/samsungbrowser\/([\w\.]+)/i],[st,[ot,Xt+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[ot,/_/g," "],st],[/metasr[\/ ]?([\d\.]+)/i],[st,[ot,ai+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[ot,ai+" Mobile"],st],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[ot,st],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[ot],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[ot,ri],st],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[ot,st],[/\bgsa\/([\w\.]+) .*safari\//i],[st,[ot,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[st,[ot,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[st,[ot,ii+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[ot,ii+" WebView"],st],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[st,[ot,"Android"+ti]],[/chrome\/([\w\.]+) mobile/i],[st,[ot,ei+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[ot,st],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[st,[ot,ei+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[ot,ei+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[st,ot],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[ot,[st,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[ot,st],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[ot,ei+ni],st],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[ot,"Netscape"],st],[/(wolvic)\/([\w\.]+)/i],[ot,st],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[st,[ot,ni+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[ot,[st,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[ot,[st,/[^\d\.]+./,Ye]]],cpu:[[/\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i],[[ct,"amd64"]],[/(ia32(?=;))/i,/((?:i[346]|x)86)[;\)]/i],[[ct,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ct,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ct,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ct,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ct,/ower/,Ye,bi]],[/(sun4\w)[;\)]/i],[[ct,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ct,bi]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[nt,[at,Xt],[rt,lt]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[nt,[at,Xt],[rt,dt]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[nt,[at,Bt],[rt,dt]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[nt,[at,Bt],[rt,lt]],[/(macintosh);/i],[nt,[at,Bt]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[nt,[at,Jt],[rt,dt]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[nt,[at,zt],[rt,lt]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[nt,[at,zt],[rt,dt]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[nt,/_/g," "],[at,Zt],[rt,dt]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[nt,/_/g," "],[at,Zt],[rt,lt]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[nt,[at,"OPPO"],[rt,dt]],[/\b(opd2\d{3}a?) bui/i],[nt,[at,"OPPO"],[rt,lt]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[nt,[at,"Vivo"],[rt,dt]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[nt,[at,"Realme"],[rt,dt]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[nt,[at,Wt],[rt,dt]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[nt,[at,Wt],[rt,lt]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[nt,[at,jt],[rt,lt]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[nt,[at,jt],[rt,dt]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[nt,[at,Gt],[rt,lt]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[nt,/_/g," "],[at,"Nokia"],[rt,dt]],[/(pixel c)\b/i],[nt,[at,Ft],[rt,lt]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[nt,[at,Ft],[rt,dt]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[nt,[at,Yt],[rt,dt]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[nt,"Xperia Tablet"],[at,Yt],[rt,lt]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[nt,[at,"OnePlus"],[rt,dt]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[nt,[at,qt],[rt,lt]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[nt,/(.+)/g,"Fire Phone $1"],[at,qt],[rt,dt]],[/(playbook);[-\w\),; ]+(rim)/i],[nt,at,[rt,lt]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[nt,[at,Vt],[rt,dt]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[nt,[at,Ht],[rt,lt]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[nt,[at,Ht],[rt,dt]],[/(nexus 9)/i],[nt,[at,"HTC"],[rt,lt]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[at,[nt,/_/g," "],[rt,dt]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[nt,[at,"Acer"],[rt,lt]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[nt,[at,"Meizu"],[rt,dt]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[nt,[at,"Ulefone"],[rt,dt]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[at,nt,[rt,dt]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[at,nt,[rt,lt]],[/(surface duo)/i],[nt,[at,Kt],[rt,lt]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[nt,[at,"Fairphone"],[rt,dt]],[/(shield[\w ]+) b/i],[nt,[at,"Nvidia"],[rt,lt]],[/(sprint) (\w+)/i],[at,nt,[rt,dt]],[/(kin\.[onetw]{3})/i],[[nt,/\./g," "],[at,Kt],[rt,dt]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[nt,[at,Qt],[rt,lt]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[nt,[at,Qt],[rt,dt]],[/smart-tv.+(samsung)/i],[at,[rt,pt]],[/hbbtv.+maple;(\d+)/i],[[nt,/^/,"SmartTV"],[at,Xt],[rt,pt]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[at,jt],[rt,pt]],[/(apple) ?tv/i],[at,[nt,Bt+" TV"],[rt,pt]],[/crkey/i],[[nt,ii+"cast"],[at,Ft],[rt,pt]],[/droid.+aft(\w+)( bui|\))/i],[nt,[at,qt],[rt,pt]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[nt,[at,Jt],[rt,pt]],[/(bravia[\w ]+)( bui|\))/i],[nt,[at,Yt],[rt,pt]],[/(mitv-\w{5}) bui/i],[nt,[at,Zt],[rt,pt]],[/Hbbtv.*(technisat) (.*);/i],[at,nt,[rt,pt]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[at,ki],[nt,ki],[rt,pt]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[rt,pt]],[/(ouya)/i,/(nintendo) (\w+)/i],[at,nt,[rt,ut]],[/droid.+; (shield) bui/i],[nt,[at,"Nvidia"],[rt,ut]],[/(playstation \w+)/i],[nt,[at,Yt],[rt,ut]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[nt,[at,Kt],[rt,ut]],[/((pebble))app/i],[at,nt,[rt,wt]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[nt,[at,Bt],[rt,wt]],[/droid.+; (wt63?0{2,3})\)/i],[nt,[at,Qt],[rt,wt]],[/droid.+; (glass) \d/i],[nt,[at,Ft],[rt,"xr"]],[/(quest( \d| pro)?)/i],[nt,[at,ri],[rt,"xr"]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[at,[rt,mt]],[/(aeobc)\b/i],[nt,[at,qt],[rt,mt]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[nt,[rt,dt]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[nt,[rt,lt]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[rt,lt]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[rt,dt]],[/(android[-\w\. ]{0,9});.+buil/i],[nt,[at,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[st,[ot,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[st,[ot,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[ot,st],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[st,ot]],os:[[/microsoft (windows) (vista|xp)/i],[ot,st],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[ot,[st,Ti,Ei]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[st,Ti,Ei],[ot,si]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[st,/_/g,"."],[ot,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[ot,"macOS"],[st,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[st,ot],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[ot,st],[/\(bb(10);/i],[st,[ot,Vt]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[st,[ot,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[st,[ot,ni+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[st,[ot,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[st,[ot,"watchOS"]],[/crkey\/([\d\.]+)/i],[st,[ot,ii+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[ot,"Chrome OS"],st],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[ot,st],[/(sunos) ?([\w\.\d]*)/i],[[ot,"Solaris"],st],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[ot,st]]},Ii=(Je={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},gi.call(Je.init,[[Pt,[ot,st,it,rt]],[Lt,[ct]],[Rt,[rt,nt,at]],[Ut,[ot,st]],[Mt,[ot,st]]]),gi.call(Je.isIgnore,[[Pt,[st,it]],[Ut,[st]],[Mt,[st]]]),gi.call(Je.isIgnoreRgx,[[Pt,/ ?browser$/i],[Mt,/ ?os$/i]]),gi.call(Je.toString,[[Pt,[ot,st]],[Lt,[ct]],[Rt,[at,nt]],[Ut,[ot,st]],[Mt,[ot,st]]]),Je),Ci=function(e,t){var i=Ii.init[t],n=Ii.isIgnore[t]||0,o=Ii.isIgnoreRgx[t]||0,r=Ii.toString[t]||0;function a(){gi.call(this,i)}return a.prototype.getItem=function(){return e},a.prototype.withClientHints=function(){return ui?ui.getHighEntropyValues(Dt).then((function(t){return e.setCH(new Ai(t,!1)).parseCH().get()})):e.parseCH().get()},a.prototype.withFeatureCheck=function(){return e.detectFeature().get()},t!=$t&&(a.prototype.is=function(e){var t=!1;for(var i in this)if(this.hasOwnProperty(i)&&!pi(n,i)&&bi(o?vi(o,this[i]):this[i])==bi(o?vi(o,e):e)){if(t=!0,e!=Qe)break}else if(e==Qe&&t){t=!t;break}return t},a.prototype.toString=function(){var e=Ye;for(var t in r)typeof this[r[t]]!==Qe&&(e+=(e?" ":Ye)+this[r[t]]);return e||Qe}),ui||(a.prototype.then=function(e){var t=this,i=function(){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])};i.prototype={is:a.prototype.is,toString:a.prototype.toString};var n=new i;return e(n),n}),new a};function Ai(e,t){if(e=e||{},gi.call(this,Dt),t)gi.call(this,[[ht,fi(e[Tt])],[vt,fi(e[Et])],[dt,/\?1/.test(e[Ct])],[nt,yi(e[At])],[yt,yi(e[Nt])],[kt,yi(e[Ot])],[ct,yi(e[_t])],[gt,fi(e[It])],[St,yi(e[xt])]]);else for(var i in e)this.hasOwnProperty(i)&&typeof e[i]!==Qe&&(this[i]=e[i])}function Ni(e,t,i,n){return this.get=function(e){return e?this.data.hasOwnProperty(e)?this.data[e]:void 0:this.data},this.set=function(e,t){return this.data[e]=t,this},this.setCH=function(e){return this.uaCH=e,this},this.detectFeature=function(){if(ci&&ci.userAgent==this.ua)switch(this.itemType){case Pt:ci.brave&&typeof ci.brave.isBrave==Ze&&this.set(ot,"Brave");break;case Rt:!this.get(rt)&&ui&&ui[dt]&&this.set(rt,dt),"Macintosh"==this.get(nt)&&ci&&typeof ci.standalone!==Qe&&ci.maxTouchPoints&&ci.maxTouchPoints>2&&this.set(nt,"iPad").set(rt,lt);break;case Mt:!this.get(ot)&&ui&&ui[yt]&&this.set(ot,ui[yt]);break;case $t:var e=this.data,t=function(t){return e[t].getItem().detectFeature().get()};this.set(Pt,t(Pt)).set(Lt,t(Lt)).set(Rt,t(Rt)).set(Ut,t(Ut)).set(Mt,t(Mt))}return this},this.parseUA=function(){return this.itemType!=$t&&Si.call(this.data,this.ua,this.rgxMap),this.itemType==Pt&&this.set(it,hi(this.get(st))),this},this.parseCH=function(){var e=this.uaCH,t=this.rgxMap;switch(this.itemType){case Pt:var i,n=e[vt]||e[ht];if(n)for(var o in n){var r=vi(/(Google|Microsoft) /,n[o].brand||n[o]),a=n[o].version;/not.a.brand/i.test(r)||i&&(!/chrom/i.test(i)||/chromi/i.test(r))||(this.set(ot,r).set(st,a).set(it,hi(a)),i=r)}break;case Lt:var s=e[ct];s&&(s&&"64"==e[St]&&(s+="64"),Si.call(this.data,s+";",t));break;case Rt:if(e[dt]&&this.set(rt,dt),e[nt]&&this.set(nt,e[nt]),"Xbox"==e[nt]&&this.set(rt,ut).set(at,Kt),e[gt]){var c;if("string"!=typeof e[gt])for(var u=0;!c&&u<e[gt].length;)c=Ti(e[gt][u++],_i);else c=Ti(e[gt],_i);this.set(rt,c)}break;case Mt:var d=e[yt];if(d){var l=e[kt];d==si&&(l=parseInt(hi(l),10)>=13?"11":"10"),this.set(ot,d).set(st,l)}this.get(ot)==si&&"Xbox"==e[nt]&&this.set(ot,"Xbox").set(st,void 0);break;case $t:var p=this.data,w=function(t){return p[t].getItem().setCH(e).parseCH().get()};this.set(Pt,w(Pt)).set(Lt,w(Lt)).set(Rt,w(Rt)).set(Ut,w(Ut)).set(Mt,w(Mt))}return this},gi.call(this,[["itemType",e],["ua",t],["uaCH",n],["rgxMap",i],["data",Ci(this,e)]]),this}function Oi(e,t,i){if(typeof e===et?(wi(e,!0)?(typeof t===et&&(i=t),t=e):(i=e,t=void 0),e=void 0):typeof e!==tt||wi(t,!0)||(i=t,t=void 0),!(this instanceof Oi))return new Oi(e,t,i).getResult();var n=typeof e===tt?e:ci&&ci.userAgent?ci.userAgent:i&&i[ft]?i[ft]:Ye,o=new Ai(i,!0),r=t?di(xi,t):xi,a=function(e){return e==$t?function(){return new Ni(e,n,r,o).set("ua",n).set(Pt,this.getBrowser()).set(Lt,this.getCPU()).set(Rt,this.getDevice()).set(Ut,this.getEngine()).set(Mt,this.getOS()).get()}:function(){return new Ni(e,n,r[e],o).parseUA().get()}};return gi.call(this,[["getBrowser",a(Pt)],["getCPU",a(Lt)],["getDevice",a(Rt)],["getEngine",a(Ut)],["getOS",a(Mt)],["getResult",a($t)],["getUA",function(){return n}],["setUA",function(e){return mi(e)&&(n=e.length>bt?ki(e,bt):e),this}]]).setUA(n),this}Oi.VERSION="2.0.0-beta.3",Oi.BROWSER=li([ot,st,it,rt]),Oi.CPU=li([ct]),Oi.DEVICE=li([nt,at,rt,ut,dt,pt,lt,wt,mt]),Oi.ENGINE=Oi.OS=li([ot,st]);const Di=()=>{const e=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(e)?"tablet":/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(e)?"mobile":"desktop"};e.pubstackAutoconfig=async function(e){if(void 0===e.endpoint.gateway)return void a("[pbstckAutoconfig] no gateway url found in config");const t={gateway:e.endpoint.gateway,env:(i=e.endpoint.gateway,i.includes(x.DEV)?x.DEV:i.includes(x.BETA)?x.BETA:x.PROD),sessionTrackingDisabled:e.sessionTrackingDisabled??!1};var i;try{const i=window.top||window;i.pbstck=i.pbstck||{lock:{}},i.pbstck.lock=i.pbstck.lock||{};const n=`${e.tagId}@${t.env}@user-sessions`;if(i.pbstck.lock[n])return;i.pbstck.lock[n]=!0}catch(e){a("[pbstckAutoconfig] error while locking the integration",e)}const n=new Oi(navigator.userAgent),o=n.getOS(),s=n.getBrowser(),u={tagId:e.tagId,scopeId:e.scopeId,country:e.country,device:Di(),browserName:s.name||"unknown",browserVersion:s.major||"unknown",osName:o.name||"unknown",osVersion:o.version||"unknown",pbstckVersion:"b6ed2f5",customFields:c()},d=new Promise((e=>{setTimeout((()=>{e()}),300)})),l=(async()=>{try{return await(navigator?.cookieDeprecationLabel?.getValue())}catch(e){r("Error while getting cookie depreciation label",e)}})();await Promise.all([l,d]).then((e=>{const t=e[0]??"";t&&(u.customFields.cdep=t)})),u.tagId&&u.scopeId?(w(p.REPLACE_STATE),w(p.PUSH_STATE),(e=>{j(window,e)})(t),Xe(t,u),H(t,u)):a("[pbstckAutoconfig] no tagId or scopeId found in context")}}(this.userSessions=this.userSessions||{});
;
 return this;}.bind({}); var _ = load();_.userSessions.pubstackAutoconfig({"endpoint":{"gateway":"https://intake.pbstck.com/v1/intake"},"scopeId":"62e13ed6-cbd3-4eec-bbe8-5a42a44cd1b3","tagId":"39a3fd4f-2a0d-4234-b957-b4adc961368e","sessionTrackingDisabled":true}); })()</script><script type="text/javascript">(function() { var load = function() {!function(e){"use strict";function t(e,t,i,s){return new(i||(i=Promise))((function(n,o){function r(e){try{d(s.next(e))}catch(e){o(e)}}function a(e){try{d(s.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}d((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const i=e=>void 0!==e,s=[0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,59],n=e=>{if(!e)throw new Error("IllegalArgumentException");const t={_value:[108,98,39,46,7,187,1,66,98,184,33,117,98,149,197,141],_scratch:new Array(16)};function i(){let e,i;for(i=0;i<16;i++)t._scratch[i]=0;for(i=0;i<16;i++)for(let n=0;n<16-i;n++)e=t._value[15-i]*s[15-n]+(t._scratch[15-(i+n)]||0),e>255&&(i+n+1<16&&(t._scratch[15-(i+n+1)]+=e>>>8),e-=e>>>8<<8),t._scratch[15-(i+n)]=e;const n=t._scratch;t._scratch=t._value,t._value=n}return function(e){let s;if("string"==typeof e){const t=e.replace(/\r\n/g,"\n"),i=[];let n=0;for(s=0;s<t.length;s++){const e=t.charCodeAt(s);e<128?i[n++]=e:e<2048?(i[n++]=e>>6|192,i[n++]=63&e|128):(i[n++]=e>>12|224,i[n++]=e>>6&63|128,i[n++]=63&e|128)}e=i}for(s=0;s<e.length;s++)t._value[15]^=e[s],i()}(e),t._value.reduce(((e,t)=>e+("00"+t.toString(16)).slice(-2)),"")},o=(e,...t)=>{if(0===t.length||""===t.join(""))throw new Error("Failed to create hash");return n(t.join("")).substr(0,e)},r=(...e)=>{try{return o(14,...e)}catch(e){throw new Error("Failed to create an auction Id")}},a=(...e)=>{try{return o(8,...e)}catch(e){throw new Error("Failed to create a bid Id")}},d=()=>n(`${Math.random().toString(36)}${(new Date).getTime()}`);class c{constructor(e){this.subscriptions=[],this.children=[],this.processingChain=e?[...e]:[]}subscribe(e,t){this.subscriptions.push({onEvent:e,onError:t})}unsubscribe(e,t){this.subscriptions=this.subscriptions.filter((i=>!(i.onEvent===e&&i.onError===t)))}pipe(...e){const t=new c([...this.processingChain,...e]);return this.children.push(t),t}next(e){this.subscriptions.forEach((t=>{try{const i=this.processingChain.reduce(((e,t)=>{if(void 0!==e)return t(e)}),e);void 0!==i&&t.onEvent(i)}catch(e){t.onError&&t.onError(e)}})),this.children.forEach((t=>t.next(e)))}}const u=e=>{return[(t=([t])=>e.test(t),e=>{if(t(e))return e}),([,[e,...t]])=>[e,t]];var t};class l extends Error{constructor(e){super(e)}}function b(e,t){if(!Array.isArray(e))throw new l(null!=t?t:"Expected value to be an array, but received "+typeof e)}function p(e){return"number"==typeof e&&!isNaN(e)}function h(e){return"string"==typeof e}function m(e,t){if(!p(e))throw new l(null!=t?t:"Expected value to be a number, but received "+typeof e)}function v(e,t){if(null!=e&&"string"!=typeof e)throw new l("Expected value to be a string, undefined or null, but received "+typeof e)}function f(e,t){if(null!=e&&!function(e){return"boolean"==typeof e}(e))throw new l("Expected value to be a boolean, but received "+typeof e)}function g(e,t){if("string"!=typeof e)throw new l(null!=t?t:"Expected value to be a string, but received "+typeof e)}function w(e,t){if(null==e)throw new l(null!=t?t:`Expected value to be defined, but received ${e}`)}function y(e,t){if(!Array.isArray(e)||0===e.filter((e=>void 0!==e)).length)throw new l(null!=t?t:"Expected array to be not empty")}const I=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function k(e,t){if(!I(e))throw new l(null!=t?t:`Expected value to be record, but received '${typeof e}'`)}const C=(e,t)=>I(e)&&t in e;const A=[],R=new c;function S(e,t){let i=0;A.push((s=>{i>=t||(i+=1,e(s))}))}function T(e){A.forEach((t=>t({error:e})))}function E(e){var t;T({context:null!==(t=e.context)&&void 0!==t?t:{},message:e.message})}var j,x;const U=/pbstck:debug/.test(window.location.href),N=!!(null===(j=window.localStorage)||void 0===j?void 0:j.getItem)&&null!==window.localStorage.getItem("pbstck"),O=`[pbstck-${null!==(x="01e89e8")?x:"unknown"}]`;function B(){return U||N}function V(...e){B()&&console.log(O,...e)}function q(...e){B()&&console.warn(O,...e)}function $(...e){B()&&console.error(O,...e)}const D=["39216077","6943","8456","1021524","1026508","1030155","2165149","2444258","4708965","5624990","7321515","7687385","17085479","22181265","27416722","46481815","49313688","91083230","127208727","22247219933","22815767462","22702991301","22665197336","22022010600","21866864457","21823883819","21794835430","21734370771","21722279357"],z=e=>{var t,i,s;if(!(null===(t=e.pubstack)||void 0===t?void 0:t.adUnitName)&&e.ortb2Imp)for(const t of D){if(e.ortb2Imp.ext.data.pbadslot.startsWith(`/${t}/`)){const t=e.ortb2Imp.ext.data.pbadslot.replace(/\/$/,"").split("/").pop();return t||e.code}if(e.ortb2Imp.ext.gpid){const t=e.ortb2Imp.ext.gpid.replace(/\/$/,"").split("/").pop();return t||e.code}}return null!==(s=null===(i=e.pubstack)||void 0===i?void 0:i.adUnitName)&&void 0!==s?s:e.code},F=e=>{var t;if(null===(t=e.pubstack)||void 0===t?void 0:t.adUnitPath)return L(e.pubstack.adUnitPath);if(e.ortb2Imp){if(e.ortb2Imp.ext.data.pbadslot)return L(e.ortb2Imp.ext.data.pbadslot);if(e.ortb2Imp.ext.gpid)return L(e.ortb2Imp.ext.gpid)}},_=e=>{const t=[];return e.forEach((e=>{X(e).bids.forEach((e=>{t.some((t=>t.bidder===e.bidder))||t.push(e)}))})),t},M=e=>{const t={};return e.forEach((e=>{const i=X(e);void 0!==i.mediaTypes.native&&(t.native=i.mediaTypes.native),void 0!==i.mediaTypes.video&&i.mediaTypes.video.playerSize&&(t.video?t.video.playerSize=[...t.video.playerSize,...i.mediaTypes.video.playerSize]:t.video=i.mediaTypes.video),void 0!==i.mediaTypes.banner&&(t.banner?(t.banner.sizes=[...t.banner.sizes,...i.mediaTypes.banner.sizes],i.mediaTypes.banner.sizeConfig&&(t.banner.sizeConfig=i.mediaTypes.banner.sizeConfig)):t.banner=i.mediaTypes.banner)})),t},P=e=>{var t,i,s;const n=e=>"string"==typeof e?e:Array.isArray(e)&&2===e.length?`${e[0]}x${e[1]}`:"unknown",o=new Set;return(e=>{var t,i;return(void 0===(null===(t=e.mediaTypes.banner)||void 0===t?void 0:t.sizes)||0===(null===(i=e.mediaTypes.banner)||void 0===i?void 0:i.sizes.length))&&void 0===e.mediaTypes.native&&void 0===e.mediaTypes.video})(e)?[]:((null===(t=e.mediaTypes.banner)||void 0===t?void 0:t.sizes)&&(Array.isArray(e.mediaTypes.banner.sizes[0])?e.mediaTypes.banner.sizes.forEach((e=>o.add(n(e)))):o.add(n(e.mediaTypes.banner.sizes))),(null===(i=e.mediaTypes.video)||void 0===i?void 0:i.playerSize)&&(null===(s=e.mediaTypes.video)||void 0===s||s.playerSize.forEach((e=>o.add((e=>{const t=n(e);return"unknown"===t?"video":`video-${t}`})(e))))),e.mediaTypes.native&&o.add("native"),Array.from(o))},L=e=>e.startsWith("/")?e:`/${e}`,W=e=>{var t,i;const s=/^(adUnitPath)/;return(null!==(i=null===(t=e.pubstack)||void 0===t?void 0:t.tags)&&void 0!==i?i:[]).filter((e=>"string"==typeof e)).filter((e=>e.length>0&&e.length<256||s.test(e)))},G=e=>{const t=(e=>e.placementId||e.zoneId||e.siteId||void 0)(e);if(t)return`slot:${t}`},H=e=>{const t={hasUserId:"notAvailable",userIdProviderList:[]};if(0===e.length)return t;let i=!0;const s=e[0].bids[0];return e.forEach((e=>{e.bids.forEach((e=>{const n=Object.entries(e.userId||{}).flatMap((([e,t])=>{if(Array.isArray(t)){const i=t.filter((e=>Object.prototype.hasOwnProperty.call(e,"source"))).map((t=>`${e}:${t.source}`));return i.length?i:e}return e}));if(t.userIdProviderList=t.userIdProviderList.concat(n),t.userIdProviderList=t.userIdProviderList.concat(Object.keys(e.crumbs||{})),i=i&&typeof s.crumbs==typeof e.crumbs,s.crumbs&&e.crumbs){const t=Object.keys(s.crumbs),n=Object.keys(e.crumbs);i=i&&t.length===n.length&&t.every((e=>n.includes(e)))}if(i=i&&typeof s.userId==typeof e.userId,s.userId&&e.userId){const t=Object.keys(s.userId),n=Object.keys(e.userId);i=i&&t.length===n.length&&t.every((e=>n.includes(e)))}}))})),t.userIdProviderList.length>0&&i?t.hasUserId="available":t.userIdProviderList.length>0&&!i&&(t.hasUserId="notConsistent"),t.userIdProviderList=Array.from(new Set(t.userIdProviderList)),t},J=e=>{let t=e.map((e=>e.gdprConsent)).filter((e=>void 0!==e));return e.length!==t.length&&(t=[]),t},Q=e=>{const t={userConsentState:"notAvailable",userConsentVersion:"notAvailable"};try{if(0===e.length)return t;const i=e.every(((e,t,i)=>e.apiVersion===i[0].apiVersion)),s=e.every(((e,t,i)=>e.consentString===i[0].consentString));if(!i||!s)throw new Error("API version and Consent string must be unique within a bid request array");return(e=>{const t={userConsentState:"notAvailable",userConsentVersion:"notAvailable"};if(void 0===e)return t;let i=!1,s=!1;if(e.apiVersion&&1!==e.apiVersion){if(2!==e.apiVersion)throw e.apiVersion>2?new Error(`API version is not yet supported: ${e.apiVersion}`):new Error(`An issue occured while identifying TCF version: ${e.apiVersion}`);if(t.userConsentVersion="tcf-v2","boolean"==typeof e.gdprApplies&&!e.gdprApplies)return Object.assign(Object.assign({},t),{userConsentState:"notApplicable"});if((e=>{const t=e;return!!(t&&t.purpose&&t.purpose.consents&&t.vendor&&t.vendor.consents)})(e.vendorData)){const n=Object.values(e.vendorData.purpose.consents),o=Object.values(e.vendorData.vendor.consents);if(i=n.filter((e=>e)).length>0,s=o.filter((e=>e)).length>0,0===n.length||0===o.length)return Object.assign(Object.assign({},t),{userConsentState:"notAvailable"})}}else{if(t.userConsentVersion="tcf-v1","boolean"==typeof e.gdprApplies&&!e.gdprApplies)return Object.assign(Object.assign({},t),{userConsentState:"notApplicable"});if((e=>{const t=e;return!(!t||!t.purposeConsents||!t.vendorConsents)})(e.vendorData)){const n=Object.values(e.vendorData.purposeConsents),o=Object.values(e.vendorData.vendorConsents);if(i=n.filter((e=>e)).length>0,s=o.filter((e=>e)).length>0,0===n.length||0===o.length)return Object.assign(Object.assign({},t),{userConsentState:"notAvailable"})}}return t.userConsentState=i&&s?"accepted":"refused",t})(e[0])}catch(e){return e.context=e.context||{},e.context.pbjs={source:"pbjs:helpers"},E(e),t}},X=e=>JSON.parse(JSON.stringify(e));var K,Y;!function(e){e[e.LOADED=0]="LOADED",e[e.FAILED=1]="FAILED",e[e.NOT_READY=2]="NOT_READY"}(K||(K={})),function(e){e.RUNNING="running",e.NO_BID="noBid",e.BID="bidResponse",e.TIMEOUT="bidTimeout"}(Y||(Y={}));const Z=e=>e.state===Y.BID,ee=e=>Z(e)?e.bidResponseId:e.bidId;var te,ie;!function(e){e[e.ON_DONE=0]="ON_DONE",e[e.ON_SMART_MERGED=1]="ON_SMART_MERGED",e[e.NEVER=2]="NEVER"}(te||(te={})),function(e){e[e.PBJS=0]="PBJS",e[e.SMART_RTB=1]="SMART_RTB",e[e.AMAZON=2]="AMAZON",e[e.GAM=3]="GAM"}(ie||(ie={}));const se=400,ne="unknown",oe=new Map;class re{constructor(e,t=!1){this.onBidResponseStream=new c,this.onAuctionEndStream=new c,this.onBidWonStream=new c,this.onBidWonFromSdkStream=new c,e&&(this.pbjsConfig=e),this.admOnboarding=t}getAdServerCurrency(){var e;return null===(e=this.pbjsConfig)||void 0===e?void 0:e.adServerCurrency}onBidResponse(e){const t=r(e.adUnitCode,e.auctionId),i=a(e.requestId),s=a(i,e.adId);oe.set(e.adId,i),this.onBidResponseStream.next({adId:e.adId,auctionId:t,dealId:e.dealId||void 0,bidId:i,bidResponseId:s,cpm:e.cpm,currency:e.currency,size:e.size,mediaType:e.mediaType,tags:[],bidderCode:e.bidderCode,customFields:{},timeToRespond:e.timeToRespond,adapterCode:e.adapterCode,advertiserDomains:e.advertiserDomains})}onAuctionEnd(e,t="prebid"){var s,n;const o=(null===(n=window[(null===(s=this.pbjsConfig)||void 0===s?void 0:s.pbjsVariableName)||"pbjs"])||void 0===n?void 0:n.aliasRegistry)||{};!function(e,t){const i=[];if(e.forEach((e=>{try{t(e)}catch(e){i.push(e)}})),0!==i.length){const e=`forEach: Unexpected (${i.length}) errors\n${i.reduce(((e,t)=>`${e}\t- ${t.message}\n`),"")}`;throw new Error(e)}}(e.adUnits.filter((t=>void 0===e.adUnitCodes||e.adUnitCodes.includes(t.code))).reduce(((e,t)=>(e.find((e=>t.code===e.code))||e.push(t),e)),[]),(s=>{var n,c,u,l;const p=function(e,t){const i=e.adUnits.filter((e=>e.code===t)),s={code:t,bids:_(i),mediaTypes:M(i)},n=(e=>{let t;return e.forEach((e=>{const i=X(e);i.pubstack&&0!=Object.keys(i.pubstack).length?t=i.pubstack:JSON.stringify(i.pubstack)!==JSON.stringify(t)&&q(`Two different pubstack declaration found for a adUnitCode ${i.code}`,i.pubstack,t)})),t})(i);n&&(s.pubstack=n);const o=(e=>{let t;return e.forEach((e=>{const i=X(e);i.ortb2Imp?t=i.ortb2Imp:JSON.stringify(i.ortb2Imp)!==JSON.stringify(t)&&q(`Two different ortb2imp declaration found for a adUnitCode ${i.code}`,i.ortb2Imp,t)})),t})(i);o&&(s.ortb2Imp=o);return s}(e,s.code),h=(e=>({code:e.code,name:z(e),path:F(e)}))(p),m=r(p.code,e.auctionId),v=e.labels||[],f=(b(g=e.bidderRequests),g.length>0&&g.every((e=>w(e.bidderRequestId))),g);var g;const y=e.bidderRequests.flatMap((t=>{var n;const c=r(s.code,e.auctionId),u=t.gdprConsent,l=t.bidderCode,b=null===(n=e.seatNonBids)||void 0===n?void 0:n.find((e=>e.seat===t.bidderCode)),p=null==b?void 0:b.nonbid.find((e=>e.impid===s.code)),h=t.bids.filter((e=>e.adUnitCode===s.code)).map((t=>{const s=a(t.bidId),n=e.bidsReceived.find((e=>e.requestId===t.bidId)),r=e.noBids.find((e=>e.bidId===t.bidId)),d=e.bidsRejected.find((e=>e.requestId===t.bidId));let b={state:Y.TIMEOUT};if(n){const e=a(s,n.adId);b={adId:n.adId,bidResponseId:e,cpm:n.cpm,currency:n.currency,size:n.size,mediaType:n.mediaType,bidNetRevenue:n.netRevenue,state:Y.BID,timeToRespond:n.timeToRespond,dealId:n.dealId||void 0,advertiserDomains:n.advertiserDomains}}else r?b={state:Y.NO_BID}:d&&(b={state:Y.NO_BID,rejectionReason:d.rejectionReason});const p={};return this.admOnboarding&&(p.bidderParams=JSON.stringify(t.params)),Object.assign({auctionId:c,bidId:s,gdprConsent:u,bidderCode:l,adapterCode:o[l],source:t.src,tags:[G(t.params)].filter(i),customFields:p},b)}));return p&&h.push({bidId:a(d()),auctionId:c,gdprConsent:u,bidderCode:l,adapterCode:o[l],source:"s2s",tags:[],customFields:{source:"s2s"},state:101===p.statuscode?Y.TIMEOUT:Y.NO_BID}),h})),I={source:t};if(this.admOnboarding){const e=window[this.pbjsConfig.pbjsVariableName],t=e.installedModules,{userSync:i,fledgeForGpt:n,floors:o,paapi:r,schain:a,realTimeData:d}=e.getConfig();I.config_installedModules=JSON.stringify(t),I.config_userSync=JSON.stringify(i),I.config_fledgeForGpt=JSON.stringify(n),I.config_floors=JSON.stringify(o),I.config_paapi=JSON.stringify(r),I.config_schain=JSON.stringify(a),I.config_realTimeData=JSON.stringify(d),I.adunitcode=s.code}const k={auctionId:m,adUnit:h,refreshIndex:0,sizes:P(p),userId:H(f),pbjsVersion:null!==(c=null===(n=this.pbjsConfig)||void 0===n?void 0:n.version)&&void 0!==c?c:ne,tags:[...W(p)],labels:v,gracePeriod:null!==(l=null===(u=this.pbjsConfig)||void 0===u?void 0:u.gracePeriod)&&void 0!==l?l:se,duration:e.auctionEnd-e.timestamp,bidRequests:y,timeout:e.timeout,customFields:I};this.onAuctionEndStream.next(k)}))}onBidWon(e){var t;const i=(null===(t=window[this.pbjsConfig.pbjsVariableName])||void 0===t?void 0:t.aliasRegistry)||{},s=Object.assign(Object.assign({},e),{pbstckAdapterCode:i[e.bidderCode],bidNetRevenue:e.netRevenue,dealId:e.dealId||void 0,auctionId:r(e.adUnitCode,e.auctionId),tags:[],customFields:{source:"prebid"}});this.onBidWonStream.next(s)}onBidWonFromSdk(e){const t=Object.assign(Object.assign({},e),{customFields:{source:"sdk"}});this.onBidWonFromSdkStream.next(t)}}const ae=(e,t,i)=>{const s=e;s[i]=s[i]||[];const n=s[i];e.pbstck=e.pbstck||{},e.pbstck.sdk=e.pbstck.sdk||{},e.pbstck.sdk[t]=e.pbstck.sdk[t]||{p:[],q:n},e.pbstck.sdk[t].p=e.pbstck.sdk[t].p||[],e.pbstck.sdk[t].q=e.pbstck.sdk[t].q||n,e.pbstck.sdk[t].q!==n&&(e.pbstck.sdk[t].q=e.pbstck.sdk[t].q.concat(n));const o={cmd:(...i)=>{const s=["cmd",i];(e.pbstck.sdk[t].q||[]).push(s),(e.pbstck.sdk[t].p||[]).forEach((e=>e(s)))}};return e.Pubstack=o,o},de=e=>{const t=[];return JSON.parse(JSON.stringify(e,((e,i)=>{if("object"==typeof i&&null!==i){if(t.includes(i))return;t.push(i)}return i})))},ce={AUCTION_INIT:"auctionInit",AUCTION_END:"auctionEnd",BID_TIMEOUT:"bidTimeout",BID_REQUESTED:"bidRequested",BID_RESPONSE:"bidResponse",BID_WON:"bidWon",NO_BID:"noBid"},ue=new c;function le(e,t,i="prebid"){return{on(s,n){V(`[pbjsIntegration] pbjs.dispatcher (${i}) ${s}`,n),"sdk"===i&&function(e){const t=window.pbstck.scopeId,i=window.pbstck.tagId,s=Object.assign(Object.assign({},e),{source:"collector",type:"log",tagId:i,scopeId:t});ue.next(s)}({id:"sdk-usage",level:"info",message:"sdk usage",eventName:s}),s===ce.AUCTION_END&&t.onAuctionEnd(e.toAuctionEnd(n),i),s===ce.BID_RESPONSE&&t.onBidResponse(e.toBidResponse(n)),s===ce.BID_WON&&"prebid"===i&&t.onBidWon(e.toBidWon(n)),s===ce.BID_WON&&"sdk"===i&&t.onBidWonFromSdk(e.toBidWonFromSdk(n))}}}function be(e){let t;if(void 0!==e)if(p(e))t=e;else if(h(e)){const i=Number(e);isNaN(i)||(t=i)}return void 0!==t?Math.trunc(t):t}function pe(e){try{return b(t=e,i),t.every((e=>g(e))),e}catch(e){return}var t,i}function he(e){try{return k(e),e}catch(e){return{}}}function me(e){try{return v(e),e}catch(e){return void V("Error on validator but not throwing since not mandatory",e.message)}}function ve(){const e=e=>{var t,i;k(e,"Auction event's adUnits should all be objects"),g(e.code,'Auction event\'s adUnits should all have a key "code" as a string'),b(e.bids,'Auction event\'s adUnits should all have a key "bids" as an array');const s=e.bids.map((t=>{try{return(e=>{var t;k(e,"Auction event's adUnits bidders should all be objects"),g(e.bidder,'Auction event\'s adUnits bidders should all have a key "bidder" as a string');const i=null!==(t=e.params)&&void 0!==t?t:{};return k(i,'Auction event\'s adUnits bidders should all have a key "params" as an object'),{bidder:e.bidder,params:i}})(t)}catch(t){return void q(`[pbjsIntegration] Discarding bidder from ${e.code}`,t)}})).filter((e=>void 0!==e)),n={};if(e.mediaTypes){if(k(e.mediaTypes,'Auction event\'s adUnits should all have a key "mediaTypes" as an object'),e.mediaTypes.banner){k(e.mediaTypes.banner,'Auction event\'s adUnits mediaTypes can all have a key "banner" that should be an object');const i=null!==(t=e.mediaTypes.banner.sizes)&&void 0!==t?t:[];b(i,'Auction event\'s adUnits mediaTypes banner should all have a key "sizes" that should be an array');const s=i.filter((e=>Array.isArray(e)&&2===e.length)).map((e=>{try{return b(e),[parseInt(e[0]),parseInt(e[1])]}catch(e){return[0,0]}}));n.banner={sizes:s,sizeConfig:e.mediaTypes.banner.sizeConfig}}if(e.mediaTypes.native&&(n.native={sizes:"native"}),e.mediaTypes.video&&(k(e.mediaTypes.video,'Auction event\'s adUnits mediaTypes can all have a key "video" that should be an object'),e.mediaTypes.video.playerSize)){b(e.mediaTypes.video.playerSize,'Auction event\'s adUnits mediaTypes video should all have a key "playerSize" that should be an array');const t=(null!==(i=e.mediaTypes.video.playerSize)&&void 0!==i?i:[]).filter((e=>Array.isArray(e)&&2===e.length));n.video={playerSize:t}}}const o={bids:s,code:e.code,mediaTypes:n},r=e.pubstack;void 0!==r&&(k(r),o.pubstack=r);const a=(e=>{if(!C(e,"ortb2Imp"))return;const t=e.ortb2Imp;if(!C(t,"ext"))return;const i=t.ext;if(!C(i,"data"))return;const s=i.data;return C(s,"pbadslot")&&h(s.pbadslot)?{ext:{data:{pbadslot:s.pbadslot}}}:void 0})(e);return a&&(o.ortb2Imp=a),o},t=e=>{k(e,"Auction event's bidderRequests should all be objects"),g(e.bidderRequestId,'Auction event\'s bidderRequests should all have a key "bidderRequestId" as a string'),g(e.bidderCode,'Auction event\'s bidderRequests should all have a key "bidderCode" as a string'),b(e.bids,'Auction event\'s bidderRequests should all have a key "bids" as an array');const t=e.bids.map((t=>{try{return i(t,"Auction event's bidderRequests")}catch(t){return void q(`[pbjsIntegration] Discarding bid request from ${e.bidderRequestId}`,t)}})).filter((e=>void 0!==e)),s={bidderRequestId:e.bidderRequestId,bids:t,bidderCode:e.bidderCode};return e.gdprConsent&&(s.gdprConsent=e.gdprConsent),s},i=(e,t)=>{var i,s,n;k(e,t+"'s bids should all be objects"),g(e.adUnitCode,t+' bids should all have a key "adUnitCode" as a string'),g(e.bidId,t+' bids should all have a key "bidId" as a string'),g(e.bidder,t+' bids should all have a key "bidder" as a string');const o=null!==(i=e.params)&&void 0!==i?i:{};k(o,t+' bids can all have a key "params" that should be an object');const r=null!==(s=e.userId)&&void 0!==s?s:{};k(r,t+' bids can all have a key "userId" that should be an object');const a=null!==(n=e.crumbs)&&void 0!==n?n:{};return k(a,t+' bids can all have a key "crumbs" that should be an object'),v(e.src),{adUnitCode:e.adUnitCode,bidId:e.bidId,bidder:e.bidder,params:o,userId:r,crumbs:a,src:e.src}};return{toBidRejected:e=>(k(e,"BidRejected event should be an object"),g(e.requestId,'BidRequested event should have a "requestId" key as a string'),g(e.rejectionReason,'BidRejected event should have a "rejectionReason" key as a string'),{requestId:e.requestId,rejectionReason:e.rejectionReason}),toSeatNonBid:function(e){return k(e,"SeatNonBid event should be an object"),g(e.seat,'SeatNonBid event should have a "seat" key as a string'),b(e.nonbid,'SeatNonBid event should have a "seat" key as a string'),e.nonbid.map((t=>{try{return k(t,"Nonbid should be an object"),g(t.impid,'Nonbid should have a "impid" key as a string'),m(t.statuscode,'Nonbid should have a "statuscode" key as a number'),{impid:t.impid,statuscode:t.statuscode}}catch(t){return void q(`[pbjsIntegration] Discarding Nonbid from auction event ${e.auctionId}`,t)}})).filter((e=>void 0!==e)),{seat:e.seat,nonbid:e.nonbid}},toAuctionEnd:function(i){let s,n,o=[];k(i,"Auction event should be an object"),g(i.auctionId,'Auction event should have a "auctionId" key as a string'),b(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),y(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),void 0!==i.labels&&(b(i.labels,'Auction event can have a "labels" key that should be an array'),n=i.labels),b(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array'),y(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array');const r=be(i.timeout);i.timeout&&!r&&q(`[pbjsIntegration] unable to read timeout from auction event ${i.auctionId}`);const a=i.adUnits.map((t=>{try{return e(t)}catch(e){return void q(`[pbjsIntegration] Discarding adUnit from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e)),d=i.bidderRequests.map((e=>{try{return t(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidderRequest from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));b(i.bidsReceived,'Auction event should have a "bidsReceived" key as a non-empty array');const c=i.bidsReceived.map((e=>{try{return this.toBidResponse(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidReceived from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));b(i.adUnitCodes,'Auction event should have a "adUnitCodes" key as a non-empty array'),y(i.adUnitCodes,'Auction event should have a "adUnitCodes" key as a non-empty array');try{b(i.bidsRejected,'Auction event should have a "bidsRejected" key as an array'),o=i.bidsRejected.map((e=>{try{return this.toBidRejected(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidRejected from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e))}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}b(i.noBids,'Auction event should have a "noBids" key as an array');const u=i.noBids.map((e=>{try{return this.toNoBid(e)}catch(e){return void q(`[pbjsIntegration] Discarding noBid from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));try{b(i.seatNonBids,'Auction event should have a "noBids" key as an array'),s=i.seatNonBids.map((e=>{try{return this.toSeatNonBid(e)}catch(e){return void q(`[pbjsIntegration] Discarding SeatNonBids from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e))}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}return function(e,t,i){if(!t.includes(e))throw new l(`Expected values to be one of '${t}', but received ${e}`)}(i.auctionStatus,["completed","inProgress","started"]),m(i.auctionEnd),m(i.timestamp),{auctionId:i.auctionId,bidderRequests:d,adUnits:a,labels:n,timeout:r,auctionEnd:i.auctionEnd,auctionStatus:i.auctionStatus,noBids:u,adUnitCodes:i.adUnitCodes,bidsRejected:o,bidsReceived:c,timestamp:i.timestamp,winningBids:[],seatNonBids:s}},toAuction:function(i){let s;k(i,"Auction event should be an object"),g(i.auctionId,'Auction event should have a "auctionId" key as a string'),b(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),y(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),void 0!==i.labels&&(b(i.labels,'Auction event can have a "labels" key that should be an array'),s=i.labels),b(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array'),y(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array');const n=be(i.timeout);i.timeout&&!n&&q(`[pbjsIntegration] unable to read timeout from auction event ${i.auctionId}`);const o=i.adUnits.map((t=>{try{return e(t)}catch(e){return void q(`[pbjsIntegration] Discarding adUnit from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e)),r=i.bidderRequests.map((e=>{try{return t(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidderRequest from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));return{auctionId:i.auctionId,bidderRequests:r,adUnits:o,labels:s,timeout:n}},toBidRequested(e){k(e,"BidRequested event should be an object"),g(e.auctionId,'BidRequested event should have a "auctionId" key as a string'),b(e.bids,'BidRequested event should have a "bids" key as an array');const t=e.bids.map((t=>{try{return i(t,"BidRequested event")}catch(t){return void q(`[pbjsIntegration] Discarding bid request from bid requested event ${e.auctionId}`,t)}})).filter((e=>void 0!==e)),s={auctionId:e.auctionId,bids:t};return e.gdprConsent&&(s.gdprConsent=e.gdprConsent),s},toBidResponse(e){var t;k(e,"BidResponse event should be an object"),g(e.auctionId,'BidRequested event should have a "auctionId" key as a string'),g(e.adUnitCode,'BidRequested event should have a "adUnitCode" key as a string'),g(e.adId,'BidRequested event should have a "adId" key as a string'),g(e.requestId,'BidRequested event should have a "requestId" key as a string');const i=h(e.cpm)?Number.parseFloat(e.cpm):e.cpm;let s;const n=me(e.dealId);m(i,'BidRequested event should have a "cpm" key as a number');let o,r=e.size;"string"!=typeof r&&(r=e.width&&e.height?`${e.width}x${e.height}`:"unknown"),g(e.mediaType,'BidRequested event should have a "mediaType" key as a string'),g(r,'BidRequested event should have a "size" key as a string'),h(e.currency)&&(o=e.currency),g(e.bidderCode,'BidResponse event should have a "bidderCode" key as a string'),function(e,t){if(null!=e&&!p(e))throw new l("Expected value to be a number, but received "+typeof e)}(e.timeToRespond),f(e.netRevenue);const a=pe(he(e.meta).advertiserDomains);try{g(e.adapterCode,'BidWon event should have a "bidderCode" key as a string'),s=e.adapterCode}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}return{adId:e.adId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,cpm:i,currency:o,requestId:e.requestId,size:r,bidderCode:e.bidderCode,mediaType:null!==(t=e.mediaType)&&void 0!==t?t:"banner",timeToRespond:e.timeToRespond,adapterCode:s,netRevenue:e.netRevenue,dealId:n,advertiserDomains:a}},toBidTimeout(e){b(e,"BidTimeout event should be an array");const t=[];return e.forEach((e=>{try{k(e,"BidTimeout events should all be objects"),g(e.adUnitCode,'BidTimeout events should all have a key "adUnitCode" as a string'),g(e.auctionId,'BidTimeout events should all have a key "auctionId" as a string'),g(e.bidId,'BidTimeout events should all have a key "bidId" as a string'),t.push({adUnitCode:e.adUnitCode,auctionId:e.auctionId,bidId:e.bidId})}catch(t){V("Discarding bid timeout event because ",t.message,e)}})),t},toNoBid:e=>(k(e,"NoBid event should be an object"),g(e.auctionId,'NoBid event should have a "auctionId" key as a string'),g(e.bidId,'NoBid event should have a "bidId" key as a string'),g(e.adUnitCode,'NoBid event should have a "adUnitCode" key as a string'),{bidId:e.bidId,adUnitCode:e.adUnitCode,auctionId:e.auctionId}),toBidWon(e){var t;let i,s,n,o,r,a;k(e,"BidWon event should be an object"),g(e.adId,'BidWon event should have a "adId" key as a string'),g(e.requestId,'BidWon event should have a "requestId" key as a string');const d=me(e.dealId);h(e.currency)&&(a=e.currency);const c=h(e.cpm)?Number.parseFloat(e.cpm):e.cpm;m(c,'BidRequested event should have a "cpm" key as a number'),g(e.mediaType,'BidRequested event should have a "mediaType" key as a string'),g(e.size,'BidWon event should have a "size" key as a string'),r=e.size,g(e.auctionId,'BidWon event should have a "auctionId" key as a string'),i=e.auctionId,g(e.adUnitCode,'BidWon event should have a "adUnitCode" key as a string'),s=e.adUnitCode;try{g(e.bidderCode,'BidWon event should have a "bidderCode" key as a string'),n=e.bidderCode}catch(e){V("Error on validator but not throwing since not mandatory for monitoring (only for refresh)",e.message)}try{g(e.adapterCode,'BidWon event should have a "bidderCode" key as a string'),o=e.adapterCode}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}f(e.netRevenue),v(e.source);const u=pe(he(e.meta).advertiserDomains);return{adId:e.adId,adUnitCode:s,auctionId:i,bidderCode:n,adapterCode:o,size:r,requestId:e.requestId,currency:a,cpm:c,mediaType:null!==(t=e.mediaType)&&void 0!==t?t:"banner",dealId:d,netRevenue:e.netRevenue,source:e.source,advertiserDomains:u}},toBidWonFromSdk:e=>(k(e,"BidWon event should be an object"),g(e.adId,'BidWon event should have a "adId" key as a string'),{adId:e.adId})}}const fe=(e,t)=>{const i=ve(),s=new re(void 0),n=le(i,s,"sdk");t.bindIntegration(s),e.subscribe((([e,[t]])=>{try{n.on(e,t)}catch(e){e.context=e.context||{},e.context.pbjs={source:"sdk:pbjs"},E(e)}}))};function ge(e,t,i){const s=new c,n=[];ae(e,i.tagId,i.globalQueue);const o=e[i.globalQueue],r=t=>{!function(e,t){if(void 0!==e)throw new l(null!=t?t:`Expected value to be undefined, but received ${e}`)}(Object.values(e.pbstck.sdk).find((t=>t!==e.pbstck.sdk[i.tagId]&&t.q===o)),`Concurrency on '${i.globalQueue}' globalQueue (more than 1 destination configured)`),s.next([t[0],de(Object.values(t[1]))])};return s.subscribe(((...e)=>n.push(e))),fe(s.pipe(...u(/cmd/)).pipe(...u(/pbjs|prebid/)),t),{debug:()=>({events:n}),dispatchEvents:()=>{e.pbstck.sdk[i.tagId].q.forEach(r),e.pbstck.sdk[i.tagId].p.push(r)}}}const we=(e,t)=>{if(!e||!t)throw new Error("IllegalArgumentException");return`${e}_${t}`};var ye,Ie="",ke="function",Ce="undefined",Ae="object",Re="string",Se="major",Te="model",Ee="name",je="type",xe="vendor",Ue="version",Ne="architecture",Oe="console",Be="mobile",Ve="tablet",qe="smarttv",$e="wearable",De="xr",ze="embedded",Fe="user-agent",_e=500,Me="brands",Pe="formFactors",Le="fullVersionList",We="platform",Ge="platformVersion",He="bitness",Je="sec-ch-ua",Qe=Je+"-full-version-list",Xe=Je+"-arch",Ke=Je+"-"+He,Ye=Je+"-form-factors",Ze=Je+"-"+Be,et=Je+"-"+Te,tt=Je+"-"+We,it=tt+"-version",st=[Me,Le,Be,Te,We,Ge,Ne,Pe,He],nt="browser",ot="cpu",rt="device",at="engine",dt="os",ct="result",ut="Amazon",lt="Apple",bt="ASUS",pt="BlackBerry",ht="Google",mt="Huawei",vt="Lenovo",ft="LG",gt="Microsoft",wt="Motorola",yt="Samsung",It="Sharp",kt="Sony",Ct="Xiaomi",At="Zebra",Rt="Mobile ",St=" Browser",Tt="Chrome",Et="Chromecast",jt="Firefox",xt="Opera",Ut="Facebook",Nt="Sogou",Ot="Windows",Bt=typeof window!==Ce&&window.navigator?window.navigator:void 0,Vt=Bt&&Bt.userAgentData?Bt.userAgentData:void 0,qt=function(e,t){var i={},s=t;if(!zt(t))for(var n in s={},t)for(var o in t[n])s[o]=t[n][o].concat(s[o]?s[o]:[]);for(var r in e)i[r]=s[r]&&s[r].length%2==0?s[r].concat(e[r]):e[r];return i},$t=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},Dt=function(e,t){if(typeof e===Ae&&e.length>0){for(var i in e)if(Mt(e[i])==Mt(t))return!0;return!1}return!!Ft(e)&&-1!==Mt(t).indexOf(Mt(e))},zt=function(e,t){for(var i in e)return/^(browser|cpu|device|engine|os)$/.test(i)||!!t&&zt(e[i])},Ft=function(e){return typeof e===Re},_t=function(e){if(e){for(var t=[],i=Wt(/\\?\"/g,e).split(","),s=0;s<i.length;s++)if(i[s].indexOf(";")>-1){var n=Ht(i[s]).split(";v=");t[s]={brand:n[0],version:n[1]}}else t[s]=Ht(i[s]);return t}},Mt=function(e){return Ft(e)?e.toLowerCase():e},Pt=function(e){return Ft(e)?Wt(/[^\d\.]/g,e).split(".")[0]:void 0},Lt=function(e){for(var t in e){var i=e[t];typeof i==Ae&&2==i.length?this[i[0]]=i[1]:this[i]=void 0}return this},Wt=function(e,t){return Ft(t)?t.replace(e,Ie):t},Gt=function(e){return Wt(/\\?\"/g,e)},Ht=function(e,t){if(Ft(e))return e=Wt(/^\s\s*/,e),typeof t===Ce?e:e.substring(0,_e)},Jt=function(e,t){if(e&&t)for(var i,s,n,o,r,a,d=0;d<t.length&&!r;){var c=t[d],u=t[d+1];for(i=s=0;i<c.length&&!r&&c[i];)if(r=c[i++].exec(e))for(n=0;n<u.length;n++)a=r[++s],typeof(o=u[n])===Ae&&o.length>0?2===o.length?typeof o[1]==ke?this[o[0]]=o[1].call(this,a):this[o[0]]=o[1]:3===o.length?typeof o[1]!==ke||o[1].exec&&o[1].test?this[o[0]]=a?a.replace(o[1],o[2]):void 0:this[o[0]]=a?o[1].call(this,a,o[2]):void 0:4===o.length&&(this[o[0]]=a?o[3].call(this,a.replace(o[1],o[2])):void 0):this[o]=a||void 0;d+=2}},Qt=function(e,t){for(var i in t)if(typeof t[i]===Ae&&t[i].length>0){for(var s=0;s<t[i].length;s++)if(Dt(t[i][s],e))return"?"===i?void 0:i}else if(Dt(t[i],e))return"?"===i?void 0:i;return t.hasOwnProperty("*")?t["*"]:e},Xt={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Kt={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Yt={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[Ue,[Ee,Rt+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[Ue,[Ee,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[Ee,Ue],[/opios[\/ ]+([\w\.]+)/i],[Ue,[Ee,xt+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[Ue,[Ee,xt+" GX"]],[/\bopr\/([\w\.]+)/i],[Ue,[Ee,xt]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[Ue,[Ee,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[Ee,Ue],[/quark(?:pc)?\/([-\w\.]+)/i],[Ue,[Ee,"Quark"]],[/\bddg\/([\w\.]+)/i],[Ue,[Ee,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[Ue,[Ee,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[Ue,[Ee,"WeChat"]],[/konqueror\/([\w\.]+)/i],[Ue,[Ee,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[Ue,[Ee,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[Ue,[Ee,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[Ue,[Ee,"Smart "+vt+St]],[/(avast|avg)\/([\w\.]+)/i],[[Ee,/(.+)/,"$1 Secure"+St],Ue],[/\bfocus\/([\w\.]+)/i],[Ue,[Ee,jt+" Focus"]],[/\bopt\/([\w\.]+)/i],[Ue,[Ee,xt+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[Ue,[Ee,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[Ue,[Ee,"Dolphin"]],[/coast\/([\w\.]+)/i],[Ue,[Ee,xt+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[Ue,[Ee,"MIUI"+St]],[/fxios\/([\w\.-]+)/i],[Ue,[Ee,Rt+jt]],[/\bqihu|(qi?ho?o?|360)browser/i],[[Ee,"360"+St]],[/\b(qq)\/([\w\.]+)/i],[[Ee,/(.+)/,"$1Browser"],Ue],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[Ee,/(.+)/,"$1"+St],Ue],[/samsungbrowser\/([\w\.]+)/i],[Ue,[Ee,yt+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[Ee,/_/g," "],Ue],[/metasr[\/ ]?([\d\.]+)/i],[Ue,[Ee,Nt+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[Ee,Nt+" Mobile"],Ue],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[Ee,Ue],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[Ee],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[Ee,Ut],Ue],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[Ee,Ue],[/\bgsa\/([\w\.]+) .*safari\//i],[Ue,[Ee,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[Ue,[Ee,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[Ue,[Ee,Tt+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[Ee,Tt+" WebView"],Ue],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[Ue,[Ee,"Android"+St]],[/chrome\/([\w\.]+) mobile/i],[Ue,[Ee,Rt+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[Ee,Ue],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[Ue,[Ee,Rt+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[Ee,Rt+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[Ue,Ee],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[Ee,[Ue,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[Ee,Ue],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[Ee,Rt+jt],Ue],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[Ee,"Netscape"],Ue],[/(wolvic)\/([\w\.]+)/i],[Ee,Ue],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[Ue,[Ee,jt+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[Ee,[Ue,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[Ee,[Ue,/[^\d\.]+./,Ie]]],cpu:[[/\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i],[[Ne,"amd64"]],[/(ia32(?=;))/i,/((?:i[346]|x)86)[;\)]/i],[[Ne,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[Ne,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[Ne,"armhf"]],[/windows (ce|mobile); ppc;/i],[[Ne,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[Ne,/ower/,Ie,Mt]],[/(sun4\w)[;\)]/i],[[Ne,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[Ne,Mt]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[Te,[xe,yt],[je,Ve]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[Te,[xe,yt],[je,Be]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[Te,[xe,lt],[je,Be]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[Te,[xe,lt],[je,Ve]],[/(macintosh);/i],[Te,[xe,lt]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[Te,[xe,It],[je,Be]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[Te,[xe,mt],[je,Ve]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[Te,[xe,mt],[je,Be]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i],[[Te,/_/g," "],[xe,Ct],[je,Be]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[Te,/_/g," "],[xe,Ct],[je,Ve]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[Te,[xe,"OPPO"],[je,Be]],[/\b(opd2\d{3}a?) bui/i],[Te,[xe,"OPPO"],[je,Ve]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[Te,[xe,"Vivo"],[je,Be]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[Te,[xe,"Realme"],[je,Be]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[Te,[xe,wt],[je,Be]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[Te,[xe,wt],[je,Ve]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[Te,[xe,ft],[je,Ve]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[Te,[xe,ft],[je,Be]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[Te,[xe,vt],[je,Ve]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[Te,/_/g," "],[xe,"Nokia"],[je,Be]],[/(pixel c)\b/i],[Te,[xe,ht],[je,Ve]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[Te,[xe,ht],[je,Be]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[Te,[xe,kt],[je,Be]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[Te,"Xperia Tablet"],[xe,kt],[je,Ve]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[Te,[xe,"OnePlus"],[je,Be]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[Te,[xe,ut],[je,Ve]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[Te,/(.+)/g,"Fire Phone $1"],[xe,ut],[je,Be]],[/(playbook);[-\w\),; ]+(rim)/i],[Te,xe,[je,Ve]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[Te,[xe,pt],[je,Be]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[Te,[xe,bt],[je,Ve]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[Te,[xe,bt],[je,Be]],[/(nexus 9)/i],[Te,[xe,"HTC"],[je,Ve]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[xe,[Te,/_/g," "],[je,Be]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[Te,[xe,"TCL"],[je,Ve]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[Te,[xe,"TCL"],[je,Be]],[/(itel) ((\w+))/i],[[xe,Mt],Te,[je,Qt,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[Te,[xe,"Acer"],[je,Ve]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[Te,[xe,"Meizu"],[je,Be]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[Te,[xe,"Ulefone"],[je,Be]],[/droid.+; (a(?:015|06[35]|142p?))/i],[Te,[xe,"Nothing"],[je,Be]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[xe,Te,[je,Be]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[xe,Te,[je,Ve]],[/(surface duo)/i],[Te,[xe,gt],[je,Ve]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[Te,[xe,"Fairphone"],[je,Be]],[/(shield[\w ]+) b/i],[Te,[xe,"Nvidia"],[je,Ve]],[/(sprint) (\w+)/i],[xe,Te,[je,Be]],[/(kin\.[onetw]{3})/i],[[Te,/\./g," "],[xe,gt],[je,Be]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[Te,[xe,At],[je,Ve]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[Te,[xe,At],[je,Be]],[/smart-tv.+(samsung)/i],[xe,[je,qe]],[/hbbtv.+maple;(\d+)/i],[[Te,/^/,"SmartTV"],[xe,yt],[je,qe]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[xe,ft],[je,qe]],[/(apple) ?tv/i],[xe,[Te,lt+" TV"],[je,qe]],[/crkey.*devicetype\/chromecast/i],[[Te,Et+" Third Generation"],[xe,ht],[je,qe]],[/crkey.*devicetype\/([^/]*)/i],[[Te,/^/,"Chromecast "],[xe,ht],[je,qe]],[/fuchsia.*crkey/i],[[Te,Et+" Nest Hub"],[xe,ht],[je,qe]],[/crkey/i],[[Te,Et],[xe,ht],[je,qe]],[/droid.+aft(\w+)( bui|\))/i],[Te,[xe,ut],[je,qe]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[Te,[xe,It],[je,qe]],[/(bravia[\w ]+)( bui|\))/i],[Te,[xe,kt],[je,qe]],[/(mitv-\w{5}) bui/i],[Te,[xe,Ct],[je,qe]],[/Hbbtv.*(technisat) (.*);/i],[xe,Te,[je,qe]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[xe,Ht],[Te,Ht],[je,qe]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[je,qe]],[/(ouya)/i,/(nintendo) (\w+)/i],[xe,Te,[je,Oe]],[/droid.+; (shield) bui/i],[Te,[xe,"Nvidia"],[je,Oe]],[/(playstation \w+)/i],[Te,[xe,kt],[je,Oe]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[Te,[xe,gt],[je,Oe]],[/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i],[Te,[xe,yt],[je,$e]],[/((pebble))app/i],[xe,Te,[je,$e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[Te,[xe,lt],[je,$e]],[/droid.+; (wt63?0{2,3})\)/i],[Te,[xe,At],[je,$e]],[/droid.+; (glass) \d/i],[Te,[xe,ht],[je,De]],[/(pico) (4|neo3(?: link|pro)?)/i],[xe,Te,[je,De]],[/; (quest( \d| pro)?)/i],[Te,[xe,Ut],[je,De]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[xe,[je,ze]],[/(aeobc)\b/i],[Te,[xe,ut],[je,ze]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[Te,[je,Be]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[Te,[je,Ve]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[je,Ve]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[je,Be]],[/(android[-\w\. ]{0,9});.+buil/i],[Te,[xe,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[Ue,[Ee,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[Ee,Ue],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[Ue,[Ee,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[Ee,Ue],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[Ue,Ee]],os:[[/microsoft (windows) (vista|xp)/i],[Ee,Ue],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[Ee,[Ue,Qt,Xt]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[Ue,Qt,Xt],[Ee,Ot]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[Ue,/_/g,"."],[Ee,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[Ee,"macOS"],[Ue,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[Ue,[Ee,Et+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[Ue,[Ee,Et+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[Ue,[Ee,Et+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[Ue,[Ee,Et+" Linux"]],[/crkey\/([\d\.]+)/i],[Ue,[Ee,Et]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[Ue,Ee],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[Ee,Ue],[/\(bb(10);/i],[Ue,[Ee,pt]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[Ue,[Ee,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[Ue,[Ee,jt+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[Ue,[Ee,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[Ue,[Ee,"watchOS"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[Ee,"Chrome OS"],Ue],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[Ee,Ue],[/(sunos) ?([\w\.\d]*)/i],[[Ee,"Solaris"],Ue],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[Ee,Ue]]},Zt=(ye={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},Lt.call(ye.init,[[nt,[Ee,Ue,Se,je]],[ot,[Ne]],[rt,[je,Te,xe]],[at,[Ee,Ue]],[dt,[Ee,Ue]]]),Lt.call(ye.isIgnore,[[nt,[Ue,Se]],[at,[Ue]],[dt,[Ue]]]),Lt.call(ye.isIgnoreRgx,[[nt,/ ?browser$/i],[dt,/ ?os$/i]]),Lt.call(ye.toString,[[nt,[Ee,Ue]],[ot,[Ne]],[rt,[xe,Te]],[at,[Ee,Ue]],[dt,[Ee,Ue]]]),ye),ei=function(e,t){var i=Zt.init[t],s=Zt.isIgnore[t]||0,n=Zt.isIgnoreRgx[t]||0,o=Zt.toString[t]||0;function r(){Lt.call(this,i)}return r.prototype.getItem=function(){return e},r.prototype.withClientHints=function(){return Vt?Vt.getHighEntropyValues(st).then((function(t){return e.setCH(new ti(t,!1)).parseCH().get()})):e.parseCH().get()},r.prototype.withFeatureCheck=function(){return e.detectFeature().get()},t!=ct&&(r.prototype.is=function(e){var t=!1;for(var i in this)if(this.hasOwnProperty(i)&&!Dt(s,i)&&Mt(n?Wt(n,this[i]):this[i])==Mt(n?Wt(n,e):e)){if(t=!0,e!=Ce)break}else if(e==Ce&&t){t=!t;break}return t},r.prototype.toString=function(){var e=Ie;for(var t in o)typeof this[o[t]]!==Ce&&(e+=(e?" ":Ie)+this[o[t]]);return e||Ce}),Vt||(r.prototype.then=function(e){var t=this,i=function(){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])};i.prototype={is:r.prototype.is,toString:r.prototype.toString};var s=new i;return e(s),s}),new r};function ti(e,t){if(e=e||{},Lt.call(this,st),t)Lt.call(this,[[Me,_t(e[Je])],[Le,_t(e[Qe])],[Be,/\?1/.test(e[Ze])],[Te,Gt(e[et])],[We,Gt(e[tt])],[Ge,Gt(e[it])],[Ne,Gt(e[Xe])],[Pe,_t(e[Ye])],[He,Gt(e[Ke])]]);else for(var i in e)this.hasOwnProperty(i)&&typeof e[i]!==Ce&&(this[i]=e[i])}function ii(e,t,i,s){return this.get=function(e){return e?this.data.hasOwnProperty(e)?this.data[e]:void 0:this.data},this.set=function(e,t){return this.data[e]=t,this},this.setCH=function(e){return this.uaCH=e,this},this.detectFeature=function(){if(Bt&&Bt.userAgent==this.ua)switch(this.itemType){case nt:Bt.brave&&typeof Bt.brave.isBrave==ke&&this.set(Ee,"Brave");break;case rt:!this.get(je)&&Vt&&Vt[Be]&&this.set(je,Be),"Macintosh"==this.get(Te)&&Bt&&typeof Bt.standalone!==Ce&&Bt.maxTouchPoints&&Bt.maxTouchPoints>2&&this.set(Te,"iPad").set(je,Ve);break;case dt:!this.get(Ee)&&Vt&&Vt[We]&&this.set(Ee,Vt[We]);break;case ct:var e=this.data,t=function(t){return e[t].getItem().detectFeature().get()};this.set(nt,t(nt)).set(ot,t(ot)).set(rt,t(rt)).set(at,t(at)).set(dt,t(dt))}return this},this.parseUA=function(){return this.itemType!=ct&&Jt.call(this.data,this.ua,this.rgxMap),this.itemType==nt&&this.set(Se,Pt(this.get(Ue))),this},this.parseCH=function(){var e=this.uaCH,t=this.rgxMap;switch(this.itemType){case nt:var i,s=e[Le]||e[Me];if(s)for(var n in s){var o=Wt(/(Google|Microsoft) /,s[n].brand||s[n]),r=s[n].version;/not.a.brand/i.test(o)||i&&(!/chrom/i.test(i)||/chromi/i.test(o))||(this.set(Ee,o).set(Ue,r).set(Se,Pt(r)),i=o)}break;case ot:var a=e[Ne];a&&(a&&"64"==e[He]&&(a+="64"),Jt.call(this.data,a+";",t));break;case rt:if(e[Be]&&this.set(je,Be),e[Te]&&this.set(Te,e[Te]),"Xbox"==e[Te]&&this.set(je,Oe).set(xe,gt),e[Pe]){var d;if("string"!=typeof e[Pe])for(var c=0;!d&&c<e[Pe].length;)d=Qt(e[Pe][c++],Kt);else d=Qt(e[Pe],Kt);this.set(je,d)}break;case dt:var u=e[We];if(u){var l=e[Ge];u==Ot&&(l=parseInt(Pt(l),10)>=13?"11":"10"),this.set(Ee,u).set(Ue,l)}this.get(Ee)==Ot&&"Xbox"==e[Te]&&this.set(Ee,"Xbox").set(Ue,void 0);break;case ct:var b=this.data,p=function(t){return b[t].getItem().setCH(e).parseCH().get()};this.set(nt,p(nt)).set(ot,p(ot)).set(rt,p(rt)).set(at,p(at)).set(dt,p(dt))}return this},Lt.call(this,[["itemType",e],["ua",t],["uaCH",s],["rgxMap",i],["data",ei(this,e)]]),this}function si(e,t,i){if(typeof e===Ae?(zt(e,!0)?(typeof t===Ae&&(i=t),t=e):(i=e,t=void 0),e=void 0):typeof e!==Re||zt(t,!0)||(i=t,t=void 0),!(this instanceof si))return new si(e,t,i).getResult();var s=typeof e===Re?e:Bt&&Bt.userAgent?Bt.userAgent:i&&i[Fe]?i[Fe]:Ie,n=new ti(i,!0),o=t?qt(Yt,t):Yt,r=function(e){return e==ct?function(){return new ii(e,s,o,n).set("ua",s).set(nt,this.getBrowser()).set(ot,this.getCPU()).set(rt,this.getDevice()).set(at,this.getEngine()).set(dt,this.getOS()).get()}:function(){return new ii(e,s,o[e],n).parseUA().get()}};return Lt.call(this,[["getBrowser",r(nt)],["getCPU",r(ot)],["getDevice",r(rt)],["getEngine",r(at)],["getOS",r(dt)],["getResult",r(ct)],["getUA",function(){return s}],["setUA",function(e){return Ft(e)&&(s=e.length>_e?Ht(e,_e):e),this}]]).setUA(s),this}si.VERSION="2.0.0-rc.1",si.BROWSER=$t([Ee,Ue,Se,je]),si.CPU=$t([Ne]),si.DEVICE=$t([Te,xe,je,Oe,Be,qe,Ve,$e,ze]),si.ENGINE=si.OS=$t([Ee,Ue]);class ni{constructor(){this.onAdStream=new c}onAd(e){const t=`/${e.formatId}`,i=e.formatId,s={bidderCode:"smart-rtb+",cpm:e.cpm,size:e.size,adUnitName:i,adUnitPathSuffix:t,formatId:e.formatId,customFields:{}};this.onAdStream.next(s)}}function oi(e){if(e.includes("pubstackRefresh")){const t=e.find((e=>e.startsWith("pubstackRefreshRank")));if(void 0!==t&&t.includes(":")){const e=parseInt(t.split(":")[1])||0;return e>0?e:0}}return 0}function ri(e,t){const i=function(e){const t=e.split("?")[1];if(void 0!==t){const e=t.split("=");return{key:e[0],value:e[1]}}return}(e),s=e.split("?")[0].startsWith("/")?e.split("?")[0]:`/${e.split("?")[0]}`,n=function(e){return e.getAdUnitPath().replace("//","/")}(t);return s===(n.startsWith("/")?n:`/${n}`)&&(void 0===i||t.getTargeting(i.key)[0]===i.value)}const ai=(e,t)=>{const i=e.path;if(void 0===t||void 0===i)return;const s=t.pubads().getSlots();if(void 0===s)return;const n=s.filter((e=>ri(i,e)));switch(n.length){case 0:return;case 1:return n[0];default:if(-1!==i.indexOf("?"))return V("[pubstackGoogleTag] retrieve first slot matching the  dimension",i),n[0];{const s=t.pubads();try{!function(e){if("object"!=typeof e||null===e||!("getSlotIdMap"in e)||"function"!=typeof e.getSlotIdMap)throw new Error("Missing property getSlotIdMap on googletag")}(s);const t=s.getSlotIdMap();V("[pubstackGoogleTag] get all slot map",t);return t[Object.keys(t).filter((e=>e.startsWith(i)))[function(e){const t=Array.from(document.querySelectorAll(`div[id*='${e.name}']`)).map((e=>e.id));return t.findIndex((t=>t===e.code))}(e)]]}catch(e){return void V(`[pubstackGoogleTag] ${e}`)}}}};const di=e=>{const t=e;if(void 0!==t&&t.apiReady&&void 0!==t.cmd&&void 0!==t.pubads&&"function"==typeof t.pubads){if("function"==typeof t.pubads().refresh)return t}};const ci=e=>{const t=(e=>di(e.googletag))(window);V("[pubstackFindElementById] adUnit ",e);const i=ai(e,t);return V("[pubstackFindElementById] slot ",i),i?document.getElementById(i.getSlotElementId()):ui(e.code)},ui=e=>{const t=document.getElementById(e);return null===t?document.querySelector(`iframe[id*='${e}']`):t};function li(e){const t=document.getElementsByTagName("meta");return Array.from(t).filter((t=>t.name.includes(`${e}:`)))}function bi(e,t){return e.replace(`${t}:`,"")}const pi=(e,t)=>{const i=new Set;return e.tags.forEach((e=>i.add(e))),t.tags.forEach((e=>i.add(e))),i};class hi{constructor(e){this.coreAuctionStream=new c,this.coreImpressionStream=new c,this.state=e}subscribe(e){this.coreAuctionStream.subscribe(e.onAuction),this.coreImpressionStream.subscribe(e.onImpression)}pushNewImpression(e){var t,i,s,n,o;const r=this.state.getAuction(e.auctionId),a=null!==(t=this.state.findLastAuctionId(r.adUnit))&&void 0!==t?t:"",d=this.state.findBidsByAuctionId(r.auctionId).filter((e=>e.state===Y.BID)).map((e=>e)).sort(((e,t)=>t.cpm-e.cpm)),c=(null!==(s=null===(i=d[0])||void 0===i?void 0:i.cpm)&&void 0!==s?s:0)-(null!==(o=null===(n=d[1])||void 0===n?void 0:n.cpm)&&void 0!==o?o:0);return this.state.storeCoreBidResponses.set(e.bidId,e),this.impressionFormatAndForward(r,e,c,a)}pushNewAuction(e){var t,i;e.bidRequests=(t=e.bidRequests,i="adThink",t.filter((e=>e.bidderCode!==i))),0!==e.bidRequests.length&&this.coreAuctionStream.next(e)}checkMeasurability(e){return"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype&&"isIntersecting"in window.IntersectionObserverEntry.prototype&&!!ci(e)}impressionSasFormatAndForward(e,t){const i={bidId:"smart-"+d(),auctionId:"smart-"+d(),lastAuctionId:"smart-"+d(),adUnit:t,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:!1,size:e.size,userConsentState:"notAvailable",userConsentVersion:"notAvailable",hasUserId:"notAvailable",userIdProviderList:[],pbjsVersion:"smart-ad-server",tags:new Set,viewabilityMeasurable:!1,cpmUplift:0,pubstackRefresh:!1,pubstackRefreshRank:0,customFields:e.customFields};this.coreImpressionStream.next(i)}impressionFormatAndForward(e,t,i,s){const n=this.state.findBidsByAuctionId(e.auctionId),o=this.state.getAuction(s),r=J(n),a=this.checkMeasurability(e.adUnit),{userConsentState:d,userConsentVersion:c}=Q(r),u={bidId:t.bidResponseId,auctionId:e.auctionId,lastAuctionId:s,adUnit:e.adUnit,bidderCode:t.bidderCode,cpm:t.cpm,currency:t.currency,refresh:!1,size:t.size,userConsentState:d,userConsentVersion:c,hasUserId:e.hasUserId,userIdProviderList:e.userIdProviderList,pbjsVersion:e.pbjsVersion,tags:pi(e,t),viewabilityMeasurable:a,cpmUplift:i,dealId:t.dealId,advertiserDomains:t.advertiserDomains,pubstackRefresh:o.pubstackRefresh,pubstackRefreshRank:o.pubstackRefreshRank,customFields:t.customFields,bidNetRevenue:t.bidNetRevenue,source:t.source,adapterCode:t.adapterCode};this.coreImpressionStream.next(u)}}class mi{constructor(){this.storeAuctions=new Map,this.storeCoreBidResponses=new Map,this.mappingAdUnitNameAuctions=new Map,this.mappingAdUnitCodeLastAuctions=new Map}setAuction(e){var t;this.storeAuctions.set(e.auctionId,e);const i=null!==(t=this.mappingAdUnitNameAuctions.get(e.adUnit.name))&&void 0!==t?t:[];i.find((t=>t===e.auctionId))||(i.push(e.auctionId),this.mappingAdUnitNameAuctions.set(e.adUnit.name,i)),this.mappingAdUnitCodeLastAuctions.set(e.adUnit.code,e.auctionId)}getAuction(e){const t=this.storeAuctions.get(e);return w(t,`auction not found, @auctionId=${e}`),t}findBidsByAuctionId(e){var t;return(null===(t=this.storeAuctions.get(e))||void 0===t?void 0:t.bidRequests)||[]}findLastAuctionId(e){return this.mappingAdUnitCodeLastAuctions.get(e.code)}findAuctionByAdUnitPath(e){return Array.from(this.storeAuctions.values()).find((t=>{var i;return null===(i=t.adUnit.path)||void 0===i?void 0:i.endsWith(e)}))}}class vi{constructor(){this.state=new mi,this.forwarder=new hi(this.state),this.fallbackCurrency=void 0}bindIntegration(e){e instanceof re&&(e.onBidResponseStream.subscribe((e=>this.bidResponse(e)),E),e.onAuctionEndStream.subscribe((e=>this.auctionDone(e)),E),e.onBidWonStream.subscribe((e=>this.impression(e)),E),e.onBidWonFromSdkStream.subscribe((e=>this.impressionFromSdk(e)),E),this.fallbackCurrency=e.getAdServerCurrency()),e instanceof ni&&e.onAdStream.subscribe((e=>this.impressionSas(e)),E)}helperToBidResponse(e,t){var i;const s=Object.assign({},e);s.state=Y.BID,t.tags.forEach((e=>s.tags.add(e)));let n=t.size;return"native"===t.mediaType&&(n="native"),"video"===t.mediaType&&(n=`video-${n}`),s.size=n,s.cpm=t.cpm,s.currency=null!==(i=t.currency)&&void 0!==i?i:this.fallbackCurrency,s.bidResponseId=t.bidResponseId,s.bidderCode=t.bidderCode,s}bidResponse(e){V("[pubstackCoreController] onBidResponse",e),e.bidderCode="nexx360"===e.adapterCode?"nexx360":e.bidderCode;const t={auctionId:e.auctionId,state:Y.BID,tags:new Set(e.tags),customFields:e.customFields};try{const i=this.state.getAuction(e.auctionId);if(i){const s=i.bidRequests.find((t=>t.bidId===e.bidId));s&&(i.bidRequests=i.bidRequests.filter((t=>t.bidId!==e.bidId)),i.bidRequests.push(Object.assign(Object.assign(Object.assign({},s),this.helperToBidResponse(t,e)),{tags:s.tags})))}}catch(e){}}helperAuctionBidToBidResponse(e){var t;const i=Object.assign(Object.assign({},e),{tags:new Set});if(e.state===Y.BID){let s=e.size;"native"===e.mediaType&&(s="native"),"video"===e.mediaType&&(s=`video-${s}`),i.size=s,i.cpm=e.cpm,i.currency=null!==(t=e.currency)&&void 0!==t?t:this.fallbackCurrency,i.bidResponseId=e.bidResponseId,i.timeToRespond=e.timeToRespond,i.dealId=e.dealId,i.advertiserDomains=e.advertiserDomains,i.bidNetRevenue=e.bidNetRevenue}return e.tags.forEach((e=>i.tags.add(e))),i}bidWonToCoreBidResponse(e){var t,i;const s=a(e.requestId);let n=e.size;return"native"===e.mediaType&&(n="native"),"video"===e.mediaType&&(n=`video-${n}`),{adId:e.adId,bidId:s,bidResponseId:a(s,e.adId),bidderCode:"nexx360"===e.adapterCode?"nexx360":null!==(t=e.bidderCode)&&void 0!==t?t:"",adapterCode:e.pbstckAdapterCode,cpm:e.cpm,size:n,state:Y.BID,auctionId:e.auctionId,tags:new Set(e.tags),currency:null!==(i=e.currency)&&void 0!==i?i:this.fallbackCurrency,customFields:e.customFields,dealId:e.dealId,advertiserDomains:e.advertiserDomains,bidNetRevenue:e.bidNetRevenue,source:e.source}}auctionDone(e){V("[pubstackCoreController] onAuctionDone",e.auctionId);try{const t=(e.bidRequests||[]).map(this.helperAuctionBidToBidResponse),i=J(t),{userConsentState:s,userConsentVersion:n}=Q(i),o={auctionId:e.auctionId,adUnit:e.adUnit,tags:new Set(e.tags),sizes:new Set(e.sizes),hasUserId:e.userId.hasUserId,userIdProviderList:e.userId.userIdProviderList,refreshIndex:e.refreshIndex,pbjsVersion:e.pbjsVersion,refresh:!1,pubstackRefresh:e.labels.includes("pubstackRefresh"),pubstackRefreshRank:oi(e.labels),userConsentState:s,userConsentVersion:n,bidRequests:t,customFields:e.customFields,duration:e.duration,timeout:e.timeout,state:"RUNNING"};this.state.setAuction(o);const r=()=>{const t=this.state.getAuction(e.auctionId);"FINISHED"!==t.state?(this.forwarder.pushNewAuction(t),t.state="FINISHED",this.state.setAuction(t)):V("[pubstackCoreController] auction is already finished",t)};void 0===e.gracePeriod?r():setTimeout((()=>r()),e.gracePeriod)}catch(e){V("[pubstackCoreController] error: cannot set auction as done because auction is not running")}}findBidResponseDuplicate(e){const t=this.state.storeCoreBidResponses.get(e.bidId),i=!!t&&t.bidResponseId===e.bidResponseId&&t.bidderCode===e.bidderCode;return i&&V("[pubstackCoreController] duplicate bid response found",e),i}_impression(e){if("FINISHED"===this.state.getAuction(e.auctionId).state)this.findBidResponseDuplicate(e)||this.forwarder.pushNewImpression(e);else{const t=i=>{i.auctionId===e.auctionId&&(this.findBidResponseDuplicate(e)||this.forwarder.pushNewImpression(e),this.forwarder.coreAuctionStream.unsubscribe(t))};this.forwarder.coreAuctionStream.subscribe(t)}}impression(e){V("[pubstackCoreController] onImpression",e);try{const t=this.bidWonToCoreBidResponse(e);this._impression(t)}catch(e){V("[pubstackCoreController] error: cannot create impression",e)}}impressionFromSdk(e){V("[pubstackCoreController] onImpression",e);try{const t=Array.from(this.state.storeAuctions.values()).find((t=>t.bidRequests.filter((e=>e.state===Y.BID)).find((t=>t.adId===e.adId))));if(t){const i=t.bidRequests.filter((e=>e.state===Y.BID)).find((t=>t.adId===e.adId));i.customFields=Object.assign(Object.assign({},i.customFields),e.customFields),this._impression(i)}}catch(e){V("[pubstackCoreController] error: cannot create impression",e)}}impressionSas(e){V("[pubstackCoreController] onImpressionSas",e);try{const t=this.state.findAuctionByAdUnitPath(e.adUnitPathSuffix);w(t,`onSasNewBidResponse: cannot retrieve related auction, @adUnitName=${e.adUnitName}, @adUnitPath=${e.adUnitPathSuffix}`),e.currency=this.fallbackCurrency,this.forwarder.impressionSasFormatAndForward(e,t.adUnit)}catch(e){V("[pubstackCoreController] error: cannot create impression",e)}}subscribe(e){this.forwarder.subscribe(e)}debug(){const e=[];return this.forwarder.subscribe({onAuction:t=>e.push(t),onImpression:t=>e.push(t)}),{auctions:this.state,auctionsDone:void 0,adUnits:void 0,events:e}}}const fi=(e,t)=>Object.entries(t).every((([t,i])=>typeof i==typeof{}&&typeof e[t]==typeof{}?fi(e[t],i):typeof e[t]==typeof i)),gi=(e,t)=>{if(t)for(let i=0;i<1e3;i+=1)try{const s=e([],{},[i]);try{if(fi(s,t))return s}catch(e){}}catch(e){}},wi=400;const yi={CALL:"call",AD_CALLBACK:"pbstck:ad"};const Ii=()=>({toAd(e,t){k(e),w(t,"toAd: id is undefined"),w(e.formatId,"toAd: formatId is undefined"),g(t),function(e,t,i){if(!C(e,t))throw new l(`Expected object to have key '${t}', but not found`)}(e,"formatId");const i="string"==typeof e.size?e.size:"unknown";return{cpm:p(e.cpm)?e.cpm:0,size:i,formatId:p(e.formatId)?e.formatId.toString():e.formatId}}});const ki=new WeakSet;function Ci(e,t,i){const s=e[i.globalName];if(void 0===s||!s.__smartLoaded)return{status:K.NOT_READY};const n=Ii(),o=new ni,r=function(e,t){return{on(i,s,n){V("sas.dispatcher",i,s),i===yi.AD_CALLBACK&&t.onAd(e.toAd(s,n))}}}(n,o);t.bindIntegration(o);const a=[];if(ki.has(s))return{status:K.LOADED};ki.add(s);const d=Object.values(yi);return d.forEach((e=>{s.events.on(e,((t,i)=>{const s=de(t);a.push({eventName:e,data:s,id:i});try{r.on(e,s,i)}catch(e){e.context=e.context||{},e.context.adapter={source:"sas:on"},E(e)}}))})),s.events.history().filter((({eventName:e})=>d.includes(e))).map(de).forEach((({eventName:e,data:t,id:i})=>{const s=de(t);a.push({eventName:e,data:s,id:i});try{r.on(e,t,i)}catch(e){e.context=e.context||{},e.context.adapter={source:"sas:replayed"},E(e)}})),{status:K.LOADED,instance:{debug:()=>({events:a})}}}function Ai(e,t){return"object"==typeof t&&t instanceof Set?Array.from(t):t}function Ri(e,t){return"tags"!==e&&"sizes"!==e||!Array.isArray(t)?t:new Set(t)}class Si{constructor(e){this.coreEvents=[],this.errors=[],e.forwarder.coreAuctionStream.subscribe((e=>this.addEvent(e))),e.forwarder.coreImpressionStream.subscribe((e=>this.addEvent(e)))}addEvent(e){this.coreEvents.push(e)}addError(e){this.errors.push(e)}getEvents(){return this.coreEvents.map((e=>JSON.parse(JSON.stringify(e,Ai),Ri)))}getErrors(){return this.errors}}const Ti=e=>{var t;const i=null!==(t=null==e?void 0:e.host)&&void 0!==t?t:"unknown";return i.startsWith("www.")?i.substring(4):i},Ei=e=>{let t;return t=e&&e.protocol&&e.host&&e.pathname?`${e.protocol}//${e.host}${e.pathname}`:"unknown",t};class ji{constructor(e,t,i){this.url=e,this.context=i,this.sender=t}buildUrl(e){return`${this.url}?sId=${this.context.scopeId.substring(0,8)}&tId=${this.context.tagId}&c=${e}&ctr=${this.context.country}`}send(e){const t=e.map((e=>xi(e,this.context)));this.sender(this.buildUrl(t.length),t)}}const xi=(e,t)=>Object.assign(Object.assign(Object.assign({},e),t),{domain:Ti(window.location),href:Ei(window.location)});function Ui(e){var t;const i="pbstck",s="pbstck_context",n=[...li(i),...li(s)],o=n.find((e=>"pbstck_ab_test"===bi(e.name,i)));if(o)return o.content;{let i=null===(t=n.find((e=>"pbstck_ab_test"===bi(e.name,s))))||void 0===t?void 0:t.content;return i&&!e.includes(i)&&(i=void 0),i}}const Ni=20;function Oi(){const e="pbstck",t=new Map;li(e).forEach((i=>{const s=bi(i.name,e);t.has(s)&&q(`Custom dim ${s} is present many times`),t.size<Ni?t.set(s,i.content):q(`Skipping custom dim ${s} with ${i.content}: limit of ${Ni} keys exceeded`)}));const i=Object.assign({},...Array.from(t.entries()).map((([e,t])=>({[e]:t}))));return t.size>0&&V("Custom dim found :",i),i}class Bi{constructor(e,t,i,s,n){var o;this.items=[],this.url=e,this.buffer=null!==(o=null==n?void 0:n.buffer)&&void 0!==o?o:Bi.defaults.buffer,this.sender=t,this.context=i,this.abTestValues=s}buildUrl(){const e=this.context.customFields["kleanads-version"],t=document.querySelector('meta[name="pbstck:config-version"]'),i=null==t?void 0:t.content,s=this.items.reduce(((e,t)=>e+(t.pubstackRefresh?1:0)),0),n=e?`&v=${e}&s=${i}`:"",o=s>0?`&rc=${s}`:"";return`${this.url}?tId=${this.context.tagId}&c=${this.items.length}${n}${o}`}batchThenSend(e,t=!0){const i=t?Vi(e,this.context,this.abTestValues):e;if(this.items.push(i),0===this.buffer)return this.flush();1===this.items.length&&setTimeout((()=>this.flush()),this.buffer)}flush(){0!==this.items.length&&(this.sender(this.buildUrl(),[...this.items]),this.reset())}reset(){this.items=[]}}Bi.defaults={buffer:150};const Vi=(e,t,i)=>{var s;const{customFields:n}=e,{customFields:o}=t,r=Oi(),a=null===(s=navigator.connection)||void 0===s?void 0:s.effectiveType,d=Object.assign(Object.assign(Object.assign(Object.assign({},n),o),r),{windowWidth:window.innerWidth.toString(),windowHeight:window.innerHeight.toString()});return Object.assign(Object.assign(Object.assign({},e),t),{customFields:d,abTestPopulation:Ui(null!=i?i:[]),domain:Ti(window.location),href:Ei(window.location),networkConnectionEffectiveType:a,pageId:window.__pbstck_page_id||"unknown",kleanAdsStackVersion:d["config-version"],kleanAdsStackId:d["kleanads-stack-id"]})},qi=d();class $i{constructor(e,t,i,s,n){const o=e.slice(0,-7);this.viewabilityGateway=new Bi(`${e}/viewability`,Di,t,n),this.auctionGateway=new Bi(`${e}/auction`,Di,t,n),this.impressionGateway=new Bi(`${e}/impression`,Di,t,n),this.errorGateway=new Bi(`${e}/error`,Di,t,n),this.traceGateway=new Bi(`${o}/trace`,Di,t,void 0,{buffer:5e3}),this.measuredImpressionGateway=new Bi(`${e}/measured`,Di,t,n),this.measuredImpressionBeaconGateway=new ji(`${e}/measured`,zi,t),this.pageGateway=new Bi(`${e}/page`,Di,t,n),this.bindController(i,s)}bindController(e,t){e.forwarder.coreAuctionStream.subscribe((e=>this.formatAndForwardAuction(e))),e.forwarder.coreImpressionStream.subscribe((e=>{this.formatAndForwardImpression(e)})),void 0!==t&&(t.viewabilityStream.subscribe((e=>{this.formatAndForwardViewability(e)})),t.viewedStream.subscribe((e=>{this.formatAndForwardMeasuredImpression(e)})),t.onUnload((e=>this.formatAndForwardMeasuredImpressionForBeacon(e))))}formatAndForwardAuction(e){const t=[];e.bidRequests.forEach((e=>{t.push({bidId:ee(e),bidderCode:e.bidderCode,state:e.state,source:e.source,tags:0===e.tags.size?void 0:Array.from(e.tags),cpm:Z(e)?e.cpm:void 0,currency:Z(e)?e.currency:void 0,size:Z(e)?e.size:void 0,customFields:e.customFields,timeToRespond:e.timeToRespond,rejectionReason:e.rejectionReason,dealId:Z(e)?e.dealId:void 0,advertiserDomains:Z(e)?e.advertiserDomains:void 0,bidNetRevenue:Z(e)?e.bidNetRevenue:void 0,adapterCode:e.adapterCode})}));const i=void 0===e.userConsentState?"notAvailable":e.userConsentState,s=void 0===e.userConsentVersion?"notAvailable":e.userConsentVersion,n={auctionId:e.auctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,sizes:Array.from(e.sizes),tags:0===e.tags.size?void 0:Array.from(e.tags),refresh:e.refresh,userConsentState:i,userConsentVersion:s,hasUserId:e.hasUserId,userIdProviderList:e.userIdProviderList,pbjsVersion:e.pbjsVersion,bidRequests:t,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank,customFields:e.customFields,duration:e.duration,timeout:e.timeout};this.auctionGateway.batchThenSend(n)}formatAndForwardImpression(e){const t={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,userConsentState:e.userConsentState,userConsentVersion:e.userConsentVersion,hasUserId:e.hasUserId,userIdProviderList:e.userIdProviderList,pbjsVersion:e.pbjsVersion,cpmUplift:e.cpmUplift,dealId:e.dealId,advertiserDomains:e.advertiserDomains,tags:Array.from(e.tags),viewabilityMeasurable:e.viewabilityMeasurable,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank,customFields:e.customFields,bidNetRevenue:e.bidNetRevenue,source:e.source,adapterCode:e.adapterCode};this.impressionGateway.batchThenSend(t)}formatAndForwardViewability(e){const t={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,pbjsVersion:e.pbjsVersion,cpm:e.cpm,currency:e.currency,size:e.size,refresh:e.refresh,htmlElementId:e.htmlElementId,mrcViewable:!0,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank};this.viewabilityGateway.batchThenSend(t)}formatAndForwardMeasuredImpression(e){const t={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,pbjsVersion:e.pbjsVersion,viewedTime:e.viewedTime,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank};this.measuredImpressionGateway.batchThenSend(t)}formatAndForwardMeasuredImpressionForBeacon(e){const t=e.map((e=>({bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,pbjsVersion:e.pbjsVersion,viewedTime:e.viewedTime,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank})));this.measuredImpressionBeaconGateway.send(t)}sendError(e){this.errorGateway.batchThenSend(e)}sendLog(e){this.traceGateway.batchThenSend(e,!1)}sendToDatadog(e){var t;if(void 0===e.error||""===e.error)return;const i=e.error,s=null!==(t=e.context)&&void 0!==t?t:{};k(s),g(i);const n=Object.assign(Object.assign({pageId:qi,status:"error",domain:Ti(window.location),href:Ei(window.location)},s),{message:i}),o=new XMLHttpRequest;o.open("POST","https://browser-http-intake.logs.datadoghq.com/v1/input/pub551f730416e5317842afc2792691e95c?ddsource=browser&ddtags=version:1.3.2",!0),o.setRequestHeader("Content-Type","text/plain"),o.send(JSON.stringify(n))}}const Di=(e,t)=>{const i=new XMLHttpRequest;i.open("POST",e,!0),i.setRequestHeader("Content-Type","text/plain"),i.send(JSON.stringify(t)),V("post",e,t)},zi=(e,t)=>{const i=JSON.stringify(t);navigator.sendBeacon(e,i),V("beacon",e,t)};class Fi{constructor(e){this.adUnit=e}visibilityRatioFromIntersection(e){const t=_i(this.adUnit,this.adUnit);if(this.adUnit===t)return e.intersectionRatio;const i=t.getBoundingClientRect();return e.intersectionRect.height/i.height}}const _i=(e,t)=>(Mi(e)<Mi(t)&&(e=t),Array.from(t.children).filter((e=>e instanceof HTMLElement)).forEach((t=>{e=_i(e,t)})),e),Mi=e=>e.getBoundingClientRect?e.getBoundingClientRect().height:0;class Pi{constructor(){this.state="new",this.elapsedTime=0,this.timeTargets=[]}start(){return"stopped"===this.state&&(this.elapsedTime=0),"started"===this.state?this.elapsed():(this.state="started",this.timeoutId=setTimeout((()=>this.update()),Pi.pacing),this.elapsedTime)}pause(){if("paused"===this.state||"stopped"===this.state)return this.elapsedTime;const e=this.update();return this.state="paused",e}stop(){if("stopped"===this.state)return this.elapsedTime;const e=this.update();return this.state="stopped",e}elapsed(){return"started"===this.state&&this.update(),this.elapsedTime}timeTargetReached(e){return new Promise((t=>{this.timeTargets.push([e,t])}))}update(){let e=Pi.pacing;if("started"===this.state){this.elapsedTime+=e;for(let t=this.timeTargets.length;t--;){const[i,s]=this.timeTargets[t];this.elapsedTime>=i?(s(i),this.timeTargets.splice(t,1)):e=Math.min(e,i-this.elapsedTime)}}return"stopped"!==this.state&&(this.timeoutId&&clearTimeout(this.timeoutId),this.timeoutId=setTimeout((()=>this.update()),e)),this.elapsedTime}}Pi.pacing=100;class Li{constructor(e,t,i,s,n){this.creative=s,this.timer=new Pi,this.inViewPercentage=e,this.cumulative=i,this.timer.timeTargetReached(t).then((()=>{n()}))}pauseTimer(){this.timer.pause()}startTimer(){this.timer.start()}stopTimer(){this.timer.stop()}getElapsed(){return this.timer.elapsed()}isViewable(){return this.inView}intersectionChange(e){this.creative.visibilityRatioFromIntersection(e)>=this.inViewPercentage?this.inView||(this.timer.start(),this.inView=!0):this.inView&&(this.cumulative?this.timer.pause():this.timer.stop(),this.inView=!1)}getTimerState(){return this.timer.state}}const Wi={root:null,rootMargin:"0px",threshold:[0,.3,.5,1]};class Gi{constructor(e,t,i){this.windowActive=!0,this.pbstckWindow=i,this.visibilityState=i.document.visibilityState,this.trackedOnFocusChange=this.onFocusChange.bind(this),i.addEventListener("focus",this.trackedOnFocusChange),i.addEventListener("blur",this.trackedOnFocusChange),this.trackedOnVisibilityChange=this.onVisibilityChange.bind(this),i.addEventListener("visibilitychange",this.trackedOnVisibilityChange);const s=this.getObserverThresholds(t);this.observer=new IntersectionObserver((e=>this.intersectionObserverCallback(e)),s),this.observer.observe(e);const n=new Fi(e);this.computer=new Li(t.minPercentageInView,t.minTimeInView,t.cumulativeTimer,n,(()=>t.completionCallback(e.id))),"hidden"!==this.visibilityState&&this.windowActive||this.stop()}getObserverThresholds(e){return.3===e.minPercentageInView?Object.assign(Object.assign({},Wi),{threshold:[.3,.5,.75,1]}):Object.assign(Object.assign({},Wi),{threshold:[.5,.75,1]})}onVisibilityChange(){this.visibilityState="visible"===this.visibilityState?"hidden":"visible",this.checkWindowActive()}onFocusChange(e){this.windowActive="focusin"===e.type||"focus"===e.type,this.checkWindowActive()}checkWindowActive(){"visible"===this.visibilityState&&this.windowActive?this.start():this.pause()}destroy(){var e;this.stop(),null===(e=this.observer)||void 0===e||e.disconnect(),this.pbstckWindow.removeEventListener("visibilitychange",this.trackedOnVisibilityChange),this.pbstckWindow.removeEventListener("focus",this.trackedOnFocusChange),this.pbstckWindow.removeEventListener("blur",this.trackedOnFocusChange),this.computer=null,this.observer=null}getElapsed(){return null===this.computer?0:this.computer.getElapsed()}pause(){var e;null===(e=this.computer)||void 0===e||e.pauseTimer()}start(){var e;null===(e=this.computer)||void 0===e||e.startTimer()}stop(){var e;null===(e=this.computer)||void 0===e||e.stopTimer()}intersectionObserverCallback(e){e.forEach((e=>{var t;null===(t=this.computer)||void 0===t||t.intersectionChange(e)}))}getTimerState(){var e;return null===(e=this.computer)||void 0===e?void 0:e.getTimerState()}}const Hi={viewableTime:1e3,largeAdunitSize:242e3,largeAdunitTreshold:.3,standardAdunitTreshold:.5};class Ji{constructor(e,t){this.viewabilityState=new Map,this.viewedTimeState=new Map,this.elementIdToCode=new Map,this.viewabilityStream=new c,this.viewedStream=new c,V("[pubstackViewability] Create ViewabilityController with config",Hi),this.pbstckWindow=t,this.pbstckWindow.addEventListener("unload",(()=>this.unloadMeasuredImpressions())),e.forwarder.coreImpressionStream.subscribe((e=>{V("[pubstackViewability] Receive impression",e.bidderCode,e.adUnit.code),this.track(e)})),e.forwarder.coreAuctionStream.subscribe((e=>{V("[pubstackViewability] Receive auctionend",e.adUnit.code),this.endMeasure(e.adUnit.code)}))}onUnload(e){this.unloadCallback=e}endMeasure(e){V("[pubstackViewability] receive event to stop measure");const t=this.viewedTimeState.get(e);void 0!==t?(t.viewabilitytracker.stop(),this.onMeasurable(e)):V("[pubstackViewability] event received but no tracker to stop, skipping")}track(e){if(!e.viewabilityMeasurable)return void V("[pubstackViewability] Cannot track impression for adUnit ",e.adUnit);const t=ci(e.adUnit);null!==t?(this.trackViewability(e,t),this.trackMeasure(e,t)):E(new Error(`[pubstackViewability] Unexpected null HTML Element on viewable impression for adUnit ${e.adUnit.name}`))}trackMeasure(e,i){return t(this,void 0,void 0,(function*(){var t;let s=null===(t=this.viewedTimeState.get(e.adUnit.code))||void 0===t?void 0:t.viewabilitytracker;this.elementIdToCode.set(i.id,e.adUnit.code),void 0!==s&&(V(`[pubstackViewability] replacing existing measurability tracker on ${i.id}`),s.stop(),this.onMeasurable(e.adUnit.code)),V(`[pubstackViewability] tracking code ${e.adUnit.code} with rule MRC for measurability`);const n={minPercentageInView:this.minPercentageInView(i,Hi),minTimeInView:18e4,cumulativeTimer:!0,completionCallback:e=>{const t=this.elementIdToCode.get(e);void 0!==t?this.onMeasurable(t):V(`[pubstackViewability] unable to find matching adunitcode for element ${e}`)}};s=new Gi(i,n,this.pbstckWindow),this.viewedTimeState.set(e.adUnit.code,{impression:e,viewabilitytracker:s})}))}trackViewability(e,i){return t(this,void 0,void 0,(function*(){var t;let s=null===(t=this.viewabilityState.get(i.id))||void 0===t?void 0:t.viewabilitytracker;void 0!==s&&(V(`[pubstackViewability] replacing existing tracker on ${i.id}`),s.destroy(),this.viewabilityState.delete(i.id)),V(`[pubstackViewability] tracking element ${i.id} with rule MRC for monitoring`);const n={minPercentageInView:this.minPercentageInView(i,Hi),minTimeInView:Hi.viewableTime,cumulativeTimer:!1,completionCallback:e=>this.onViewable(e)};s=new Gi(i,n,this.pbstckWindow),this.viewabilityState.set(i.id,{impression:e,viewabilitytracker:s})}))}minPercentageInView(e,t){const i=window.getComputedStyle(e);return Number(i.getPropertyValue("width").replace(/px/,""))*Number(i.getPropertyValue("height").replace(/px/,""))>t.largeAdunitSize?t.largeAdunitTreshold:t.standardAdunitTreshold}unloadMeasuredImpressions(){if(V("[pubstackViewability] page unloaded, forwarding impressions measured"),void 0!==this.unloadCallback){const e=[];Array.from(this.viewedTimeState.values()).forEach((t=>{if(void 0!==t.viewabilitytracker){t.viewabilitytracker.stop();const i=Math.floor(t.viewabilitytracker.getElapsed()/1e3);i>0&&e.push({bidId:t.impression.bidId,auctionId:t.impression.auctionId,lastAuctionId:t.impression.lastAuctionId,adUnit:t.impression.adUnit,bidderCode:t.impression.bidderCode,pbjsVersion:t.impression.pbjsVersion,cpm:t.impression.cpm,currency:t.impression.currency,refresh:t.impression.refresh,size:t.impression.size,viewedTime:i,pubstackRefresh:t.impression.pubstackRefresh,pubstackRefreshRank:t.impression.pubstackRefreshRank})}})),e.length>0&&this.unloadCallback(e)}}onMeasurable(e){V(`[pubstackViewability] Measurability Event on AdUnit code ${e}`);const t=this.viewedTimeState.get(e);if(void 0===t)return void E(new Error(`[pubstackViewability] Impression not found for AdUnit code ${e}`));this.viewedTimeState.delete(e);if(Math.floor(t.viewabilitytracker.getElapsed()/1e3)>0){const e=t.impression,i={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit,bidderCode:e.bidderCode,pbjsVersion:e.pbjsVersion,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,viewedTime:Math.floor(t.viewabilitytracker.getElapsed()/1e3),pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank};V(`[pubstackViewability] Forwarding measured impression on code ${e.adUnit.code}`),this.viewedStream.next(i)}t.viewabilitytracker.destroy()}onViewable(e){V(`[pubstackViewability] Viewability Event on element ${e}`);const t=this.viewabilityState.get(e);if(void 0===t)return void E(new Error(`[pubstackViewability] Impression not found for ElementId ${e}`));this.viewabilityState.set(e,t);const i=t.impression,s={bidId:i.bidId,auctionId:i.auctionId,lastAuctionId:i.lastAuctionId,adUnit:i.adUnit,bidderCode:i.bidderCode,pbjsVersion:i.pbjsVersion,cpm:i.cpm,currency:i.currency,refresh:i.refresh,size:i.size,htmlElementId:e,pubstackRefresh:i.pubstackRefresh,pubstackRefreshRank:i.pubstackRefreshRank};V(`[pubstackViewability] Forwarding viewable impression ${s.htmlElementId}`),this.viewabilityStream.next(s)}}const Qi=()=>{const e=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(e)?"tablet":/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(e)?"mobile":"desktop"};function Xi(e,i,s){var n;e.pbstck=e.pbstck||{lock:{}},e.pbstck.lock=e.pbstck.lock||{},e.pbstck.scopeId=s.scopeId,e.pbstck.tagId=s.tagId;const o={},r=`${s.tagId}@${i.gateway}@collector`;if(function(e,t){return e[t]}(e.pbstck.lock,r))return;!function(e,t){e[t]=!0}(e.pbstck.lock,r);const a=new vi;let d;o.core=a,i.viewabilityEnabled&&(d=new Ji(a,e),o.viewability=d);const c=new $i(i.gateway,s,a,d,i.abTestValues);var u;o.intake=c,S((e=>c.sendError(e)),1),u=e=>{i.logsEnabled.includes(e.id)&&c.sendLog(e)},ue.subscribe(u),function(e){R.subscribe(e)}((e=>c.sendToDatadog(e)));const l=new Promise(((s,n)=>{if(i.pbjsVariableName){V("Prebid dropin mode",i.pbjsVariableName);const r={debug:B(),globalName:i.pbjsVariableName},d=function(e,t){return e[t.globalName]||(e[t.globalName]={}),e[t.globalName].que||(e[t.globalName].que=[]),e[t.globalName].que}(e,r);d.push((()=>t(this,void 0,void 0,(function*(){var t,d;const c=e[r.globalName],u=null!==(t=Number(c.getConfig("timeoutBuffer")))&&void 0!==t?t:wi,l=null===(d=c.getConfig("currency"))||void 0===d?void 0:d.adServerCurrency;let b;h(l)&&(b=l);const p=new re({version:c.version,gracePeriod:u,adServerCurrency:b,pbjsVariableName:r.globalName},i.admOnboarding);o.prebid=p;try{o.prebid=function(e,t,i,s){const n=e[s.globalName];i.bindIntegration(t);const o=le(ve(),t);let r;if(null!=n.getEvents)V("[pbjsIntegration] retrieve pbjs events using getEvents on public API"),r=n.getEvents;else{V("[pbjsIntegration] retrieve pbjs events using chunk");const t=e[`${s.globalName}Chunk`];if(void 0===t)throw new Error("[pbjsIntegration] unable to find pbjs chunk");const i=gi(t,{on:Function,getEvents:Function});if(void 0===i)throw new Error("[pbjsIntegration] unable to use event handler on adapter");r=i.getEvents}return Object.values(ce).forEach((e=>{n.onEvent(e,(t=>{var i;try{o.on(e,t)}catch(s){$("[pbjsIntegration] Error on event "+e+": "+s.message,t),T({context:Object.assign(Object.assign({},null!==(i=s.context)&&void 0!==i?i:{}),{adapter:{version:n.version,source:"pbjs:on"}}),message:s.message})}}))})),r().forEach((({eventType:e,args:t})=>{var i;try{o.on(e,t)}catch(s){$("[pbjsIntegration] Error on event "+e+": "+s.message,t),T({context:Object.assign(Object.assign({},null!==(i=s.context)&&void 0!==i?i:{}),{adapter:{version:n.version,source:"pbjs:replayed"}}),message:s.message})}})),t}(e,p,a,r),s()}catch(e){return $("Unable to load pbjs integration due to",e),void n()}}))))}}));let b,p=[];if(i.smartEnabled||i.debug){const t={debug:B(),globalName:"sas"};p=function(e,t){return e[t.globalName]||(e[t.globalName]={}),e[t.globalName].cmd||(e[t.globalName].cmd=[]),e[t.globalName].cmd}(e,t),p.push((()=>{b=Ci(e,a,t).instance}))}const m={tagId:s.tagId,globalQueue:i.sdk.globalQueue},v=ge(e,a,m);if(v.dispatchEvents(),i.debug||B()){a.subscribe({onAuction:e=>V("controller.onAuction",e),onImpression:e=>V("controller.onImpression",e)});const t=new Si(a);o.debug=t,S((e=>t.addError(e)),1e3),e.pbstck.debug=e.pbstck.debug||{},e.pbstck.debug[r]={getEvents:()=>t.getEvents(),getErrors:()=>t.getErrors(),sdk:null!==(n=null==v?void 0:v.debug())&&void 0!==n?n:void 0},(i.smartEnabled||i.debug)&&p.push((()=>{b&&(e.pbstck.debug[r].sas=b.debug())}))}return Promise.resolve().finally(),e.pbstck.controllers=e.pbstck.controllers||{},e.pbstck.controllers[`${i.gateway}@collector`]=o,l.then((()=>{e.dispatchEvent(new Event(we(`${i.gateway}@collector`,"pubstackMonitoringReady")))})),a}e.bootPubstack=Xi,e.pubstackAutoconfig=function(e){var i,s,n,o;const r={gateway:null===(i=e.endpoint)||void 0===i?void 0:i.gateway,sdk:{globalQueue:"pbstckQ"},debug:!0===e.debug,viewabilityEnabled:e.viewabilityEnabled,smartEnabled:null!==(s=e.smartEnabled)&&void 0!==s&&s,refreshConfigurationUrl:null!==(n=e.refreshConfigurationUrl)&&void 0!==n?n:"",pbjsVariableName:e.pbjsVariableName||"pbjs",abTestValues:e.abTestValues,logsEnabled:e.logsEnabled||[],admOnboarding:e.admOnboarding};if(void 0===r.gateway)return;const a=new si(navigator.userAgent),d=a.getOS(),c=a.getBrowser(),u={tagId:e.tagId,scopeId:e.scopeId,country:e.country,device:Qi(),browserName:c.name,browserVersion:c.major,osName:d.name,osVersion:d.version,pbstckVersion:null!==(o="01e89e8")?o:"unknown",customFields:Oi()};u.customFields.kleanadsDefaultDevice=window.innerWidth<768?"mobile":"desktop",t(void 0,void 0,void 0,(function*(){try{return navigator&&navigator.cookieDeprecationLabel&&navigator.cookieDeprecationLabel.getValue&&(yield navigator.cookieDeprecationLabel.getValue())||void 0}catch(e){V("Error while getting cookie depreciation label",e)}})).then((e=>{e&&(u.customFields.cdep=e)})),u.tagId&&u.scopeId&&Xi(window,r,u)}}(this.collector=this.collector||{});
;
 return this;}.bind({}); var _ = load();_.collector.pubstackAutoconfig({"endpoint":{"gateway":"https://intake.pbstck.com/v1/intake"},"scopeId":"62e13ed6-cbd3-4eec-bbe8-5a42a44cd1b3","tagId":"39a3fd4f-2a0d-4234-b957-b4adc961368e","viewabilityEnabled":true,"refreshEnabled":false,"smartEnabled":false,"pbjsVariableName":"pbjs"}); })()</script><style type="text/css">.detachVideo > iframe{height:100%!important}.detachVideo{position:fixed;z-index:60000;bottom:150px;right:10px;min-height:180px;max-height:180px}</style><script src="https://config.aps.amazon-adsystem.com/configs/3927" type="text/javascript" async="async"></script><script src="//secure.cdn.fastclick.net/js/pubcid/latest/pubcid.min.js"></script><script src="//cdn.id5-sync.com/api/1.0/id5-api.js"></script></head>
	
	<body class="light" style="overflow:hidden;" onload="PL();" onresize="EPR();">
		<table width="100%" height="100%" cellspacing="0" cellpadding="0">


	
			<tbody><tr height="8">
				<td style="border-bottom:solid #666666 1px; padding:8px;" valign="middle">
					<form name="topform" action="./" method="POST">
						<table width="100%" height="100%" cellspacing="0" cellpadding="0"><tbody><tr valign="middle">
							<td nowrap="" width="5%"><font style="font-size:28px;">		<span id="lfamilyname"><img src="logo-320x64.png" class="felogo" width="160" height="32" border="0" alt="Family Echo" align="ABSMIDDLE"></span>&nbsp;<span id="lfamilyinfo"></span> <span id="lfamilylabels"></span>
		
		<iframe id="backframe" width="1" height="1" frameborder="0" scrolling="no"></iframe>
</font></td>
			<td width="*" align="center" nowrap=""><div id="ads_banner">
				<a href="#" onclick="var elem=document.getElementById('ads_banner'); elem.parentNode.removeChild(elem); return false;" style="font-size:9px; text-decoration:none; vertical-align:top;">Hide:</a>
				<div style="display:inline-block; vertical-align:top; min-width:728px;"><div id="adngin-top_banner-0" style="max-width:970px; height:90px; overflow:hidden;" data-google-query-id="CJmK6uSH-IkDFZteHQkd6nEoNQ"><div id="google_ads_iframe_/22152718,22577848623/sws-hb//familyecho.com//familyecho_top_0__container__" style="border: 0pt none; display: inline-block; width: 728px; height: 90px;"><iframe frameborder="0" src="https://642bb473a1eccb53c9884aea826df60b.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html" id="google_ads_iframe_/22152718,22577848623/sws-hb//familyecho.com//familyecho_top_0" title="3rd party ad content" name="" scrolling="no" marginwidth="0" marginheight="0" width="728" height="90" data-is-safeframe="true" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" allow="private-state-token-redemption" aria-label="Advertisement" tabindex="0" data-google-container-id="1" style="border: 0px; vertical-align: bottom;" data-load-complete="true"></iframe></div></div></div>
			</div></td>

<td nowrap="" style="text-align:right;" width="5%">

		<input type="hidden" id="newscript" name="newscript" value="">
		<input type="hidden" id="personid" name="personid" value="START">
		<input type="hidden" id="viewpersonid" name="viewpersonid" value="START">
		<input type="hidden" id="viewmode" name="viewstate" value="edit">
		<input type="hidden" id="name" name="name" value="">
		<input type="hidden" id="email" name="email" value="">
		

		<input type="hidden" name="affiliate" value="">
		<input type="hidden" id="sessionid" value="">
				<input type="hidden" id="familyid" name="familyid" value="">
		<input type="hidden" id="importcacheid" name="importcacheid" value="">
		<input type="hidden" id="checksum" name="checksum" value="">

		<input type="hidden" name="do_startbranch" id="do_startbranch">
		
		<span>
			<span id="lsave" style="display:none;"><font color="red"><b>Family not saved.</b></font> <br><br>To save, share, add photos:</span>
			<span id="linitial" style="display: inline;">Want to save or retrieve a family?</span>
			<span id="lreadonly" style="display:none;"><font color="red"><b>This family is read only.</b></font></span>
			<span id="lwriteone" style="display:none;"><font color="red"><b>You may only edit your own details.</b></font> <br><br> Sign in to edit other people or add more.</span>
			<span id="lsaving" style="display:none;">Changes being saved... </span>
			<span id="lsaved" style="display:none;">All changes saved. </span>
		</span>
		
		<br><br>

		<span id="savefamily" style="display:none;"><input type="submit" value="Save" class="ibutton" onclick="ESS(); return false;"> &nbsp;</span>
		<input type="submit" name="do_signin" id="do_signin" value="Sign In" class="ibutton" onclick="ESC(); return true;">
							</td>
						</tr></tbody></table>
					</form>
				</td>
			</tr>
		<tr height="*"><td style="position:relative;">
			
			<script type="text/javascript"><!--
				document.write('<DIV ID="noajax"'+(document.getElementById ? ' STYLE="display:none;"' : '')+'><TABLE HEIGHT="100%" WIDTH="100%"><TR><TD ALIGN="center"><FONT COLOR="red"><B>Sorry. This site requires a modern web browser such as Firefox, Internet Explorer 6+ or Safari.</B></FONT></TD></TR></TABLE></DIV>');
			--></script><div id="noajax" style="display:none;"><table height="100%" width="100%"><tbody><tr><td align="center"><font color="red"><b>Sorry. This site requires a modern web browser such as Firefox, Internet Explorer 6+ or Safari.</b></font></td></tr></tbody></table></div>
			
			<noscript>
				<TABLE HEIGHT="100%" WIDTH="100%"><TR><TD ALIGN="center">
					<FONT COLOR="red"><B>
					Sorry - this site requires JavaScript in order to display your family.
					<P>
					If a security warning has appeared at the top of the browser window,
					please click it to allow blocked content.
					<P>
					Otherwise, please switch on JavaScript in the Options... window of your browser.
					</B></FONT>
				</TD></TR></TABLE>
			</noscript>
			
			<div id="main" class="fullsize" style="position:relative;" onmousedown="EMD();" ontouchstart="EMD();">

				<div id="treediv" class="dright" style="top: 0px; height: 100%; overflow: hidden; background-color: rgb(255, 255, 255);"><div id="treemargin" class="marginon" style="cursor:move;"><div id="treebg" class="fullsize rbody" style="position: relative; left: -18797.5px; top: -11792.5px;"><div class="dbox" style="position: absolute; width: 100px; height: 50px; left: 19147px; top: 11972px; background: rgb(255, 255, 255); border-width: 3px;"></div><div class="di" id="START" style="width: 100px; height: 50px; left: 19150px; top: 11975px;"><table width="100%" height="100%" style="table-layout:fixed; border-collapse:collapse;"><tbody><tr><td class="dcell" style="font-size:15px;color:#000000; padding:0 4px;" title="Me">Me</td></tr></tbody></table></div></div></div></div>
				
				<div id="fadediv" class="dright" style="bottom:33px; height:4px;"></div>
				
				<div id="navdiv" class="dright" style="bottom:0px; height:33px; overflow:hidden; "><div id="navmargin" class="marginon">
					<div id="navbg" class="rbody" style="height:33px; position:relative;">
						
						<div id="navrow" style="position: absolute; height:33px; line-height:33px; bottom:0; left:0; right:0; text-align:center; white-space: nowrap; margin:0 32px;" class="">
							<a href="#" onclick="ETO(); return false;" title="Show/hide options"><img src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAJZlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAARAAAAWodpAAQAAAABAAAAbAAAAAAAAABIAAAAAQAAAEgAAAABd3d3Lmlua3NjYXBlLm9yZwAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACygAwAEAAAAAQAAACwAAAAA06l3rAAAAAlwSFlzAAALEwAACxMBAJqcGAAAActpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+d3d3Lmlua3NjYXBlLm9yZzwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGMtVWAAABvhJREFUWAnFmb2PVUUYxq+CiA1qjEGx2QYxMSj029AZSTaUdm7cZhsTQRNNgNpGKxooXRosTIiJCX+DxkKMIaBWGwUSY4SCD10/nt8587v7cvbeXXeB8CTPmZl33q95z8zcszAa3T8eay7m014Mb4V/NtJHNh8CdfvRI3hubzFPpP13A6IDtOlHm3z+nxUTAL1/wsfDv1t/W+u/nPZyCK6H58O/GARPhEfC3QyCfeGVUFv80dc3i14JtwSSxNkksIin2sRCWqs7N0EZmfPoAmynVZpFTC3kekasmmoeDt8Knw5/CE+Fv4ZWYlf6gH17qeuNRjtbe6fJmNsR4gPc7pvRnrTvhq+GN8Jz4VchIHFy2BB1hSRndWxvRjYbvh4uhddCFsb8wRDgAwJkzKGDLjbY4gNf+rUlptCH4zVtfRWnM6sTHFM9x1QMOqZdDp8NQU0YGXNVF9u7RYbvmvyZjEXNSdm43dZ6tbJXI9vf5CfT1sC8sgvhYvhCCGpV7DOHDrq+Df3gExCDWMqttDmhcw/cz+xZjXAw07QM/n7G7MEvwgNtzkYdx7RDGTbY4gNfQJ2Z9GvS5ALMrR+1J1cQOBuSMK/Iyj6ZPq9Gxx60iDoZts4hG4K5oY4+mMM3MQAx3R5LnaS37bo1iCfSk/xLNL4P0XG/osMrwiFyVs7iuHdpGZMYrX3GQx1s8YEvfDJPDOTEJDZ4pm9WbwsUhH2uLvBKyP7CYd347EHGyL3aTIoxydPadzHoAOT6xJfQJzGJDczF3Hppeyrck7GvhJW7zyZt/iqjoofCD8JPw09aHxlzotoMZcQiJiQHcgHm1o/KU8ezkXntcDjcb1RBqMv4vfDn0GDDlrmjoai2+iQGsbAlNjmAqttL2pOV+3PLxe6+5USDukqdvBj5N2FNkNf9WyP9OocuNkAf9PVNLBMmB0BOa95KNUZpKcSQPebVpY7GBK5X0HLGH4YEer6RPjLmTBwbk9aXvolFTHTJoUKd8YHiq2shPBZeCzHiogdUgFfn60NWK3suY98Oc0Mwh45JYyv0a5WJiR45kAs5kRsYxz+Rgc5oXeUiWoEn3JY9qz6JCO5SqmYS9L1f0alJ4wPo05aYNQfjkGOH+TwV0t5t4+W0/KQCK0yfV8MhQhcdK2vAiNbAOXSxwfan0NfMAq0wMdUxF/Obz1z3JwyCa+FcuDfkC6t+yGQ4dn4ofR2wP0GtYi9Z+1QHG+3xBUzcpIlNDuRCTuSGzcWw+xuMwWkGA+gAsVXinkWfG8CTvC39jaAONt4e+AL6pl9jMgbkRsxbTLo6/6zZGRlyiGOBAfCE/54+H/Kg6vWStU91rmYKW+CW0zcy9IxPLsDctjOxVdQgW/WxaTsSXmlWvpY7GbNKV9qmx1cKFQLPhRv+dHaa/cPiYIMtYG8CDp1Az/jkAsxthUlOKzgSDg9dTdqKfttp90HeaH23VRtObNTRBiV96dtkh4eO3MCPPOZDDKRXCVeLewxHVoHAj/RaS/wRl7IJ027mh+NzHDRwdXEbsDhI3+ss3RG6xtnsD8dxHAArdz8/zSTCj8I0MFeT/booujjeIrgQsij299SfZvdXdDos5WmlDzSZOlQNcL1xAK0YW+ijsH78YPvAP37iswOJWCWCupc3+rykWiZNy0H187LK6T+wz8v46mAVZzMy4dvp7+qnx9uHobr02Y/cNsMEHXNI3bPp3mPrliQGsbAhNjmAGqeXtKd7iHvyZmiwrfyJxJ9HD/1PJC/nj0uyJ9MHLqYfrR5UxlRIW+cntehYTeZrn7ExiGmxyAVM9O9h+jIKGFxCM8BRda4ecl6Xc7SMcU5b+0Mdk9NX1Ds/yolNDuQCxnoqILR/g0HwUrg/5BDtCAmKDnc0+w35Sojc6jHmQ4W29oc62OIDX/hknhjIiUls8EffjHNrw76hIuBw6Cvh2poJgQtiT3M4uD24tirUWU+GDbb48HxoNxNZvSrfzBiYWz8qT0t/KrKaNKsGdX8xT0W46BfD+jOeYQcTYQ4ddLHRNy0+ATFqsuQAzKkfDZ68GnEmHR1za7ivkHHteO2psxwZHy2ARE0WGXPq0fJPCNUe3/VmIraoOSm7pyWQSrXSBsTxbPha+FnITyh7kfmDIagJI2MOHXSXQn6Y8HEj1K+tlSUHF53u+qiK7COCcGK5ZvwGTrfD0TwJRsX2dpL+vwx2tj4yq3msyWzwhU98nw05P6LmoGzdlhVO2z8cAn/GF9K3OnMTPCJz/p02j+20g0RM33BTX22mTqyqdI7R47Cwal4tfRzT5yvvcgiuh+dDrjbAdXck3M0g2BdeCbXFH319szCuw4cGq3Q8EazitPZEy0Kbh5bURo59S29H8btw+F+3yOZDoG4/2sLzP0nSR3kn4oNcAAAAAElFTkSuQmCC" class="icon" align="ABSMIDDLE"><span id="optionslinktext">Options</span></a>
							<span id="printbutton">
								<span class="buttondash">–</span>
								<a href="#" onclick="ESM('print'); return false;" title="Print family tree"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">Print</span></a>
							</span>
							<span id="downloadbutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ESM('download'); return false;" title="Download/export family"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">Download</span></a>
							</span>
							<span id="sharebutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ESM('share'); return false;" title="Share with family members"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">Share</span></a>
							</span>
							<span id="usersbutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ETU(); return false;" title="View invitations/users"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">Users</span></a>
							</span>
							<span id="userstreebutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ETU(); return false;" title="Show tree"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">Tree</span></a>
							</span>
							<span class="buttondash">–</span>
							<a href="#" onclick="ESM('calendar'); return false;" title="View event calendar or timeline"><img src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAJZlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAARAAAAWodpAAQAAAABAAAAbAAAAAAAAABIAAAAAQAAAEgAAAABd3d3Lmlua3NjYXBlLm9yZwAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACygAwAEAAAAAQAAACwAAAAA06l3rAAAAAlwSFlzAAALEwAACxMBAJqcGAAAActpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+d3d3Lmlua3NjYXBlLm9yZzwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGMtVWAAABWFJREFUWAnFmEuolVUUx+/1+kgzlSyxfHC9RqQoaTYTCXwklFYOrJGCgwYNGkRBw2YOHCSaE8FmTQRxECU4CZqElhARpWCQr0yzNNEe3vLx/+1v/U/73POdR97znbPgf9Z+rL1e+/mdoYHx00SpGBTutlDVicyQxk9oo6eFic66cNSEsTL6vzK5fIM+ouqEUFIGsrpBmCZcFpyhXBaZdcJDwqUSGY9Zrb55woWQEWuwSVtLwjBBwVEMKE8WoJcFHPpVeESAPP2TiurAC+LIXBfmRttYmVUhg9zSkGG87ZoP4UAzQggFt4PfEQe0jQrQSMEGZok/HOV/xZH5J+rDwcnw7CiPlSGzpseiwHj02Cb8Nk6VkZ0lk+8LK4Q/MkECvSXg8BKBoI4JNwSyh3JkCGxYIGvIHBfINDI4gx0cw8mVAnRCuCKQYfRAyE0XPqJSRiiE1goobgVnq5WMZ6mdjLPZVM6O4VwZeR3i1GnhN4ExREz25guLBBz6VmAWWPMYJMPO3mKVcQaZmwIyJnSz/p+Khu/Frwq2gw5m0utfxUZyIBvU5Wg3Z2I4DL0t0I9SbxYVE1nmTdWQIainU0/jzxY12c7GrNs69kb/LbLQijwAGcuSHWfobAz+W5yTAsrlqFuGGfmFBpHHm/9UNKffi1HO7diPQWcyk29atHLGMI3UDwmvCecFnPFGoY+MwT8WtgqcwT8LuYyqaeq/FN8koJdlgw3G25aToKZyciDPq9tT9WK5aE9a94Qfo3asE6tsjCkC5y3r0eRs5G3uM78fGRLFbDBzD4aiQa+NqNcYBpgeMnxUYPANgXXI9FDvBeEfpwtn8AMYbJdhB8SgGQzoI+HDhHYOMyUQm+ewcEqYKjC4F8Rs/im8JCwXmtq1o5wA3nSrVO4XfSjD+NF2080ODxH28mAttdpgMWTcDHuAN8uC0Nb0HPammheCbDjeuxAbr+nUJInu/OCs/Xg0VA42O5AtOBKC3GK8I3pJ9m2mjD4ehps67Cl/MgTPibP486ijqzKGLWihMCeVZN9RRD0xtxHVE9FxMriv3KhWyuwwpwOUkmjniqbi122cCj57vwoBK8nlqyp7Wa4OA+yb0gzbqfUhyNPxWDYoipUzblrouYLVTqmoFszOkmUe0kT5ddHV01+WHsRnEz6QXXDX069yIguuUY1vNejTgqWHSBQrZ/br1bDELDuZdcZ9VR9QK5Gx0P2V4GDqBlRQsbOTpfus4AzDQY0syGVxXaDzs+glutIIo7+bzM+C7VKKD2T3ryjXOUxE0C6BDsCXAmQlRa263zwp38gMPvDgOhhlb8TaN9awOrggEMw3W65IXZWRk/aGLDhpb6n8XtR5FiTy2uUJaUG+sSD3FbXqfr1HuNWuCfjh58DuqCeH+eyBdgh29pPUUnwSsRwAjlcFMmuHj6hsP15XGdov0FbLMLca64PGH4VerVmZqqOdqtlZJw2BfdGe3sPLVOE0cITHVX5F4KNz7PmHsm4TpxP7huPznVDOf2vbogyrs3s1Gkh3uk2i7kj7wZ+VD9C0gg18II4fo0TnlxjLwKeBIyIAsgwoV0XWfVMG1gsnBPyprVmVE7GJ1gpMR3q+pdZic/2uMoP3Rdu74lzT/Becy0b3uBgJwsEzwgVhqkCSaGNv+VJLu55vJv4qKiN/mtD3hfBdmVAFbdxskC8K/rtLRIbxvhZB0ZwCQWh61GHrBDI7M7hY14lM57OHf+yxkbDkpRrV/xiCEP+nIYTz8H6CldDwvFRbIkdyJuq+XKLaF8bl8oNPhTIP6MPxZ4QlAhG2kld3pcQG/LydhX46WOpbJw5xA3YiV2qgy4137gGY3YyxZP2csQAAAABJRU5ErkJggg==" class="icon" align="ABSMIDDLE"><span class="iconlabel">Calendar</span></a>
							<span id="historybutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ESM('history'); return false;" title="View editing history"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">History</span></a>
							</span>
							<span id="filesbutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ETF(); return false;" title="View/edit files"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span id="fileslinktext" class="iconlabel">Files</span></a>
							</span>
							<span id="filestreebutton" style="display:none;">
								<span class="buttondash">–</span>
								<a href="#" onclick="ETF(); return false;" title="Show tree"><img src="data:;base64,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" class="icon" align="ABSMIDDLE"><span class="iconlabel">Tree</span></a>
							</span>
							–
							<img src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAJZlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAARAAAAWodpAAQAAAABAAAAbAAAAAAAAABIAAAAAQAAAEgAAAABd3d3Lmlua3NjYXBlLm9yZwAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACygAwAEAAAAAQAAACwAAAAA06l3rAAAAAlwSFlzAAALEwAACxMBAJqcGAAAActpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+d3d3Lmlua3NjYXBlLm9yZzwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGMtVWAAABl5JREFUWAnNmFuoVVUUhrW7GpVd7GYJauY17CEI66FDEUUWQdFLD0FEhE/1WCAFRYEPXR6iIHyplxCpIAgEezCxyBKtDOxix1K6mJXa1e7ft9f8dZ7dPues7TmhP/xrjDnXnGOONeaYY629J04YHccw5Fj4Rxl6IvKKwoXI6fAU6Jjf4Q9wB9wM34BbYHA8Suykb1zlcZW1WeiPwx3wn5b8i3Gb4L1wCgx8uHHFRKzF6KnoT0MXb+uo4/7uGv817WUw0L7rjBlxVEM3wN0wDridtdP7aG+Db8J1cCMchAdgPa5ur+feDCjG7HSdAvdjMIv+VOlG6jl4EzR/zfEa5vjF8E74KvwNxs6PRdfeABR1gJqeltd64grmuMif8Jeie5gehGfCbuRg9triSxj8AozT7kr0pcXQCUW2Fi6YSD2ArkG3MdFZi34RDIziSdAdcV4cVdq2GkwqEtHBjVx3Qm0n0upWHKG9VnCRRFejGvGA/Vz0Z5GBTvQbjXqOKWS5c42kmSk2DYpWtuOsk3ZBjbn9ymdg4MKHC6OesmbV2Qq1n3R7CV3oS3a60zHS5QluamRPkWuqwabAeCBOz8TYfuh64S1lgVaBmc1gD5jUwPdwFhStc6sZPuo1Dt3BSNf6tUhLY1BXq/QNkY/RcnKe2pImnJgD1ekYp0u2fT32XDe07osRg2SiD8JM+gL9XCjGKxUaa4euieB1dLluoryyDEm1OTSj0q5Ed1JKmK9hYRQSCdsaGQu10Q3tfwQTLPXTy6CeFcMJqYPWTrG2EZ0S4/eA6Ha+6e3vagWo00ub2n+tmNHpmXBeaddjS1fjyOLS0oAV4v3S1oBwoob7/fhJ1CIzv9uRHDa/U0yVOVAkWE2rXB1wYdXzFfqXpe0EjbugD3M7PB9aSboXpasn4qxnYQNcB+2LXdQJ270A1xDTG9FxuB7X6dZhC3ngC8MDIHTYbdTB5fAhOBZo5xqo0zqXh9mL7vnJAT8NXdQBa3q4OlGnA432gl9mQsNureNkL71Xn28017kcCp0NYivt+FOPyb2OwwcOtoavfw8zxne/9TEPqWF3QFnr3X3cnjAZboarbIB6q42sFSEOxh/H/Acu9F3V66ejKeInoAv7G028Av1MPBsakZ7G6O9GnNDWx9CUc667kLQ4C12HPXT2efCFumkxBDr8KRwovechZ0ArhROEC7jwYCHisBFbtYGUsfR9XhQf0gcbAp16t/T4hCfDy0o7QmddSANjpbaC6AOlw/eAabettF2zJ+bT62S3X7kaBjr4fyDOWBFMSdeVG6HpIfIia1pd17dpZ5InenG5P+JHSJeNfppxahmTXDffEo8WIzqbhypdQ8U9NJ24t8iV1e3xjnLsWR12lfVc20BdCsWogbIy7IROTGpcjy5GndwMa3U1anlBPIkeR5UvFgs+UA586RoqcvNuup2YKPsAvorF5EaM6eo6sXMrumtZIpWmxCIoRg1QHHbwWqgBa6FyE5wKhYtlOzsdfVzM2UR2AN2XQ+3wI8VWxpTm8MJ6LGZDfx5pLNKaPAcGk1Dqh0x/L6nd/I7z/m3Q17v24/Tr6MKD1tbuwQkqV0MNyvzpofN3wRpGQ7qQjhl9pdF0W5WB9f0pGLvWW+u+7R1wARSjpkMzrLl6IFL7lqLH+P5KX49+M2ybGmcw9j74GYy9/N9hO9G2Fi+EYkSnu2udWyI9DEvgy3AadPuMWMZ/gm6+b4AfQRc0YqbLOdDFzVXp94mw+hgQbayB8+EFUKd1cg90/FbozrlmK2jQrRVGaDVMdHy3+0GSdqSLGrmUxPQr6znOXQ6F5yIVyRRx7Lcwka4DRPfoiNOO9Of3O7B2pB/dHVsFdVLkcM1F9wtOW0k9nV4ARXakabW4arjO12tpPw8HoZEbyWlr63twBYwDqAfPSc7LPPpMKW0l4sM67fa3gduTU+34KdDvYx2ZAadCHTA1XGw7/ACaj4H3dcpoB9o1jcznddB8N+LaM6evgh/CjENtDx/Ow+HkfjDaHA+YMHd3Qx8qEdfp5HTG0dU/zG8dsSrEIR9Eo+lXr9OJ5rBwjtC5b6BO58VVO51x3D7yiDM6nUjnQJpmi468i0M9SMrZq9M6aaTr6nHUOY1/nZRSeqCTy/vQdd437VGJHDBLXnJZh+uqc9Q5nmo0F8/eglvgkn8BnSXj/xVK5ikAAAAASUVORK5CYII=" class="icon" style="cursor:pointer;" align="ABSMIDDLE" title="Zoom out" onclick="ECZ(false);">
							<input id="showzoom" type="range" min="0.5" max="4.0" step="0.001" style="width:96px;" oninput="ESZ();" onchange="ESZ();">
							<img src="data:;base64,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" class="icon" style="cursor:pointer;" align="ABSMIDDLE" title="Zoom in" onclick="ECZ(true);">
							–
							<span id="backto">
								<a href="#" onclick="EBS(); return false;"><span id="backtotext">Back to me</span></a>
								–
							</span>
							Find:							<input id="findfield" style="width:8em;" onfocus="NFF();" oninput="NIF();" onclick="NIF();" autocomplete="off" placeholder="1 person">
						</div>

						<div style="position: absolute; bottom:0; left:0;">
							<img id="sidehide" src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAJZlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAARAAAAWodpAAQAAAABAAAAbAAAAAAAAABIAAAAAQAAAEgAAAABd3d3Lmlua3NjYXBlLm9yZwAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAg0Hy/AAAAAlwSFlzAAALEwAACxMBAJqcGAAAActpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+d3d3Lmlua3NjYXBlLm9yZzwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGMtVWAAAAZVJREFUWAntl01OAzEMhcv/7xXYcxpULtEdEis4AwdiyY4FLBA/l+gtABu9b5QG7E5F6EhoKkXOZN6znxNP0kwmq/92RDkye2ftydqJxjZlI7OrF2dm59ZuImA0vq0XB2ZfrX2ozTSOOD0uGIKfiwN3AZQ94LwO/mikQxE3Agd18HfDuYDLAP9tuMz8TWR38GxtX+ho+qPg1+ItNVHmHnxPbATWzpYFj3idHwA+7XXmLYJHS/YloE/mYDrF6vTJPA0+Zj6uObtUq08tLTgqud7hyuBgmlc7DrPgfBFgsYyzt7O9ssP5+zRzHB1b58Ua0+59Npko8y2RpwXP+SsHdz+3hZN76+OcDB1T/nh/aoOIdnshkIvulbnjowNEvtZjBl8CT3PQIqTQMhFg6jX59aGDQwouEwEGDraZCLIcVARZZiIQygxgx5n43zPhf73Li8haT0qKLitMipdlwEaFeSVAxIPfWYA/ieBiwiHVkdSJRHBy1vjwOZqJB2P8+dUMVdFMzARAJPjS1jPBUV5ievUJ0uR6/glUld6hVUitEAAAAABJRU5ErkJggg==" class="cornerbtn" title="Hide sidebar" onclick="ETI();">
							<img id="sideshow" src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAJZlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAARAAAAWodpAAQAAAABAAAAbAAAAAAAAABIAAAAAQAAAEgAAAABd3d3Lmlua3NjYXBlLm9yZwAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAg0Hy/AAAAAlwSFlzAAALEwAACxMBAJqcGAAAActpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+d3d3Lmlua3NjYXBlLm9yZzwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGMtVWAAAAW1JREFUWAntV0luAjEQnCyEbF/gzmsi+ERukXJK3pAH5cgtBzggCJ/gF5Aq0iVZ1rixGdAgMZZMD3ZXd7nsscdVVVVfqGvUF1SWu3+T/L22ngHsHHWC+mRtPbNFZgtv1bEhPRJK8hrgfvH8YNhbs9nmHZ4ksDG7j8SVRX6EnRmG+JCESJrrfvNpgXJJaBrugVsYliRWqMVKSLJSEsL1IxLFSlBSBTsWiWIlmpDQfHdKdEpgLe9Kp0QrSmgfUXJZtXuvqHxdW7dP6AAbGfImESFcE0v4CMfn5wSmtpkkFOwNzwpEOzREioSUYP9PgP3WoWL48zWtTkFd8vjYlsSxhGo/eBHmJE99PWm9eMnlExPf/W+SPGfk8mkl+clGrsCe7N3IL2fO+cnO4s556PCBP9zX400m9Z4rsLfgtCiZxy2ln+M6dOKLSXgnEEE3MTubXM2mwOtUDJNnj5wEFIB2zAaUlOzsU/CjXU5bvZ7/AajQ3qHL0j71AAAAAElFTkSuQmCC" class="cornerbtn" style="display:none;" title="Show sidebar" onclick="ETI();">
						</div>
						
						<div style="position: absolute; bottom:0; right:0;">
							<img id="darkmode" src="data:;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAJZlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAARAAAAWodpAAQAAAABAAAAbAAAAAAAAABIAAAAAQAAAEgAAAABd3d3Lmlua3NjYXBlLm9yZwAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAg0Hy/AAAAAlwSFlzAAALEwAACxMBAJqcGAAAActpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+d3d3Lmlua3NjYXBlLm9yZzwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGMtVWAAAAvlJREFUWAmtlymMFUEQhpcbgYKEIBDLuQYNEgwgECQES1atJcGCQi14EOAQGywBy5LFEcwSDgECQVAcCsO1wP/11P9SO/uGd0xX8k9V91TX1dX95s3MdNO29Oq45CVhVZiL+c3Bq7NNsrg1rM6KPxD+JlyUDFmnGVV64tyZzUv+JeDc/Ivk3QKEblXKzhdl2Vn/lPw7xk/Do4OMYR3mkt4IZzheC9kVuBOurBvD/swNtxAOcf4nZCrBGH5dgKzfjHo8KeUWgQzp7rsCxNywPUavKhEAmUG3G1aC6drjXaHjNTHsz87IBEa918gZnr8frqr3wKMRAfgUvIwAhm1PvJqc7deS7wIZ58bLFfA8/IgAdW1T83bMJ0ZOCjsEsuzKjHm2AX5BgGjUKnRLVsjWRy1nnmXfCe+la+ddAY8dGBU4GtqjjKFLFQ4Il2NNlfuAXzgydaPlrNuye+GH9AkE6hUEWbH/4xJVItDtwkPBVZk6CBuQrbGJO4CtOCasCLZBUKO2USobaVlTlNqXTbvsXWM37Sut9XZgnWoQ1P+IQEmk6PELN00ArHEQ9MQVwadDYqkGTgBBgYFTyYVYsFc4L9BgoyKXyjpiPT2B8bPCJWGn8En4KmCzDQLno+acsEYpDglvBYzxcpp9ZJ0DkVjsvBF/LXwQvgn0yD5hTqB/COKFUOiJnhiZtA9Yk8Fl5W3J813ykvQLcb2i1DcAO6LsVAR7BGQw9jy6fG0PSv5ccs0gHEybu0J8bRdi7yGiQZkykkF7YY0xtrFDJWaFAdHF0DUBBY5VDYfZBkk5+3nJkP2WgY/gPY0cRK1K5OZcLN6G/LHJx89BsJBy5UwmlZ01626Gc5LN/mJ6/UV0VbN2hhECGbci6KGfg1/QGOp03rxuIvN20Jg+HQ7GhjlOgCr5aPmddeGPBS4fiKt4aOblbeuRG4R7YlnAUTbeJfONyYfuacGU7XluZDQcUZedRQeFU8IJ4bCwR+CK5dR8Ft4Jz4QV4aMAueRUagP9A5HvmdN8kRfkAAAAAElFTkSuQmCC" class="cornerbtn" title="Toggle dark mode" onclick="ETD();">
						</div>
						
					</div>
				</div></div>
				
				<div id="optionsdiv" class="dright rbody" style="bottom:32px; display:none; border-top:solid #666666 1px; border-bottom:solid #666666 1px; text-align:center; overflow-x:auto;"><div id="optionsmargin" class="marginon">
					<table style="margin:4px auto;" cellpadding="4"><tbody><tr valign="top">
						<td nowrap="">
							<input id="detail_0p" type="checkbox" onchange="ECD(this);"> <label for="detail_0p">Name</label>
							<br>&nbsp; &nbsp; <input id="detail_pm" type="checkbox" onchange="ECD(this);"> <label for="detail_pm">Middle names</label>
							<br>&nbsp; &nbsp; <input id="detail_N" type="checkbox" onchange="ECD(this);"> <label for="detail_N">Nickname</label>
							<br>&nbsp; &nbsp; <input id="detail_TJ" type="checkbox" onchange="ECD(this);"> <label for="detail_TJ">Title + Suffix</label>
							<br>&nbsp; &nbsp; <input id="detail_0lq" type="checkbox" onchange="ECD(this);"> <label for="detail_0lq">Surname</label>
							<br><input id="detail_r" type="checkbox" onchange="ECD(this);"> <label for="detail_r">Photo</label>
							<br><input id="detail_age" type="checkbox" onchange="ECD(this);"> <label for="detail_age">Age</label>
							<select id="otherage" onchange="ECA();" style="display: none;">
								<option value="">now</option>
								<option value="on">on...</option>
							</select>
							<br><input id="detail_bd" type="checkbox" onchange="ECD(this);"> <label for="detail_bd">Life years</label>
						</td>
						<td nowrap="">
							<input id="detail_b" type="checkbox" onchange="ECD(this);"> <label for="detail_b">Birth date</label>
							<br><input id="detail_v" type="checkbox" onchange="ECD(this);"> <label for="detail_v">Birth place</label>
							<br><input id="detail_sm" type="checkbox" onchange="ECD(this);"> <label for="detail_sm">Marriage date</label>
							<br><input id="detail_sw" type="checkbox" onchange="ECD(this);"> <label for="detail_sw">Marriage place</label>
							<br><input id="detail_sd" type="checkbox" onchange="ECD(this);"> <label for="detail_sd">Divorce date</label>
							<br><input id="detail_d" type="checkbox" onchange="ECD(this);"> <label for="detail_d">Death date</label>
							<br><input id="detail_y" type="checkbox" onchange="ECD(this);"> <label for="detail_y">Death place</label>
							<br><input id="detail_Z" type="checkbox" onchange="ECD(this);"> <label for="detail_Z">Death cause</label>
						</td>
						<td nowrap="">
							<input id="detail_F" type="checkbox" onchange="ECD(this);"> <label for="detail_F">Burial date</label>
							<br><input id="detail_U" type="checkbox" onchange="ECD(this);"> <label for="detail_U">Burial place</label>
							<br><input id="detail_e" type="checkbox" onchange="ECD(this);"> <label for="detail_e">Email</label>
							<br><input id="detail_tku" type="checkbox" onchange="ECD(this);"> <label for="detail_tku">Telephone</label>
							<br><input id="detail_a" type="checkbox" onchange="ECD(this);"> <label for="detail_a">Address</label>
							<br><input id="detail_j" type="checkbox" onchange="ECD(this);"> <label for="detail_j">Profession</label>
							<br><input id="detail_E" type="checkbox" onchange="ECD(this);"> <label for="detail_E">Company</label>
							<br><input id="detail_I" type="checkbox" onchange="ECD(this);"> <label for="detail_I">Interests</label>
							<br><input id="detail_A" type="checkbox" onchange="ECD(this);"> <label for="detail_A">Activities</label>
						</td>
						
						<td style="padding-left:16px; padding-bottom:0; padding-right:16px; text-align:end;" nowrap="">
							<span id="backspan"><span class="cleft">Background:</span> <input id="colorback" class="cright" type="color" oninput="ECR(this);">
								<a href="#" class="creset" onclick="ERC('back', '#FFFFFF'); return false;">reset</a>
							<br></span><span class="cleft">Male box:</span> <input id="colormale" class="cright" type="color" oninput="ECR(this);">
								<a href="#" class="creset" onclick="ERC('male', '#D6DDFF'); return false;">reset</a>
							<br><span class="cleft">Female box:</span> <input id="colorfemale" class="cright" type="color" oninput="ECR(this);">
								<a href="#" class="creset" onclick="ERC('female', '#FFD6EE'); return false;">reset</a>
							<br><span class="cleft">Other box:</span> <input id="colorother" class="cright" type="color" oninput="ECR(this);">
								<a href="#" class="creset" onclick="ERC('other', '#FFFFFF'); return false;">reset</a>
							<br><span class="cleft">Living text:</span> <input id="colorliving" class="cright" type="color" oninput="ECR(this);">
								<a href="#" class="creset" onclick="ERC('living', '#000000'); return false;">reset</a>
							<br><span class="cleft">Deceased text:</span> <input id="colordeceased" class="cright" type="color" oninput="ECR(this);">
								<a href="#" class="creset" onclick="ERC('deceased', '#777777'); return false;">reset</a>
							<br><span class="cleft">Box width:</span> <input id="showwidth" type="range" min="0.5" max="2.0" step="0.001" class="cright" oninput="ECW();" onchange="ECW();">
								<a href="#" class="creset" onclick="ERW(); return false;">reset</a>
							<br><span class="cleft">Text size:</span> <input id="textsize" type="range" min="0.5" max="2.0" step="0.001" class="cright" oninput="ECT();" onchange="ECT();">
								<a href="#" class="creset" onclick="ERT(); return false;">reset</a>
						</td>
						
						<td style="text-align:end; padding-right:16px;" nowrap="">
							<span class="oleft">Surnames:</span>
							<select id="showbirthname" class="oright" onchange="ESN();" title="Which surname to display">
								<option value="0">Now</option>
								<option value="1">At birth</option>
								<option value="2">Both</option>
							</select><br><span class="oleft">Given names:</span>
							<select id="showsurnamefirst" class="oright" onchange="ESF();" title="Show given names before or after surname">
								<option value="0">Before</option>
								<option value="1">After</option>
							</select><br><span class="oleft">Left partner:</span>
							<select id="showmaleleft" class="oright" onchange="EML();" title="Left-right ordering for relationships">
								<option value="0">Female</option>
								<option value="1">Male</option>
							</select><br><label class="oleft">Parents:</label>
							<select id="showparents" class="oright" onchange="ECP();" title="Generations of ancestors to display"><option value="1">1 gen</option><option value="2">2 gens</option><option value="3">3 gens</option><option value="4">4 gens</option><option value="5">5 gens</option><option value="6">6 gens</option><option value="8">8 gens</option><option value="10">10 gens</option><option value="12">12 gens</option><option value="15">15 gens</option><option value="20">20 gens</option><option value="25">25 gens</option><option value="30">30 gens</option><option value="40">40 gens</option><option value="50">50 gens</option></select><br><span class="oleft">Children:</span>
							<select id="showchildren" class="oright" onchange="ECH();" title="Generations of descendants to display"><option value="1">1 gen</option><option value="2">2 gens</option><option value="3">3 gens</option><option value="4">4 gens</option><option value="5">5 gens</option><option value="6">6 gens</option><option value="8">8 gens</option><option value="10">10 gens</option><option value="12">12 gens</option><option value="15">15 gens</option><option value="20">20 gens</option><option value="25">25 gens</option><option value="30">30 gens</option><option value="40">40 gens</option><option value="50">50 gens</option></select><br><span class="oleft">Others:</span>
							<select id="showcousins" class="oright" onchange="ECO();" title="Generations of aunts, uncles, cousins, nephews and nieces">
								<option value="0">None</option><option value="1">1 gen</option><option value="2">2 gens</option><option value="3">3 gens</option><option value="4">4 gens</option><option value="5">5 gens</option><option value="6">6 gens</option><option value="8">8 gens</option><option value="10">10 gens</option><option value="12">12 gens</option><option value="15">15 gens</option><option value="20">20 gens</option><option value="25">25 gens</option><option value="30">30 gens</option><option value="40">40 gens</option><option value="50">50 gens</option></select>
						</td>

						<td style="text-align:end;" nowrap="">
							<p class="lright" style="text-align:center; margin-bottom:0.5em;">Connecting lines</p><span class="lleft">Current partners:</span>
							<select id="linecurrent" class="lright" onchange="ECE(this);">
								<option value="thin">Thin</option>
								<option value="medium">Medium</option>
								<option value="thick">Thick</option>
								<option value="gray">Gray</option>
								<option value="dashed">Dashed</option>
							</select><br><span class="lleft">Other partners:</span>
							<select id="lineotherpartner" class="lright" onchange="ECE(this);">
								<option value="thin">Thin</option>
								<option value="medium">Medium</option>
								<option value="thick">Thick</option>
								<option value="gray">Gray</option>
								<option value="dashed">Dashed</option>
							</select><br><span class="lleft">Parents:</span>
							<select id="linebiological" class="lright" onchange="ECE(this);">
								<option value="thin">Thin</option>
								<option value="medium">Medium</option>
								<option value="thick">Thick</option>
								<option value="gray">Gray</option>
								<option value="dashed">Dashed</option>
							</select><br><span class="lleft">Non-biological:</span>
							<select id="lineotherparent" class="lright" onchange="ECE(this);">
								<option value="thin">Thin</option>
								<option value="medium">Medium</option>
								<option value="thick">Thick</option>
								<option value="gray">Gray</option>
								<option value="dashed">Dashed</option>
							</select>
						</td>
					</tr></tbody></table>
				</div></div>

				<div id="filesdiv" class="dright rbody" style="bottom:32px; display:none; border-bottom:solid #666666 1px; top:0; overflow:auto;"><div id="filesmargin" class="marginon" style="position:relative;">
					<div style="position:absolute; top:0; height:32px; left:0; right:0;">
						<table width="100%">
							<tbody><tr>
								<td class="fboth" width="100%">
									<input id="filesfind" placeholder="Search" oninput="DIF();" style="width:100%; border:none;">
								</td>
								<td class="fboth" nowrap="">
									<span id="filesuploadfile"><input type="submit" value="Upload File" onclick="DTU('', true); return false;">&nbsp;</span>
									<input type="submit" value="Close" onclick="ETF(); return false;">
								</td>
							</tr>
						</tbody></table>
					</div>
					<div style="position:absolute; top:32px; bottom:24px; left:0; right:0; overflow-y:auto;">
						<table id="filestable" width="100%">
							<tbody><tr id="filesheader">
								<th class="fname"><a href="#" onclick="DCT('n', false); return false;" title="Sort by name">Name</a> <span id="filessortn"></span></th>
								<th class="fdesc">Description</th>
								<th class="fattach"><a href="#" onclick="DCT('a', false); return false;" title="Sort by attached person">Attached to</a> <span id="filessorta"></span></th>
								<th class="ftype"><a href="#" onclick="DCT('t', false); return false;" title="Sort by type">Type</a> <span id="filessortt"></span></th>
								<th class="fsize"><a href="#" onclick="DCT('s', true); return false;" title="Sort by size">Size</a> <span id="filessorts"></span></th>
								<th class="fuploaded"><a href="#" onclick="DCT('u', true); return false;" title="Sort by uploaded date">Uploaded</a> <span id="filessortu"></span></th>
								<th class="fbuttons"></th>
							</tr>
							</tbody><tbody id="filesrows">
							</tbody>
						</table>
					</div>
					<div id="filesstatus" style="position:absolute; bottom:0; height:24px; left:0; right:0; line-height:24px; vertical-align:middle; text-align:center; font-style:italic; font-size:14px;"></div>
				</div></div>
				
				<div id="usersdiv" class="dright rbody" style="bottom:32px; display:none; border-bottom:solid #666666 1px; top:0; overflow:auto;"><div id="usersmargin" class="marginon" style="position:relative;"><iframe id="usersframe" class="fullsize" frameborder="0" scrolling="auto"></iframe></div></div>
				
				<div id="findlist" class="slist" style="position:absolute; bottom:33px; height:20em; width:16em; padding:2px 0; border:1px solid black; display:none; overflow-x:hidden; overflow-y:auto;"></div>
				
				<div id="welcomediv" style="position:absolute; width:100%; top:16px;"><div id="welcomemargin" class="marginon"><center>

				<table class="mbody" style="margin:8px;" cellspacing="6">
					<tbody><tr><td style="font-size:18px; font-weight:bold;" align="center"><span style="float:right; font-size:14px;"><a href="#" onclick="EHW(); return false;" style="text-decoration:none;">✕</a></span>&nbsp; Welcome to Family Echo!</td></tr>


					<tr><td align="center">Start your family tree by entering your name on the left.</td></tr>
					<tr><td align="center">Then add parents, children, partners, siblings and more.</td></tr>
					<tr><td align="center">You can also <a href="#" onclick="ESM('import'); return false;">import</a> from GEDCOM or FamilyScript format.</td></tr>
					<tr><td align="center"><a href="#" onclick="GE('do_signin').click(); return false;">Sign in</a> to save and share your family and add photos.</td></tr>


					<tr><td align="center">Information is <a href="?page=policies" target="_new" onclick="return UL(this);">private</a> and only shown to invited family members.</td></tr>
					<tr><td align="center">Family Echo is provided as a free service, we hope you enjoy it!</td></tr>
				</tbody></table>
				</center></div></div>
				
				<div id="fileviewdiv" class="dright" style="top:0px; height:100%; display:none;">
					<div id="fileviewmargin" class="marginon" style="background-color:white; position:relative;">
						<div style="position:absolute; left:0; right:0; top:0; height:35px; padding:0 8px; font-size:16px; line-height:36px; border-bottom:1px solid #999; overflow:hidden;">
							<span id="fileviewname" style="font-weight:bold;"></span>
							–
							<span id="fileviewmeta"></span>
							–
							<span id="fileviewdate"></span>
						</div>
						<div style="position:absolute; inset-inline-end:0; top:0; height:35px; padding:0 8px; line-height:36px; text-align:end;">
							&nbsp;<input type="submit" value="Close" onclick="DHV(); return false;">
						</div>
						<div style="position:absolute; left:0; right:0; top:36px; bottom:0;">
							<iframe id="fileviewiframe" class="fullsize" frameborder="0" scrolling="auto"></iframe>
						</div>
						<div id="fileviewinline" style="display:flex; align-items:center; justify-content:center; position:absolute; left:8px; right:8px; top:40px; bottom:8px;">
							<img id="fileviewimage" style="max-width:100%; max-height:100%;">
							<audio id="fileviewaudio" controls="">
						</audio></div>
					</div>
				</div>

				<div id="leftdiv" class="dleft lbody" style="">

					<table width="100%" height="100%" cellspacing="0" cellpadding="6"><form onsubmit="return false;"></form>

					<tbody><tr valign="top"><td align="center">
			
						<span id="nametitle" class="sdefname">Me</span><br>
						<img class="blankpixel" width="1" height="6"><br>
			
						<img id="personimage" class="simage" style="display:none; margin-bottom:6px;" onclick="SIC(); return false;"><br>

						<div id="nonrelations" style="display: inline; margin-top: 6px;">
			
						<div id="nonediting" style="display: none;">
							<iframe id="uploadiframe" class="simage" style="display:none; margin-top:6px; width:auto; height:120px;" scrolling="no" frameborder="0"></iframe>
							<input id="uploadbutton" type="submit" value="Add my photo" class="sbutton" style="display:none; margin-top:6px;" onclick="SIC(); return false;">
							
							<input id="showpath" type="submit" class="sbutton" style="display:none; margin-top:6px;" onclick="ESM('path'); return false;">
							<input id="hideurl" type="submit" value="Back to family tree" class="sbutton" style="display:none; margin-top:6px;" onclick="ESM('view'); return false;">
							<input id="showurl" type="submit" class="sbutton" style="display:none; margin-top:6px;" onclick="return UL(GE('urllink'));"><input id="urlmode" type="hidden" value=""><a href="#" id="urllink" style="display:none;"></a>
							<input id="shareperson" type="submit" value="Invite Me to share family" class="sbutton" style="display:none; margin-top:6px;" onclick="ESM('share'); return false;">
						</div>
		
						<table width="100%" cellspacing="0" cellpadding="0" style="margin-top:12px;">
							<tbody><tr>
								<td align="center" id="switchpanel0" class="sswitched">
									<a href="#" onmousedown="SWA(0); return false;" onclick="return false;" id="switchlink0" class="sswitchedlink">Personal</a>
								</td>
								<td align="center" id="switchpanel3" class="sswitch" style="display: none;">
									<a href="#" onmousedown="SWA(3); return false;" onclick="return false;" id="switchlink3" class="">Partners</a>
								</td>
								<td align="center" id="switchpanel1" class="sswitch">
									<a href="#" onmousedown="SWA(1); return false;" onclick="return false;" id="switchlink1" class="">Contact</a>
								</td>
								<td align="center" id="switchpanel2" class="sswitch">
									<a href="#" onmousedown="SWA(2); return false;" onclick="return false;" id="switchlink2" class="">Biography</a>
								</td>
								<td align="center" id="switchpanel4" class="sswitch" style="display: none;">
									<a href="#" onmousedown="SWA(4); return false;" onclick="return false;" id="switchlink4" class="">Files</a>
								</td>
							</tr>
						</tbody></table>
			
						<table width="100%" cellspacing="0" cellpadding="0" class="spanel">
							<tbody><tr><td><img class="blankpixel" width="1" height="6"></td></tr>
				
							</tbody><tbody id="personalview" class="hiderows">
							</tbody>
				
							<tbody id="personaledit1" class="showrows">
								<tr>
									<td class="sleft">
										Given names:
									</td>
									<td class="sright">
										<input id="personalname" class="sfieldexpand" onchange="SCV('personalname');">
										<span id="nameexpand" style="display: inline;"> <a href="#" class="sdatelink" onclick="SEN()" title="Show more name options">►</a></span>
									</td>
								</tr>
							</tbody>
							<tbody id="nameexpandedit" class="hiderows">
								<tr>
									<td class="sleft">
										Nickname:
									</td>
									<td class="sright">
										<input id="nickname" class="sfield" onchange="SCV('nickname');">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Title:
									</td>
									<td class="sright">
										<input id="title" class="sfield" style="width:64px;" onchange="SCV('title');">
										<span style="float:end;">Suffix:
										<input id="suffix" class="sfield" style="width:64px;" onchange="SCV('suffix');"></span>
									</td>
								</tr>
							</tbody>
							<tbody id="personaledit2" class="showrows">
								<tr>
									<td class="sleft">
										Surname now:
									</td>
									<td class="sright">
										<input id="familyname" class="sfield" onchange="SCV('familyname');">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Surname at birth:
									</td>
									<td class="sright">
										<input id="familybirth" class="sfield" onchange="SCV('familybirth');" onfocus="SFV('familybirth');">
									</td>
								</tr>
								<tr>
									<td class="sleft" valign="baseline">
										Gender:
									</td>
									<td class="sright" valign="baseline">
										<div style="margin-top:2px; vertical-align:middle;">
											<input type="radio" name="gender" id="gender_f" onclick="SSG('f');" style="margin-right:4px;"><label for="gender_f">Female</label>&nbsp;<input type="radio" name="gender" id="gender_m" onclick="SSG('m');" style="margin-right:4px;"><label for="gender_m">Male</label>&nbsp;<input type="radio" name="gender" id="gender_o" onclick="SCV('othergender'); FS('othergender');" style="margin-right:4px;"><label for="gender_o">Other:</label>
										</div>
										<div id="othergenderdiv" style="margin-top:4px; display:none;">
											<input id="othergender" class="sfield" onchange="SCV('othergender');">
										</div>
									</td>
								</tr>
								<tr>
									<td class="sleft" valign="baseline">
										Birth date:
									</td>
									<td class="sright" valign="baseline" id="birthdate"><span id="birthoptions" style="display:none;"><select id="birthvariant" class="sselect" onchange="SCV('birth');"><option value="">Known date</option><option value="app">Approximate</option><option value="bef">Before</option><option value="aft">After</option><option value="bet">Date range</option></select>&nbsp;<span title="Before the Common Era (BC)"><input id="birthbce" type="checkbox" onclick="SCV('birth');"><label for="birthbce">BCE</label></span><br></span><select id="birthdom1" class="sselect" title="Day" onchange="SCV('birth');"><option value="0"></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>&nbsp;<select id="birthmonth1" class="sselect" title="Month" onchange="SCV('birth');"><option value="0"></option><option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4">Apr</option><option value="5">May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option></select>&nbsp;<input id="birthyear1" class="syear" title="Year" onchange="SCV('birth');" maxlength="4"><span id="birthexpand" style="display: inline;"> <a href="#" class="sdatelink" onclick="SDR('birth')" title="Show more date options">►</a></span><span id="birthdate2" style="display:none;"> to<br><select id="birthdom2" class="sselect" title="Day" onchange="SCV('birth');"><option value="0"></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>&nbsp;<select id="birthmonth2" class="sselect" title="Month" onchange="SCV('birth');"><option value="0"></option><option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4">Apr</option><option value="5">May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option></select>&nbsp;<input id="birthyear2" class="syear" title="Year" onchange="SCV('birth');" maxlength="4"> <a href="#" class="sdatelink" onclick="SWR('birth')" title="Swap two dates" style="font-weight:bold;">⇅</a></span></td>
								</tr>
								<tr>
									<td class="sleft">
									</td>
									<td class="sright">
										<div style="margin:2px 0px;">
											<input type="checkbox" id="alive" onclick="SCV('alive');">
											<label for="alive">This person is living</label>
										</div>
									</td>
								</tr>
							</tbody>
							<tbody id="personaleditdeath" class="hiderows">
								<tr>
									<td class="sleft" valign="baseline">
										Death date:
									</td>
									<td class="sright" valign="baseline" id="deathdate"><span id="deathoptions" style="display:none;"><select id="deathvariant" class="sselect" onchange="SCV('death');"><option value="">Known date</option><option value="app">Approximate</option><option value="bef">Before</option><option value="aft">After</option><option value="bet">Date range</option></select>&nbsp;<span title="Before the Common Era (BC)"><input id="deathbce" type="checkbox" onclick="SCV('death');"><label for="deathbce">BCE</label></span><br></span><select id="deathdom1" class="sselect" title="Day" onchange="SCV('death');"><option value="0"></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>&nbsp;<select id="deathmonth1" class="sselect" title="Month" onchange="SCV('death');"><option value="0"></option><option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4">Apr</option><option value="5">May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option></select>&nbsp;<input id="deathyear1" class="syear" title="Year" onchange="SCV('death');" maxlength="4"><span id="deathexpand" style="display: inline;"> <a href="#" class="sdatelink" onclick="SDR('death')" title="Show more date options">►</a></span><span id="deathdate2" style="display:none;"> to<br><select id="deathdom2" class="sselect" title="Day" onchange="SCV('death');"><option value="0"></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>&nbsp;<select id="deathmonth2" class="sselect" title="Month" onchange="SCV('death');"><option value="0"></option><option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4">Apr</option><option value="5">May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option></select>&nbsp;<input id="deathyear2" class="syear" title="Year" onchange="SCV('death');" maxlength="4"> <a href="#" class="sdatelink" onclick="SWR('death')" title="Swap two dates" style="font-weight:bold;">⇅</a></span></td>
								</tr>
							</tbody>
				
							<tbody id="partnersviewedit" class="hiderows">
							</tbody>
				
							<tbody id="contactview" class="hiderows">
							</tbody>

							<tbody id="contactedit" class="hiderows">
								<tr>
									<td class="sleft">
										Email:
									</td>
									<td class="sright">
										<input id="c_email" class="sfield" onchange="SCV('c_email');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Website:
									</td>
									<td class="sright">
										<input id="website" class="sfield" onchange="SCV('website');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Blog:
									</td>
									<td class="sright">
										<input id="blog" class="sfield" onchange="SCV('blog');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Photo site:
									</td>
									<td class="sright">
										<input id="photosite" class="sfield" onchange="SCV('photosite');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Home tel:
									</td>
									<td class="sright">
										<input id="hometel" class="sfield" onchange="SCV('hometel');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Work tel:
									</td>
									<td class="sright">
										<input id="worktel" class="sfield" onchange="SCV('worktel');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Mobile:
									</td>
									<td class="sright">
										<input id="mobile" class="sfield" onchange="SCV('mobile');" dir="ltr">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Address:
									</td>
									<td class="sright">
										<textarea id="address" class="sfield" rows="3" onchange="SCV('address');"></textarea>
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Other:
									</td>
									<td class="sright">
										<input id="othercontact" class="sfield" onchange="SCV('othercontact');">
									</td>
								</tr>
							</tbody>

							<tbody id="contacteditskype" class="hiderows">
								<tr>
									<td class="sleft">
										Skype:
									</td>
									<td class="sright">
										<input id="skype" class="sfield" onchange="SCV('skype');">
									</td>
								</tr>
							</tbody>
							
							<tbody id="bioview" class="hiderows">
							</tbody>

							<tbody id="bioedit1" class="hiderows">
								<tr>
									<td class="sleft">
										Birth place:
									</td>
									<td class="sright">
										<input id="birthplace" class="sfield" onchange="SCV('birthplace');">
									</td>
								</tr>
							</tbody>

							<tbody id="bioeditdeath" class="hiderows">
								<tr>
									<td class="sleft">
										Death place:
									</td>
									<td class="sright">
										<input id="deathplace" class="sfield" onchange="SCV('deathplace');">
									</td>
								</tr>

								<tr>
									<td class="sleft">
										Cause of death:
									</td>
									<td class="sright">
										<input id="deathcause" class="sfield" onchange="SCV('deathcause');">
									</td>
								</tr>

								<tr>
									<td class="sleft">
										Burial place:
									</td>
									<td class="sright">
										<input id="burialplace" class="sfield" onchange="SCV('burialplace');">
									</td>
								</tr>

								<tr>
									<td class="sleft" valign="baseline">
										Burial date:
									</td>
									<td class="sright" valign="baseline" id="burialdate">
									</td>
								</tr>
							</tbody>

							<tbody id="bioedit2" class="hiderows">
								<tr>
									<td class="sleft">
										Profession:
									</td>
									<td class="sright">
										<input id="profession" class="sfield" onchange="SCV('profession');">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Company:
									</td>
									<td class="sright">
										<input id="employer" class="sfield" onchange="SCV('employer');">
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Interests:
									</td>
									<td class="sright">
										<textarea id="interests" class="sfield" rows="3" onchange="SCV('interests');"></textarea>
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Activities:
									</td>
									<td class="sright">
										<textarea id="activities" class="sfield" rows="3" onchange="SCV('activities');"></textarea>
									</td>
								</tr>
								<tr>
									<td class="sleft">
										Bio notes:
									</td>
									<td class="sright">
										<textarea id="bionotes" class="sfield" rows="4" onchange="SCV('bionotes');"></textarea>
									</td>
								</tr>
							</tbody>							

							<tbody id="filesview" class="hiderows">
							</tbody>

							<tbody id="filesview2" class="hiderows">
								<tr><td><img class="blankpixel" width="1" height="6"></td></tr>
								<tr>
									<td class="sboth" colspan="2">
										<span id="sideuploadfile"><input type="submit" value="Upload a file" class="sbutton2" onclick="DTU(Spe, true); return false;">
										&nbsp;</span>
										<input type="submit" value="Show all files" class="sbutton2" onclick="ETF(); return false;">
									</td>
								</tr>
							</tbody>

							
							<tbody id="viewfooter" class="hiderows">
								<tr><td><img class="blankpixel" width="1" height="6"></td></tr>
								<tr>
									<td class="sboth" colspan="2">
										<input type="submit" id="editbutton" value="Edit my details" class="sbutton" onclick="SED(); return false;">
									</td>
								</tr>
							</tbody>
				
							<tbody id="editfooter" class="showrows">
								<tr><td><img class="blankpixel" width="1" height="12"></td></tr>
								<tr>
									<td class="sboth" colspan="2">
										You can also add or change details later.									</td>
								</tr>
								<tr><td><img class="blankpixel" width="1" height="6"></td></tr>
								<tr>
									<td class="sboth" colspan="2">
										<input type="submit" value="OK" class="sbutton2" onclick="SAS(); return false;">
										&nbsp;
										<input type="submit" value="Cancel" class="sbutton2" onclick="SCS(); return false;">
									</td>
								</tr>
							</tbody>
				
							<tbody><tr><td><img class="blankpixel" width="1" height="6"></td></tr>
						</tbody></table>
			
						</div>

						<table width="100%" cellspacing="0" cellpadding="0">
							<tbody><tr><td><img class="blankpixel" width="1" height="12"></td></tr>
			
							</tbody><tbody id="readonlyfooter" class="hiderows">
								<tr>
									<td class="sboth" colspan="2">
										You are not currently permitted to edit this family.									</td>
								</tr>
								<tr><td><img class="blankpixel" width="1" height="12"></td></tr>
							</tbody>

							<tbody id="writemefooter" class="hiderows">
								<tr>
									<td class="sboth" colspan="2">
										<a href="#" onclick="GE('do_signin').click(); return false;">Sign in</a> to add more people to this family.									</td>
								</tr>
								<tr><td><img class="blankpixel" width="1" height="12"></td></tr>
							</tbody>

							<tbody id="writenotfooter" class="hiderows">
								<tr>
									<td class="sboth" colspan="2">
										<a href="#" onclick="GE('do_signin').click(); return false;">Sign in</a> to edit these details or add new people.									</td>
								</tr>
								<tr><td><img class="blankpixel" width="1" height="12"></td></tr>
							</tbody>
				
							<tbody id="relactions" class="hiderows">
							</tbody>
						</table>
			
					</td></tr>
			
					<tr valign="bottom"><td align="center">
						<table width="100%" cellspacing="0" cellpadding="0">
							<tbody id="importfooter" class="showrows">
								<tr>
									<td class="sboth" colspan="2">
										<input type="submit" value="Import GEDCOM or FamilyScript..." class="sbutton" onclick="ESM('import'); return false;">
									</td>
								</tr>
							</tbody>
							<tbody id="clearfooter" class="hiderows">
								<tr>
									<td class="sboth" colspan="2">
										<input type="submit" value="Clear family and start over..." class="sbutton" onclick="SCC(); return false;">
									</td>
								</tr>
							</tbody>
						</table>
					</td></tr>
		
					</tbody></table>

				</div>

				<div id="pathdiv" class="dleft lbody" style="text-align:center; display:none;">
					<div style="padding:6px;">
						<div id="pathtitle" class="sname" style="margin-bottom:12px;"></div>
						<select id="pathstartid" class="sfield" onchange="SSS();"></select>
						<div id="pathcontent" style="margin-bottom:12px;"></div>
						<!--<INPUT TYPE="checkbox" ID="pathmarried" VALUE="1" CHECKED onChange="STM();">
						<LABEL FOR="pathmarried">Include partner relationships</LABEL>-->
						<input type="submit" value="Done" class="sbutton" style="margin-top:12px;" onclick="ESM('view'); return false;">
					</div>
				</div>
				
				<div id="caltimediv" class="dleft lbody" style="display:none;">
					<input type="submit" value="Done" style="position:absolute; right:6px; top:6px;" onclick="ESM('view'); return false;">
					<h2 style="margin:6px; text-align:center;">
						<span id="showcalendar">Calendar / <a href="#" onclick="ESM('timeline'); return false;">Timeline</a></span>
						<span id="showtimeline"><a href="#" onclick="ESM('calendar'); return false;">Calendar</a> / Timeline</span>
					</h2>
					<div id="caltimecontent" class="bordertop" style="position:absolute; top:32px; bottom:8px; left:0; right:0; overflow:scroll;"></div>
				</div>
				
				<div id="extradiv" class="dleft lbody" style="visibility:hidden;"><iframe id="extraframe" class="fullsize" frameborder="0" scrolling="auto"></iframe></div>
				
				<div id="uploaddiv" class="dright" style="position:absolute; top:0; bottom:0; display:none; background:rgba(0,0,0,0.5); justify-content:center; align-items:center;">
					<div class="rbody" style="padding:16px; border:1px solid #999; max-height:80%; overflow-y:auto;">
						<table>
							<tbody><tr>
								<td colspan="2" style="text-align:center; font-size:18px; font-weight:bold; padding-bottom:12px;">Upload File</td>
							</tr>
							<tr>
								<td class="uleft">File:</td>
								<td style="width:320px; display:flex; align-items:center;"><input id="uploadfile" type="file" style="flex:1;" onchange="DUC();"><span style="flex:0; white-space:nowrap; font-size:11px;">(maximum <span id="uploadmax">12345</span>)</span></td>
							</tr>
							<tr>
								<td class="uleft">Name:</td>
								<td><input id="uploadname" type="text" style="width:100%;"></td>
							</tr>
							<tr>
								<td class="uleft">Description:</td>
								<td><textarea id="uploaddesc" type="text" rows="4" style="width:100%;"></textarea></td>
							</tr>
							<tr>
								<td class="uleft">Attach to:</td>
								<td>
									<table cellspacing="0" cellpadding="0" style="width:100%;">
										<tbody id="uploadattachrows">
										</tbody>
									</table>
								</td>
							</tr>
							<tr>
								<td></td>
								<td>
									<input type="submit" value="Upload File" onclick="DCU(); return false;">
									&nbsp;
									<input type="submit" value="Cancel" onclick="DTU(); return false;">
								</td>
							</tr>
						</tbody></table>
					</div>
				</div>
				
				<textarea readonly="" id="exporttext" class="rbody" style="top:0px; height:100%; width:100%; position:absolute; display:none; border:0; padding:0.5em; font-family:monospace;"></textarea>
				
			</div>

		</td></tr>

			<tr height="8">
				<td style="border-top:solid #666666 1px; padding:8px;" valign="middle">
					<div style="float:left;">
						<span id="lfooterlinks">
							<a href="./?page=about" target="_new" onclick="return UL(this);" title="About Family Echo">About</a>
							&nbsp; &nbsp;
							<a href="./?page=faqs" target="_new" onclick="return UL(this);" title="Frequently Asked Questions">FAQs</a>
							&nbsp; &nbsp;
							<a href="./?page=api" target="_new" onclick="return UL(this);" title="Family Tree API">API</a>
							&nbsp; &nbsp;
							<a href="http://www.magicbabynames.com/" target="_new" onclick="return UL(this);" title="Baby Names from Family Trees">Baby Names</a>
							&nbsp; &nbsp;
							<a href="./?page=resources" target="_new" onclick="return UL(this);" title="Genealogy Links and Information">Resources</a>
							&nbsp; &nbsp;
							<a href="./?page=terms" target="_new" onclick="return UL(this);" title="Terms of Use Agreement">Terms</a>
							/
							<a href="./?page=policies" target="_new" onclick="return UL(this);" title="Privacy and Download Policies">Data Policies</a>
							&nbsp; &nbsp;
							<a href="http://answers.familyecho.com/" target="_blank" title="Family Echo Questions and Answers">Help Forum</a>
							&nbsp; &nbsp;
							<a href="./?page=feedback" target="_new" onclick="return UL(this);" title="How can we improve Family Echo?">Send Feedback</a>
						</span>
					</div>
					<div style="float:right;">
						© Familiality 2007-2024 - All rights reserved						<span id="footerlang" style="display: inline;">
							–
							<a href="#" onclick="LC(); return false;"><img src="data:;base64,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"><b><span id="currentlang">English</span></b></a>
						</span>
						<div id="langoverlay" style="display:none;"><div id="langcontent"></div></div>
					</div>
				</td>
			</tr>
		</tbody></table>

<!-- Google tag (gtag.js) -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-QH3QN8NLMJ"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-QH3QN8NLMJ', {'lang' : 'en'});
</script>


	


<iframe src="https://gum.criteo.com/syncframe?origin=publishertag&amp;topUrl=familyecho.com#{&quot;lwid&quot;:{&quot;origin&quot;:0},&quot;bundle&quot;:{&quot;origin&quot;:0},&quot;optout&quot;:{&quot;value&quot;:false,&quot;origin&quot;:0},&quot;tld&quot;:&quot;familyecho.com&quot;,&quot;topUrl&quot;:&quot;familyecho.com&quot;,&quot;version&quot;:159,&quot;cw&quot;:true,&quot;lsw&quot;:true,&quot;origin&quot;:&quot;publishertag&quot;,&quot;requestId&quot;:&quot;0.08368826570599341&quot;}" width="0" height="0" frameborder="0" sandbox="allow-scripts allow-same-origin" aria-hidden="true" title="Criteo GUM iframe" style="border-width: 0px; margin: 0px; display: none;"></iframe></body><iframe sandbox="allow-scripts allow-same-origin" id="196773741c8c955" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://ads.yieldmo.com/pbcas?us_privacy=&amp;gdpr=0&amp;gdpr_consent=&amp;type=iframe">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="20a7f9bf77dddf3" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://ads.pubmatic.com/AdServer/js/user_sync.html?kdntuid=1&amp;p=157369">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="21d3d6f826b8a64" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://sdk.streamrail.com/cs-config/cs.html?org=640896782563760001e2b39e&amp;tc=64634afa624941000166cbff&amp;as=64634afa624941000166cc01&amp;type=hb&amp;wd=cs.yellowblue.io&amp;domain=familyecho.com&amp;gdpr=1&amp;gdpr_consent=">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="2255fa4243aa7e6" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://prebid.a-mo.net/isyn?gdpr_consent=&amp;gdpr=0&amp;us_privacy=&amp;gpp=&amp;gpp_sid=">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="23db6244ba9d7bb" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://acdn.adnxs.com/dmp/async_usersync.html">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="240bb86b0a40551" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://onetag-sys.com/usync/?cb=1732557537678">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="25c76c2a2f6cdbe" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://js-sec.indexww.com/um/ixmatch.html">
    </iframe></html>