DIR : /home/kozerus/public_html/koblobs.html
/home/kozerus/public_html
<html>
<head>
<title>index.html 20200806_2100 -= k9grid k98 to k96 =-</title>
<!--
<title>all rights reserved konet llc jkwii 20200807</title>
-->
<script id="script_title">
var kolists = '';
kolists['blob_img_default'] = '/imgs/links/gazibo.png';
kolists['blob_imgs'] =
`/fb/jtfdc/imgs/tn_jtfdc_sawhorse.png
/imgs/links/gazibo.png
/fb/jtfdc/imgs/tn_jtfdc_sawhorse_300.png
/imgs/links/gazibo.png
/fb/jtfdc/imgs/tn_jtfdc_sawhorse_200.png
/imgs/links/gazibo.png
/fb/jtfdc/imgs/tn_jtfdc_sawhorse_100.png
/imgs/links/gazibo.png
/imgs/links/gazibo.png`;
img_fan = new Image();
img_fan.src="/imgs/btn/btn_fan01.png";
img_gazibo = new Image();
img_gazibo.src="/imgs/links/gazibo.png";
img_sawhorse = new Image();
img_sawhorse.src ="/fb/jtfdc/imgs/tn_jtfdc_sawhorse.png";
kolists['titles']=`
<title>index.html 20200804_1630 -= blob_jtfdc_img =-</title>
<title>blob.html 20200418_0900 blobsallad</title>
<title>blob.html 20200418_0400</title>`;
</script>
<script id="script_titles">
function titles(args) {
alert( "BUGS_300 args="+args );
alert( "MSG_300 titles kolist_titles="+kolists['titles'];
return(args);
}
</script>
<script id="script_titles1">
function titles1(args) {
alert( "BUGS_301 args="+args );
alert( "MSG_301 titles kolist_titles="+kolists['titles'];
return(args);
}
</script>
<script id="script_blob_log" type="text/javascript">
function log(msg) {
var textArea;
textArea = document.getElementById("logArea");
textArea.value = msg + "\n" + textArea.value;
}
function clearLog() {
var textArea;
textArea = document.getElementById("logArea");
textArea.value = "";
}
</script>
<!-- <script type="text/javascript" src="blobsallad.js"> </script> -->
<!-- <script type="text/javascript" src="blob.js"> </script> -->
<script id="script_blob">
function Vector(x, y) {
this.x = x;
this.y = y;
this.equal = function(v) {
return this.x == v.getX() && this.y == v.getY();
}
this.getX = function() {
return this.x;
}
this.getY = function() {
return this.y;
}
this.setX = function(x) {
this.x = x;
}
this.setY = function(y) {
this.y = y;
}
this.addX = function(x) {
this.x += x;
}
this.addY = function(y) { this.y += y; }
this.set = function(v) {
this.x = v.getX();
this.y = v.getY();
}
this.add = function(v) {
this.x += v.getX();
this.y += v.getY();
}
this.sub = function(v) {
this.x -= v.getX();
this.y -= v.getY();
}
this.dotProd = function(v) {
return this.x * v.getX() + this.y * v.getY();
}
this.length = function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
this.scale = function(scaleFactor) {
this.x *= scaleFactor;
this.y *= scaleFactor;
}
this.toString = function() {
return " X: " + this.x + " Y: " + this.y;
}
}
function Environment(x, y, w, h) {
this.left = x;
this.right = x + w;
this.top = y;
this.buttom = y + h;
this.r = new Vector(0.0, 0.0);
this.collision = function(curPos, prevPos) {
var collide = false;
var i;
if(curPos.getX() < this.left) {
curPos.setX(this.left);
collide = true;
}
else if(curPos.getX() > this.right) {
curPos.setX(this.right);
collide = true;
}
if(curPos.getY() < this.top) {
curPos.setY(this.top);
collide = true;
}
else if(curPos.getY() > this.buttom)
{
curPos.setY(this.buttom);
collide = true;
}
return collide;
}
this.draw = function(ctx, scaleFactor) {}
}
function PointMass(cx, cy, mass) {
this.cur = new Vector(cx, cy);
this.prev = new Vector(cx, cy);
this.mass = mass;
this.force = new Vector(0.0, 0.0);
this.result = new Vector(0.0, 0.0);
this.friction = 0.01;
this.getXPos = function() {
return this.cur.getX();
}
this.getYPos = function() {
return this.cur.getY();
}
this.getPos = function() {
return this.cur;
}
this.getXPrevPos = function() {
return this.prev.getX();
}
this.getYPrevPos = function() {return this.prev.getY(); }
this.getPrevPos = function() {return this.prev; }
this.addXPos = function(dx) {this.cur.addX(dx); }
this.addYPos = function(dy) {this.cur.addY(dy); }
this.setForce = function(force) {this.force.set(force); }
this.addForce = function(force) {this.force.add(force); }
this.getMass = function() {return this.mass; }
this.setMass = function(mass) {this.mass = mass; }
this.move = function(dt) {
var t, a, c, dtdt;
dtdt = dt * dt;
a = this.force.getX() / this.mass;
c = this.cur.getX();
t = (2.0 - this.friction) * c - (1.0 - this.friction) * this.prev.getX() + a * dtdt;
this.prev.setX(c);
this.cur.setX(t);
a = this.force.getY() / this.mass;
c = this.cur.getY();
t = (2.0 - this.friction) * c - (1.0 - this.friction) * this.prev.getY() + a * dtdt;
this.prev.setY(c);
this.cur.setY(t);
}
this.setFriction = function(friction) {this.friction = friction; }
this.getVelocity = function() {
var cXpX, cYpY;
cXpX = this.cur.getX() - this.prev.getX();
cYpY = this.cur.getY() - this.prev.getY();
return cXpX * cXpX + cYpY * cYpY;
}
this.draw = function(ctx, scaleFactor) {
ctx.lineWidth = 2;
// ctx.fillStyle = '#000000';
// ctx.strokeStyle = '#000000';
ctx.fillStyle = 'white';
ctx.strokeStyle = 'black';
ctx.beginPath();
ctx.arc(this.cur.getX() * scaleFactor,
nthis.cur.getY() * scaleFactor,
4.0, 0.0, Math.PI * 2.0, true);
ctx.fill();
}
}
function ConstraintY(pointMass, y, shortConst, longConst) {
this.pointMass = pointMass;
this.y = y;
this.delta = new Vector(0.0, 0.0);
this.shortConst = shortConst;
this.longConst = longConst;
this.sc = function() {
var dist;
dist = Math.abs(this.pointMass.getYPos() - this.y);
this.delta.setY(-dist);
if(this.shortConst != 0.0 && dist < this.shortConst) {
var scaleFactor;
scaleFactor = this.shortConst / dist;
this.delta.scale(scaleFactor);
pointMass.getPos().sub(this.delta);
}
else if(this.longConst != 0.0 && dist > this.longConst)
{
var scaleFactor;
scaleFactor = this.longConst / dist;
this.delta.scale(scaleFactor);
pointMass.getPos().sub(this.delta);
}
}
}
function Joint(pointMassA, pointMassB, shortConst, longConst)
{
this.pointMassA = pointMassA;
this.pointMassB = pointMassB;
this.delta = new Vector(0.0, 0.0);
this.pointMassAPos = pointMassA.getPos();
this.pointMassBPos = pointMassB.getPos();
this.delta.set(this.pointMassBPos);
this.delta.sub(this.pointMassAPos);
this.shortConst = this.delta.length() * shortConst;
this.longConst = this.delta.length() * longConst;
this.scSquared = this.shortConst * this.shortConst;
this.lcSquared = this.longConst * this.longConst;
this.setDist = function(shortConst, longConst)
{
this.shortConst = shortConst;
this.longConst = longConst;
this.scSquared = this.shortConst * this.shortConst;
this.lcSquared = this.longConst * this.longConst;
}
this.scale = function(scaleFactor)
{
this.shortConst = this.shortConst * scaleFactor;
this.longConst = this.longConst * scaleFactor;
this.scSquared = this.shortConst * this.shortConst;
this.lcSquared = this.longConst * this.longConst;
}
this.sc = function()
{
this.delta.set(this.pointMassBPos);
this.delta.sub(this.pointMassAPos);
var dp = this.delta.dotProd(this.delta);
if(this.shortConst != 0.0 && dp < this.scSquared)
{
var scaleFactor;
scaleFactor = this.scSquared / (dp + this.scSquared) - 0.5;
this.delta.scale(scaleFactor);
this.pointMassAPos.sub(this.delta);
this.pointMassBPos.add(this.delta);
}
else if(this.longConst != 0.0 && dp > this.lcSquared)
{
var scaleFactor;
scaleFactor = this.lcSquared / (dp + this.lcSquared) - 0.5;
this.delta.scale(scaleFactor);
this.pointMassAPos.sub(this.delta);
this.pointMassBPos.add(this.delta);
}
}
}
function Stick(pointMassA, pointMassB)
{
function pointMassDist(pointMassA, pointMassB)
{
var aXbX, aYbY;
aXbX = pointMassA.getXPos() - pointMassB.getXPos();
aYbY = pointMassA.getYPos() - pointMassB.getYPos();
return Math.sqrt(aXbX * aXbX + aYbY * aYbY);
}
this.length = pointMassDist(pointMassA, pointMassB);
this.lengthSquared = this.length * this.length;
this.pointMassA = pointMassA;
this.pointMassB = pointMassB;
this.delta = new Vector(0.0, 0.0);
this.getPointMassA = function()
{
return this.pointMassA;
}
this.getPointMassB = function()
{
return this.pointMassB;
}
this.scale = function(scaleFactor)
{
this.length *= scaleFactor;
this.lengthSquared = this.length * this.length;
}
this.sc = function(env)
{
var dotProd, scaleFactor;
var pointMassAPos, pointMassBPos;
pointMassAPos = this.pointMassA.getPos();
pointMassBPos = this.pointMassB.getPos();
this.delta.set(pointMassBPos);
this.delta.sub(pointMassAPos);
dotProd = this.delta.dotProd(this.delta);
scaleFactor = this.lengthSquared / (dotProd + this.lengthSquared) - 0.5;
this.delta.scale(scaleFactor);
pointMassAPos.sub(this.delta);
pointMassBPos.add(this.delta);
}
this.setForce = function(force)
{
this.pointMassA.setForce(force);
this.pointMassB.setForce(force);
}
this.addForce = function(force)
{
this.pointMassA.addForce(force);
this.pointMassB.addForce(force);
}
this.move = function(dt)
{
this.pointMassA.move(dt);
this.pointMassB.move(dt);
}
this.draw = function(ctx, scaleFactor) {
this.pointMassA.draw(ctx, scaleFactor);
this.pointMassB.draw(ctx, scaleFactor);
ctx.lineWidth = 3;
// ctx.fillStyle = '#000000';
// ctx.strokeStyle = '#000000';
ctx.fillStyle = 'darkslategrey';
ctx.strokeStyle = 'linen';
ctx.beginPath();
ctx.moveTo(this.pointMassA.getXPos() * scaleFactor,
this.pointMassA.getYPos() * scaleFactor);
ctx.lineTo(this.pointMassB.getXPos() * scaleFactor,
this.pointMassB.getYPos() * scaleFactor);
ctx.stroke();
}
}
function Spring(restLength, stiffness, damper, pointMassA, pointMassB)
{
this.restLength = restLength;
this.stiffness = stiffness;
this.damper = damper;
this.pointMassA = pointMassA;
this.pointMassB = pointMassB;
this.tmp = Vector(0.0, 0.0);
this.sc = function(env)
{
env.collistion(this.pointMassA.getPos(), this.pointMassA.getPrevPos());
env.collistion(this.pointMassB.getPos(), this.pointMassB.getPrevPos());
}
this.move = function(dt)
{
var aXbX;
var aYbY;
var springForce;
var length;
aXbX = this.pointMassA.getXPos() - this.pointMassB.getXPos();
aYbY = this.pointMassA.getYPos() - this.pointMassB.getYPos();
length = Math.sqrt(aXbX * aXbX + aYbY * aYbY);
springForce = this.stiffness * (length / this.restLength - 1.0);
var avXbvX;
var avYbvY;
var damperForce;
avXbvX = this.pointMassA.getXVel() - this.pointMassB.getXVel();
avYbvY = this.pointMassA.getYVel() - this.pointMassB.getYVel();
damperForce = avXbvX * aXbX + avYbvY * aYbY;
damperForce *= this.damper;
var fx;
var fy;
fx = (springForce + damperForce) * aXbX;
fy = (springForce + damperForce) * aYbY;
this.tmp.setX(-fx);
this.tmp.setY(-ft);
this.pointMassA.addForce(this.tmp);
this.tmp.setX(fx);
this.tmp.setY(ft);
this.pointMassB.addForce(this.tmp);
this.pointMassA.move(dt);
this.pointMassB.move(dt);
}
this.addForce = function(force)
{
this.pointMassA.addForce(force);
this.pointMassB.addForce(force);
}
this.draw = function(ctx, scaleFactor) {
this.pointMassA.draw(ctx, scaleFactor);
this.pointMassB.draw(ctx, scaleFactor);
// ctx.fillStyle = '#000000';
// ctx.strokeStyle = '#000000';
ctx.fillStyle = 'red';
ctx.strokeStyle = 'blue';
ctx.beginPath();
ctx.moveTo(this.pointMassA.getXPos() * scaleFactor,
this.pointMassA.getYPos() * scaleFactor);
ctx.lineTo(this.pointMassB.getXPos() * scaleFactor,
this.pointMassB.getXPos() * scaleFactor);
ctx.stroke();
}
}
function Blob(x, y, radius, numPointMasses) {
this.x = x;
this.y = y;
// alert( "BUGS_480 x="+x+" y="+radius+" numpointmasses="+numPointMasses );
this.sticks = new Array();
this.pointMasses = new Array();
this.joints = new Array();
this.middlePointMass;
this.radius = radius;
this.drawFaceStyle = 1;
this.drawEyeStyle = 1;
this.selected = false;
numPointMasses = 8;
var f = 0.1;
var low = 0.95, high = 1.05;
var t, i, p;
function clampIndex(index, maxIndex) {
index += maxIndex;
return index % maxIndex;
}
for(i = 0, t = 0.0; i < numPointMasses; i++) {
this.pointMasses[i] = new PointMass(Math.cos(t) * radius + x, Math.sin(t) * radius + y, 1.0);
t += 2.0 * Math.PI / numPointMasses;
}
this.middlePointMass = new PointMass(x, y, 1.0);
this.pointMasses[0].setMass(4.0);
this.pointMasses[1].setMass(4.0);
for(i = 0; i < numPointMasses; i++)
{
this.sticks[i] = new Stick(this.pointMasses[i], this.pointMasses[clampIndex(i + 1, numPointMasses)]);
}
for(i = 0, p = 0; i < numPointMasses; i++)
{
this.joints[p++] = new Joint(this.pointMasses[i], this.pointMasses[clampIndex(i + numPointMasses / 2 + 1, numPointMasses)], low, high);
this.joints[p++] = new Joint(this.pointMasses[i], this.middlePointMass, high * 0.9, low * 1.1); // 0.8, 1.2 works
}
this.addBlob = function(blob)
{
var index = this.joints.length;
var dist;
this.joints[index] = new Joint(this.middlePointMass, blob.getMiddlePointMass(), 0.0, 0.0);
dist = this.radius + blob.getRadius();
this.joints[index].setDist(dist * 0.95, 0.0);
}
this.getMiddlePointMass = function()
{
return this.middlePointMass;
}
this.getRadius = function()
{
return this.radius;
}
this.getXPos = function()
{
return this.middlePointMass.getXPos();
}
this.getYPos = function()
{
return this.middlePointMass.getYPos();
}
this.scale = function(scaleFactor)
{
var i;
for(i = 0; i < this.joints.length; i++)
{
this.joints[i].scale(scaleFactor);
}
for(i = 0; i < this.sticks.length; i++)
{
this.sticks[i].scale(scaleFactor);
}
this.radius *= scaleFactor;
}
this.move = function(dt)
{
var i;
for(i = 0; i < this.pointMasses.length; i++)
{
this.pointMasses[i].move(dt);
}
this.middlePointMass.move(dt);
}
this.sc = function(env)
{
var i, j;
for(j = 0; j < 4; j++)
{
for(i = 0; i < this.pointMasses.length; i++)
{
if(env.collision(this.pointMasses[i].getPos(), this.pointMasses[i].getPrevPos()) == true)
{
this.pointMasses[i].setFriction(0.75);
}
else
{
this.pointMasses[i].setFriction(0.01);
}
}
for(i = 0; i < this.sticks.length; i++)
{
this.sticks[i].sc(env);
}
for(i = 0; i < this.joints.length; i++)
{
this.joints[i].sc();
}
}
}
this.setForce = function(force)
{
var i;
for(i = 0; i < this.pointMasses.length; i++)
{
this.pointMasses[i].setForce(force);
}
this.middlePointMass.setForce(force);
}
this.addForce = function(force)
{
var i;
for(i = 0; i < this.pointMasses.length; i++)
{
this.pointMasses[i].addForce(force);
}
this.middlePointMass.addForce(force);
this.pointMasses[0].addForce(force);
this.pointMasses[0].addForce(force);
this.pointMasses[0].addForce(force);
this.pointMasses[0].addForce(force);
}
this.moveTo = function(x, y)
{
var i, blobPos;
blobPos = this.middlePointMass.getPos();
x -= blobPos.getX(x);
y -= blobPos.getY(y);
for(i = 0; i < this.pointMasses.length; i++)
{
blobPos = this.pointMasses[i].getPos();
blobPos.addX(x);
blobPos.addY(y);
}
blobPos = this.middlePointMass.getPos();
blobPos.addX(x);
blobPos.addY(y);
}
this.setSelected = function(selected)
{
this.selected = selected;
}
this.drawEars = function(ctx, scaleFactor) {
ctx.strokeStyle = "#000000";
ctx.fillStyle = "#FFFFFF";
// ctx.strokeStyle = "#FFFFFF";
// ctx.fillStyle = "#000000";
ctx.lineWidth = 2;
ctx.beginPath();
ctx.moveTo((-0.55 * this.radius) * scaleFactor, (-0.35 * this.radius) * scaleFactor);
ctx.lineTo((-0.52 * this.radius) * scaleFactor, (-0.55 * this.radius) * scaleFactor);
ctx.lineTo((-0.45 * this.radius) * scaleFactor, (-0.40 * this.radius) * scaleFactor);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.moveTo((0.55 * this.radius) * scaleFactor, (-0.35 * this.radius) * scaleFactor);
ctx.lineTo((0.52 * this.radius) * scaleFactor, (-0.55 * this.radius) * scaleFactor);
ctx.lineTo((0.45 * this.radius) * scaleFactor, (-0.40 * this.radius) * scaleFactor);
ctx.fill();
ctx.stroke();
}
this.drawHappyEyes1 = function(ctx, scaleFactor) {
ctx.lineWidth = 1;
ctx.fillStyle = "#FFFFFF";
ctx.beginPath();
ctx.arc((-0.15 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor,
this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.arc(( 0.15 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor,
this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
ctx.fill();
ctx.stroke();
ctx.fillStyle = "#000000";
ctx.beginPath();
ctx.arc((-0.15 * this.radius) * scaleFactor,
(-0.17 * this.radius) * scaleFactor,
this.radius * 0.06 * scaleFactor, 0, 2.0 * Math.PI, false);
ctx.fill();
ctx.beginPath();
ctx.arc(( 0.15 * this.radius) * scaleFactor,
(-0.17 * this.radius) * scaleFactor,
this.radius * 0.06 * scaleFactor, 0, 2.0 * Math.PI, false);
ctx.fill();
}
this.drawHappyEyes2 = function(ctx, scaleFactor) {
ctx.lineWidth = 1;
ctx.fillStyle = "#FFFFFF";
ctx.beginPath();
ctx.arc((-0.15 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor,
this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
ctx.stroke();
ctx.beginPath();
ctx.arc(( 0.15 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor,
this.radius * 0.12 * scaleFactor, 0, 2.0 * Math.PI, false);
ctx.stroke();
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo((-0.25 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor);
ctx.lineTo((-0.05 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(( 0.25 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor);
ctx.lineTo(( 0.05 * this.radius) * scaleFactor,
(-0.20 * this.radius) * scaleFactor);
ctx.stroke();
}
this.drawHappyFace1 = function(ctx, scaleFactor) {
ctx.lineWidth = 2;
// ctx.strokeStyle = "#000000";
// ctx.fillStyle = "#000000";
ctx.strokeStyle = "black";
ctx.fillStyle = "black";
ctx.beginPath();
ctx.arc(0.0, 0.0,
this.radius * 0.25 * scaleFactor, 0, Math.PI, false);
ctx.stroke();
}
this.drawHappyFace2 = function(ctx, scaleFactor) {
ctx.lineWidth = 2;
ctx.strokeStyle = "#000000";
ctx.fillStyle = "#000000";
ctx.beginPath();
ctx.arc(0.0, 0.0,
this.radius * 0.25 * scaleFactor, 0, Math.PI, false);
ctx.fill();
}
this.drawOohFace = function(ctx, scaleFactor) {
ctx.lineWidth = 2;
ctx.strokeStyle = "#000000";
ctx.fillStyle = "#000000";
ctx.beginPath();
ctx.arc(0.0, (0.1 * this.radius) * scaleFactor,
this.radius * 0.25 * scaleFactor, 0, Math.PI, false);
ctx.fill();
ctx.beginPath();
ctx.moveTo((-0.25 * this.radius) * scaleFactor, (-0.3 * this.radius) * scaleFactor);
ctx.lineTo((-0.05 * this.radius) * scaleFactor, (-0.2 * this.radius) * scaleFactor);
ctx.lineTo((-0.25 * this.radius) * scaleFactor, (-0.1 * this.radius) * scaleFactor);
ctx.moveTo((0.25 * this.radius) * scaleFactor, (-0.3 * this.radius) * scaleFactor);
ctx.lineTo((0.05 * this.radius) * scaleFactor, (-0.2 * this.radius) * scaleFactor);
ctx.lineTo((0.25 * this.radius) * scaleFactor, (-0.1 * this.radius) * scaleFactor);
ctx.stroke();
}
this.drawFace = function(ctx, scaleFactor) {
if(this.drawFaceStyle == 1 && Math.random() < 0.05) {
this.drawFaceStyle = 2;
}
else if(this.drawFaceStyle == 2 && Math.random() < 0.1) {
this.drawFaceStyle = 1;
}
if(this.drawEyeStyle == 1 && Math.random() < 0.025) {
this.drawEyeStyle = 2;
}
else if(this.drawEyeStyle == 2 && Math.random() < 0.3) {
this.drawEyeStyle = 1;
}
if(this.middlePointMass.getVelocity() > 0.004)
{
this.drawOohFace(ctx, scaleFactor);
}
else
{
if(this.drawFaceStyle == 1)
{
this.drawHappyFace1(ctx, scaleFactor, 0.0, -0.3);
}
else
{
this.drawHappyFace2(ctx, scaleFactor, 0.0, -0.3);
}
if(this.drawEyeStyle == 1)
{
this.drawHappyEyes1(ctx, scaleFactor, 0.0, -0.3);
}
else
{
this.drawHappyEyes2(ctx, scaleFactor, 0.0, -0.3);
}
}
}
this.getPointMass = function(index)
{
index += this.pointMasses.length;
index = index % this.pointMasses.length;
return this.pointMasses[index];
}
this.drawBody = function(ctx, scaleFactor) {
var i;
var colors =
`blue
red
blue
white
white
wheat
burlywood
linen
darkslategray
yellow
pink
orange
red
blue
red
blue
green
brown`.split("\n");
href=window.location.href;
color=""; color_selected="";
blobs=kolists['blobs'].split("\n");
blobs_len=blobs.length;
for( j=0; j< blobs_len; j++ ) {
if( blobs[j] == "" ) { continue; }
if( /^#/.test(blobs[j] )) { continue; }
if( /\n/.test(blobs[j] )) { continue; }
blob=blobs[j].split("|");
id=blob[0];
color=blob[1];
color_selected=blob[2];
color_stroke=blob[3];
linewidth=blob[4];
src_img=blob[5];
match="ka21";
var str = id;
var patt = /id/g;
var result = patt.test(str);
blobid="ka12";
blobid="ka21";
blobid="konet";
blobid=geturlparameter('id');
if( blobid == id ) {
break;
}
else {
}
}
ctx.strokeStyle = color_stroke;
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.shadowBlur = 10;
ctx.shadowColor = "DarkGoldenRod";
ctx.fillStyle = "Gold";
ctx.fillRect(20, 50, 300, 200);
ctx.drawImage(img_fan, 10, 10 );
ctx.drawImage(img_eyepatch, 120, 60, 50, 60 );
ctx.drawImage(img_key, 500, 30, 50, 50);
// if( random_int(1,0) == 0 ) {
ctx.drawImage(img_gazibo, 0, 0, 700, 600);
// }
// else {
// ctx.drawImage(img_sawhorse, 350, 100);
// }
var token = random_int(999999,1);
var dt=dttm("");
ctx.font = "italic 200 16px, sans-serif";
var maxwidth=100;
ctx.fillStyle = "black";
ctx.fillText(dt, 40,240, maxwidth );
ctx.fillText(token, 550,10, maxwidth );
dropmsg_wait='';
dropmsg_wait+='<h1 id="h1_blobsallad">blobsallad <br>';
dropmsg_wait+='count 16 n refresh regularly<br>';
dropmsg_wait+='<hr color=goldenrod>';
dropmsg_wait+=' -= ...::: wait_for_the_drop :::... =-';
dropmsg_done = '';
dropmsg_done +='<h1 id="h1_blobsallad">';
dropmsg_done += '-= ...::: its about time :::... =-';
dropmsg_done += '<br>';
dropmsg_done += document.title;
dropmsg_done += '<br>';
dropmsg_done += '-= ...::: its about 7 years :::... =-';
dropmsg_done += '<br>'
dropmsg_done += ' </h1>';
var canvas = document.getElementById('canvas_blob');
if(canvas.getContext == null) {return; }
var ctx = canvas.getContext('2d');
var title=document.title;
// ctx.fillText("-- == its about time == --", 20,5, maxwidth );
// ctx.fillText("-- == its about 7 years == --", 125,5, maxwidth );
ctx.fillText("-- == its about time == --", 200,5, maxwidth );
ctx.fillText("-- == its about 7 years == --", 400,5, maxwidth );
// ctx.fillText(title, 20,20, maxwidth );
ctx.fillText(title, 300,20, maxwidth );
dropmsg_done = "";
if( document.getElementById('h1_blobsallad')) {
document.getElementById('h1_blobsallad').innerHTML=dropmsg_done;
}
// if( document.getElementById('div_toplinks')) {
// document.getElementById('div_toplinks').innerHTML=dropmsg_done;
// }
// ctx.fillStyle='#9933FF';
// ctx.fillRect(40,20,300,150); //rectangle 1 (opaque)
// ctx.globalAlpha=0.5;// opacity at 0.5
// ctx.fillStyle='#009933';
// ctx.fillRect(200,100,300,150);// rectangle 2 (transparent)
// ctx.shadowBlur=15;
// ctx.shadowColor='#000';
// ctx.shadowOffsetX=10; // offset along X axis
// ctx.shadowOffsetY=-10; // offset along Y axis
// ctx.fillStyle='#9933FF';
// ctx.fillRect(70,20,400,200); //rectangle
// ctx.save() // pushed in LIFO stack(fillStyle 2)
// ctx.fillRect(150, 5, 100, 100);
// ctx.restore();// popped from LIFO stack(fillStyle 2)
// ctx.fillRect(300, 5, 100, 100);
// ctx.restore();// poped from LIFO stack(fillStyle 1 )
// ctx.fillRect(450,5, 100, 100);
// Variables store centre and radius of arc
// var x = 250;
// var y = 125;
// var radius =80;
// define start and finish angle
// var startAngle = 1.2 * Math.PI;
// var endAngle = 1.9 * Math.PI;
// set the direction to anticlockwise
// var counterClockwise = true;
// ctx.beginPath();
// ctx.arc(x, y, radius, startAngle, endAngle, counterClockwise);
// ctx.lineWidth =10;
// ctx.strokeStyle = '#fa4b2a';
// ctx.stroke();
// ctx.beginPath();// start a new path
// ctx.moveTo(40,70 );// begin subpath at (40,70)
// ctx.lineTo(400,200);//destination of subpath at (400,200)
// ctx.stroke();// make the line visible
if(this.selected == true) {
ctx.fillStyle = color_selected;
}
else {
ctx.fillStyle = color;
}
ctx.lineWidth = linewidth;
ctx.beginPath();
ctx.moveTo(this.pointMasses[0].getXPos() * scaleFactor,
this.pointMasses[0].getYPos() * scaleFactor);
for(i = 0; i < this.pointMasses.length; i++) {
var px, py, nx, ny, tx, ty, cx, cy;
var prevPointMass, currentPointMass, nextPointMass, nextNextPointMass;
prevPointMass = this.getPointMass(i - 1);
currentPointMass = this.pointMasses[i];
nextPointMass = this.getPointMass(i + 1);
nextNextPointMass = this.getPointMass(i + 2);
tx = nextPointMass.getXPos();
ty = nextPointMass.getYPos();
cx = currentPointMass.getXPos();
cy = currentPointMass.getYPos();
px = cx * 0.5 + tx * 0.5;
py = cy * 0.5 + ty * 0.5;
nx = cx - prevPointMass.getXPos() + tx - nextNextPointMass.getXPos();
ny = cy - prevPointMass.getYPos() + ty - nextNextPointMass.getYPos();
px += nx * 0.16;
py += ny * 0.16;
px = px * scaleFactor;
py = py * scaleFactor;
tx = tx * scaleFactor;
ty = ty * scaleFactor;
ctx.bezierCurveTo(px, py, tx, ty, tx, ty);
}
ctx.closePath();
ctx.stroke();
ctx.fill();
}
this.drawSimpleBody = function(ctx, scaleFactor) {
for(i = 0; i < this.sticks.length; i++) {
this.sticks[i].draw(ctx, scaleFactor);
}
}
this.draw = function(ctx, scaleFactor) {
var i;
var up, ori, ang;
this.drawBody(ctx, scaleFactor);
ctx.strokeStyle = "#000000";
ctx.fillStyle = "#000000"
ctx.save();
ctx.translate(this.middlePointMass.getXPos() * scaleFactor,
(this.middlePointMass.getYPos() - 0.35 * this.radius) * scaleFactor);
up = new Vector(0.0, -1.0);
ori = new Vector(0.0, 0.0);
ori.set(this.pointMasses[0].getPos());
ori.sub(this.middlePointMass.getPos());
ang = Math.acos(ori.dotProd(up) / ori.length());
if(ori.getX() < 0.0) {
ctx.rotate(-ang);
}
else {
ctx.rotate(ang);
}
// this.drawEars(ctx, scaleFactor);
this.drawFace(ctx, scaleFactor);
ctx.restore();
}
}
function BlobCollective(x, y, startNum, maxNum) {
this.maxNum = maxNum;
this.numActive = 1;
this.blobs = new Array();
this.tmpForce = new Vector(0.0, 0.0);
this.selectedBlob = null;
this.blobs[0] = new Blob(x, y, 0.4, 8);
this.split = function() {
var i, maxIndex = 0, maxRadius = 0.0;
var emptySlot;
var motherBlob, newBlob;
if(this.numActive == this.maxNum) {
return;
}
emptySlot = this.blobs.length;
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] != null && this.blobs[i].getRadius() > maxRadius) {
maxRadius = this.blobs[i].getRadius();
motherBlob = this.blobs[i];
}
else if(this.blobs[i] == null) {
emptySlot = i;
}
}
motherBlob.scale(0.75);
newBlob = new Blob(motherBlob.getXPos(),
motherBlob.getYPos(), motherBlob.getRadius(), 8);
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) {
continue;
}
this.blobs[i].addBlob(newBlob);
newBlob.addBlob(this.blobs[i]);
}
this.blobs[emptySlot] = newBlob;
this.numActive++;
}
this.findSmallest = function(exclude) {
var minRadius = 1000.0, minIndex;
var i;
for(i = 0; i < this.blobs.length; i++) {
if(i == exclude || this.blobs[i] == null) {
continue;
}
if(this.blobs[i].getRadius() < minRadius) {
minIndex = i;
minRadius = this.blobs[i].getRadius();
}
}
return minIndex;
}
this.findClosest = function(exclude) {
var minDist = 1000.0, foundIndex, dist, aXbX, aYbY;
var i;
var myPointMass, otherPointMass;
myPointMass = this.blobs[exclude].getMiddlePointMass();
for(i = 0; i < this.blobs.length; i++)
{
if(i == exclude || this.blobs[i] == null) {
continue;
}
otherPointMass = this.blobs[i].getMiddlePointMass();
aXbX = myPointMass.getXPos() - otherPointMass.getXPos();
aYbY = myPointMass.getYPos() - otherPointMass.getYPos();
dist = aXbX * aXbX + aYbY * aYbY;
if(dist < minDist)
{
minDist = dist;
foundIndex = i;
}
}
return foundIndex;
}
this.join = function()
{
var blob1Index, blob2Index, blob1, blob2;
var r1, r2, r3;
if(this.numActive == 1)
{
return;
}
blob1Index = this.findSmallest(-1);
blob2Index = this.findClosest(blob1Index);
r1 = this.blobs[blob1Index].getRadius();
r2 = this.blobs[blob2Index].getRadius();
r3 = Math.sqrt(r1 * r1 + r2 * r2);
this.blobs[blob1Index] = null;
this.blobs[blob2Index].scale(0.945 * r3 / r2);
this.numActive--;
}
this.selectBlob = function(x, y) {
var i, minDist = 10000.0;
var otherPointMass;
var selectedBlob;
var selectOffset = null;
if(this.selectedBlob != null) { return; }
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) { continue; }
otherPointMass = this.blobs[i].getMiddlePointMass();
aXbX = x - otherPointMass.getXPos();
aYbY = y - otherPointMass.getYPos();
dist = aXbX * aXbX + aYbY * aYbY;
if(dist < minDist) {
minDist = dist;
if(dist < this.blobs[i].getRadius() * 0.5) {
this.selectedBlob = this.blobs[i];
selectOffset = { x : aXbX, y : aYbY };
}
}
}
if(this.selectedBlob != null) {
this.selectedBlob.setSelected(true);
}
return selectOffset;
}
this.unselectBlob = function() {
if(this.selectedBlob == null) {
return;
}
this.selectedBlob.setSelected(false);
this.selectedBlob = null;
}
this.selectedBlobMoveTo = function(x, y) {
if(this.selectedBlob == null) {return; }
this.selectedBlob.moveTo(x, y);
}
this.move = function(dt) {
var i;
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) {continue; }
this.blobs[i].move(dt);
// if( i== 0 ) {
// alert( "BUGS_1110 color="+this.blobs[i].color+" i="+i+" this.blobs.length="+this.blobs.length );
// }
}
}
this.sc = function(env) {
var i;
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) {continue; }
this.blobs[i].sc(env);
}
if(this.blobAnchor != null) {
this.blobAnchor.sc();
}
}
this.setForce = function(force) {
var i;
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) {continue; }
if(this.blobs[i] == this.selectedBlob) {
this.blobs[i].setForce(new Vector(0.0, 0.0));
continue;
}
this.blobs[i].setForce(force);
}
}
this.addForce = function(force) {
var i;
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) {continue; }
if(this.blobs[i] == this.selectedBlob) {continue; }
this.tmpForce.setX(force.getX() * (Math.random() * 0.75 + 0.25));
this.tmpForce.setY(force.getY() * (Math.random() * 0.75 + 0.25));
this.blobs[i].addForce(this.tmpForce);
}
}
this.draw = function(ctx, scaleFactor) {
var i;
for(i = 0; i < this.blobs.length; i++) {
if(this.blobs[i] == null) {continue; }
this.blobs[i].draw(ctx, scaleFactor);
}
}
// this.info = function(ctx, scaleFactor) { }
// alert( "BUGS_1140 this.info ctx="+ctx );
// var i;
// var colors =
// `red
// white
// blue
// wheat
// darkslategray
// linen
// black`;
// for(i = 0; i < this.blobs.length; i++) {
// if(this.blobs[i] == null) {continue; }
// this.blobs[i].draw(ctx, scaleFactor);
// ctx.fillStyle=colors[i];
// ctx.stroke();
// }
// }
}
function random_int(max,min) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function debug(msg, okFunc, cancelFunc)
{
if(confirm(msg) == true && okFunc != null)
{
okFunc();
}
else if(cancelFunc != null)
{
cancelFunc();
}
}
var env;
var width = 600.0;
var height = 400.0;
var scaleFactor = 200.0;
var blobColl;
var gravity;
var stopped;
var savedMouseCoords = null;
var selectOffset = null;
function update() {
var dt = 0.05;
if(savedMouseCoords != null && selectOffset != null)
{
blobColl.selectedBlobMoveTo(savedMouseCoords.x - selectOffset.x,
savedMouseCoords.y - selectOffset.y);
}
blobColl.move(dt);
blobColl.sc(env);
blobColl.setForce(gravity);
}
function draw() {
// var canvas = document.getElementById('blob');
// var canvas = document.getElementById('canvas_blob_w');
var canvas = document.getElementById('canvas_blob');
if(canvas.getContext == null) {return; }
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, width, height);
env.draw(ctx, scaleFactor);
blobColl.draw(ctx, scaleFactor);
}
function timeout() {
draw();
update();
if(stopped == false) {
setTimeout('timeout()', 30);
}
}
function init() {
// var canvas = document.getElementById('blob');
var canvas = document.getElementById('canvas_blob');
if(canvas.getContext == null) {
alert("ALERT_100 unauthorized access logged");
return;
}
document.onkeydown = function(event) {
var keyCode;
// alert( "BUGS_701 document.onkeydown event="+event );
if(event == null) {
keyCode = window.event.keyCode;
}
else {
keyCode = event.keyCode;
}
if( keypress(event)){ return; }
// alert( "BUGS_701 document.onkeydown keypress event="+event );
// if( event.which === 89 && event.ctrlKey ) {
// if( keyCode === 89 && event.ctrlKey ) {
// alert('MSG_89-ctrl-y control + y');
// }
// else if( keyCode === 90 && event.ctrlKey ) {
// alert('MSG_90-ctrl-z control + z');
// }
switch(keyCode) {
// esc
case 27: alert( "MSG_027 esc keycode="+keyCode ); break;
// slash
case 191: alert( "MSG_191 slash keycode="+keyCode ); break;
// colon
// hat
// dollar
// plus
// minus
case 59: alert( "MSG_191 colon keycode="+keyCode ); break;
case 54: alert( "MSG_54 hat keycode="+keyCode ); break;
case 52: alert( "MSG_191 dollar keycode="+keyCode ); break;
case 107: alert( "MSG_107 plus keycode="+keyCode ); break;
case 109: alert( "MSG_109 minus keycode="+keyCode ); break;
// shift
// control
// winkey
// alt
// tab
// caps
// space
// enter
// case 16: alert( "MSG_16 shift keycode="+keyCode ); break;
// case 17: alert( "MSG_17 control keycode="+keyCode ); break;
// case 224: alert( "MSG_224 meta keycode="+keyCode ); break;
// case 18: alert( "MSG_18 alt keycode="+keyCode ); break;
// case 9: alert( "MSG_9 tab keycode="+keyCode ); break;
// case 20: alert( "MSG_191 caps keycode="+keyCode ); break;
// case 32: alert( "MSG_32 space keycode="+keyCode ); break;
case 13: alert( "MSG_13 enter keycode="+keyCode ); break;
case 224: break;
case 18: break;
case 9: break;
case 20: break;
case 32: break;
case 13: break;
// 0
// 9
case 48: alert( "MSG_48 0 keycode="+keyCode ); break;
case 49: alert( "MSG_49 1 keycode="+keyCode ); break;
case 50: alert( "MSG_50 2 keycode="+keyCode ); break;
case 51: alert( "MSG_51 3 keycode="+keyCode ); break;
case 52: alert( "MSG_52 4 keycode="+keyCode ); break;
case 53: alert( "MSG_53 5 keycode="+keyCode ); break;
case 54: alert( "MSG_54 6 keycode="+keyCode ); break;
case 55: alert( "MSG_55 7 keycode="+keyCode ); break;
case 56: alert( "MSG_56 8 keycode="+keyCode ); break;
case 57: alert( "MSG_57 9 keycode="+keyCode ); break;
// backtick
// backslash
// tick
// qoute
// case 57: alert( "MSG_57 quote keycode="+keyCode ); break;
// question
case 192: alert( "MSG_192 backtick keycode="+keyCode ); break;
case 220: alert( "MSG_220 backslash keycode="+keyCode ); break;
case 222: alert( "MSG_222 tick keycode="+keyCode ); break;
case 191: alert( "MSG_57 question keycode="+keyCode ); break;
// left
case 37:
if( blob_arrowkeys != "" ) {
blobColl.addForce(new Vector(-50.0, 0.0));
}
break;
// up
case 38:
if( blob_arrowkeys != "" ) {
blobColl.addForce(new Vector(0.0, -50.0));
}
break;
// right
case 39:
if( blob_arrowkeys != "" ) {
blobColl.addForce(new Vector(50.0, 0.0));
}
break;
// down
case 40:
if( blob_arrowkeys != "" ) {
blobColl.addForce(new Vector(0.0, 50.0));
}
break;
// join 'j'
case 74:
blobColl.join();
break;
// split 'h'
case 72:
blobColl.split();
break;
// toggle gravity 'g'
case 71:
toggleGravity();
break;
default:
break;
}
}
function getMouseCoords(event) {
if(event == null) {event = window.event; }
if(event == null) {return null; }
if(event.pageX || event.pageY){
return {x:event.pageX / scaleFactor, y:event.pageY / scaleFactor};
}
return null;
}
document.onmousedown = function(event) {
var mouseCoords;
if(stopped == true) {return; }
mouseCoords = getMouseCoords(event);
if(mouseCoords == null) {return; }
selectOffset = blobColl.selectBlob(mouseCoords.x, mouseCoords.y);
}
document.onmouseup = function(event) {
blobColl.unselectBlob();
savedMouseCoords = null;
selectOffset = null;
}
document.onmousemove = function(event) {
var mouseCoords;
if(stopped == true) {return; }
if(selectOffset == null) {return; }
mouseCoords = getMouseCoords(event);
if(mouseCoords == null) {return; }
blobColl.selectedBlobMoveTo(mouseCoords.x - selectOffset.x, mouseCoords.y - selectOffset.y);
savedMouseCoords = mouseCoords;
}
env = new Environment(0.2, 0.2, 2.6, 1.6);
blobColl = new BlobCollective(1.0, 1.0, 1, 200);
gravity = new Vector(0.0, 10.0);
stopped = false;
timeout();
}
function stop() {
stopped = true;
}
function start() {
stopped = false;
timeout();
}
function togglestart() {
if( stopped == true ) {
stopped = false;
timeout();
if( document.getElementById('img_blob_togglestart')) {
document.getElementById('img_blob_togglestart').src="/imgs/btn/kow.png";
}
}
else {
stopped = true;
if( document.getElementById('img_blob_togglestart')) {
document.getElementById('img_blob_togglestart').src="/imgs/btn/kob.png";
}
}
}
function toggleGravity() {
if(gravity.getY() > 0.0) {
gravity.setY(0.0);
// alert( "BUGS_121 img_blob_togglegravity" );
if( document.getElementById('img_blob_togglegravity')) {
// alert( "BUGS_122 img_blob_togglegravity" );
document.getElementById('img_blob_togglegravity').src="/imgs/btn/blob_gravity_off.gif";
}
}
else {
gravity.setY(10.0);
if( document.getElementById('img_blob_togglegravity')) {
// alert( "BUGS_132 img_blob_togglegravity" );
document.getElementById('img_blob_togglegravity').src="/imgs/btn/blob_gravity_on.gif";
}
blobColl.split();
}
}
</script>
<script id="script_geturlvars" >
// var number = geturlvars()["x"];
// var mytext = geturlvars()["text"];
// var mytext = geturlparam('text','Empty');
function geturlvars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
<script id="script_geturlparam" >
function geturlparam(parameter, defaultvalue){
var urlparameter = defaultvalue;
if(window.location.href.indexOf(parameter) > -1) {
urlparameter = getUrlVars()[parameter];
}
return urlparameter;
}
// var mytext = getUrlParam('text','Empty');
</script>
<script id="script_keypress" >
function keypress(e) {
// Ensure event is not null
e = e || window.event;
if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) {alert( "MSG_090 keypress ctrl-z" );
return('ctrl-z');
}
if ((e.which == 89 || e.keyCode == 89) && e.ctrlKey) {alert( "MSG_089 keypress ctrl-y" );
return('ctrl-y');
}
if ((e.which == 54 || e.keyCode == 54) && e.ctrlKey) {
alert( "MSG_054 keypress ctrl-hat" );
return('ctrl-hat');
}
if ((e.which == 54 || e.keyCode == 54) && e.shiftKey) {
alert( "MSG_054 keypress shift-hat" );
return('shift-hat');
}
if ((e.which == 60 || e.keyCode == 60) && e.shiftKey) {
alert( "MSG_090 keypress dollar shift-4" );
}
// case 59: alert( "MSG_191 colon keycode="+keyCode ); break;
// case 54: alert( "MSG_54 hat keycode="+keyCode ); break;
// case 52: alert( "MSG_191 dollar keycode="+keyCode ); break;
// case 107: alert( "MSG_107 plus keycode="+keyCode ); break;
// case 109: alert( "MSG_109 minus keycode="+keyCode ); break;
}
</script>
<script id="script_trigger" >
// A handler called preventDefault.
// None of the handlers called preventDefault.
function trigger_mouse(args) {
alert( "BUGS_901 trigger _mouse args="+args );
var event = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true
});
if(document.getElementById('checkbox')) {
var cb = document.getElementById('checkbox');
var cancelled = !cb.dispatchEvent(event);
if (cancelled) {alert("cancelled");}
else {alert("not cancelled");}
}
}
</script>
<style type="text/css">
canvas { }
</style>
<script id="script_startup_blob">
function startup_blob(args) {
init();
blobColl.split();
// blobColl.split();
// blobColl.split();
return('');
}
</script>
<script id="script_trigger" >
function trigger(key) {
// alert( "BUGS_801 trigger key="+key );
var trigger_char = "Q";
var trigger_key = "q";
var trigger_keycode = "81";
if( key == 'h') { blobColl.split(); return(''); }
if( key == 'g') { toggleGravity(); return(''); }
if( key == 'j') { blobColl.join(); return(''); }
if( key == '<') { blobColl.move(); return(''); }
if( key == '>') { blobColl.move(); return(''); }
if( key == 'q') { trigger_char="Q"; trigger_key="q"; trigger_keycode="81"; }
if( key == 'h') { trigger_char="H"; trigger_key="h"; trigger_keycode="72"; }
if( key == 'j') { trigger_char="J"; trigger_key="j"; trigger_keycode="74"; }
if( key == 'g') { trigger_char="G"; trigger_key="g"; trigger_keycode="71"; }
// alert( "BUGS_802 triger key="+key+" trigger_char="+trigger_char+" keycode="+trigger_keycode );
// char : "Q",
// key : "q",
// keyCode : 81
//// var e = new KeyboardEvent("keydown", {
var e = new KeyboardEvent("keyPress", {
bubbles : true,
cancelable : true,
key : trigger_key,
char : trigger_char,
shiftKey : true,
keyCode : trigger_keycode
});
alert( "BUGS_803 trigger key="+key );
}
function simulateKeyEvent(character) {
var evt = document.createEvent("KeyboardEvent");
(evt.initKeyEvent || evt.initKeyboardEvent)("keypress", true, true, window,
0, 0, 0, 0,
0, character.charCodeAt(0))
var canceled = !body.dispatchEvent(evt);
// A handler called preventDefault
// None of the handlers called preventDefault
if(canceled) {
alert("canceled");
}
else {
alert("not canceled");
}
}
function simulateKeyPress(character) {
jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) });
}
</script>
<script id="script_replace_key" type="text/javascript">
function replace(e) {
if (e.keyCode==13) e.keyCode=9
}
</script>
<script id="script_geturlparameter" >
function geturlparameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || null;
}
</script>
<script id="script_load_fb_links" >
function load_fb_links() {
var j=0;
fb_links =
`/fb/law/skwii/|/fb/law/skwii/pages/tn/tn_1.png|/fb/law/skwii/pages/tn/tn_1.png|law_skwii
/fb/jhf/|/fb/jhf/pages/1.jpg|fb/jhf/pages/tn/tn_1.png|biz
/fb/nwm/|/fb/nwm/pages/1.jpg|fb/nwm/pages/1.jpg|biz
/fb/heart/|/fb/heart/pages/tn/tn_1.png|fb/heart/pages/tn/tn_1.png|heart
/fb/soul/|/fb/soul/pages/tn/tn_1.png|fb/soul/pages/tn/tn_1.png|soul
/fb/neuz/|/fb/neuz/pages/tn/tn_1.png|fb/neuz/pages/tn/tn_1.png|neuz
/fb/templets/magazine/|us/templets/magazine/pages/1.jpg|us/templets/magazine/pages/1.jpg|
/fb/templets/book/|us/templets/magazine/pages/1.jpg|us/templets/magazine/pages/1.jpg|`.split("\n");
return( fb_links );
}
</script>
<script id="script_show_jtfdc_stalkarounds_links" >
function show_jtfdc_stalkarounds_links(mode) {
alert( "BUGS_1925 show_jtfdc_stalkarounds_links mode="+mode );
}
</script>
<script id="script_show_fb_links" >
function show_fb_links(mode) {
// alert( "BUGS_1901 show_fb_links mode="+mode );
fb_links = load_fb_links();
// fb_links = kolists['fb_law'].split("\n");
// alert( "BUGS_1902 show_fb_links fb_links="+fb_links );
htmout_fb_links = "";
htmout_fb_linkz = "";
for (i = 0; i < fb_links.length; i++) {
my_btnimg = "/imgs/btn/koeye.png";
my_href = fb_links[i].split("|")[0];
my_popimg = fb_links[i].split("|")[1];
my_alt = fb_links[i].split("|")[2];
// htmout_fb_linkz += '<a class="drag" href="' + my_href + '" target=_blank>"';
htmout_fb_linkz += '<a class="thumbnail" href="' + my_href + '" target=_blank>"';
htmout_fb_linkz += '<img src="' + my_popimg + '" alt="' + my_alt + '" height=100></a>';
htmout_fb_links += '<a class="thumbnail" href="' + my_href + '" target=_blank>"';
htmout_fb_links += '<img src="' + my_btnimg + '" alt="' + my_alt + '" width=25px height=14px border=0>';
htmout_fb_links += '<span><img src="' + my_popimg + '" alt="' + my_alt + '"></span></a>';
}
if( mode === 'pop' ) {
htmout_fb_links += "<br><br>";
// var div_fb_links = document.getElementById('div_fb_links');
// div_fb_links.insertAdjacentHTML('beforeend', htmout_fb_links);
if( document.getElementById('div_fb_links')) {
document.getElementById('div_fb_links').insertAdjacentHTML('beforeend', htmout_fb_links);
}
return( htmout_fb_links );
}
htmout_fb_linkz += "<br><br>";
if( document.getElementById('div_fb_links')) {
document.getElementById('div_fb_links').insertAdjacentHTML('beforeend', htmout_fb_linkz);
}
return( htmout_fb_linkz );
}
</script>
<script id="script_blobhead_wait">
function blobhead_wait(args) {
kolists['blobhead'] =
`/imgs/links/woodson.jpg|woodsoncenter.org
/imgs/links/missioncontinues.jpg|https://missioncontinues.org
https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg|https://www.youtube.com/watch?v=89Vpqm2IaPE
https://img.youtube.com/vi/_OzFtV_RYD8/default.jpg|https://www.youtube.com/watch?v=_OzFtV_RYD8
`;
// alert("BUGS_2170 blobhead_wait kolists_blobhead="+kolists['blobhead'] );
htmout = '';
htmout += ' <h1 id="h1_blobsallad_wait">';
htmout += ' ko_blobsallad worksite: <br>';
htmout += ' hardhat - googles - mouse <br>';
// htmout += ' count 16 n refresh if needed<br>';
htmout += ' count 16 n refresh regularly<br>';
htmout += ' <hr color=goldenrod>';
htmout += ' -= ...::: wait_for_the_drop :::... =-';
htmout += ' <hr color=goldenrod>';
blobheads = kolists['blobhead'].split("\n");
blobheads_len = blobheads.length;
for ( j=0; j< blobheads_len; j++ ) {
blobhead_data=blobheads[j];
// alert( "BUGS_2200 blobhead_data j="+j+" blobhead_data="+blobhead_data );
if( /^#/.blobhead ) { continue; }
img=blobhead_data.split("|")[0];
url=blobhead_data.split("|")[1];
htmout += ' <img src="'+img+'"';
htmout += ' alt="'+img+'"';
htmout += ' onclick="window.open(\''+url+'\'); return false;"';
htmout += ' height=200 border=0>';
htmout += ' <br>';
// alert( "BUGS_2210 blobhead j="+j+" htmout="+htmout );
}
htmout += ' <br>';
htmout += ' <hr color=goldenrod>';
htmout += ' <hr color=goldenrod>';
htmout += ' -= ...::: wait_for_the_drop :::... =-';
htmout += ' <hr color=goldenrod>';
htmout += ' </h1>';
htmout += ' <hr color=white>';
// alert( "BUGS_2215 blobhead_wait htmout="+htmout );
if( document.getElementById('div_blobhead_wait')) {
document.getElementById('div_blobhead_wait').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_blobhead_wait_canvas">
function blobhead_wait_canvas(args) {
if( document.getElementById('canvas_blob')) {
var canvas = document.getElementById('canvas_blob');
}
if(canvas.getContext == null) {return; }
var ctx = canvas.getContext('2d');
var title=document.title;
var maxwidth=600;
// ctx.font = "40pt Calibri";
// ctx.font = "50pt yokkmokkOT";
// ctx.fillStyle = 'goldenrod';
ctx.fillText("-- == jkwii worksite == --", 20,10, maxwidth );
ctx.fillText("-- == hardhat - googles - mouse == --", 125,10, maxwidth );
ctx.fillText("-- == count 16 n repeat/refresh as needed == --", 125,50, maxwidth );
ctx.fillText(title, 20,20, maxwidth );
ctx.fillText("-- == wait for the drop == --", 125,100, maxwidth );
// alert( "BUGS_2200 blobhead_wait" );
return(args);
}
</script>
<!-- </head> -->
<!-- <body bgcolor=wheat onload="init();"> -->
<!-- <body bgcolor=wheat onload="startup_blob();return false;"> -->
<div id="div_blob_wait">
<h1>div_blobhead_wait</h1>
</div>
<div id="div_blobhead" >
<h1 id="h1_blobsallad">
<img src="/imgs/btn/btn_jitsi1.png" alt="btn_jitsi"
onclick="window.open('https://meet.jit.si/ko');return false;"
height=100 border=0>
       
<img src="/imgs/btn/btn_zoom.png" alt="btn_zoom"
onclick="window.open('https://zoom.us');return false;"
height=50 border=0>
       
<img src="/imgs/btn/btn_jitsi2.png" alt="btn_zoom"
onclick="window.open('https://jitsi.org');return false;"
height=100 border=0>
<br>
<img src="/imgs/btn/warning1.gif" alt="warning1"
onclick="window.open('/imgs/btn/warning1.gif');return false;"
height=90 border=0>
<img src="/imgs/btn/ko_warning.png" alt="warning"
onclick="window.open('/imgs/btn/ko_warning.png');return false;"
height=100 border=0>
<img src="/imgs/btn/warning2.gif" alt="warning2"
onclick="window.open('/imgs/btn/warning2.gif');return false;"
height=90 border=0>
<br>
<hr color=linen>
<hr color=linen>
<!-- <img src="/imgs/letters/ltr_j_fantasy.png" alt="email_jkwii_hat_ko2us" -->
<img src="/imgs/letters/kurrent_j.png" alt="email_jkwii_hat_ko2us"
id="img_random_letter_j"
class="class_img_random_letter_j"
onclick="window.open('/imgs/letters/kurrent_j.png'); return false;"
height=100 border=0>
<img src="/imgs/links/email.gif" alt="email_jkwii_ko2us"
onclick="window.open('mailto:jkwii@ko2.us?subject=jkwii_hat_ko2us_knock_knock');return false;"
height=50 border=0>
       
<img src="/imgs/links/email.gif" alt="email_skwii_ko2us"
onclick="window.open('mailto:skwii@ko2.us?subject=skwii_hat_ko2us_knock_knock');return false;"
height=50 border=0>
<!-- <img src="/imgs/letters/ltr_s_swan.png" alt="email_skwii_hat_ko2us" -->
<img src="/imgs/letters/kurrent_s.png" alt="email_skwii_hat_ko2us"
id="img_random_letter_s"
class="class_img_random_letter_j"
onclick="window.open('/imgs/letters/kurrent_s.png'); return false;"
height=100 border=0>
<br>
<hr color=linen>
<hr color=linen>
<img src="/imgs/btn/ko_count_to_16.png" alt="count_to_16"
onclick="window.open('/imgs/btn/ko_count_to_16.png');return false;"
height=100 border=0>
<br>
<hr color=linen>
<img src="/imgs/gif/cpa/try_again.gif" alt="try_again"
onclick="window.open('https://www.youtube.com/watch?v=SMpqjCSO9yI');return false;"
height=150 border=0>
<br>
<hr color=linen>
<img src="/imgs/btn/ko_wait_forthe_drop.png" alt="wait_forthe_drop"
onclick="window.open('/imgs/btn/ko_wait_forthe_drop');return false;"
height=100 border=0>
<hr color=linen>
<!--
ko_blobsallad worksite: <br>
hardhat - googles - mouse <br>
count 16 n refresh regularly<br>';
<hr color=goldenrod>';
-= ...::: wait_for_the_drop :::... =-
-->
<hr color=goldenrod>
<hr color=red>
<hr color=white>
<hr color=blue>
<img src="/fb/cards/pages/invite_vip_deutsch.jpg"
alt="invite_vip_deutsch.org"
onclick="window.open(\'/fb/cards/pages/zn/zn_invite_vip_deutsch.jpg\'); return false;"
height=300 border=0>
<!--
keys/keys00_hole.png
keys/keys37_hole.png
keys/keys62_hole2heaven.png
-->
<!--
<img src="/imgs/keys/keys62_hole2heaven.png">
<img src="/imgs/keys/key37_hole.png">
-->
<img src="/imgs/keys/keys00_hole.png"
alt="keys00_hole"
onclick="window.open('/imgs/keys/keys62_hole2heaven.png'); return false;"
height=300 border=0>
       
<img src="/imgs/keys/keys07_steampunk.png"
id="img_random_key_deutsch"
alt="img_random_key_deutsch"
onclick="window.open('/imgs/keys/keys01_jkwii.jpg'); return false;"
height=300 border=0>
<br>
<hr color=blue>
<hr color=white>
<hr color=red>
<hr color=goldenrod>
<br><br><br><br<>
<img src="/law/pages/1.jpg" alt="law" onclick="window.open('/law/');return false; height=100 border=0>
<img src="/imgs/btn/vu_law.png" alt="vu_law" onclick="window.open('/law/vu_law.html');return false; height=100 border=0>
       
<img src="/cpa/pages/1.jpg" alt="cpa" onclick="window.open('/cpa/');return false; height=100 border=0>
<img src="/imgs/btn/vu_cpa.png" alt="cpa" onclick="window.open('/cpa/vu_cpa.html');return false; height=100 border=0>
       
<img src="/med/pages/1.jpg" alt="med" onclick="window.open('/med/');return false; height=100 border=0>
<img src="/imgs/btn/vu_med.png" alt="vu_med" onclick="window.open('/med/vu_med.html');return false; height=100 border=0>
<br>
<img src="/trial6/pages/1.jpg" alt="trial6" onclick="window.open('/trial6/');return false; height=100 border=0>
<img src="/imgs/btn/vu_trial6.png" alt="vu_med" onclick="window.open('/trial6/vu_trial6.html');return false; height=100 border=0>
       
<img src="/trial7/pages/1.jpg" alt="trial7" onclick="window.open('/trial7/');return false; height=100 border=0>
<img src="/imgs/btn/vu_trial7.png" alt="vu_med" onclick="window.open('/trial7/vu_trial6.html');return false; height=100 border=0>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<br><br><br><br>
<!--
<img src="/imgs/links/missioncontinues.jpg"
alt="missioncontinues.org"
onclick="window.open(\'https://missioncontinues.org\'); return false;"
height=200 border=0>
       
<img src="/imgs/links/woodson.jpg"
alt="woodsoncenter.org"
onclick="window.open(\'woodsoncenter.org\'); return false;"
height=200 border=0>
<br>
<img src="/imgs/links/trey_gowdy-doesnt_hurt2ask.jpg" alt="trey_goudy-doesnt_hurt2ask"
onclick="window.open('https://www.treygowdy.com/doesnt-hurt-to-ask');return false;"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=89Vpqm2IaPE');return false;"
alt="jordan_peterson_howtosell"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=-5RCmu-HuTg');return false;"
alt="jordan_peterson_12_rules_of_life"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/_OzFtV_RYD8/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=_OzFtV_RYD8');return false;"
alt="webb_awanbeforemidnight"
height=100 border=0>
-->
<br>
<hr color=goldenrod>';
<hr color=goldenrod>
-= ...::: wait_for_the_drop :::... =-
<hr color=goldenrod>
</h1>
<hr color=white>
<canvas id="canvas_blob" width="600" height="400"></canvas><br>
<!-- <canvas id="canvas_blobs" width="600" height="400"></canvas><br> -->
<!-- <canvas id="canvas_blob" width="800" height="400" onclick="window.open('/blob.html');return false;"></canvas><br> -->
<hr color=white>
<!-- <img src="/imgs/btn/koeyeb.png" onclick="stop();return false;" height=30> -->
<!-- <img src="/imgs/btn/koeyew.png" onclick="start();return false;" height=30> -->
<!-- -= start =- -= stop =- -->
<br>
<hr color=white>
<!--
<img id="img_titles" src="/imgs/btn/koeye.png" onclick="alert('titles'+kolists['titles']);titles('');return false;" height=50>
<img id="img_titles1" src="/imgs/btn/koeye.png" onclick="alert('titles1'+kolists['titles']);titles1('');return false;" height=50>
       
-->
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<img id="img_blob_togglestart" src="/imgs/btn/kow.png" onclick="togglestart();return false;" height=30>
       
       
<img id="img_grid_toggle" src="/imgs/btn/btn_keyhole_us.png" onclick="grid_toggle(''); return false;" height=100>
       
<img id="img_grid_keys" src="/imgs/btn/btn_keys1.png" onclick="grid(''); return false;" height=100>
       
<!-- <img id="img_blob_togglestart" src="/imgs/btn/kob.png" onclick="keine('123'); return false;" height=50> -->
<!-- <img id="img_blob_togglestart" src="/imgs/btn/kob.png" onclick="bugs('123'); return false;" height=50> -->
       
<img id="img_blob_k9" src="/imgs/btn/kob.png" onclick="window.open('k9.html');return false;" height=30>
       
       
       
<img id="img_blob_arrowkeys_toggle" src="/imgs/btn/kob.png" onclick="blob_arrowkeys_toggle('');return false;" height=25>
       
<img id="img_blob_split" src="/imgs/btn/koeye_split.png" onclick="blobColl.split();return false;" height=30>
   
<!--
<img id="img_blob_togglegravity" src="/imgs/btn/koeyew_gravity.png" onclick="toggleGravity();return false;"
height=30>
-->
<img id="img_blob_togglegravity" src="/imgs/btn/blob_gravity_on.gif"
onclick="toggleGravity();return false;"
height=100>
<!--
<img id="img_blob_togglegravity" src="/imgs/btn/blob_gravity_off.gif"
onclick="toggleGravity();return false;"
height=30>
-->
   
<img id="img_blob_join" src="/imgs/btn/koeye_join.png" onclick="blobColl.join();return false;" height=30>
   
<!--
<button onclick="document.getElementById('audio_sound').play();">
giggle
</button>
-->
   
<!-- -= + =- -= = =- -= - =- -->
<hr color=white>
<br>
<img id="img_blob1" src="/imgs/btn/koeye_space.png"
onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;"
onmouseover="blob_mouseover('1');return false"
height=30>
<img id="img_blob2 "src="/imgs/btn/koeye_up.png"
onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;"
onmouseover="blob_mouseover('2');return false"
height=30>
<img id="img_blob3" src="/imgs/btn/koeye_space.png"
onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;"
onmouseover="blob_mouseover('3');return false"
height=30>
<br>
<img id="img_blob4" src="/imgs/btn/koeye_left.png"
onclick="blobColl.addForce( new Vector(-50.0,0.0));return false;"
onmouseover="blob_mouseover('4');return false"
height=30>
<img id="img_blob5" src="/imgs/btn/koeye_space.png"
onclick="blob_info('');return false;"
onmouseover="blob_mouseover('5');return false"
height=30>
<img id="img_blob6" src="/imgs/btn/koeye_right.png"
onclick="blobColl.addForce( new Vector(50.0,0.0));return false;"
onmouseover="blob_mouseover('6');return false"
height=30>
<br>
<img id="img_blob7" src="/imgs/btn/koeye_space.png"
onclick="blobColl.addForce( new Vector(0.0,50.0));return false;"
onmouseover="blob_mouseover('7');return false"
height=30>
<img id="img_blob8" src="/imgs/btn/koeye_down.png"
onclick="blobColl.addForce( new Vector(0.0,50.0));return false;"
onmouseover="blob_mouseover('8');return false"
height=30>
<img id="img_blob9" src="/imgs/btn/koeye_space.png"
onclick="blobColl.addForce( new Vector(0.0,50.0));return false;"
onmouseover="blob_mouseover('9');return false"
height=30>
<!-- -= l =- -= u =- -= d =- -= r =- -->
<hr color=white>
<br>
<!--
<img id="img_blob0" src="/imgs/btn/kob.png" onclick="blob_mouseover('0');return false;" height=25>
-->
<script id="script_blob_arrowkeys_toggle">
var blob_arrowkeys="";
function blob_arrowkeys_toggle(args) {
// alert( "BUGS_1830 args="+args );
// alert( "BUGS_1834 blob_arrowkeys="+blob_arrowkeys );
if( document.getElementById('img_blob_arrowkeys_toggle')) {
if( blob_arrowkeys == "on" ) {
blob_arrowkeys = "";
document.getElementById('img_blob_arrowkeys_toggle').src='/imgs/btn/kob.png';
// alert( "BUGS_1841 blob_arrowkeys="+blob_arrowkeys );
}
else {
blob_arrowkeys = "on";
document.getElementById('img_blob_arrowkeys_toggle').src='/imgs/btn/kow.png';
// alert( "BUGS_1842 blob_arrowkeys="+blob_arrowkeys );
}
}
}
</script>
<br>
<hr color=goldenrod>
<div id="div_tokens" hidden ><h3>div_tokens</h3></div>
<div id="div_grid"><h3>div_grid</h3></div>
<div id="div_grid1" hidden ><h3>div_grid</h3></div>
<div id="div_grid2" hidden ><h3>div_grid</h3></div>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<div id="div_grid_canvas" hidden>
<h3>grid_canvas</h3>
<canvas id="canvas_table_top" height=50 ></canvas>
<table id="table_grid_canvas" >
<tr>
<td id="td11" > <canvas id="canvas_grid_1" src=/imgs/btn/kob.png onclick="grid('grid1_11');return false;" height=50 border=0 ></canvas></td>
<td id="td12" > <canvas id="canvas_grid_2" src=/imgs/btn/kob.png onclick="grid('grid1_12');return false;" height=50 border=0 ></canvas></td>
<td id="td13" > <canvas id="canvas_grid_3" src=/imgs/btn/kob.png onclick="grid('grid1_13');return false;" height=50 border=0 ></canvas></td>
</tr>
<tr>
<td id="td21" > <canvas id="canvas_grid_4" src=/imgs/btn/kob.png onclick="grid('grid1_21');return false;" height=50 border=0 ></canvas></td>
<td id="td22" > <canvas id="canvas_grid_5" src=/imgs/btn/kob.png onclick="grid('grid1_22');return false;" height=50 border=0 ></canvas></td>
<td id="td23" > <canvas id="canvas_grid_6" src=/imgs/btn/kob.png onclick="grid('grid1_23');return false;" height=50 border=0 ></canvas></td>
</tr>
<tr>
<td id="td31" > <canvas id="canvas_grid_7" src=/imgs/btn/kob.png onclick="grid('grid1_31');return false;" height=50 border=0 ></canvas></td>
<td id="td32" > <canvas id="canvas_grid_8" src=/imgs/btn/kob.png onclick="grid('grid1_32');return false;" height=50 border=0 ></canvas></td>
<td id="td33" > <canvas id="canvas_grid_9" src=/imgs/btn/kob.png onclick="grid('grid1_33');return false;" height=50 border=0 ></canvas></td>
</tr>
<tr>
<td id="td_1-1" >box1-1</td>
<td id="td_1-2" >box1-2</td>
<td id="td_1-3" >box1-3</td>
</tr>
<tr>
<td id="td_2-1" >box2-1</td>
<td id="td_2-2" >box2-2</td>
<td id="td_2-3" >box2-3</td>
</tr>
<tr>
<td id="td_3-1" >box3-1</td>
<td id="td_3-2" >box3-2</td>
<td id="td_3-3" >box3-3</td>
</tr>
</table>
<canvas id="canvas_table_bot" height=100 width=400></canvas>
</div>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<br>
<br>
<hr color=red>
<hr color=white>
<hr color=blue>
<hr color=goldenrod>
<br>
<img src="/fb/cards/pages/invite_vip_deutsch.jpg"
alt="invite_vip_deutsch"
onclick="window.open('/fb/cards/pages/zn/zn_invite_vip_deutsch.jpg'); return false;"
height=300 border=0 >
       
<img src="/imgs/keys/keys00_hole.png"
onclick="window.open('/imgs/keys/keys62_hole2heaven.png'); return false;"
height=300 border=0 >
<br>
<div id="div_kogrids_w" >
</div>
<div id="div_buttons_hideshow_w">
<img src="/imgs/btn/koeye_alloff.png" height=50 onclick="script_hideshow('alloff');return false;" alt="btn_alloff">
<img src="/imgs/btn/koeye_toggle.png" height=50 onclick="script_hideshow('toggle');return false;" alt="btn_alloff">
<img src="/imgs/btn/koeye_allon.png" height=50 onclick="script_hideshow('allon');return false;" alt="btn_allon">
<br>
<hr color=white>
<hr color=black>
<!-- <img src="/imgs/btn/koeyew_slots.png" height=50 onclick="script_hideshow('div_slots');return false;" alt="btn_slots"> -->
<!-- <img src="/imgs/btn/koeyew_hl.png" height=50 onclick="script_hideshow('div_hl');return false;" alt="btn_hl"> -->
<!-- <img src="/imgs/btn/koeyew_hllinks.png" height=50 onclick="script_hideshow('div_hllinks');return false;" alt="btn_hllinks"> -->
<!-- <img src="/imgs/btn/koeyew_hltext.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hltext"> -->
<!-- <img src="/imgs/btn/koeyew_hlmedia.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hlmedia"> -->
<!-- <img src="/imgs/btn/koeyew_games.png" height=50 onclick="script_hideshow('div_games');return false;" alt="btn_games"> -->
<!-- <img src="/imgs/btn/koeyew_av_jtfdc.png" height=50 onclick="script_hideshow('div_av_jtfdc');return false;" alt="btn_av_jtfdc"> -->
<!-- <img src="/imgs/btn/koeyew_av_jtfinc.png" height=50 onclick="script_hideshow('div_av_jtfinc');return false;" alt="btn_av_jtfinc"> -->
<!-- <img src="/imgs/btn/koeyew_av_jtfdcr.png" height=50 onclick="script_hideshow('div_av_jtfdcr');return false;" alt="btn_av_jtfdcr"> -->
<img src="/imgs/btn/koeyew_av.png" height=50 onclick="script_hideshow('div_av');return false;" alt="btn_av">
<img src="/imgs/btn/koeyew_bb.png" height=50 onclick="script_hideshow('div_db');return false;" alt="btn_db">
<img src="/imgs/btn/koeyew_dd.png" height=50 onclick="script_hideshow('div_dd');return false;" alt="btn_dd">
<img src="/imgs/btn/koeyew_fb.png" height=50 onclick="script_hideshow('div_fb');return false;" alt="btn_fb">
<img src="/imgs/btn/koeyew_fs.png" height=50 onclick="script_hideshow('div_fs');return false;" alt="btn_fs">
<img src="/imgs/btn/koeyew_pn.png" height=50 onclick="script_hideshow('div_pn');return false;" alt="btn_pn">
<img src="/imgs/btn/koeyew_sl.png" height=50 onclick="script_hideshow('div_sl');return false;" alt="btn_sl">
<img src="/imgs/btn/koeyew_tl.png" height=50 onclick="script_hideshow('div_tl');return false;" alt="btn_tl">
<img src="/imgs/btn/koeyew_tm.png" height=50 onclick="script_hideshow('div_tm');return false;" alt="btn_tm">
<img src="/imgs/btn/koeyew_yt.png" height=50 onclick="script_hideshow('div_yt');return false;" alt="btn_yt">
<img src="/imgs/btn/koeyew_zm.png" height=50 onclick="script_hideshow('div_zm');return false;" alt="btn_zm">
<br>
<img src="/imgs/btn/koeyew_jtfdc.png" height=50 onclick="script_hideshow('div_jtfdc');return false;" alt="btn_jtfdc">
<img src="/imgs/btn/koeyew_jtfinc.png" height=50 onclick="script_hideshow('div_jtfinc');return false;" alt="btn_jtfinc">
<img src="/imgs/btn/koeyew_jtfdcr.png" height=50 onclick="script_hideshow('div_jtfdcr');return false;" alt="btn_jtfdcr">
<br>
<img src="/imgs/btn/koeyew_head.png" height=50 onclick="script_hideshow('div_head');return false;" alt="btn_head">
<img src="/imgs/btn/koeyew_body.png" height=50 onclick="script_hideshow('div_body');return false;" alt="btn_body">
<img src="/imgs/btn/koeyew_memes.png" height=50 onclick="script_hideshow('div_memes');return false;" alt="btn_memes">
<img src="/imgs/btn/koeyew_kov.png" height=50 onclick="script_hideshow('div_kov');return false;" alt="btn_kov">
<img src="/imgs/btn/koeyew_tail.png" height=50 onclick="script_hideshow('div_tail');return false;" alt="btn_tail">
<br>
<hr color=linen>
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<img src="/imgs/btn/koeyew_handhither.gif"
alt="<img src=imgs/btn/koeye.png height=200>stalkarounds"
onclick="script_hideshow('div_stalkarounds');return false;"
height=100 border=0>
yyyyyyyyyyyyyyyyyyyyyyyyy
<!--
div_postturtle_monkeytrap
div_tclaw
div_pdfs
div_media
div_fb_law
div_jtfdc_stalkarounds
div_mothersday
div_reindependenceday
div_anniversary
div_turbulence
div_us2
div_edu
div_hoa
div_zpid
-->
</div>
<br><br><br><br>
<hr color=linen>
<h1>law</h1>
<img src="/law/pages/1.jpg" alt="law" onclick="window.open('/law/'); return false;" height=100 border=0>
<img src="/fb/focus/pages/tn/tn_1.png" alt="index_vu_law" onclick="window.open('/law/index_vu.html'); return false;" height=100 border=0>
<img src="/fb/law/pages/1.jpg" alt="law" onclick="window.open('/fb/law/'); return false;" height=100 border=0>
<hr color=yellow>
<br>
<hr color=goldenrod>
<h2>trial6-hon_judge_heggie</h2>
<img src="/fb/law/trial6_hon_judge_heggie/pages/1.jpg" alt="law" onclick="window.open('/fb/law/trial6_hon_judge_heggie'); return false;" height=100 border=0>
       
<img src="/fb/law/trial7_hon_judge_concannon/pages/1.jpg" alt="law_" onclick="window.open('/fb/law/trial7_hon_judge_concannon'); return false;" height=100 border=0>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<img src="/med/pages/1.jpg" alt="med" onclick="window.open('/med/'); return false;" height=100 border=0>
<img src="/kou/pages/1.jpg" alt="kou" onclick="window.open('/kou/'); return false;" height=100 border=0>
<img src="/kids/pages/1.jpg" alt="kids" onclick="window.open('/kids/'); return false;" height=100 border=0>
<br>
<div id="div_soul_lewis" >
<hr colod=red>
<hr colod=white>
<hr colod=blue>
<h1>john lewis - civil rights leader</h1>
<h2>1940-02-21 - 2020-07-17</h2>
<img src="/fb/soul/imgs/john_lewis_wiki.jpg"
alt="wiki_john_lewis"
onclick="window.open('/fb/soul');return false;"
height=300 border=0>
<br>
<hr color=red>
<hr color=linen>
<hr color=blue>
<img src="https://img.youtube.com/vi/QFUif6T5xiI/default.jpg"
alt="whitney_houston-abraham_martin_n_john"
onclick="window.open('https://www.youtube.com/watch?v=QFUif6T5xiI'); return false;"
height=100 border=0>
       
<img src="/kb/vid/jkwii/nina_simonedont_let_me_be_misunderstood.jpg"
onclick="window.open('/kb/vid/jkwii/nina_simonedont_let_me_be_misunderstood.mp4'); return false;"
height=100 border=0>
       
<img src="/kb/vid/jkwii/dion-abraham_martin_n_john.jpg"
alt="dion-abraham_martin_n_john"
onclick="window.open('/kb/vid/jkwii/dion-abraham_martin_n_john.mp4'); return false;"
height=100 border=0>
<br>
<hr color=red>
<hr color=linen>
<hr color=blue>
<img src="/kb/vid/jkwii/van_morrison-whenever_god_shines_his_light.jpg"
alt="van_morissan-whenever_god_shines_his_light"
onclick="window.open('/kb/vid/jkwii/van_morrison-whenever_god_shines_his_light.mp4');return false;"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/myBVejwZt8Q/default.jpg"
alt="ray_charles_america_the_beautiful_1972"
onclick="window.open('https://www.youtube.com/watch?v=myBVejwZt8Q'); return false;"
height=100 border=0>
       
<img src="/kb/vid/jkwii/jesse_colin_young-whats_going_on.jpg"
alt="jesse_colin_young-whats_going_on"
onclick="window.open('/kb/vid/jkwii/jesse_colin_young-whats_going_on.mp4'); return false;"
height=100 border=0>
<br>
<hr color=blue>
<hr color=linen>
<hr color=red>
<!--
<img src="https://img.youtube.com/vi/GufSJChOFG8/default.jpg"
alt="georga_on_my_mind"
onclick="window.open('https://www.youtube.com/watch?v=GufSJChOFG8'); return false;"
height=100 border=0>
       
-->
<!--
<img src="/fb/soul/imgs/john_lewis_wiki.jpg"
alt="wikipedia_john_lewis"
onclick="window.open('https://en.wikipedia.org/wiki/John_Lewis_(civil_rights_leader)');return false;"
height=100 border=0>
       
-->
<!--
<img src="/fb/soul/imgs/john_lewis.jpg"
alt="dailymail_john_lewis"
onclick="window.open('https://www.dailymail.co.uk/news/article-8537071/Donald-Trump-FINALLY-pays-tribute-John-Lewis-White-House-flags-lowered-honor.html');return false;"
height=100 border=0>
       
-->
<!--
<img src="https://img.youtube.com/vi/FryExpC-fS4/default.jpg"
alt="dion-abraham_martin_n_john"
onclick="window.open('https://www.youtube.com/watch?v=FryExpC-fS4'); return false;"
height=100 border=0>
-->
<!--
<img src="https://img.youtube.com/vi/8xk1P1913y0/default.jpg"
alt="ray_charles_america_the_beutiful"
onclick="window.open('https://www.youtube.com/watch?v=8xk1P1913y0'); return false;"
height=100 border=0>
       
-->
<br>
<hr color=blue>
<hr color=white>
<hr color=red>
</div>
<br>
<hr color=linen>
<img src="/imgs/btn/warning1.gif" alt="warning1"
id="img_warning_gif1"
onclick="window.open('/imgs/btn/warning1.gif'); return false;"
height=100 border=0>
   
<img src="/imgs/btn/ko_warning.png" alt="ko_warning.png"
id="img_ko_warning_png"
onclick="window.open('/imgs/btn/ko_warning.png'); return false;"
height=100 border=0>
   
<img src="/imgs/btn/warning2.gif" alt="warning_gif2"
id="img_warning_png2"
onclick="window.open('/imgs/btn/warning2.gif'); return false;"
height=100 border=0>
<hr color=linen>
<div id="div_img_letter_j">
<img src="/imgs/letters/ltr_j_fantasy.png" alt="email_jkwii_hat_ko2us"
id="img_random_letter_j1"
onclick="window.open('/imgs/letters/ltr_j_fantasy.png'); return false;"
height=100 border=0>
<img src="/imgs/links/email.gif" alt="email_jkwii_ko2us"
onclick="window.open('mailto:jkwii@ko2.us?subject=jkwii_hat_ko2us_knock_knock');return false;"
height=50 border=0>
</div>
       
<img src="/imgs/btn/jkwii_greetings.png" alt="jkwii_greetings"
onclick="window.open('/imgs/btn/jkwii_greetings.png');return false;"
height=50 border=0>
       
<div id="div_img_letter_s">
<img src="/imgs/letters/ltr_s_swan.png" alt="email_skwii_hat_ko2us"
id="img_random_letter_s1"
onclick="window.open('/imgs/letters/ltr_s_swan.png'); return false;"
height=100 border=0>
<img src="/imgs/links/email.gif" alt="email_skwii_ko2us"
onclick="window.open('mailto:skwii@ko2.us?subject=skwii_hat_ko2us_knock_knock');return false;"
height=50 border=0>
</div>
<br>
<hr color=linen>
<hr color=goldenrod>
<h1>thanks med_team thank bluehost_support_team</h1>
<hr color=goldenrod>
<!--
/imgs/eyepatchs/eyepatch_steampunk_posh.jpg
/imgs/eyepatchs/eyepatch_steampunk_circles.jpg
/imgs/eyepatchs/eyepatch_steampunk16.jpg
<img src="/imgs/eyepatchs/eyepatch_steampunk14.jpg">
-->
<img src="/imgs/eyepatchs/eyepatch_steampunk14.jpg"
id="img_random_eyepatch"
alt="thanks_med_eyepatch"
onclick="window.open('/imgs/eyepatchs/eyepatch_steampunk14.jpg'); return false;"
height=200 border=0 >
       
<img src="/fb/cards/pages/thanks_med_dr_lele.jpg"
alt="thanks_med_dr_lele"
onclick="window.open('/fb/cards/pages/zn/zn_thanks_med_dr_lele.jpg'); return false;"
height=200 border=0 >
       
<img src="/fb/cards/pages/thanks_med.jpg"
alt="thanks_med"
onclick="window.open('/fb/cards/pages/zn/zn_thanks_med.jpg'); return false;"
height=200 border=0 >
       
<img src="/fb/neuz/imgs/dailymail_20200720_cataract_surgery_savannah_guthrie.jpg"
alt="cataract_surgery_savannah_guthrie"
onclick="window.open('https://www.dailymail.co.uk/femail/article-8541609/Savannah-Guthrie-undergoes-cataract-surgery-repair-blurry-spot-eye.html');return false;"
height=200 border=0 >
       
<img src="/fb/operation/pages/1.jpg"
alt="flipbook_operation"
onclick="window.open('/fb/operation');return false;"
height=200 border=0 >
       
<img src="/fb/med/pages/1.jpg"
alt="flipbook_med"
onclick="window.open('/fb/med');return false;"
height=200 border=0 >
<br>
<hr color=linen>
<hr color=orange>
<hr color=linen>
<img src="/fb/cards/pages/thanks_bluehost.jpg"
alt="thanks_bluehost"
onclick="window.open('/fb/cards/pages/zn/zn_thanks_bluehost.jpg'); return false;"
height=200 border=0 >
       
       
       
<img src="https://img.youtube.com/vi/LwofUx3E4XU/default.jpg"
alt="ganpati_bappa_moriya"
onclick="window.open('https://www.youtube.com/watch?v=LwofUx3E4XU'); return false;"
height=200 border=0>
       
<img src="/imgs/btn/btn_pdf1.png" class="class_btn_pdf"
alt="thanks_bluehost_20200724_0903"
onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/email_bluehost_david.pdf'); return false;"
height=200 border=0>
       
       
<img src="/imgs/links/bluehost_home.jpg"
alt="bluehost_affiliate"
onclick="window.open('https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype');return false;"
height=200 border=0 >
       
<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="thumbnail" target=_blank>
<img src="'+mykoeyew[koeyew2]+'" height=75 alt=kow border=0>
// <span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>
<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>
</a>;
<br>
<hr color=goldenrod>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr colod=blue>
<br>
<h1>2020 july 4 online VIP invitation only party</h1>
<h2>43rd wedding anniversary - 1977 - 2020</h2>
<h2>USA reindependence day</h2>
<h2>jtfdc reindepence day</h2>
<h3>20200704_0300 last update</h3>
<h3>20200704_0700 - blocked - 202007007_1200</h3>
<img src="/imgs/eyepatchs/eyepatch_steampunk02.png"
alt="eyepatch_key"
onclick="window.open('/imgs/eyepatchs/eyepatch_steampunk02.jpg'); return false;"
height=200 border=0 >
<img src="/fb/cards/pages/invite_anniversary.jpg"
alt="invite_anniversary"
onclick="window.open('/fb/cards/pages/zn/zn_invite_anniversary.jpg'); return false;"
height=200 border=0 >
       
       
<img src="/fb/bh/imgs/screenshot_24345.png" alt="thanks_bluehost" onclick="window.open('/fb/bh'); return false;" height=200 border=0 >
       
       
<img src="/fb/cards/pages/invite_reindependence.jpg"
alt="invite_reindependence"
onclick="window.open('/fb/cards/pages/zn/zn_invite_reindependence.jpg'); return false;"
height=200 border=0 >
<br>
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
<hr color=pink>
<h1>birthdays August</h1>
<img src="/imgs/eyepatchs/eyepatch_baby02.jpg"
alt="eyepatch_baby02"
onclick="window.open('/imgs/eyepatchs/eyepatch_baby.jpg'); return false;"
height=200 border=0 >
<img src="/fb/cards/pages/birthday_20200821.jpg"
alt="birthday_20200821"
onclick="window.open('/fb/cards/pages/zn/zn_birthday_20200821.jpg'); return false;"
height=200 border=0 >
       
<img src="https://img.youtube.com/vi/09gJX0Cc6p0/default.jpg"
alt="elise_girl_from_iponema"
onclick="window.open('https://www.youtube.com/watch?v=09gJX0Cc6p0');return false;"); return false;"
height=100 border=0 >
       
       
<img src="/fb/cards/pages/birthday_19940816.jpg"
alt="birthday_19940816"
onclick="window.open('/fb/cards/pages/zn/zn_birthday_19940816.jpg'); return false;"
height=200 border=0 >
<br>
<hr color=pink>
<hr color=yellow>
<img src="/imgs/jsdoit/jsdoit_sailboat.png"
onclick="window.open('index_sailboat.html');return false;"
height=200 border=0 draggable="true">
       
<img src="/imgs/jsdoit/jsdoit_shoo.png"
onclick="window.open('index_shoo.html');return false;"
height=200 border=0 draggable="true">
<br>
<hr color=yellow>
<hr color=pink>
<br><br><br><br>
<br><br><br><br>
<hr color=pink>
<br><br><br><br>
<hr color=darkslategray>
<img src="/fb/cards/pages/invite_vip.jpg"
alt="invite_vip"
onclick="window.open('/fb/cards/pages/zn/zn_invite_vip.jpg'); return false;"
height=300 border=0 >
       
<img src="/imgs/keys/keys00_hole.png"
onclick="window.open('/imgs/keys/keys62_hole2heaven.png'); return false;"
height=300 border=0 >
       
<img src="/imgs/keys/keys07_steampunk.png"
id="img_random_key"
alt="img_random_key"
onclick="window.open('/imgs/keys/keys01_jkwii.jpg'); return false;"
height=300 border=0>
<br>
<hr color=goldenrod>
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br>
<div id="div_greetings" hidden>
<pre>
Liebe eingeladene Gäste und Ihre vertrauenswürdigen Mitarbeiter:
Erkunden Sie unseren digitalen Campus in Ihrem eigenen Tempo
Als Live-Baustelle brauchen Sie
- Arbeitsschutzhelm -
- Sicherheitsbrille (googles)
- Computermaus
- (Arztmaske nicht notwendig)
Warnung:
Unwissende oder faule Besucher können den Besuch
als unangenehm empfinden.
Eine persönliche Tour kann auf Anfrage arrangiert werden.
Vielen Dank für Ihre Zeit
Mit freundlichen Grüßen
Reiseführer
jkwii
(Besen und Schaufel Betreiber)
</pre>
</div>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<h1>july 4 2020 jsk 43rd wedding anniversary</h1>
<img src="/imgs/gif/giphy_anniversary/giphy_ann010.gif"
alt="giphy_anniversary/giphy_ann010.gif"
onclick="window.open('/fb/anniversary'); return false;"
height=300>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<h1>july 4 2020 reindependenceday jtfdc USA</h1>
<img src="/imgs/gif/cute/kid.gif"
alt="reindependenceday/cute/kid"
onclick="window.open('/fb/reindependenceday'); return false;"
height=300>
<br><br><br><br>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<h1>div_top_fb_head</h1>
<div id="div_fblink" >
<h1>div_fblink</h1>
<hr color=red>
<img src="/imgs/btn/koeye_handhither.gif" onclick="show_kolists('');return false;"
height=200 >
<hr color=red>
</div>
<div id="div_fb_w" ><h1>div_fb_w</h1>
<div id="canvas_fb">
<div class="zoom-icon zoom-icon-in"></div>
<div class="magazine-viewport">
<div class="container">
<div class="magazine">
<!-- Next button -->
<div ignore="1" class="next-button"></div>
<!-- Previous button -->
<div ignore="1" class="previous-button"></div>
</div>
</div>
</div>
<!-- Thumbnails -->
<div id="div_tn"></div>
<div class="thumbnails" >
<div>
<ul>
<li class="i">
<img src="pages/tn/tn_1.png" width="76" height="100" class="page-1">
<span>1</span>
</li>
<li class="d">
<img src="pages/tn/tn_2.png" width="76" height="100" class="page-2">
<img src="pages/tn/tn_3.png" width="76" height="100" class="page-3">
<span>2-3</span>
</li>
<li class="d">
<img src="pages/tn/tn_4.png" width="76" height="100" class="page-4">
<img src="pages/tn/tn_5.png" width="76" height="100" class="page-5">
<span>4-5</span>
</li>
<li class="d">
<img src="pages/tn/tn_6.png" width="76" height="100" class="page-6">
<img src="pages/tn/tn_7.png" width="76" height="100" class="page-7">
<span>6-7</span>
</li>
<li class="d">
<img src="pages/tn/tn_8.png" width="76" height="100" class="page-8">
<img src="pages/tn/tn_9.png" width="76" height="100" class="page-9">
<span>8-9</span>
</li>
<li class="d">
<img src="pages/tn/tn_10.png" width="76" height="100" class="page-10">
<img src="pages/tn/tn_11.png" width="76" height="100" class="page-11">
<span>10-11</span>
</li>
<li class="d">
<img src="pages/tn/tn_12.png" width="76" height="100" class="page-12">
<img src="pages/tn/tn_13.png" width="76" height="100" class="page-13">
<span>12-13</span>
</li>
<li class="d">
<img src="pages/tn/tn_14.png" width="76" height="100" class="page-14">
<img src="pages/tn/tn_15.png" width="76" height="100" class="page-15">
<span>14-15</span>
</li>
<li class="d">
<img src="pages/tn/tn_16.png" width="76" height="100" class="page-14">
<img src="pages/tn/tn_17.png" width="76" height="100" class="page-15">
<span>16-17</span>
</li>
<li class="i">
<img src="pages/tn/tn_18.png" width="76" height="100" class="page-16">
<span>18</span>
</li>
<ul>
<div> </div>
</div>
</div>
</div id="div_fb_w_tail" >
<h1>div_top_fb_tail</h1>
<hr color=blue>
<hr color=white>
<hr color=rec>
<hr color=darkslategray>
<br><br><br><br>
<br><br><br><br>
<div id="div_toplinks">
<!-- <h1 id="h1_toplinks">h1_toplinks</h1> -->
<img src="/imgs/btn/btn_jitsi1.png" alt="btn_jitsi"
onclick="window.open('https://meet.jit.si/ko');return false;"
height=100 border=0>
       
<img src="/imgs/btn/btn_zoom.png" alt="btn_zoom"
onclick="window.open('https://zoom.us');return false;"
height=50 border=0>
       
<img src="/imgs/btn/btn_jitsi2.png" alt="btn_zoom"
onclick="window.open('https://jitsi.org');return false;"
height=100 border=0>
<br><br><br><br>
<hr color=goldenrod>
<img src="/fb/cards/pages/invite_vip_deutsch.jpg" alt="invite_vip_deutsch"
onclick="window.open('/fb/cards/pages/zn/zn_invite_vip_deutsch.jpg');return false;"
height=100 border=0>
<hr color=goldenrod>
<br><br><br><br>
<hr color=linen>
<img src="/fb/jkwii/pages/1.jpg" alt="fb/neuz"
onclick="window.open('/fb/jkwii');return false;"
height=200 border=0>
       
<img src="/imgs/links/missioncontinues.jpg" alt="missioncontinues.org"
onclick="window.open('https://missioncontinues.org');return false;"
height=100 border=0>
       
<img src="/imgs/links/woodson.jpg" alt="woodsoncenter.org"
onclick="window.open('https://woodsoncenter.org');return false;"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/89Vpqm2IaPE/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=89Vpqm2IaPE');return false;"
alt="jordan_peterson_howtosell"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/-5RCmu-HuTg/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=-5RCmu-HuTg');return false;"
alt="jordan_peterson_12_rules_of_life"
height=100 border=0>
       
<img src="/imgs/links/trey_gowdy-doesnt_hurt2ask.jpg" alt="trey_goudy-doesnt_hurt2ask"
onclick="window.open('https://www.treygowdy.com/doesnt-hurt-to-ask');return false;"
height=100 border=0>
       
<br><br><br><br>
<hr color=linen>
<hr color=darkslategrey>
<hr color=linen>
<img src="/fb/neuz/pages/1.jpg" alt="fb/neuz"
onclick="window.open('/fb/neuz');return false;"
height=200 border=0>
       
<!--
<img src="/fb/neuz/pages/neuz_20200628_lawyers_keepmoving.jpg" alt="fb/neuz"
onclick="window.open('https://www.dailymail.co.uk/news/article-8467075/St-Louis-couple-point-firearms-protesters-outside-home-marching-demand-mayors-resignation.html');return false;"
height=200 border=0>
-->
<img src="/imgs/private_street_mccloskey.jpg" alt="private_street_mccloskey"
onclick="window.open('https://www.zerohedge.com/political/gun-toting-st-louis-lawyers-defend-mansion-blm-protesters-viral-video');return false;"
height=200 border=0>
       
<img src="/imgs/links/stltoday_20200712_portlandplace_couple_history_not_backing_down.jpg"
alt="stltoday_20200712_portlandplace_couple_history_not_backing_down"
onclick="window.open('https://www.stltoday.com/news/local/metro/portland-place-couple-who-confronted-protesters-have-a-long-history-of-not-backing-down/article_281d9989-373e-53c3-abcb-ecd0225dd287.html?utm_source=digg');return false;"
height=200 border=0>
       
<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.jpg" alt="alex_salvi_twitter_private_street.jpg"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.mp4');return false;"
height=150 border=0>
       
<br><br><br><br>
<hr color=golenrod>
<h1>jtfdcr JamesTownFarms Deffords Court Report</h1>
<h2>pano_jtfdcr gopher_crosswalkers fox_crosswalker bambi_crosswalkers </h2>
<hr color=golenrod>
<!-- <img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png" -->
<img src="/imgs/links/gazibo.png"
onclick="window.open('/imgs/links/gazibo.png');return false;"
alt="jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434.png"
height=200 border=0>
<img src="/imgs/links/pano_courtyard1.jpg" " alt="pano_courtyard1"
onclick="window.open('/index_pn.html');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/pages/2.jpg" alt="private_court_jtfdc"
onclick="window.open('/fb/jtfdcr');return false;"
height=200 border=0>
<img src="/fb/jtfdcr/pages/3.jpg" alt="private_court_jtfdc"
onclick="window.open('/fb/jtfdcr');return false;"
height=200 border=0>
<br><br>
<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/Jtfdc_20200714_0757_3gophers_IMG_9331.gif"
alt="Jtfdc_20200714_0757_3gophers_IMG_9331"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/Jtfdc_20200714_0757_3gophers_IMG_9331.mp4');return false;"
height=100 border=0>
       
<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_0633_fox_IMG_9325.gif"
alt="jtfdc_20200713_jtfdc_20200714_0633_fox_IMG_9325"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_0633_fox_IMG_9325.mp4');return false;"
height=100 border=0>
       
<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1859_deer_bambis3_IMG_9259.gif"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200712_1859_deer_bambis3_IMG_9259.mp4');return false;"
alt="jtfdc_20200712_1859_deer_bambis3_IMG_9259"
height=100 border=0>
       
<!--
<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.jpg" alt="alex_salvi_twitter_private_street.jpg"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/alex_salvi_twitter_private_street.mp4');return false;"
height=150 border=0>
       
-->
<br><br>
       
<br><br><br><br>
<hr color=darkslategray>
<img src="/fb/who2jail/pages/1.jpg" alt="who2jail"
onclick="window.open('/fb/who2jail');return false;"
height=200 border=0>
<br>
<hr color=darkslategray>
<h2>jtf32_donutvanlaw_direction_n_taking</h2>
   
<img src="/fb/jtfdcr/imgs/eagle_sIMG_1703.jpg" alt="eagle_sIMG_1703" height=200 border=0>
   
<img src=/fb/jtfdcr/pages/IMG_7640.png onclick="window.open('/fb/jtfdcr/pages/IMG_7640.png');return false;" height=200>
   
<img src="/fb/jtfdcr/imgs/jtfdc_20150608_eagle_stealn_streetgangIMG_1743.jpg"
alt="jtfdc_20150608_eagle_stealn_streetgangIMG_1743"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20150608_eagle_stealn_streetgangIMG_1743.jpg'); return false;"
height=200 border=0>
   
<img src="/fb/jtfdcr/imgs/jtfdc_20150608_eagle_s_gone_abuttment_nonmaintIMG_1731.jpg"
alt="jtfdc_20150608_eagle_s_gone_abuttment_nonmaintIMG_1731.jpg"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20150608_eagle_s_gone_abuttment_nonmaintIMG_1731.jpg');return false;"
height=200 border=0>
<img src="/imgs/btn/btn_pdf1.png" alt="email_cohen_restraints_jtf32_joann_donovan_took" class="class_btn_pdf"
onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/email_cohana_restraints.pdf');return false;"
height=200 border=0>
<br>
<hr color=darkslategray>
<h2>jtf39_byrds_trespass_n_taking</h2>
<img src="/fb/jtfdcr/imgs/IMG_5909.JPG" alt="byrdstaking"
onclick="window.open('/fb/jtfdcr/imgs/IMG_5909.JPG');return false;"
height=200 border=0>
       
<img src="/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.jpg"
alt="jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy"
onclick="window.open('/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.mp4');return false;"
height=200 border=0>
<img src="/fb/jtfdcr/imgs/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.JPG"
alt="/fb/jtfdcr/imgs/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965"
onclick="window.open('/fb/jtfdrc/imgs/jtfdc_20200723_0814_stalkaroundup_orange_motorcycle_byrdlike_guy_IMG_9965.jpg');return false;"
<hr color=darkslategray>
<h2>jtf30_private_drive_no_trespass_sign_treegone_gazibo_back</h2>
<img src="/fb/jtfdcr/imgs/IMG_6212.JPG" alt="jtf30_private_drive_no_trespassing_sign_treegone_gazibo_back"
onclick="window.open('/fb/jtfdcr/imgs/IMG_6212.JPG');return false;"
height=200 border=0>
<!-- <img src="/fb/jtfdcr/imgs/jtf30_hastlecastledorfer_IMG_9437.jpg" -->
<!-- <img src="/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg" -->
<!-- onclick="window.open('/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg');return false;" -->
<img src="/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg"
alt="/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg"
onclick="window.open('/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg');return false;"
height=200 border=0>
<img src="/fb/jtfdcr/imgs/IMG_6212_tree.JPG"
alt="jtf30_private_drive_no_trespassing_sign_treegone"
onclick="window.open('/fb/jtfdcr/imgs/IMG_6212_tree.JPG');return false;"
height=200 border=0>
<img src="/fb/jtfdcr/imgs/clever-and-do-rite-donuts-cycling-kit-1500127555.jpg"
alt="/fb/jtfdcr/imgs/jtf30_hastlecastledorfer_IMG_9437.jpg"
onclick="window.open('/fb/jtfdcr/imgs/jtf30_Christiantdd.jpg');return false;"
height=200 border=0>
<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
alt="jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg');return false;"
height=200 border=0>
<br>
<hr color=red>
<img src="/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg"
alt="/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg"
onclick="window.open('/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg');return false;"
height=100 border=0 >
<img src="/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
alt="/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
onclick="window.open('/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg'); return false;"
height=100 border=0 >
<br>
<hr color=darkslategray>
<img src="/fb/jtfdcr/imgs/stalkaround_trafficparadeIMG_2030.jpg"
alt="/fb/jtfdcr/imgs/stalkaround_trafficparadeIMG_2030.jpg"
onclick="window.open('/fb/jtfdcr/imgs/stalkaround_trafficparadeIMG_2030.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/jtfinc_new_biggarbagetrucksIMG_1915.jpg"
alt="jtfinc_new_biggarbagetrucksIMG_1915.jpg"
onclick="window.open('/fb/jtfdcr/imgs/jtfinc_new_biggarbagetrucksIMG_1915.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226.jpg"
alt="jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20150615_jtf32_donutvanlaw_stalkaround_teamIMG_2226.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/paityn_IMG_2227.jpg"
alt="paityn_IMG_2227.jpg"
onclick="window.open('/fb/jtfdcr/imgs/paityn_IMG_2227.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/jtfdc_stalkaround_clownvanIMG_2733.jpg"
alt="jtfdc_stalkaround_clownvanIMG_2733"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_stalkaround_clownvanIMG_2733.jpg');return flase;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/slow_drivewyIMG_2616.jpg"
alt="slow_drivewyIMG_2616"
onclick="window.open('/fb/jtfdcr/imgs/slow_drivewyIMG_2616.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280.jpg"
alt="jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_201506_jtf32_donutvanlaw_stalkaroundtrucksIMG_2280.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/jtfinc_pothole_IMG_2867.jpg"
alt="jtfinc_pothole_IMG_2867"
onclick="window.open('jtfinc_pothole_IMG_2867.jpg');return false;"
height=100 border=0>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<img src="/fb/neuz/snap_20200703/snap_20200201_35926.png" alt="who2jail"
onclick="window.open('https://www.dailymail.co.uk/news/article-8487161/Bipolar-man-29-waved-sword-inside-home-died-cardiac-arrest-cops-used-Taser-him.html');return false;"
height=200 border=0>
       
<img src="/fb/neuz/snap_20200703/snap_20200201_35920.png" alt="who2jail"
onclick="window.open('https://www.dailymail.co.uk/news/article-8486527/Two-Oklahoma-cops-tazered-naked-man-50-times.html');return false;"
height=200 border=0>
       
<img src="/fb/neuz/snap_20200703/snap_20200201_35915.png" alt="who2jail"
onclick="window.open('https://www.dailymail.co.uk/news/article-8484183/Video-shows-white-woman-pulling-gun-Blacks-Michigan.html');return false;"
height=200 border=0>
       
<img src="/fb/neuz/snap_20200703/snap_20200201_37513.jpg" alt="covid_elevator_assault"
onclick="window.open('https://www.dailymail.co.uk/news/article-8485349/Man-72-arrested-pushing-86-year-old-elevator-saying-did-protect-against-virus.html'); return false;"
height=200 border=0>
<br>
<hr color=goldenrod>
<br>
<img src="/fb/jtfdcr/imgs/dailymail_hero_brother6_sister.jpg"
alt=" hero_borther6_n_sister"
onclick="window.open('/fb/jtfdcr/imgs/dailymail_hero_brother6_sister');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/imgs/dailymail_hl_hero_brother6_dog_mauled_saves_sister.jpg"
alt=" hero_borther6_dog_mauled_saves_sister"
onclick="window.open('https://www.dailymail.co.uk/news/article-8526059/Anne-Hathaway-heaps-praise-Wyoming-boy-6-mauled-dog-attacked-sister.html');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/imgs/jtfdc_kids3_fronthalf.jpg"
alt=" jtfdc_kids3_front"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_kids3_fronthalf.jpg');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/animalcontrol/pages/1.jpg"
alt="/fb/jtfdcr/animalcontrol/"
onclick="window.open('/fb/jtfdcr/animalcontrol');return false;"
height=200 border=0>
<br>
<hr color=goldenrod>
<h1>jtf32_donutvanlaw big dog leash waivers</h1>
<h2>big dogs need to keep thier pet owners on a short lease</h2>
<h3>holidays jtfdc_20170529_memorialday woof</h3>
<!--
<a href="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/tn_jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.mp4" target=_blank>
<img src="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.png"
alt="jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.png"
height=100 border=0>
</a>
-->
<a href="/fb/law/dogs/#page/63" target=_blank>
<img src="/fb/law/dogs/pages/1.jpg" alt="/fb/law/dogs/pages/63.jpg"
height=100 border=0>
</a>
<a href="/holidays.html?id=jtfdc_20170529_memorialday" target=_blank>
<img src="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/jtfdc_20170529_0640_00001_memorialday_jkwii_jtf30_doogy.png"
alt="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/tn_jtfdc_20170529_0640_00001_memorialday_jkwii_jtf30_doogy"
height=200 border=0>
</a>
<img src="/fb/jtfdcr/imgs/chalkmail_jtfdcr_online_soonIMG_2617.jpg"
alt="chalkmail_jtfdcr_online_soonIMG_2617.jpg"
onclick="window.open('chalkmail_jtfdcr_online_soonIMG_2617.jpg');return false;"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/IMG_1621.jpg"
alt="private_property_violators_willnot_be_prosecuted_IMG_1621"
onclick="window.open('/fb/jtfdcr/imgs/IMG_1621.jpg');return false;"
height=100 border=0>
<img src="/fb/law/dogs/imgs/IMG_6070.jpg" alt="/fb/law/dogs/imgs/IMG_6070"
onclick="windot.open('/fb/law/dogs/imgs/IMG_6070.jpg');return false;"
height=100 border=0>
<img src="/fb/law/dogs/imgs/IMG_0370.JPG" alt="/fb/law/dogs/imgs/IMG_0370.jpg"
onclidk="window.open('/fb/law/dogs/imgs/IMG_0370.JPG');return false;"
height=100 border=0>
<img src="/fb/law/dogs/imgs/IMG_6006.jpg" alt="/fb/law/dogs/imgs/IMG_6006.jpg"
onclick="window.open('/fb/law/dogs/imgs/IMG_6006.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_6623.jpg" alt="/fb/law/dogs/imgs/pg_IMG_6623.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_IMG_6623.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_3202.jpg" alt="/fb/law/dogs/imgs/pg_IMG_3202.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_IMG_3202.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/jtfdc_20170527_fiona_attacking_stillonleash.jpg" alt="/fb/law/dogs/imgs/jtfdc_20170527_fiona_attacking_stillonleash.jpg"
onclick="window.open('/fb/law/dogs/imgs/jtfdc_20170527_fiona_attacking_stillonleash.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/jtfdc_20170610_byrds_dogsit_nxtdoorneighbor_doogy_in_our_yard_IMG_8242.jpg" alt="/fb/law/dogs/imgs/jtfdc_20170610_byrds_dogsit_nxtdoorneighbor_doogy_in_our_yard_IMG_8242.jpg"
onclick="window.open('/fb/law/dogs/imgs/jtfdc_20170610_byrds_dogsit_nxtdoorneighbor_doogy_in_our_yard_IMG_8242.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_7892.jpg" alt="/fb/law/dogs/imgs/pg_IMG_7892.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_IMG_7892.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/IMG_0388.JPG" alt="/fb/law/dogs/imgs/IMG_0388.JPG"
onclick="window.open('/fb/law/dogs/imgs/IMG_0388.JPG');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_3203.jpg" alt="/fb/law/dogs/imgs/pg_IMG_3203.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_IMG_3203.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_jtf31_fiona_autonoumus_patrol.jpg" alt="/fb/law/dogs/imgs/pg_jtf31_fiona_autonoumus_patrol.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_jtf31_fiona_autonoumus_patrol.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_jtf39_baily_autonomous_patrol.jpg" alt="/fb/law/dogs/imgs/pg_jtf39_baily_autonomous_patrol.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_jtf39_baily_autonomous_patrol.jpg')"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_screenshot_24090.jpg" alt="/fb/law/dogs/imgs/pg_screenshot_24090.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_screenshot_24090.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_screenshot_24118.jpg" alt="/fb/law/dogs/imgs/pg_screenshot_24118.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_screenshot_24118.jpg');"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_7042.jpg" alt="/fb/law/dogs/imgs/pg_IMG_7042.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_IMG_7042.jpg')"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_IMG_7856.jpg" alt="/fb/law/dogs/imgs/pg_IMG_7856.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_IMG_7856.jpg');"
height=100 border=0>
<img src="/fb/jtfdcr/imgs/20150624_1345_jtf38_segrists_tresspass_elvis2IMG_2200.jpg"
alt="20150624_1345_jtf38_segrists_tresspass_elvis2IMG_2200"
onclick="window.open('/fb/jtfdcr/imgs/20150624_1345_jtf38_segrists_tresspass_elvis2IMG_2200.jpg');return false;"
height=100 border=0>
<img src="/fb/law/dogs/imgs/pg_screenshot_24032.jpg" alt="/fb/law/dogs/imgs/pg_screenshot_24032.jpg"
onclick="window.open('/fb/law/dogs/imgs/pg_screenshot_24032.jpg');"
height=100 border=0>
<hr color=goldenrod>
<br><br><br><br>
<hr color=black>
<br>
<hr color=brown>
<hr color=orange>
<div id="div_oklahoma">
<h1>oklahoma in action</h1>
<h2>oklahoma4indians</h2>
<img src="https://img.youtube.com/vi/VR42iYGtEAc/default.jpg" alt="yt_oklahoma4indians"
onclick="window.open('https://www.youtube.com/watch?v=VR42iYGtEAc');return false;"
height=200 border=0>
       
<img src="/imgs/links/dailymail_oklahoma4indians.jpg" alt="dailymail_oklahoma4indians"
onclick="window.open('https://www.dailymail.co.uk/news/article-8506705/Justices-rule-swath-Oklahoma-remains-tribal-reservation.html');return false;"
height=200 border=0>
       
<img src="/imgs/links/thehill_oklahoma4indians.jpg" alt="thehill_oklahoma4indians"
onclick="window.open('https://thehill.com/homenews/state-watch/506548-supreme-court-rules-that-large-swath-of-oklahoma-belongs-to-indian');return false;"
height=100 border=0>
<br><br>
<img src="/imgs/links/growwarehouse.jpg" alt="growwarehouse"
onclick="window.open('https://www.growwarehouse.com/');return false;"
height=100 border=0>
       
<img src="/fb/konabus/pages/1.jpg" alt="konabus"
onclick="window.open('/fb/konabus/');return false;"
height=100 border=0>
</div>
<hr color=brown>
<hr color=orange>
<br><br><br><br>
<div id="div_media" >
<hr color=blue>
<hr color=white>
<hr color=red>
<h1>div_media</h1>
<img src="/kb/vid/jkwii/jtfdcwillie_lukas_micah_nelson_promised_land_12_31_15.png"
alt="/kb/vid/jkwii/jtfdcwillie_lukas_micah_nelson_promised_land_12_31_15.png"
onclick="window.open('/kb/vid/jkwii/jtfdcwillie_lukas_micah_nelson_promised_land_12_31_15.mp4');return false;"
height=200 border=0 >
<br><br><br><br>
<img src="/kb/vid/jkwii/god_bless_america_amazing_guitar_solo.jpg"
alt="/kb/vid/jkwii/god_bless_america_amazing_guitar_solo.jpg"
onclick="window.open('/kb/vid/jkwii/god_bless_america_amazing_guitar_solo.mp4');return false;"
height=100 >
<img src="https://img.youtube.com/vi/uja4SHnfogo/default.jpg"
alt="waits_time_guitar"
onclick="window.open('https://www.youtube.com/watch?v=uja4SHnfogo');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/nqlhx-t-kXo/default.jpg"
alt="jsondara_god_bless_america"
onclick="window.open('https://www.youtube.com/watch?v=nqlhx-t-kXo');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/qJJT-p_sYw0/default.jpg"
alt="cohen_land_of_plenty"
onclick="window.open('https://www.youtube.com/watch?v=qJJT-p_sYw0');return false;"
); return false;"
height=100 border=0 >
       
<br><br><br><br>
<hr color=darkslategray>
<img src="/kb/vid/jkwii/waits_time_lautern.jpg"
alt="/kb/vid/jkwii/waits_time_lautern.jpg"
onclick="window.open('/kb/vid/jkwii/waits_time_lautern.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/leonard_cohen_land_of_plenty_lyrics.jpg"
alt="/kb/vid/jkwii/leonard_cohen_land_of_plenty_lyrics.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen_land_of_plenty_lyrics.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/rodriquez_sandrevan_Lullaby.jpg"
alt="/kb/vid/jkwii/rodriquez_sandrevan_Lullaby.jpg"
onclick="window.open('/kb/vid/jkwii/rodriquez_sandrevan_Lullaby.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/leonard_cohen_webbsisters-if_it_be_your_will_live.jpg"
alt="/kb/vid/jkwii/leonard_cohen_webbsisters-if_it_be_your_will_live.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen_webbsisters-if_it_be_your_will_live.mp4');return false;"
height=100 >
<hr color=blue>
<hr color=white>
<hr color=red>
</div>
<div id="div_reindependenceday" >
</div>
<div id="div_anniversary" >
<hr color=red>
<hr color=white>
<hr color=blue>
<h1>reindependence day 2020</h1>
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
</div>
\
<div id="div_turbulence" >
</div>
<script id="script_media" >
function media(args) {
var list = `
https://www.youtube.com/watch?v=nf8ZAMRO1DU|flintstones_happy_anniversary
https://www.youtube.com/watch?v=qJJT-p_sYw0|cohen_land_of_plenty
https://www.youtube.com/watch?v=j_cGtRMK-7Y|lenox_strange_fruit
`;
alert( "MEDIA list="+list );
return(list);
}
</script>
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
<hr color=darkslategrey>
<hr color=darkslategrey>
<hr color=darkslategrey>
<h1>donutvanlaw tour_de_donut 7 year takings all took</h1>
<hr color=darkslategrey>
<img src="/imgs/donutvanlaw_cheatsheet.jpg" alt="cheatsheet_donutvanlaw"
onclick="window.open('/imgs/donutvanlaw_cheatsheet.jpg');return false;"
height=150 border=0>
       
<img src="/fb/law/pages/zn/zn_10.jpg" alt="jtfdcr"
onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;"
height=150 border=0>
       
<img src="/jtfdcr.jpg" alt="jtfdcr"
onclick="window.open('/jtfdcr.jpg');return false;"
height=150 border=0>
       
<img src="/kb/books/intl/ein_hundes_leben/ein_hundeleben_00.jpg" alt="ein_hundes_leben"
onclick="window.open('/sl/index_sl_kb-intl-ein_hundes_leben.html');return false;"
height=150 border=0>
       
<br><br><br><br>
<img src="/imgs/links/lawdonovan.png" alt="lawdonovan"
onclick="window.open('lawdonovan.com');return false;"
height=100 border=0>
       
<img src="/imgs/links/bebikeclub.jpg" alt="bebikeclub"
onclick="window.open('https://www.bebikeclub.org/tourdedonut');return false;"
height=100 border=0>
       
<img src="/imgs/links/tourdedonut.jpg" alt="tourdedonut"
onclick="window.open('http://www.tourdedonut.org/index.html');return false;"
height=100 border=0>
       
<img src="/imgs/links/oldtowndonuts.png" alt="oldtowndonuts"
onclick="window.open('https://oldtowndonuts.com');return false;"
height=100 border=0>
<br> <br> <br> <br>
<hr color=black>
<hr color=black>
<hr color=yellow>
<hr color=yellow>
<h1>tour_de_france_2020</h1>
<hr color=yellow>
<img src="/imgs/links/steephill_tourdefrance.jpg"
onclick="window.open('http://www.steephill.tv/tour-de-france');return false;"
alt="tour_de_france"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/2Jyp0mDQc-U/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=2Jyp0mDQc-U');return false;"
alt="tour_de_france_stage3_5hrs"
height=100 border=0>
       
<img src=" https://img.youtube.com/vi/BGfGAlhlldo/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=BGfGAlhlldo');return false;"
alt="tour_de_france_stage3_8hrs"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/BsILr0bxFlk/default.jpg"
onclick="window.open('https://www.youtube.com/watch?v=BsILr0bxFlk');return false;"
alt="tour_de_france"
height=100 border=0>
       
<hr color=yellow>
<hr color=yellow>
<hr color=black>
<hr color=black>
<hr color=linen>
<img src="/fb/jkwii/pages/1.jpg" alt="jkwii"
onclick="window.open('/fb/jkwii');return false;"
height=200 border=0>
       
<img id="zm_takings_all_took" src="/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg" onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html');return false;" height=200 border=0 draggable="true">
       
<img id="zm_img_jtf2930" src="/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg " onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html');return false;" height=200 border=0 draggable="true">
       
<img src="/fb/jtfdc/pages/1.jpg" alt="jtfdc"
onclick="window.open('/fb/jtfdc');return false;"
height=200 border=0>
       
<br><br><br><br>
<img src="/imgs/links/florrisantoldtown.jpg" alt="florissant_oldtown"
onclick="window.open('https://florissantoldtown.com/');return false;"
height=200 border=0>
       
<img src="/imgs/links/helfers_pastry_delicafe.jpg" alt="helfers_patry_deli_cafe"
onclick="window.open('https://florissantoldtown.com/directory/helfers-pastries-deli-cafe/'); return false;"
height=200 border=0>
       
<img src="/imgs/us/topos.png" alt="topos"
onclick="window.open('https://www.topos-surveying.com/');return false;"
height=200 border=0>
       
<img src="/imgs/btn/btn_florissantgarage.png" alt="florissant_garage"
onclick="window.open('https://florissantgarageradiator.com');return false;"
height=200 border=0>
       
<!--
<img src="/imgs/btn/btn_patrico_heating_n_cooling.png" alt="patrico_heating_n_cooling"
onclick="window.open('https://www.bbb.org/us/mo/black-jack/profile/heating-and-air-conditioning/patrico-j-heating-cooling-0734-110108872');return false;"
height=200 border=0>
       
-->
<img src="/fb/patrico/pages/1.jpg" alt="patrico_heating_n_cooling"
onclick="window.open('/fb/patrico');return false;"
height=200 border=0>
       
<img src="/imgs/links/eckerts.jpg" alt="eckerts"
onclick="window.open('https://www.eckerts.com/grafton-farm');return false;"
height=200 border=0>
       
<br>
<!--
       
<img id="img_flood_law" src="/fb/law/pages/zn/zn_10.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=100 border=0 draggable="true">
       
<img id="img_postturtle_law" src="/jtfdcr.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=100 border=0 draggable="true">
       
<img src="/imgs/gif/notes/giphy_notes10.gif" alt="notes"
onclick="window.open('/txt/notes.txt');return false;"
height=75 border=0>
       
<img src="/imgs/gif/notes/giphy_notes03.gif" alt="ko_saic"
onclick="window.open('/txt/jtfdcr_mp4.txt');return false;"
height=75 border=0>
       
-->
</div>
<script id="script_blob_audiocontrols_toggle">
var blob_audiocontrols="";
function blob_audiocontrols_toggle(args) {
// alert( "BUGS_1830 args="+args );
// alert( "BUGS_1834 blob_audiocontrols="+blob_audiocontrols );
if( document.getElementById('img_blob_audiocontrols_toggle')) {
if( blob_audiocontrols == "on" ) {
blob_audiocontrols = "";
document.getElementById('img_blob_audiocontrols_toggle').src='/imgs/btn/kob.png';
document.getElementById('blob_audio').controls='false';
// alert( "BUGS_1841 blob_audiocontrols="+blob_audiocontrols);
}
else {
blob_audiocontrols = "on";
document.getElementById('img_blob_audiocontrols_toggle').src='/imgs/btn/kow.png';
document.getElementById('blob_audio').controls='true';
// alert( "BUGS_1842 blob_audiocontrols="+blob_audiocontrols );
}
}
}
</script>
<script id="script_blob_mouseover">
function blob_mouseover1(args) {
alert( "BUGS_499 blob_mouseover" );
}
function blob_mouseover(args) {
var id=args;
var img_id="img_blob"+id;
if( id==0 ) {alert( "BUGS_500 blob_mouseover_0 img_id="+img_id ); }
// alert( "BUGS_500 blob_info img_id="+img_id );
// var src = document.getElemntById('img_blob0').src;
// alert( "BUGS_501 blob_info src="+src );
//// if( document.getElementById(img_id)) {
// alert( "BUGS_500 blob_info img_id="+img_id );
// alert( "BUGS_501 blob_info divcheck img_id="+img_id );
// document.getElementById(img_id).src="/imgs/btn/koeye_handhither.gif"";
// }
return(args);
}
</script>
<script id="script_blob_info">
function blob_info(args) {
alert( "BUGS_500 blob_info args="+args );
// blobColl = new BlobCollective(1.0, 1.0, 1, 200);
// blobColl.split();
// var blob_len = blobColl.length;
// alert( "BUGS_501 blob_info blob_len="+blob_len );
// alert( "BUGS_501 blobcoll0="+blobcoll[0] );
}
</script>
</div>
<br><br><br><br>
<hr color=black>
<hr color=white>
<img id="img_blob_mute" src="/imgs/sound/ringworm_1.gif"
onclick="blob_mute('btn_soundwave_00');return false;"
onmouseover="blob_mute('btn_soundwave_00');return false;"
height=200 width=300>
<hr color=white>
<img id="img_blob_audiocontrols_toggle" src="/imgs/btn/kob.png" onclick="blob_audiocontrols_toggle('');return false;" height=25>
       
<hr color=black>
<img id="img_blob_sound" hidden src="/imgs/imgs_jukebox/record_04.gif"
onclick="blob_sound('img_record_04');return false;"
height=200 width=300>
<br>
<!--
<img id="img_blob_sound_ringworm" hidden src="/imgs/sound/ringworm_1.gif"
onclick="blob_sound('img_sound_ringworm_1');return false;"
height=200>
-->
<br>
<hr color=black>
<hr color=white>
<hr color=black>
<div id="div_blob_playlist" hidden>
<h1>div_blob_playlist</h1>
</div>
<!--
<img id="img_blob_sound" hidden src="/imgs/gif/spacers/giphy_spacer_22.gif"
<img id="img_blob_sound" hidden src="/imgs/gif/kali/kalid1.gif"
<img id="img_blob_sound" hidden src="/imgs/gif/orbs/godotss.gif"
<img id="img_blob_sound" hidden src="/imgs/gif/orbs/kali20.gif"
<img id="img_blob_sound" hidden src="/imgs/gif/orbs/orbcryst_alpulse.gif"
<img id="img_blob_sound" hidden src="/imgs/gif/orbs/ringcube.gif"
-->
<!--
<img id="img_blob_sound" hidden src="/imgs/sound/btn_sound.png"
onclick="blob_sound('koeyeb_sound');return false;"
height=30>
-->
<audio id="audio_sound" src="/gm/sounds/bubbles.mp3" preload="auto" muted="true">
</audio>
<input id="input_volume" hidden type="range" min="0" max="100" step="1"
oninput="SetVolume(this.value);return false;"
onchange="SetVolume(this.value); return false;">
</input>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<img id="img_mp3_playlist" src="/imgs/sound/btn_sound1.png"
alt="mp3_playlist"
onclick="mp3_playlist('');return false;"
height=30>
<br><br>
<div id="div_mp3_playlist">
<h1>div_mp3_playlist</h1>
</div>
<br><br><br><br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<img src="/imgs/btn/btn_hannes_kassil.png"
alt="hannes_kassil" height=100
onclick="window.open('https://www.kassil.at'); return false;" >
       
<img src="/imgs/btn/btn_habegger.png"
alt="habegger" height=100
onclick="window.open('https://habegger-austria.at'); return false;" >
       
<img src="/imgs/btn/btn_edrmedia.png"
alt="edrmedia" height=100
onclick="window.open('http://edrmedia.com/contacts.htm'); return false;" >
       
<img src="/imgs/btn/btn_cfx.png" alt="cfx"
onclick="window.open('https://cfx-inc.com');return false;"
height=100 border=0>
       
<img src="/imgs/links/quinn_michaels.jpg" alt="quinn_micheals"
onclick="window.open('https://quinnmichaels.com/');return false;"
height=100 border=0>
       
<hr color=linen>
<h1>dutch_jackson saint louis sessions</h2>
<hr color=linen>
<img src="/kb/vid/jkwii/dutch_jackson_fresher.jpg"
alt="/kb/vid/dutch/dutch_jackson_fresher.jpg"
onclick="window.open('/kb/vid/jkwii/dutch_jackson_fresher.mp4');return false;"
height=150 >
       
       
       
<img src="http://img.youtube.com/vi/lOfZLb33uCg/default.jpg"
alt="wierd_alyankovic_amish_paridise"
onclick="window.open('https://www.youtube.com/watch?v=lOfZLb33uCg');return false;"
height=100 border=0>
       
<img src="https://img.youtube.com/vi/N9qYF9DZPdw/default.jpg"
alt="wierd_alyankovic_white_n_nerdy"
onclick="window.open('https://www.youtube.com/watch?v=N9qYF9DZPdw');return false;"
height=100 border=0>
       
       
       
<img src="/kb/vid/jkwii/dutch_jackson_weightup.jpg"
alt="/kb/vid/dutch/dutch_jackson_weightup.jpg"
onclick="window.open('/kb/vid/jkwii/dutch_jackson_weightup.mp4');return false;"
height=150 >
<br><br>
<hr color=goldenrod>
<h1>micheals reunion sessions</h1>
<br><br>
<img src="/fb/mk/pages/11.jpg" alt="micheals_reunion_sessions_track1"
onclick="window.open('/fb/mk/mp3/track1.mp3');return false;" height=100 border=0>
       
<img src="/fb/mk/pages/13.jpg" alt="micheals_reunion_sessions_track3_short"
onclick="window.open('/fb/mk/mp3/track3_short.mp3');return false;" height=100 border=0>
       
<img src="/fb/mk/pages/1.jpg" alt="micheals_reunion_sessions"
onclick="window.open('/fb/mk');return false;" height=200 border=0>
       
<img src="/fb/mk/pages/14.jpg" alt="micheals_reunion_sessions_track4"
onclick="window.open('/fb/mk/mp3/track4.mp3');return false;" height=100 border=0>
       
<img src="/fb/mk/pages/15.jpg" alt="micheals_reunion_sessions_track5"
onclick="window.open('/fb/mk/mp3/track5.mp3');return false;" height=100 border=0>
       
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<hr color=white>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=white>
<div id="div_yt_b" draggable="true"><h1>div_yt_b</h1>
<img src="https://img.youtube.com/vi/NGorjBVag0I/default.jpg"
alt="yt_cohen_danceme"
onclick="window.open('https://www.youtube.com/watch?v=NGorjBVag0I');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/WkJoP2PLe6g/default.jpg"
alt="yt_swing_chanzie_stephen_gettogether"
onclick="window.open('https://www.youtube.com/watch?v=WkJoP2PLe6g');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/alLi8i9BQK4/default.jpg"
alt="yt_swing_nils_bianca"
onclick="window.open('https://www.youtube.com/watch?v=alLi8i9BQK4');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/m01f4uAn1AA/default.jpg"
alt="yt_swing_chanzie_stephen_nittygritty"
onclick="window.open('https://www.youtube.com/watch?v=m01f4uAn1AA');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/BPRPK5qU3Y4/default.jpg"
alt="yt_cohen_slow_dance"
onclick="window.open('https://www.youtube.com/watch?v=BPRPK5qU3Y4');return false;"
); return false;"
height=100 border=0 >
       
<img src="https://img.youtube.com/vi/EjFN5iVKn6w/default.jpg"
alt="yt_childers_housefire"
onclick="window.open('https://www.youtube.com/watch?v=EjFN5iVKn6w');return false;"
); return false;"
height=100 border=0 >
       
<!--
       
<img src="https://img.youtube.com/vi/WkJoP2PLe6g/default.jpg"
alt="yt_dylan_mostfoul"
onclick="window.open('https://www.youtube.com/watch?v=Rkr6TVnGtAM');return false;"
); return false;"
height=200 border=0 >
-->
</div id="div_yt_b" >
<hr color=white>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=white>
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
       
       
<hr color=linen>
<br><br><br><br>
<img src="/fb/jtfdc/pages/1.jpg"
alt="jtfdc" height=100
onclick="window.open('/fb/jtfdc'); return false;" >
       
<img src="/fb/kitiworks/pages/1.jpg"
alt="kitiworks" height=100
onclick="window.open('/fb/kitiworks'); return false;" >
       
<img src="/fb/pastryroad/pages/1.jpg"
alt="pastryroad" height=100
onclick="window.open('/fb/pastryroad'); return false;" >
       
<img src="/fb/nwm/pages/1.jpg"
alt="north_west_mutual" height=100
onclick="window.open('/fb/nwm'); return false;" >
       
<img src="/fb/jhf/pages/1.jpg"
onclick="window.open('/fb/jhf/');return false;"
alt="josh_hawley_freight_lines" height=100 border=0 draggable="true" >
       
<img src="/fb/konabus/pages/1.jpg"
alt="konabus" height=100
onclick="window.open('/fb/konabus'); return false;" >
       
<img src="/fb/gofunwii/pages/1.jpg"
alt="gofunwii" height=100
onclick="window.open('/fb/gofunwii'); return false;" >
       
<img src="/gm/pages/1.jpg"
alt="games" height=100
onclick="window.open('/gm'); return false;" >
       
<br><br>
<br><br><br><br>
<hr color=linen>
<img src="/imgs/btn/btn_german_consulate_stl.png"
alt="consulate_germany_stl" height=100
onclick="window.open('https://embassies.info/ConsulateofGermanyinStLouisMissouri'); return false;" >
       
<img src="/imgs/links/smith_neil_vote67.png"
alt="mo_rep_smith_neil_067" height=150
onclick="window.open('https://www.facebook.com/neilsmithforstaterepresentative67/'); return false;"
height=100 border=0>
<br><br><br><br>
<hr color=blue>
<hr color=white>
<hr color=red>
<img src="/imgs/btn/rep_green_alan.jpg"
alt="mo_rep_green_alan_067" height=150
onclick="window.open('https://house.mo.gov/MemberDetails.aspx?year=2019&district=067'); return false;" >
       
<img src="/imgs/btn/btn_sen_hawley_josh.png"
alt="sen_mo2_hawley_josh" height=150
onclick="window.open('https://contactsenators.com/missouri/josh-hawley'); return false;" >
       
<img src="/imgs/btn/btn_sen_paul_rand.png"
alt="sen_ky2_paul_rand" height=150
onclick="window.open('https://www.paul.senate.gov/'); return false;" >
       
<img src="/imgs/btn/rep_jordan_jim.jpg"
alt="sen_ky2_paul_rand" height=150
onclick="window.open('https://jordan.house.gov/'); return false;" >
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
<script id="script_blob_volume">
var audio = document.getElementById('audio');
var volume = document.getElementById('input_volume');
window.setInterval(changevolume(), 1);
function SetVolume(val) {
// alert( "BUGS_1680 SetVolume val="+val );
// var player = document.getElementById('video');
var player = document.getElementById('audio_sound');
// console.log('Before: ' + player.volume);
player.volume = val / 100;
// console.log('After: ' + player.volume);
}
function changevolume() {
var x = volume.value;
var y = x / 100;
audio.volume = y;
}
</script>
<hr color=pink>
<h1>43th anniversary 2020</h1>
<img src="/kb/vid/jkwii/flintstones_happy_anniversary.jpg"
alt="/kb/vid/jkwii/flintstones_happy_anniversary.jpg"
onclick="window.open('/kb/vid/jkwii/flintstones_happy_anniversary.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/furey_finbar_the_last_great_love_song.jpg"
alt="/kb/vid/jkwii/furey_finbar_the_last_great_love_song.jpg"
onclick="window.open('/kb/vid/jkwii/furey_finbar_the_last_great_love_song.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-dance_me_to_the_end_of_Love_official_.jpg"
alt="/kb/vid/jkwii/leonard_cohen-dance_me_to_the_end_of_Love_official_.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-dance_me_to_the_end_of_Love_official_.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/fureys_davey_arthur-i_will_love_you.jpg"
alt="/kb/vid/jkwii/fureys_davey_arthur-i_will_love_you.jpg"
onclick="window.open('/kb/vid/jkwii/fureys_davey_arthur-i_will_love_you.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/jay_ungar_molly_mason-lovers_waltz.jpg"
alt="/kb/vid/jkwii/jay_ungar_molly_mason-lovers_waltz.jpg"
onclick="window.open('/kb/vid/jkwii/jay_ungar_molly_mason-lovers_waltz.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/john_denver_placido_doming-perhaps_love.jpg"
alt="/kb/vid/jkwii/john_denver_placido_doming-perhaps_love.jpg"
onclick="window.open('/kb/vid/jkwii/john_denver_placido_doming-perhaps_love.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-here_it_is.jpg"
alt="/kb/vid/jkwii/leonard_cohen-here_it_is.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-here_it_is.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/redbone_come_get_your_love_powwow.jpg"
alt="/kb/vid/jkwii/redbone_come_get_your_love_powwow.jpg"
onclick="window.open('/kb/vid/jkwii/redbone_come_get_your_love_powwow.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/bellamy_brothers-let_your_love_flow_lyrics.jpg"
alt="/kb/vid/jkwii/bellamy_brothers-let_your_love_flow_lyrics.jpg"
onclick="window.open('/kb/vid/jkwii/bellamy_brothers-let_your_love_flow_lyrics.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-you_got_me_singing.jpg"
alt="/kb/vid/jkwii/leonard_cohen-you_got_me_singing.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-you_got_me_singing.mp4');return false;"
height=100 >
<img src="https://img.youtube.com/vi/09gJX0Cc6p0/default.jpg"
alt="elise_girl_from_iponema"
onclick="window.open('https://www.youtube.com/watch?v=09gJX0Cc6p0');return false;"); return false;"
height=100 border=0 >
       
<h1>time</h1>
<img src="/kb/vid/jkwii/waits_time_guitar.jpg"
alt="/kb/vid/jkwii/waits_time_guitar.jpg"
onclick="window.open('/kb/vid/jkwii/waits_time_guitar.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/abolli_thousand_kisses_deep.jpg"
alt="/kb/vid/jkwii/abolli_thousand_kisses_deep.jpg"
onclick="window.open('/kb/vid/jkwii/abolli_thousand_kisses_deep.mp4');return false;"
height=100 >
<br><br><br><br>
<h1>happy endings soft landings</h1>
<img src="/kb/vid/jkwii/bobby_mcFerrin-dont_worry_be_happy.jpg"
alt="/kb/vid/jkwii/bobby_mcFerrin-dont_worry_be_happy.jpg"
onclick="window.open('/kb/vid/jkwii/bobby_mcFerrin-dont_worry_be_happy.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/emmylou_harris_earl_thomas-we_believe_in_happy_ending.jpg"
alt="/kb/vid/jkwii/emmylou_harris_earl_thomas-we_believe_in_happy_ending.jpg"
onclick="window.open('/kb/vid/jkwii/emmylou_harris_earl_thomas-we_believe_in_happy_ending.mp4');return false;"
height=100 >
<img src="/kb/vid/jkwii/leonard_cohen-come_healing.jpg"
alt="/kb/vid/jkwii/leonard_cohen-come_healing.jpg"
onclick="window.open('/kb/vid/jkwii/leonard_cohen-come_healing.mp4');return false;"
height=100 >
<hr color=goldenrod>
<hr color=goldenrod>
<div id="div_us2">
<h1>div_us2 warning - active turbulence area - warning</h1>
<img src="/imgs/btn/koeye.png" alt="us2" onclick="divlist('div_us2,us'); return false;" height=100>
<img src="/imgs/btn/koeye.png" alt="edu" onclick="divlist('div_edu,edu'); return false;" height=100>
<img src="/imgs/btn/koeye.png" alt="hoa" onclick="divlist('div_hoa,hoa'); return false;" height=100>
<img src="/imgs/btn/koeye.png" alt="law" onclick="divlist('div_law,law'); return false;" height=100>
<img src="/imgs/btn/koeye.png" alt="pano" onclick="divlist('div_hoa,pano'); return false;" height=100>
<a href="/us" target=_blank>
<img src="/us/pages/1.jpg" alt="us" height=100>
</a>
</div>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_edu">
<h1>div_edu</h1>
<img src="/fb/edu/imgs/edu.png" alt="fb_edu" onclick="edu(''); return false;" height=100>
<a href="/fb/edu" target=_blank>
<img src="/fb/edu/pages/1.jpg" alt="fb_edu" height=100>
</a>
</div>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_hoa">
<h1>div_hoa</h1>
<img src="/fb/hoa/imgs/hoa.png" alt="fb_hoa" onclick="hoa(''); return false;" height=100>
<a href="/fb/hoa" target=_blank>
<img src="/fb/hoa/pages/1.jpg" alt="fb_hoa" height=100>
</a>
</div>
<hr color=goldenrod>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_law" >
<h1>div_law</h1>
<img src="/fb/law/imgs/law.png" alt="fb_law" onclick="law(''); return false;" height=100>
<a href="/fb/law" target=_blank>
<img src="/fb/law/pages/1.jpg" alt="fb_law" alt="fb_law" height=100>
</a>
</div>
<br><br><br><br>
<hr color=goldenrod>
<div id="div_zpid">
<h1>div_zpid</h1>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<img src="/imgs/btn/koeye_zpid.png" alt="div_zpid"
onclick="window.open('/index_zpid.html'); return false;"
height=100 border=0>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<br><br><br><br>
</div>
<hr color=goldenrod>
<script id="script_zpid">
lists['zpid'] = `
zpid_13658677.webp|$|bd|ba|sf|acres| https://www.zillow.com/homedetails/2950-Black-Canyon-Rd-Colorado-Springs-CO-80904/13658677_zpid/
zpid_13577104|$899,9995|bd5|ba6|116|acres|https://www.zillow.com/homedetails/3620-Saddle-Rock-Ct-Colorado-Springs-CO-80918/13577104_zpid/
zpid_13669585|$|bd|ba|sf|acres|www.zillow.com/homedetails/2205-Hercules-Dr-Colorado-Springs-CO-80906/13669585_zpid/
zpid_13673478|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/4650-Bradford-Hts-Colorado-Springs-CO-80906/13673478_zpid/
zpid_80392720|$1,325,0005|bd5|ba5|5180|acres|https://www.zillow.com/homedetails/524-Silver-Oak-Grv-Colorado-Springs-CO-80906/80392720_zpid/"
121842595_zpid|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/9289-Unionville-Dr-North-Ridgeville-OH-44039/121842595_zpid/
104327579_zpid|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/9012-Lyman-Ct-North-Ridgeville-OH-44039/104327579_zpid/
117440105_zpid|$|bd|ba|sf|acres|https://www.zillow.com/homedetails/38123-Revere-Dr-North-Ridgeville-OH-44039/117440105_zpid/
`;
function zpid(args) {
var htmout="";
var j=0; var k=0;
alert( "BUGS_27500 zpid args="+args+" lists_zpid="+lists['zpid'] );
var listids=kolists['zpid'].split("\n");
for( j=0; j< listids.length; j++ ) {
if( /^#/.test(listids[j])) { continue; }
var len = listids[j].split("|").length;
var id=listids[j].split("|")[0];
if( id == undefined ) { continue; }
if( id == "" ) { continue; }
var url=listids[j].split("|")[len-1];
var img="/fb/zpid/imgs/zpid_"+id+".webp";
var dollars = listids[j].split("|")[1];
var bd = listids[j].split("|")[2];
var ba = listids[j].split("|")[3];
var sf = listids[j].split("|")[4];
var acres = listids[j].split("|")[5];
htmout += '<a href="'+url+'" target=_blank >';
htmout += ' <img src="'+img+'" border=0 height=200 ';
htmout += ' alt="'+listsid[j]+'" >';
htmout += j+'. '+listids[j];
htmout += ' </a>';
htmout += ' <br>';
// if(! filecheck(url)) {
// alert( "BUGS_19573 NOTFOUND j="+j+" id="+id+" url="+url );
// continue;
// }
}
if( document.getElementById("div_zpid")) {
document.getElementById("div_zpid").innerHTML=htmout;
}
return(args);
}
</script>
<!--
<form id="form_replace" >
<input onkeydown="replace(event)" /><br /> <input />
</form>
<script id="script_dispatch">
function dispatch(args) {
document.addEventListener ('keydown', function (event) {
console.log (event.which);
});
var evt = new KeyboardEvent('keydown', {'keyCode':65, 'which':65};
document.dispatchEvent (evt);
}
</script>
<!-- <link rel="shortcut icon" type="image/png" href="/koeye.png"/> -->
<link rel="shortcut icon" type="image/png" href="ko.png"/>
<style id="style_mobile">
/* Style the navigation menu */
/* Hide the links inside the navigation menu (except for logo/home) */
/* Style navigation menu links */
/* Style the hamburger menu */
/* Add a grey background color on mouse-over */
/* Style the active link (or home/logo) */
.topnav {
overflow: hidden;
// background-color: #333;
// background-color: yellow;
background-color: burlywood;
position: relative;
}
.topnav #myLinks {display: none;}
.topnav a {
// color: white;
// color: linen;
color: black;
// width: 250;
background: burlywood;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
display: block;
}
.topnav a.icon {
// background: black;
// background: darkslategrey;
background: burlybrown;
height: 100;
width: 200:
display: block;
position: absolute;
right: 0;
top: 0;
// url_bgimg: "/imgs/bg/background.jpg";
// background: url(url_bgimg);
}
.topnav a:hover {
// background-color: #ddd;
// background-color: red;
background-color: beige;
background-color: blanchedalmond;
background-color: antiquewhite
background-color: burlywood;
color: black;
width: 200;
width: 400;
}
.active {
// background-color: #4CAF50;
// background-color: linen;
// background-color: yellow;
background-color: burlywood;
color: black;
}
</style>
<script id="script_mobile">
/* Toggle between showing and hiding the navigation menu links when the user clicks on the hamburger menu / bar icon */
function myFunction() {
var x = document.getElementById("myLinks");
if (x.style.display === "block") {
x.style.display = "none";
}
else {
x.style.display = "block";
}
}
</script>
<style id="style_yokkmokk" >
@font-face {
font-family: yokkmokkOT;
src: url("data:font/ttf;base64,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AEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgCjAFcAWABZAJYAWgChAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwANAJwAnQCeAJ8AoAChAAAAAAAQAAAAqAkIBQABAQMCAwQFAwMEAgQCBQQCAwMDAwQDAgQCAgMEAwIGAwgFBAQEBAIEBAMGBQQEBQQCAwMEBgUEAwICAgQDBgQEAgQFAgQEAgYEAwQEBAICAwMGBQQDAwMFAgICBgYGBgYGCAgEBAQCAgIFBAQEBAQEAwMDAwMEBAQEBAQHBgQEBAICAgQDAwMDAwMDAwMDCAYCAgICAgIBAgIEAgICBgUBBQUAAAoJBQABAQMCBAUGAwMFAgQCBQUCBAMDBAUDAgQCAgMEAwMHAwkGBAQFBAIEBAMHBgUEBgQCBAQEBwUEAwICAwUDBwUEAgUGAgQEAgYFAwUFBQICAwMGBQQDAwMGAwIDBwcHBwcHCQkEBAQCAgIGBQUFBQUFBAQEBAMFBQUFBQUIBwQEBAICAgUDAwMDAwQDAwMDCAcDAwICAgIBAgIEAgICBwUBBQUAAAsKBgACAgQCBAUGAwMFAgQCBgUDBAQEBAUEAwUDAgMEAwMIAwoGBQUFBQIEBQMHBgUEBgUDBAQECAYFAwIDAwUDCAUFAwUGAgQEAgcFBAUFBQMDAwMHBgUDBAQGAwIDCAgICAgICQoFBQUCAgIGBQUFBQUFBAQEBAMFBQUFBQUJCAUFBQICAgUEBAQEBAQDAwMDCQgDAwICAwIBAgIEAgICBwYBBgYAAAwLBgACAgQDBAYHBAQGAgUDBgYDBQQEBAUEAwUDAwQFBAMIAwsHBQUFBQIFBQQIBwYFBwUDBQUFCAYFAwMDAwYDCQYFAwUHAgUFAggGBAYGBgMDBAQHBgUDBAQHAwMDCAgICAgICgsFBQUCAgIHBgYGBgYGBQUFBQMGBgYGBgYJCQUFBQICAgYEBAQEBAQEBAQECggDAwMDAwIBAwMFAwMDCAYBBgYAAA0MBwACAgQDBQYHBAQGAwUDBwYDBQQFBQYEAwYDAwQFBAMJBAwIBgYGBQMFBgQJBwYFCAUDBQUFCQcFBAMDAwYECQYGAwYIAwUFAggGBQYGBgMDBAQIBwYEBAQHAwMDCQkJCQkJCwwGBgYDAwMHBgYGBgYGBQUFBQQGBgYGBgYKCQYGBgMDAwYFBQUFBQUEBAQECwkDAwMDAwIBAwMFAwMDCQcCBwcAAA4NBwACAgUDBQcIBAQHAwUDBwcDBQUFBQYFAwYDAwQFBAQKBAwIBgYGBgMGBgQJCAcGCAYDBQUGCggGBAMDBAcECgcGAwYIAwYGAwkHBQcHBwMDBAQJBwYEBQUIBAMECgoKCgoKDA0GBgYDAwMIBwcHBwcHBQUFBQQHBwcHBwcLCgYGBgMDAwcFBQUFBQUEBAQEDAoEBAMDAwMBAwMGAwMDCQcCBwcAAA8OCAACAgUDBgcIBQUHAwYDCAcDBgUFBQcFBAcEAwUGBQQLBA0JBwcHBgMGBwUKCAcGCQYEBgYGCggGBAMEBAcECwcHBAcJAwYGAwkHBQcHBwQDBQUJCAYEBQUJBAMECwsLCwsLDQ4HBwcDAwMIBwcHBwcHBgYGBgQHBwcHBwcMCwcHBwMDAwcFBQUFBQUFBQUFDQoEBAMDBAMCAwMGAwMDCggCCAgAABAPCAACAgUEBggJBQUIAwYECAgEBgUGBgcFBAcEBAUGBQQLBQ4JBwcHBwMGBwULCQgGCQcEBgYGCwkHBAQEBAgFCwgHBAcJAwcGAwoHBggIBwQEBQUKCAcEBQUJBAMECwsLCwsLDg8HBwcDAwMJCAgICAgIBgYGBgUICAgICAgNCwcHBwMDAwcGBgYGBgYFBQUFDgsEBAQEBAMCAwMGBAQECwgCCAgAABEQCQACAgYEBggJBQUIAwcECQgEBwYGBggGBAcEBAUHBQUMBQ8KBwcIBwMHCAULCggHCgcEBgYHDAkHBQQEBAgFDAgHBAgKAwcHAwsIBggICAQEBQUKCQcFBgYKBAQFDAwMDAwMDxAHCAcDAwMKCAgICAgIBgYGBgUICAgICAgNDAcHBwMDAwgGBgYGBgYFBQUFDgwFBQQEBAMCBAQHBAQECwkCCQkAABIQCQADAwYEBwkKBgYJBAcECQkEBwYGBggGBAgEBAYHBgUNBRAKCAgICAQHCAUMCgkHCwcEBwcHDQoIBQQEBQkFDQkIBAgKBAcHAwsIBgkJCAQEBQYLCQgFBgYKBQQFDQ0NDQ0NDxAICAgEBAQKCQkJCQkJBwcHBwUJCQkJCQkODQgICAQEBAgGBgYGBgYFBQUFDwwFBQQEBAMCBAQHBAQEDAkCCQkAABMRCgADAwYEBwkLBgYJBAcECgkEBwYHBwkGBAgFBAYHBgUNBhELCAgJCAQICAYNCwkICwgEBwcIDQoIBQQFBQkFDQkIBAkLBAgIBAwJBwkJCQQEBgYMCggFBgYLBQQFDQ0NDQ0NEBEICAgEBAQLCQkJCQkJBwcHBwUJCQkJCQkPDQgICAQEBAkHBwcHBwcGBgYGEA0FBQQEBQQCBAQIBAQEDQoCCgoAABQSCgADAwcEBwoLBgYKBAgECgoFCAcHBwkHBQkFBAYIBgUOBhIMCQkJCAQICQYNCwoIDAgFCAgIDgsIBgUFBQoGDgoJBQkMBAgIBA0JBwoKCQUFBgYMCgkGBwcLBQQFDg4ODg4OERIJCQkEBAQLCgoKCgoKCAgICAYKCgoKCgoQDgkJCQQEBAkHBwcHBwcGBgYGEQ4FBQUFBQQCBAQIBQUEDgoCCgoAABUTCwADAwcFCAoMBgYKBAgFCwoFCAcHBwoHBQkFBQYIBgYPBhMMCQkJCQQJCQYODAoIDAkFCAgIDwsJBgUFBQoGDwoJBQoMBAkIBA0KBwoKCgUFBgcNCwkGBwcMBQQGDw8PDw8PEhMJCQkEBAQMCgoKCgoKCAgICAYKCgoKCgoRDwkJCQQEBAoHBwcHBwcGBgYGEg4GBgUFBQQCBAQIBQUFDgsDCwsAABYUCwADAwcFCAsMBwcLBAkFCwoFCAcICAoHBQoFBQcJBwYPBhQNCgoKCQQJCgcPDAoJDQkFCAgJDwwJBgUFBgsGEAsKBQoNBAkJBA4KCAsLCgUFBwcOCwkGBwcNBgUGDw8PDw8PExQKCgoEBAQMCgoKCgoLCAgICAYLCwsLCwsREAoKCgQEBAoICAgICAgHBwcHEw8GBgUFBQQCBQUJBQUFDwsDCwsAABcVDAADAwcFCQsNBwcLBQkFDAsFCQcICAsIBQoGBQcJBwYQBxQNCgoKCgUJCgcPDQsJDQoFCQkJEAwKBgUGBgsHEAsKBQoNBQkJBA4LCAsLCwUFBwcODAoGBwgNBgUGEBAQEBAQFBUKCgoFBQUNCwsLCwsLCQkJCQcLCwsLCwsSEAoKCgUFBQsICAgICAgHBwcHFBAGBgUFBgQCBQUJBQUFEAwDDAwAABgWDAADAwgFCQwNBwcMBQkFDAsGCQgICAsIBgoGBQcJBwYRBxUOCgoLCgUKCwcQDgsKDgoGCQkKEQ0KBwUGBgsHEQwKBgsOBQoKBA8LCAwMCwYGBwgPDAoHCAgOBgUGERERERERFRYKCwoFBQUOCwsLCwsMCQkJCQcLCwsLCwsTEQoKCgUFBQsICAgICAgHBwcHFBEGBgUFBgQCBQUKBQUFEAwDDAwAAAABAV0BkAAFAAICvAKKAAAAjwK8AooAAAHFADIBAwAAAAAEAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABNQUNSAEAAICIZAyH/OQAAAyEAxwAAAAEAAAAAAAAAAQAAgAAAAACLAT8AAGAAAbQCdVlva2ttb2trICAgICAgICD/////N////llPS1IwMAAAAAAAAAABAAAAAQAAmJpL9V8PPPUAAAPoAAAAALfnFZIAAAAAt+cVkv+2/zkDawMhAAAAAwACAAEAAAAAAAEAAAMh/zkAAAOQ/7b/uANrAAEAAAAAAAAAAAAAAAAAAACkAAEAAACkAJgADQAAAAAAAgAIAEAACgAAAF0AvgABAAE=");
}
@font-face {
font-family: 'yokkmokkOT_file';
src: url('/fonts/yokkmokkOT.otf'); /* IE 5-8 */
src: local('?'), /* sneakily trick IE */
url('/fonts/yokkmokk.ttf') format('truetype'), /* Opera, Safari */
url('/fonts/yokkmokkOT.woff') format('woff'), /* FF 3.6, Chrome 5, IE9 */
url('/fonts/yokkmokkOT.svg#font') format('svg'); /* iOS */
}
body {
// background: url("data:font/ttf;base64,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AEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgCjAFcAWABZAJYAWgChAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwANAJwAnQCeAJ8AoAChAAAAAAAQAAAAqAkIBQABAQMCAwQFAwMEAgQCBQQCAwMDAwQDAgQCAgMEAwIGAwgFBAQEBAIEBAMGBQQEBQQCAwMEBgUEAwICAgQDBgQEAgQFAgQEAgYEAwQEBAICAwMGBQQDAwMFAgICBgYGBgYGCAgEBAQCAgIFBAQEBAQEAwMDAwMEBAQEBAQHBgQEBAICAgQDAwMDAwMDAwMDCAYCAgICAgIBAgIEAgICBgUBBQUAAAoJBQABAQMCBAUGAwMFAgQCBQUCBAMDBAUDAgQCAgMEAwMHAwkGBAQFBAIEBAMHBgUEBgQCBAQEBwUEAwICAwUDBwUEAgUGAgQEAgYFAwUFBQICAwMGBQQDAwMGAwIDBwcHBwcHCQkEBAQCAgIGBQUFBQUFBAQEBAMFBQUFBQUIBwQEBAICAgUDAwMDAwQDAwMDCAcDAwICAgIBAgIEAgICBwUBBQUAAAsKBgACAgQCBAUGAwMFAgQCBgUDBAQEBAUEAwUDAgMEAwMIAwoGBQUFBQIEBQMHBgUEBgUDBAQECAYFAwIDAwUDCAUFAwUGAgQEAgcFBAUFBQMDAwMHBgUDBAQGAwIDCAgICAgICQoFBQUCAgIGBQUFBQUFBAQEBAMFBQUFBQUJCAUFBQICAgUEBAQEBAQDAwMDCQgDAwICAwIBAgIEAgICBwYBBgYAAAwLBgACAgQDBAYHBAQGAgUDBgYDBQQEBAUEAwUDAwQFBAMIAwsHBQUFBQIFBQQIBwYFBwUDBQUFCAYFAwMDAwYDCQYFAwUHAgUFAggGBAYGBgMDBAQHBgUDBAQHAwMDCAgICAgICgsFBQUCAgIHBgYGBgYGBQUFBQMGBgYGBgYJCQUFBQICAgYEBAQEBAQEBAQECggDAwMDAwIBAwMFAwMDCAYBBgYAAA0MBwACAgQDBQYHBAQGAwUDBwYDBQQFBQYEAwYDAwQFBAMJBAwIBgYGBQMFBgQJBwYFCAUDBQUFCQcFBAMDAwYECQYGAwYIAwUFAggGBQYGBgMDBAQIBwYEBAQHAwMDCQkJCQkJCwwGBgYDAwMHBgYGBgYGBQUFBQQGBgYGBgYKCQYGBgMDAwYFBQUFBQUEBAQECwkDAwMDAwIBAwMFAwMDCQcCBwcAAA4NBwACAgUDBQcIBAQHAwUDBwcDBQUFBQYFAwYDAwQFBAQKBAwIBgYGBgMGBgQJCAcGCAYDBQUGCggGBAMDBAcECgcGAwYIAwYGAwkHBQcHBwMDBAQJBwYEBQUIBAMECgoKCgoKDA0GBgYDAwMIBwcHBwcHBQUFBQQHBwcHBwcLCgYGBgMDAwcFBQUFBQUEBAQEDAoEBAMDAwMBAwMGAwMDCQcCBwcAAA8OCAACAgUDBgcIBQUHAwYDCAcDBgUFBQcFBAcEAwUGBQQLBA0JBwcHBgMGBwUKCAcGCQYEBgYGCggGBAMEBAcECwcHBAcJAwYGAwkHBQcHBwQDBQUJCAYEBQUJBAMECwsLCwsLDQ4HBwcDAwMIBwcHBwcHBgYGBgQHBwcHBwcMCwcHBwMDAwcFBQUFBQUFBQUFDQoEBAMDBAMCAwMGAwMDCggCCAgAABAPCAACAgUEBggJBQUIAwYECAgEBgUGBgcFBAcEBAUGBQQLBQ4JBwcHBwMGBwULCQgGCQcEBgYGCwkHBAQEBAgFCwgHBAcJAwcGAwoHBggIBwQEBQUKCAcEBQUJBAMECwsLCwsLDg8HBwcDAwMJCAgICAgIBgYGBgUICAgICAgNCwcHBwMDAwcGBgYGBgYFBQUFDgsEBAQEBAMCAwMGBAQECwgCCAgAABEQCQACAgYEBggJBQUIAwcECQgEBwYGBggGBAcEBAUHBQUMBQ8KBwcIBwMHCAULCggHCgcEBgYHDAkHBQQEBAgFDAgHBAgKAwcHAwsIBggICAQEBQUKCQcFBgYKBAQFDAwMDAwMDxAHCAcDAwMKCAgICAgIBgYGBgUICAgICAgNDAcHBwMDAwgGBgYGBgYFBQUFDgwFBQQEBAMCBAQHBAQECwkCCQkAABIQCQADAwYEBwkKBgYJBAcECQkEBwYGBggGBAgEBAYHBgUNBRAKCAgICAQHCAUMCgkHCwcEBwcHDQoIBQQEBQkFDQkIBAgKBAcHAwsIBgkJCAQEBQYLCQgFBgYKBQQFDQ0NDQ0NDxAICAgEBAQKCQkJCQkJBwcHBwUJCQkJCQkODQgICAQEBAgGBgYGBgYFBQUFDwwFBQQEBAMCBAQHBAQEDAkCCQkAABMRCgADAwYEBwkLBgYJBAcECgkEBwYHBwkGBAgFBAYHBgUNBhELCAgJCAQICAYNCwkICwgEBwcIDQoIBQQFBQkFDQkIBAkLBAgIBAwJBwkJCQQEBgYMCggFBgYLBQQFDQ0NDQ0NEBEICAgEBAQLCQkJCQkJBwcHBwUJCQkJCQkPDQgICAQEBAkHBwcHBwcGBgYGEA0FBQQEBQQCBAQIBAQEDQoCCgoAABQSCgADAwcEBwoLBgYKBAgECgoFCAcHBwkHBQkFBAYIBgUOBhIMCQkJCAQICQYNCwoIDAgFCAgIDgsIBgUFBQoGDgoJBQkMBAgIBA0JBwoKCQUFBgYMCgkGBwcLBQQFDg4ODg4OERIJCQkEBAQLCgoKCgoKCAgICAYKCgoKCgoQDgkJCQQEBAkHBwcHBwcGBgYGEQ4FBQUFBQQCBAQIBQUEDgoCCgoAABUTCwADAwcFCAoMBgYKBAgFCwoFCAcHBwoHBQkFBQYIBgYPBhMMCQkJCQQJCQYODAoIDAkFCAgIDwsJBgUFBQoGDwoJBQoMBAkIBA0KBwoKCgUFBgcNCwkGBwcMBQQGDw8PDw8PEhMJCQkEBAQMCgoKCgoKCAgICAYKCgoKCgoRDwkJCQQEBAoHBwcHBwcGBgYGEg4GBgUFBQQCBAQIBQUFDgsDCwsAABYUCwADAwcFCAsMBwcLBAkFCwoFCAcICAoHBQoFBQcJBwYPBhQNCgoKCQQJCgcPDAoJDQkFCAgJDwwJBgUFBgsGEAsKBQoNBAkJBA4KCAsLCgUFBwcOCwkGBwcNBgUGDw8PDw8PExQKCgoEBAQMCgoKCgoLCAgICAYLCwsLCwsREAoKCgQEBAoICAgICAgHBwcHEw8GBgUFBQQCBQUJBQUFDwsDCwsAABcVDAADAwcFCQsNBwcLBQkFDAsFCQcICAsIBQoGBQcJBwYQBxQNCgoKCgUJCgcPDQsJDQoFCQkJEAwKBgUGBgsHEAsKBQoNBQkJBA4LCAsLCwUFBwcODAoGBwgNBgUGEBAQEBAQFBUKCgoFBQUNCwsLCwsLCQkJCQcLCwsLCwsSEAoKCgUFBQsICAgICAgHBwcHFBAGBgUFBgQCBQUJBQUFEAwDDAwAABgWDAADAwgFCQwNBwcMBQkFDAsGCQgICAsIBgoGBQcJBwYRBxUOCgoLCgUKCwcQDgsKDgoGCQkKEQ0KBwUGBgsHEQwKBgsOBQoKBA8LCAwMCwYGBwgPDAoHCAgOBgUGERERERERFRYKCwoFBQUOCwsLCwsMCQkJCQcLCwsLCwsTEQoKCgUFBQsICAgICAgHBwcHFBEGBgUFBgQCBQUKBQUFEAwDDAwAAAABAV0BkAAFAAICvAKKAAAAjwK8AooAAAHFADIBAwAAAAAEAAAAAAAAAAAAAAMAAAAAAAAAAAAAAABNQUNSAEAAICIZAyH/OQAAAyEAxwAAAAEAAAAAAAAAAQAAgAAAAACLAT8AAGAAAbQCdVlva2ttb2trICAgICAgICD/////N////llPS1IwMAAAAAAAAAABAAAAAQAAmJpL9V8PPPUAAAPoAAAAALfnFZIAAAAAt+cVkv+2/zkDawMhAAAAAwACAAEAAAAAAAEAAAMh/zkAAAOQ/7b/uANrAAEAAAAAAAAAAAAAAAAAAACkAAEAAACkAJgADQAAAAAAAgAIAEAACgAAAF0AvgABAAE=");
background-color: lightblue;
background-color: linen;
background-color: burlywood;
background-color: antiquewhite;
background-color: yellow;
background-color: lightyellow;
background-color: blue;
background-color: lightblue;
background-color: black;
background-color: white;
background-color: wheat;
background-color: #FFFDDA
// background-color: darkslategrey;
// background-color: darkgreyslate;
// color: white;
color: black;
font-size:62.5%;
font-family: "New Times Roman";
font-family: "serif";
font-family: "sans-serif";
font-family: "courier";
font-family: "monospace";
font-family: cursive;
font-family: fantasy;
font-family: yokkmokkOT;
font-family: "arial";
font-size: 38pt;
}
// h1 { font-size: 2.4em; } /* =24px */
h1 { font-size: 14pt; } /* =24px */
h2 { font-size: 12pt; } /* =24px */
h3 { font-size: 10pt; } /* =24px */
p { font-size: 10pt; } /* =14px */
li { font-size: 20pt; } /* =14px? */
</style>
<style id="style_buttons" >
// body { text-align: center; background-color: "darkSlategrey"; color:"ivory"; }
button {
// visibility: hidden;
// background: rgba(7, 99, 53, .1);
background: transparent;
// border: 3px solid rgba(7, 99, 53, 1);
// border: 3px solid wheat;
// border: 3px solid #FFFDDA;
border: 3px solid darkSlategrey;
border-radius: 5px;
// color: rgba(7, 99, 53, 1);
// color: ivory;
color: darkSlategrey;
color: black;
cursor: pointer;
line-height: 40px;
font-size: 20px;
outline: none;
padding: 0 20px;
transition: all .3s;
}
button:hover {
// background: rgba(7, 99, 53, 1);
background: darkSlategrey;
background: wheat;
background: #FFFDDA;
// background: yellow;
// background: white;
// color: rgba(255,255,255,1);
// color: ivory
color: black;
}
p {font-size: 20px; font-weight: bold;
</style>
<style id="style_input" >
// body { text-align: center; background-color: "darkSlategrey"; color:"ivory"; }
input {
// visibility: hidden;
// background: rgba(7, 99, 53, .1);
background: transparent;
// border: 3px solid rgba(7, 99, 53, 1);
border: 3px solid darkSlategrey;
border-radius: 5px;
// color: rgba(7, 99, 53, 1);
// color: ivory;
// color: darkSlategrey;
color: black;
cursor: pointer;
line-height: 40px;
font-size: 10px;
outline: none;
padding: 0 20px;
transition: all .3s;
}
button:hover {
// background: rgba(7, 99, 53, 1);
background: darkslategray;
// background: yellow;
// background: white;
// color: rgba(255,255,255,1);
// color: white;
// color: ivory;
color: darkslategray;
}
p {font-size: 10px; font-weight: bold;
</style>
<script id="script_allowdrop" >
function allowDrop(ev) {ev.preventDefault();}
function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<style id="style_input_file">
.fileContainer {
overflow: hidden;
position: relative;
}
.fileContainer [type=file] {
cursor: inherit;
display: block;
font-size: 999px;
filter: alpha(opacity=0);
min-height: 100%;
min-width: 100%;
opacity: 0;
position: absolute;
right: 0;
text-align: right;
top: 0;
}
</style>
<!--
<style id="style_input_text">
input[type=text] {
// background-color: #BFBDBD;
// background-color: darkSlategrey;
background-color: wheat;
background-color: #FFFDDA;
// color: #979797;
border:solid 1px darkSlategrey;
// color: ivory;
color: black;
height: 28px;
padding-left:10px;
width: 191px;
box-shadow: 2px 2px 0 #828181 inset;
}
input[type=button] {
// background-color: #1E1E1E;
// color: #979797;
background-color: darkSlategrey;
background-color: wheat;
background-color: #FFFDDA;
// color: ivory;
color: darkslategray;
height: 24px;
width: 103px;
text-transform:uppercase;
box-shadow:-1px 2px #6E6B6A inset;
}
// input[type=button], input[type=text]
// {border-radius: 5px; font-family: Sansation;}
// {border-radius: 5px; font-family: yokkmokkOT;}
</style>
-->
<style id="style_popover" >
.popover {
position: relative;
float: left;
padding: 5px;
/*z-ka1: 0;*/
}
.popover:hover {
// background-color: #e9e9e2;
// background-color: darkslategrey;
background-color: wheat;
// background-color: #FFFDDA;
/*z-ka1: 50;*/
// color: white;
// color: ivory;
color: black;
// color: #335500;
text-decoration: none;
}
/*CSS for enlarged image*/
.popover span {
position: absolute;
// background-color: #e5e5e5;
// background-color: darkslategrey;
background-color: wheat;
background-color: #FFFDDA;
padding: 5px;
/*left: -1000px;*/
// border: 1px solid #666;
// border: 1px solid darkslategrey;
border: 1px solid wheat;
border: 1px solid #FFFDDA;
visibility: hidden;
color: black;
text-decoration: none;
}
/*CSS for enlarged image*/
.popover span img {
border-width: 0px;
/*padding: 2px;*/
}
/*CSS for enlarged image on hover*/
.popover:hover span {
visibility: visible;
// width: 200px;
top: 0px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
left: 0px;/*position where enlarged image should offset horizontally */
}
</style>
<style id="style_thumbnail" >
.thumbnail {
position: relative;
float: left;
padding: 5px;
/*z-ka1: 0;*/
}
.thumbnail:hover {
// background-color: #e9e9e2;
background-color: darkslategrey;
/*z-ka1: 50;*/
// color: #335500;
// color: ivory;
color: darkslategray;
text-decoration: none;
}
/*CSS for enlarged image*/
.thumbnail span {
position: absolute;
// background-color: #e5e5e5;
background-color: darkslategrey;
padding: 5px;
/*left: -1000px;*/
border: 1px solid #666;
visibility: hidden;
// color: black;
color: ivory;
text-decoration: none;
}
/*CSS for enlarged image*/
.thumbnail span img {
border-width: 0px;
/*padding: 2px;*/
}
/*CSS for enlarged image on hover*/
.thumbnail:hover span {
visibility: visible;
width: 200px;
top: 5px; /* use IF IE6 style to correct IE6 positions of larger image relative to thumb */
left: 300px;/*position where enlarged image should offset horizontally */
}
</style>
<script id="script_allowdrop">
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
function drop1(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
function drop2(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<script id="script_drop">
function drop(e) {
var e_id=e.getAttribute('id');
var eid = e.attribute("id");
alert( "BUGS_01 drop e_id="+e_id );
alert( "BUGS_01 drop e.id="+e.id );
var e_id=e.getAttribute("id");
alert( "BUGS_00 drop e_id="+e_id );
alert( "BUGS_00 drop e="+e );
alert( "BUGS_01 drop e.attribute.id="+e.attribute.id );
}
</script>
<script id="script_dropw1">
function dropw1(e) {
alert( "BUGS_110w dropw1 e="+e );
alert( "BUGS_110w dropw1 e.id="+e.id );
alert( "BUGS_111w dropw1 e.attribute.id="+e.attribute.id );
}
</script>
<script id="script_dropb1">
function dropb1(e) {
alert( "BUGS_111b dropb1 e_id="+e_id );
alert( "BUGS_111b dropb1 e.id="+e.id );
alert( "BUGS_110b dropb1 e="+e );
alert( "BUGS_21 dropb1 e.attribute.id="+e.attribute.id );
}
</script>
<script id="script_allowdrop">
function allowDrop(ev) { ev.preventDefault(); }
function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);}
</script>
<script id="script_drop">
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function drop0(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function drop1(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function drop2(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dropw(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dropb(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dropw1(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dropb1(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dropw2(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dropb2(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<style id="style_startup">
// body { background-color: wheat; }
body { background-color: #FFFDDA; color: black }
</style>
<script id="script_startup_canvas" >
function startup_canvas(args) {
var dt = dttm('');
// canvas_button(id,imgsrc,txt,x,y,fontsize,fontname,fillstyle);
canvas_button('canvas_button_alloff_w','/imgs/btn/koeyeb.png','head',80,40,'18px','Verdana','white' );
canvas_button('canvas_button_toggle_w','/imgs/btn/koeyew.png','head',80,40,'18px','Verdana','black' );
canvas_button('canvas_button_allon_w','/imgs/btn/koeyew.png','head',80,40,'18px','Verdana','black' );
canvas_button('canvas_button_head_w','/imgs/btn/koeyeb.png','head',80,40,'18px','Verdana','white' );
canvas_button('canvas_button_setup_w','/imgs/btn/koeyeb.png','setup',80,40,'18px','Verdana','black' );
canvas_button('canvas_button_tail_w','/imgs/btn/koeyeb.png','setup',80,40,'18px','Verdana','black' );
// canvas_button('canvas_button_hunt_w','/imgs/btn/koeyew.png','hunt',80,40,'18px','Verdana','black' );
// canvas_button('canvas_button_tag_w','/imgs/btn/koeyeb.png','tag',80,40,'18px','Verdana','black' );
// canvas_button('canvas_button_swarm_w','/imgs/btn/koeyeb.png','swarm',80,40,'18px','Verdana','black' );
if( document.getElementById('canvas')) {
var ctx= document.getElementById('canvas').getContext('2d');
}
var ctx_w = ctx;
var ctx_b = ctx;
var ctx_m = ctx;
var ctx_bbwii = ctx;
var ctx_blobs = ctx;
if( document.getElementById('canvas_w')) {
ctx_w = document.getElementById('canvas_w').getContext('2d');
}
if( document.getElementById('canvas_b')) {
ctx_b = document.getElementById('canvas_b').getContext('2d');
}
if( document.getElementById('canvas_m')) {
ctx_m = document.getElementById('canvas_m').getContext('2d');
}
if( document.getElementById('canvas_bbwii')) {
ctx_bbwii = document.getElementById('canvas_bbwii').getContext('2d');
}
if( document.getElementById('canvas_bbwii')) {
ctx_blobs = document.getElementById('canvas_blobs').getContext('2d');
}
var ctx_w = canvas_w.getContext('2d');
var canvas_b = document.getElementById('canvas_b');
var ctx_b = canvas_b.getContext('2d');
var canvas_m = document.getElementById('canvas_m');
var ctx_m = canvas_m.getContext('2d');
drawimage(ctx,120,100,'/imgs/btn/koeyew.png');
drawimage(ctx,200,200,'/imgs/btn/koeye.png');
drawimage(ctx,500,400,'/imgs/btn/koeyeb.png');
// drawimage(ctx_w,100,100,'/imgs/btn/kop12.png');
// drawimage(ctx_b,100,100,'/imgs/btn/kop34.png');
// drawimage(ctx_m,100,100,'/imgs/btn/kop1234.png');
var my_gradient = ctx.createLinearGradient(0, 0, 0, 170);
var my_gradient_w = ctx_w.createLinearGradient(0, 0, 0, 170);
var my_gradient_b = ctx_b.createLinearGradient(0, 0, 0, 170);
var my_gradient_m = ctx_m.createLinearGradient(0, 0, 0, 170);
my_gradient.addColorStop(0, "black");
my_gradient.addColorStop(1, "white");
my_gradient_w.addColorStop(0, "white");
my_gradient_w.addColorStop(1, "black");
ctx_w.fillStyle = my_gradient_w;
// ctx_w.fillRect(10,10,1300,650);
my_gradient_b.addColorStop(0, "black");
my_gradient_b.addColorStop(1, "white");
ctx_b.fillStyle = my_gradient_b;
// ctx_b.fillRect(0,0,500,500);
my_gradient_m.addColorStop(0, "burlywood");
// my_gradient_m.addColorStop(1, "wheat");
my_gradient_m.addColorStop(1, "#FFFDDA");
ctx_m.fillStyle = my_gradient_m;
ctx_m.fillRect(0,0,500,500);
ctx.fillStyle = my_gradient;
ctx.fillRect(10,10,2000,800);
ctx.font = "40pt Calibri";
ctx.font = "50pt yokkmokkOT";
ctx.fillStyle = 'white';
ctx.fillText("jkwii timejak: its about time",200, 80 );
ctx.fillStyle = 'black';
ctx.font = "160pt yokkmokkOT";
// ctx.fillText("-= 2 0 2 0 =-",450, 160 );
ctx.fillStyle = "blue";
ctx.fillText("J U L Y 4 ",600, 200 );
ctx.font = "40pt yokkmokkOT";
ctx.fillStyle = "red";
ctx.fillText("july 4 1977 jsk",100, 240 );
ctx.fillStyle = "blue";
ctx.fillText("43rd wedding anniversary",400, 240 );
ctx.fillStyle = "red";
ctx.fillText("july 4 2020 jsk",700, 240 );
ctx.fillStyle = "black";
ctx.font = "20pt yokkmokkOT";
ctx.fillStyle = "wheat";
ctx.fillText("-= shock =- n -= awe =-",500, 300 );
ctx.fillStyle = "black";
// ctx.fillText("avril 14 2020",650, 180 );
// ctx.font = "110pt yokkmokkOT";
// ctx.fillText("-= happy passover easter =-",100, 300 );
// ctx.fillText("-= happy easter passover =-",100, 400 );
// ctx.fillText("-= happy birthday jessie =-",100, 500 );
ctx.strokeStyle = "blue";
ctx.font = "100pt yokkmokkOT";
ctx.fillText("-= DEFFORD COURT =-",80, 350 );
ctx.font = "160pt yokkmokkOT";
ctx.fillText("-= KEEP OUT =-",50, 600 );
ctx.font = "60pt yokkmokkOT";
ctx.fillText("-= COVID-19 LOCKDOWN =-",200, 460 );
ctx.font = "70pt yokkmokkOT";
ctx.fillText("est. 1979",1100, 400 );
ctx.font = "40pt yokkmokkOT";
ctx.fillText("offroad",150, 390 );
ctx.fillText("private drive",500, 390 );
ctx.fillText("no outlet",900, 390 );
ctx.font = "20pt yokkmokkOT";
ctx.fillText("please . . .",300, 500 );
ctx.fillText("jkwii\@hi_risk",900, 500 );
ctx.fillStyle="blue";
ctx.strokeStyle="red";
ctx.beginPath();
ctx.lineWidth=6;
ctx.rect(20, 250, 1300, 20);
ctx.stroke();
// ctx.font = "80pt yokkmokkOT";
// ctx.fillText("offroad private drive '100, 350 );
// ctx.font = "110pt yokkmokkOT";
// ctx.fillText("-= C O V D 1 9 L O C K D O W N =-",100, 400 );
//// ctx.fillText("-= K E E P O U T =-",100, 400 );
// ctx.font = "80pt yokkmokkOT";
// ctx.fillText("please ... ",100, 600 );
// ctx.fillText("jkwii@hirisk ",600, 600 );
//
ctx.font = "50pt yokkmokkOT";
ctx.fillText( dt, 25,150 );
// ctx.fillText("-= one =- -= eins =- -= un =- -= uno =- ",100, 400 );
// ctx.fillText(dt,100, 100 );
// ctx.font = "100pt yokkmokkOT";
// ctx.fillText("eins",1000, 600 );
// alert( "BUGS_690 startup_canvas" );
drawimage(ctx,100,200,'/imgs/btn/ko.png');
drawimage(ctx,200,100,'/imgs/btn/ok.png');
// let mouse = { x: undefined, y: undefined };
// window.addEventListener('mousemove', function(e) {
// mouse.x = event.x;
// mouse.y = event.y;
// });
//
// document.getElementById('div_msg').innerHTML = 'MOUSE '+mouse.x+","+mouse.y;
// alert( "BUGS_701 startup_canvas ctx_w="+ctx_w );
ctx_w.font = "12pt Calibri";
ctx_w.fillStyle = 'red';
// ctx_w.fillText("jkwii timejak_w",20, 10 );
// alert( "BUGS_702 startup_canvas ctx_b="+ctx_b );
ctx_b.font = "12pt Calibri";
ctx_b.fillStyle = 'black';
// ctx_b.fillText("jkwii timejak_b",20, 10 );
// alert( "BUGS_703 startup_canvas ctx_m="+ctx_m );
ctx_m.font = "12pt Calibri";
ctx_m.fillStyle = 'black';
ctx_m.fillText("jkwii timejak_m",20, 10 );
// alert( "BUGS_704 startup_canvas ctx_m="+ctx_m );
// ctx.fillStyle = "url('/gm/imgs/bg/bg_steel_linear.png')";
// ctx.fillStyle = "url('/gm/imgs/bg/background1.jpg')";
// ctx.fillstyle = "/gm/imgs/bg/background1.jpg";
// var line1={x:10,y:10, l:40, h:1};
// var down=false;
// var mouse={x:0,y:0};
// var line="line";
// var mouse="mouse";
// var down="false";
// ctx.onmousemove=function(e){
// mouse={x:e.pageX-this.offsetLeft,y:e.pageY-this.offsetTop};
// this.onmousedown=function(){down=true};
// this.onmouseup=function(){down=false} ;
// }
// setInterval(function(){
// ctx.clearRect(0,0,canvas.width,canvas.height)
// ctx.beginPath()
// ctx.moveTo(line1.x,line1.y)
// ctx.lineTo(line1.x +line1.l,line1.y)
// ctx.lineTo(line1.x +line1.l,line1.y+line1.h)
// ctx.lineTo(line1.x,line1.y+line1.h)
//
// ctx.isPointInPath(mouse.x,mouse.y)? (ctx.fillStyle ="red",line1.x=down?mouse.x:line1.x,line1.y=down?mouse.y:line1.y):(ctx.fillStyle ="blue")
// ctx.fill()
// },100)
// var isInside=(
// mouseX>=RectX &&
// mouseX<=RectX+RectWidth &&
// mouseY>=RectY &&
// mouseY<=RectY+RectHeight
// );
// ctx.addEventListener('mousemove', e => {
// let bound = ctx.getBoundingClientRect();
// let x = e.pageX - bound.left;
// let y = e.pageY - bound.top;
// paths.forEach((path, index) => {
// if ($.isPointInPath(path, x, y)) {
// console.log(index);
// }
// });
// });
// document.body.appendChild(ctx);
// alert( "BUGS_600 startup_canvas args="+args );
// var canvas = document.getElementById('canvas');
// var canvas_b = document.getElementById('canvas_b');
// var canvas_m = document.getElementById('canvas_m');
// var ctxx = canvas.getContext('2d');
// var ctx_b = canvas_b.getContext('2d');
// var ctx_m = canvas_m.getContext('2d');
// ctxx.fillStyle = "yellow";
// ctxx.fillText("jkwii timejak",20, 50 );
// ctx_b.fillStyle = "black";
// ctx_b.fillText("jkwii timejak_b" );
// ctx_w.fillStyle = "white";
// ctx_w.fillText("jkwii timejak_w" );
// ctx_m.fillStyle = "red";
// ctx_m.fill();
// ctx_m.fillText("jkwii timejak_m" );
//
// alert( "BUGS_651 ctx args="+args );
// eval(req.responseText);args
// req.open("GET", "/notes.txt", false);
// req.send();
// ctx.width = window.innerWidth;
// ctx.height = window.innerHeight;
// alertmsg( "BUGS_780 startup_canvas end" );
}
</script>
<script id="script_shape">
class Shape {
constructor(x, y) {
this.x = x;
this.y = y;
this.initialX = x;
this.initialY = y;
};
// this is where we control the shape's appearance
// this is where we control movement and interactivity
draw = () => {};
update = () => {this.draw();};
};
function animate() {
requestAnimationFrame(animate);
// bugs ctx.clearRect(0,0, window.innerWidth, window.innerHeight);
// bugs Shape.draw();
};
animate();
</script>
<script id="script_drawimage" >
// window.onload = function () {
function drawimage(ctx,x,y,imgsrc) {
// alert( "BUGS_680 drawimage" );
// var canvas = document.getElementById("canvas");
// var ctx = canvas.getContext('2d');
// var canvas_b = document.getElementById("canvas_b");
// var ctx_b = canvas_b.getContext('2d');
// var canvas_w = document.getElementById("canvas_w");
// var ctx_w = canvas_w.getContext('2d');
// var canvas_m = document.getElementById("canvas_m");
// var ctx_m = canvas_m.getContext('2d');
var img = new Image();
// img.src = '/imgs/btn/koeye.png';
img.src = imgsrc;
img.onload = function (e) {
// ctx.drawImage(img, 10, 10);
ctx.drawImage(img, 0, 0);
}
}
</script>
<script id="script_canvas_button" >
// canvas_button(id,imgsrc,txt,x,y,font,fillstyle);
// canvas_button('canvas_button_head_w','/imgs/btn/koeyew.png','head',80,40,'18px',' Verdana','black' );
// function canvas_button(id,imgsrc,txt) {
function canvas_button(id,imgsrc,txt,x,y,fontsize,fontname,fillstyle) {
// alertmsg( "BUGS_1025 canvas_button id="+id+","+imgsrc+ ","+txt ","+x ","+y ","+fontsize ","+fontname ","+fillstyle );
var img = new Image();
img.src = '/imgs/btn/koeye.png';
if( imgsrc != "" ) { img.src = imgsrc; }
// alertmsg( "BUGS_1040 canvas_button id="+id+","+imgsrc+","+txt+","+x+","+y+","+fontsize+","+fontname+","+fillstyle );
if(! document.getElementById(id)) {
// alertmsg( "BUGS_1042 canvas_button NOTFOUND id="+id+","+imgsrc+","+txt );
return("");
}
var canvas = document.getElementById(id);
var ctx= canvas.getContext('2d');
img.onload = function(e) {
ctx.drawImage(img, 0, 0);
}
// alertmsg( "BUGS_1007 txt="+txt+","+x+","+y+" font="+font+" fillstyle="+fillstyle );
// ctx.font = '18px yokkmokkOT';
// ctx.font = '18px'+' '+'Verdana';
// ctx.fillStyle = 'white';
// ctx.fillStyle = 'black';
ctx.fillStyle = fillstyle;
var font = fontsize+" "+fontname;
ctx.font = font;
// alertmsg( "BUGS_1061 canvas_button FILLTEXT id="+id+","+imgsrc+","+txt+","+x+","+y+","+font+","+fillstyle );
ctx.fillText(txt,x,y);
// alertmsg( "BUGS_1062 canvas_button FILLTEXT id="+id+","+imgsrc+",TXT="+txt+" x="+x+"y="+y+"fontname="+fontname );
// ctx.font = '18px yokkmokkOT';
// var gradient = ctx.createLinearGradient(0, 0, c.width, 0);
// gradient.addColorStop("0"," magenta");
// gradient.addColorStop("0.5", "blue");
// gradient.addColorStop("1.0", "red");
// ctx.fillStyle = gradient;
// alertmsg( htmout );
// alertmsg( "BUGS_1060 canvas_button FILLTEXT id="+id+","+imgsrc+",TXT="+txt );
}
</script>
<script id="script_play_audio" >
function play_audio(args) {
alertmsg("BUGS_1601 play_audio args="+args );
return("");
}
</script>
<script id="script_play_video" >
function play_video(args) {
alertmsg("BUGS_1602 play_video args="+args );
return("");
}
</script>
<script id="script_mute" >
// Mute a singular HTML5 element
// Try to mute all video and audio elements on the page
function mute(elem) {
alertmsg('BUGS_1071 mute elem='+elem );
elem.muted = true; elem.pause();
alertmsg('BUGS_1072 mute elem='+elem );
}
function allmute(args) {
// var x, i;
// x = document.querySelectorAll(".img");
// for (i = 0; i < x.length; i++) {
// x[i].style.backgroundColor = "red";
// }
//
alertmsg('BUGS_1081 mute args='+args );
var elems = document.querySelectorAll("video, audio");
// var elems = document.querySelectorAll("<audio");
alertmsg('BUGS_1081 mute elem='+elem );
[].forEach.call(elems, function(elem) {
alertmsg('BUGS_1082 mute elem='+elem );
mute(elem);
});
alertmsg('BUGS_1083 mute elem='+elem );
}
// HTML Audio/Video Methods
// Method Description
// addTextTrack() Adds a new text track to the audio/video
// canPlayType() Checks if the browser can play the specified audio/video type
// load() Re-loads the audio/video element
// play() Starts playing the audio/video
// pause() Pauses the currently playing audio/video
// HTML Audio/Video Events
// Event Description
// abort Fires when the loading of an audio/video is aborted
// canplay Fires when the browser can start playing the audio/video
// canplaythrough Fires when the browser can play through the audio/video without stopping for buffering
// durationchange Fires when the duration of the audio/video is changed
// emptied Fires when the current playlist is empty
// ended Fires when the current playlist is ended
// error Fires when an error occurred during the loading of an audio/video
// loadeddata Fires when the browser has loaded the current frame of the audio/video
// loadedmetadata Fires when the browser has loaded meta data for the audio/video
// loadstart Fires when the browser starts looking for the audio/video
// pause Fires when the audio/video has been paused
// play Fires when the audio/video has been started or is no longer paused
// playing Fires when the audio/video is playing after having been paused or stopped for buffering
// progress Fires when the browser is downloading the audio/video
// ratechange Fires when the playing speed of the audio/video is changed
// seeked Fires when the user is finished moving/skipping to a new position in the audio/video
// seeking Fires when the user starts moving/skipping to a new position in the audio/video
// stalled Fires when the browser is trying to get media data, but data is not available
// suspend Fires when the browser is intentionally not getting media data
// timeupdate Fires when the current playback position has changed
// volumechange Fires when the volume has been changed
// waiting Fires when the video stops because it needs to buffer the next frame
// HTML Audio/Video Properties
// Property Description
// audioTracks Returns an AudioTrackList object representing available audio tracks
// autoplay Sets or returns whether the audio/video should start playing as soon as it is loaded
// buffered Returns a TimeRanges object representing the buffered parts of the audio/video
// controller Returns the MediaController object representing the current media controller of the audio/video
// controls Sets or returns whether the audio/video should display controls (like play/pause etc.)
// crossOrigin Sets or returns the CORS settings of the audio/video
// currentSrc Returns the URL of the current audio/video
// currentTime Sets or returns the current playback position in the audio/video (in seconds)
// defaultMuted Sets or returns whether the audio/video should be muted by default
// defaultPlaybackRate Sets or returns the default speed of the audio/video playback
// duration Returns the length of the current audio/video (in seconds)
// ended Returns whether the playback of the audio/video has ended or not
// error Returns a MediaError object representing the error state of the audio/video
// loop Sets or returns whether the audio/video should start over again when finished
// mediaGroup Sets or returns the group the audio/video belongs to (used to link multiple audio/video elements)
// muted Sets or returns whether the audio/video is muted or not
// networkState Returns the current network state of the audio/video
// paused Returns whether the audio/video is paused or not
// playbackRate Sets or returns the speed of the audio/video playback
// played Returns a TimeRanges object representing the played parts of the audio/video
// preload Sets or returns whether the audio/video should be loaded when the page loads
// readyState Returns the current ready state of the audio/video
// seekable Returns a TimeRanges object representing the seekable parts of the audio/video
// seeking Returns whether the user is currently seeking in the audio/video
// src Sets or returns the current source of the audio/video element
// startDate Returns a Date object representing the current time offset
// textTracks Returns a TextTrackList object representing the available text tracks
// videoTracks Returns a VideoTrackList object representing the available video tracks
// volume Sets or returns the volume of the audio/video
</script>
<script id="script_progressbar">
var reader;
var progress = document.querySelector('.percent');
function abortRead() {reader.abort(); }
function errorHandler(evt) {
switch(evt.target.error.code) {
case evt.target.error.NOT_FOUND_ERR:
alert('File Not Found!');
break;
case evt.target.error.NOT_READABLE_ERR:
alert('File is not readable');
break;
case evt.target.error.ABORT_ERR:
break; // noop
default:
alertmsg('ERR_7750 reading file');
};
}
// evt is an ProgressEvent.
// Increase the progress bar length.
function updateProgress(evt) {
if (evt.lengthComputable) {
var percentLoaded = Math.round((evt.loaded / evt.total) * 100);
if (percentLoaded < 100) {
progress.style.width = percentLoaded + '%';
progress.textContent = percentLoaded + '%';
}
}
}
// Reset progress indicator on new file selection.
function handleFileSelect(evt) {
progress.style.width = '0%';
progress.textContent = '0%';
reader = new FileReader();
reader.onerror = errorHandler;
reader.onprogress = updateProgress;
reader.onabort = function(e) {
alertmsg('MSG_7790 cancelled');
};
reader.onloadstart = function(e) {
document.getElementById('progress_bar').className = 'loading';
};
// Ensure that the progress bar displays 100% at the end.
reader.onload = function(e) {
progress.style.width = '100%';
progress.textContent = '100%';
setTimeout("document.getElementById('progress_bar').className='';", 2000);
}
// Read in the image file as a binary string.
reader.readAsBinaryString(evt.target.files[0]);
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
<script id="script_jaximg">
function jaximg(args) {
var url_default="ko.png";
var url
if( args != "" ) { url = args; }
if(! filecheck(img)) { return(""); }
var xhr = new XMLHttpRequest();
// xhr.open('GET', '/path/to/image.png', true);
xhr.open('GET', url, true);
xhr.responseType = 'blob';
// Note: .response instead of .responseText
xhr.onload = function(e) {
if (this.status == 200) {
var blob = new Blob([this.response], {type: 'image/png'});
alertmsg( "MSG_7760 jax_blob" ):
}
};
xhr.send();
}
// var byte3 = uInt8Array[4];
// byte at offset 4
// ...
function jaximg2(args) {
var url_default = "ko.png";
if( args != "" ) { url = args; }
if(! filecheck(imgurl)) { return(""); }
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
var uInt8Array = new Uint8Array(this.response); // this.response == uInt8Array.buffer
};
xhr.send();
}
</script>
<script id="script_jaxsend" >
function sendText(txt) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/q=sendtextr', true);
xhr.onload = function(e) {
if (this.status == 200) {
alertmsg(this.responseText);
}
};
xhr.send(txt);
}
// disable sendText('test string');
function sendTextNew(txt) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/?q=sendtextnew', true);
xhr.responseType = 'text';
xhr.onload = function(e) {
if (this.status == 200) {
alert(this.response);
}
};
xhr.send(txt);
}
// disable sendTextNew('test string');
function sendForm() {
var formData = new FormData();
formData.append('username', 'jkwii');
formData.append('id', 1213);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/?q=sendform', true);
xhr.onload = function(e) { alert( "MSG_7000 sendform " ); };
xhr.send(formData);
}
// Append extra data before send.
// Prevent page from submitting.
function sendForm(form) {
var formData = new FormData(form);
formData.append('secret_token', '1234567890');
var xhr = new XMLHttpRequest();
xhr.open('POST', form.action, true);
xhr.onload = function(e) { alert("MSG_7000 sendForm form="+form); };
xhr.send(formData);
return false;
}
function uploadFiles(url, files) {
var formData = new FormData();
for (var i = 0, file; file = files[i]; ++i) {
formData.append(file.name, file);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.onload = function(e) { alert("BUGS_uploadFiles url="+url+" files="+files); };
// multipart/form-data
xhr.send(formData);
}
// document.querySelector('input[type="file"]').addEventListener('change', function(e) {
// uploadFiles('/?q=input_file', this.files);
// }, false);
function upload_blob(blobOrFile) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/q=blobfile', true);
xhr.onload = function(e) { alert("MSG_7000 blobfile");};
// Listen to the upload progress.
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progressBar.value = (e.loaded / e.total) * 100;
progressBar.textContent = progressBar.value; // Fallback for unsupported browsers.
}
};
xhr.send(blobOrFile);
}
// upload_blob(new Blob(['jkwii timejak'], {type: 'text/plain'}));
// Access-Control-Allow-Origin: http://example.com
// Access-Control-Allow-Origin: *
function jaxs_cors(args) {
var urljson_default = "/?q=jaxs_cors_json";
var urljson = urljson_default;
if( args != "" ) { urljson = args; }
var xhr = new XMLHttpRequest();
// xhr.open('GET', 'httlP::/example.com/hello.json');
// xhr.open('GET', 'index.json');
xhr.open('GET', urljson);
xhr.onload = function(e) {
var data = JSON.parse(this.response);
alertmsg( "MSG_7100 jaxs_cors urljson="+urljson );
}
xhr.send();
}
</script>
<script id="script_alertmsg" >
alertmsg(msg) {
alert( "alert_101 msg="+msg );
document.getElementById('div_msg').innerHTML=msg;
document.getElementById('div_log').insertAdjacetHTML('afterend,msg);
// document.getElementById('div_log').insertAdjacetHTML('beforeend,msg);
// document.getElementById('div_log').insertAdjacetHTML('afterbegin,msg);
// document.getElementById('div_log').insertAdjacetHTML('beforebegin,msg);
}
</script>
<style id="style_details">
details { border: 1px solid #aaa; border-radius: 4px; padding: .5em .5em 0; }
summary { font-weight: bold; margin: -.5em -.5em 0; padding: .5em; }
details[open] { padding: .5em; }
details[open] summary { border-bottom: 1px solid #aaa; margin-bottom: .5em; }
</style>
<script id="script_ytload" >
function ytload(args) {
var ytlist_default = `
yt_20190404_spring_blender_open_movie|https://www.youtube.com/watch?v=WhWc3b3KhnY
yt_20180531_first_of_spring_dgital_animation_showcase|https://www.youtube.com/watch?v=IAaLzP1U4nc
`;
alertmsg( "MSG_300 ytload args="+args );
return( ytlist.split("\n"));
}
</script>
<script id="script_ytlist" >
var childNumber_yt = 3;
var ytlist = new Array();
function script_ytlist(src) {
ytlist=script_ytlist_load(src);
alert( "BUGS_3000 script_ytlist_load src="+src );
alert( "BUGS_3001 script_ytlist_load ytlist="+ytlist );
script_ytlist_show(ytlist);
alert( "BUGS_3002 script_ytlist_load ytlist="+ytlist );
}
function script_ytlist_ajax(src) {
if( filecheck(src)) {
var ytlist='';
alert( "BUGS_2941 src="+src+" ytlist="+ytlist );
ytlist=script_ytlist_load(src);
script_ytlist_show(ytlist);
alert( "BUGS_2942 src="+src+" ytlist="+ytlist );
}
}
</script>
<script id="script_avlist" >
var childNumber_av = 3;
function script_avlist() {
script_avlist_load();
script_avlist_show();
// var parent = document.getElementById('div_tllist');
// var newChild_tl = '<p>tl ' + childNumber_tl + '</p>';
// newChild_tl += "<hr color=white><h1>tllist one</h1><hr color=white>";
// parent.insertAdjacentHTML('beforeend', newChild_tl);
// childNumber++;
}
</script>
<script id="script_avlist_load" >
var avlist = new Array();
function script_avlist_load() {
// alert( "BUGS_1455 script__avlist_load" );
var z=0;
avlist[z++] = "/kb/jtfdc/vid/jtfdc_20190122_2200_stalkaround_jtf28in_drivewaytraffic.mp4";
avlist =
`/index.mp4
/index1_avril.mp4
/index1.mp4
/index1.mp4`.split("\n");
var z = avlist.length - 1;
// alert( "BUGS_1875 script_load_avlist("+z+")="+avlist[z] + " len="+avlist.length );
// document.write( "avlist_lost avlist_length="+avlist.length+" z="+z );
return(avlist);
}
function script_avlist_show() {
var z = 0; var avout=""; var len=avlist.length;
var avid = ""; var avurl = "";
var avid_default = "index.mp4";
var avid_img_default = "/imgs/links/av.png";
// var avid_tn_default = "/imgs/links/koeye_av.png";
var avid_tn_default = "/imgs/links/tn/tn_av.png";
var avid_img = avid_img_default;
var avid_tn = avid_tn_default;
// alert( "bugs_900 script_avlist_show IN" );
for( z=0; z< avlist.length; z++ ) {
avid = avlist[z];
avid_filename = avid.substring(avid.lastIndexOf('/')+1);
avid_ext = avid_filename.split(".")[1];
avid_pathname = avid.replace( avid_filename, "" );
// avid_code = avid_filename.replace(".mp4", "" );
avid_code = avid_filename.replace(avid_ext, "" ).replace(".","");
avid_img = avid_pathname + "/imgs/" + avid_code + ".png";
avid_tn = avid_pathname + "tn/tn_" + avid_code + ".gif";
if( avid_pathname == "" ) {
avid_img = avid_pathname + avid_code + ".png";
if(( element == "alloff" )) {
// alert( "BUGS_1740 hideshow element="+element );
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) { continue; }
alert( "BUGS_1750 hideshow j="+j+" element="+element );
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="none";
}
if( document.getElementById(div_divid_w)) {
document.getElementById(div_divid_w).style.display="none";
}
if( document.getElementById(div_divid_m)) {
document.getElementById(div_divid_m).style.display="none";
}
if( document.getElementById(div_divid_b)) {
document.getElementById(div_divid_b).style.display="none";
}
// var disp = document.getElementById(div_divid).style.display;
alert( "BUGS_1770_allof j="+j+" disp="+disp+" htmout="+htmout+ "element="+element );
}
} avid_tn = avid_pathname + avid_code + ".gif";
}
if( avid_pathname == "/" ) {
avid_img = avid_pathname + "" + avid_code + ".png";
avid_tn = avid_pathname + "" + avid_code + ".gif";
}
/////////////////////
// This Immediately Invoked Function Expression is invoked via call.
// call() takes 1 or more arguments: the first being the scope you want the
// invoked function be in; the other arguments become arguments of the function
// itself.
// In this case, the scope of our function is an empty object ({}).
// This object allows us to attach functions using the this.* syntax and call the
// functions with this["string"]() without ever polluting the global namespace.
// It is also forward compatible with ECMAScript 5's scrict-mode as it does not
// use arguments.callee.
// (function(document, window){
// var functionName = "myFunction";
// you'll need to define the function _before_ you call it.
// this.myFunction = function(){
// Do some stuff
// alert('me');
// };
// this[functionName]();
//////////////////
// alert( "BUGS_1360 avid="+avid+" ext="+avid_ext+" avid_pathname="+avid_pathname+" avid_filename="+avid_filename );
// alert( "BUGS_1361 avid="+avid+" avid_ext="+avid_ext+ " avid_code="+avid_code+" avid_tn="+avid_tn );
// alert( "BUGS_1350 avid="+avid+" avid_code="+avid_code+" avid_tn="+avid_tn );
// tlout += "<h1><b>tllist_"+z+"</b><h1>";
// tlout += "<a href='/index_vu.html?tlid="+tlid+"' target=_blank>";
// tlout += " <img name='img_" + tlid + "' src='"+tn_tlid+"' border=0 height=100 >\n";
// tlout += " </a>";
// tlout += "<a href='"+tlid+".html' class="thumbnail" target=_blank>";
// bugs tlout += "<a href='"+tlid+".html' class='thumbnail' target=_blank>";
// avout += "<a href='/index_av.html?avid="+avid+"' class='thumbnail' target=_blank>";
avout += "<a href='?avid="+avid+"' class='thumbnail' target=_blank>";
// if( gif ) {
// avout += " <img name='" + avid_img + "' height=25 src='"+avid_tn+"' border=0 height=100 >\n";
// avout += " <span><img name='img_" + avid + "' src='"+avid_img+"' border=0 height=100 ></span>\n";
// avout += " </a>";
// }
avout += " <img name='" + avid_code + "' height=25 src='"+avid_tn_default+"' border=0 height=100 >\n";
avout += " <span><img name='" + avid_code + "' src='"+avid_tn+"' border=0 height=100 ></span>\n";
avout += " </a>";
// alert( "bugs430 avid=" + avid + " tn_avid=" + tn_avid );
}
// document.write( "bugs435 avout=" + avout );
// alert( "BUGS432_show avlist("+len+")="+avlist[z] + " len="+avlist.length );
// document.getElementById('div_avlist').innerHTML += avout;
var parent = document.getElementById('div_avlist');
parent.insertAdjacentHTML('beforeend', avout);
}
</script>
<script id="script_ytlist_load" >
var ytlist = new Array();
function script_ytlist_load(src) {
// alert( "BUGS_5670 script_ytlist_load src="+src );
if( src != "" ) {
var url = src.replace("jax=","");
// alert( "BUGS_5602 url="+url+" kolists_jax="+kolists['jax'] );
jax(url);
var ytlist = kolists['jax'].split("\n");
// alert( "BUGS_5689 ytlist_len="+ytlist.length+" ytlist="+ytlist );
// alert( "BUGS_5681 kolists_jax="+kolists['jax'].length );
// alert( "BUGS_5680 ytlist="+ytlist);
return(ytlist);
}
if( src == "" ) {
var ytlist_text_ajax =
`https://youtube.com
yt_outerlight_20200130_kobe_bryant_crash_predicated_simpsons|yt_outerlight_20200130_kobe_bryant_crash_predicted_simpsons|https://www.youtube.com/watch?v=Bp2zJ5U31Ow
`;
// alert( "BUGS_1171 script_ytlist_load src="+src+" ytlist_text_ajax="+ytlist_text_ajax );
ytlist_text_ajax = load_ajax(src);
// alert( "BUGS_1172 script_ytlist_load src="+src+" ytlist_text_ajax="+ytlist_text_ajax );
return( ytlist_text_ajax.split("\n"));
var ytlist = "";
ytlist += ytlist_text;
return( ytlist.split("\n"));
}
</script>
<script id="script_ytlist_show">
function script_ytlist_show(ytlist) {
// var ytlist = new Array();
// ytlist=script_ytlist_load(src);
// alert( "BUGS_7660 script_ytlist_show len="+ytlist.length+" ytlist="+ytlist );
var ytout='';
src="/yt/txt/ytlist_202004.txt";
ytout += '<h1>'+src+'</h1>';
ytout += '<hr color=white>';
ytout += '<hr color=black>';
ytout += '<hr color=red>';
ytout += '<hr color=white>';
ytout += '<hr color=blue>';
var z = 0; var ytout=""; var len=ytlist.length;
var ytid = ""; var yturl = "";
var ytid_default = "https://youtube.com";
var ytid_img_default = "/imgs/links/yt.png";
var ytid_tn_default = "/imgs/links/tn/tn_yt.png";
var ytid_img = ytid_img_default;
var ytid_tn = ytid_tn_default;
var ytline = new Array(); var f=0;
var ytid_filename = "";
// alert( "bugs_1010 script_avlist_show ytlist.length="+ytlist.length );
var ytid_text="";
var yt_group = "";
var yt_title = ""
var yt_dttm = "";
var re = "";
var re_pound = '/^#/';
for( z=0; z< ytlist.length; z++ ) {
if( ytlist[z] == '' ) { continue; }
if( ytlist[z] == '\n' ) { continue; }
// if( ytlist[z].test(re_pound)) {
if( ytlist[z].match(/^#/)) {
// alert( "BUGS_1011 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
continue;
}
if( ytlist[z].match(/^\/\//)) {
// alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
continue;
}
if( ytlist[z].match(/^</)) {
// alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
ytout += "<br>";
// ytout += ytlist[z];
continue;
}
// alert( "BUGS_7700 z="+z+" ytlist="+ytlist[z] );
// if( ytlist[z].test('/^\/\//gi')) {
// alert( "BUGS_1011 matchslash z="+z+" ytlist="+ytlist[z] );
// continue;
// }
// if( ytlist[z].test('/^</gi')) {
// alert( "BUGS_1011 matchhtml z="+z+" ytlist="+ytlist[z] );
// ytout += ytlist[z];
// continue;
// }
ytline = ytlist[z].split("|");
// alert( "BUGS_1425 ytline="+ytline+" len="+ytline.length );
if( ytline.length == 1 ) { ytid = ytline[0]; }
if( ytline.length == 2 ) { ytid = ytline[1]; yt_title=ytline[0]; }
if( ytline.length == 3 ) { ytid = ytline[2]; yt_title=ytline[1]; yt_group=ytline[0]}
if( ytid.length < 5 ) { continue; }
// for( f=0; f< ytline.length; f++ ) {
// ytid_text = ytline[0];
// ytid = ytline[ytline.length-1];
// alert( "BUGS_1429 ytid="+ytid+" f="+f+" ytline="+ytline[f] );
// }
// ytid = ytline;
// ytid = ytline[1];
// ytid = ytlist[z];
// alert( "BUGS_1430 ytid="+ytid );
// ytid_filename = ytid.substring(ytid.lastIndexOf('/')+1);
// alert( "BUGS_1431 ytid_filename="+ytid_filename );
// ytid_ext = ytid_filename.split(".")[1];
// ytid_pathname = ytid.replace( ytid_filename, "" );
// alert( "BUGS_1440 ytid_pathname="+ytid_pathname );
// ytid_code = ytid_filename.replace(".mp4", "" );
// ytid_code = ytid_filename.replace(ytid_ext, "" ).replace(".","");
ytid_tn = "/imgs/links/tn/tn_yt.png";
ytid_tn = str2btn(ytline);
// alert("BUGS_7000 str2btn ytid_tn="+ytid_tn+" ytline="+ytline );
var ytid_id = ytid.split("=")[1];
ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/default.jpg";
// ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/maxresdefault.jpg";
// ytid_img = ytid_pathname + "/imgs/" + ytid_code + ".png";
// ytid_tn = ytid_pathname + "tn/tn_" + ytid_code + ".gif";
// if( ytid_pathname == "" ) {
// ytid_img = ytid_pathname + ytid_code + ".png";
// ytid_tn = ytid_pathname + ytid_code + ".gif";
// }
// if( ytid_pathname == "/" ) {
// ytid_img = ytid_pathname + "" + ytid_code + ".png";
// ytid_tn = ytid_pathname + "" + ytid_code + ".gif";
// }
//// ytout += "<a href='?ytid="+ytid+"' class='thumbnail' target=_blank>";
ytout += '<a href="'+ytid+'" target=_blank class="thumbnail">';
// alert( "bugs_1060 script_ytlist_show ytout="+ytout );
//// if( gif ) {
//// avout += " <img name='" + avid_img + "' height=25 src='"+avid_tn+"' border=0 height=100 >\n";
//// avout += " <span><img name='img_" + avid + "' src='"+avid_img+"' border=0 height=100 ></span>\n";
//// avout += " </a>";
//// }
//
// ytout += " <img name='" + ytid_tn + "' src='"+ytid_tn_default+"' border=0 height=25 >\n";
ytout += " <img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=25 >\n";
// ytout += " <span><img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=50 ></span>\n";
ytout += " <span><img name='" + ytid_img + "' src='"+ytid_img+"' border=0 height=300 alt='"+ytid_text+"' ></span>\n";
ytout += " </a>";
}
var ytout_spacer =
`<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>`;
ytout += ytout_spacer;
// alert( "BUGS_1035 script_ytlist_show ytout="+ytout );
var parent = document.getElementById('div_ytlist');
parent.insertAdjacentHTML('beforeend', ytout);
}
</script>
<script id="script_ytlist_show1">
function script_ytlist_show1(ytlist) {
// var ytlist = new Array();
// ytlist=script_ytlist_load(src);
// alert( "BUGS_1410 script_ytlist_show ytlist="+ytlist );
var ytout='';
var z = 0; var ytout=""; var len=ytlist.length;
var ytid = ""; var yturl = "";
var ytid_default = "https://youtube.com";
var ytid_img_default = "/imgs/links/yt.png";
var ytid_tn_default = "/imgs/links/tn/tn_yt.png";
var ytid_img = ytid_img_default;
var ytid_tn = ytid_tn_default;
var ytline = new Array(); var f=0;
var ytid_filename = "";
// alert( "bugs_1010 script_avlist_show ytlist.length="+ytlist.length );
var ytid_text="";
var yt_group = "";
var yt_title = ""
var yt_dttm = "";
var re = "";
var re_pound = '/^#/';
for( z=0; z< ytlist.length; z++ ) {
if( ytlist[z] == '' ) { continue; }
if( ytlist[z] == '\n' ) { continue; }
// if( ytlist[z].test(re_pound)) {
if( ytlist[z].match(/^#/)) {
// alert( "BUGS_1011 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
continue;
}
if( ytlist[z].match(/^\/\//)) {
// alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
continue;
}
if( ytlist[z].match(/^</)) {
// alert( "BUGS_1012 matchpound z="+z+" re_pound="+re_pound+" ytlist="+ytlist[z] );
ytout += "<br>";
// ytout += ytlist[z];
continue;
}
// if( ytlist[z].test('/^\/\//gi')) {
// alert( "BUGS_1011 matchslash z="+z+" ytlist="+ytlist[z] );
// continue;
// }
// if( ytlist[z].test('/^</gi')) {
// alert( "BUGS_1011 matchhtml z="+z+" ytlist="+ytlist[z] );
// ytout += ytlist[z];
// continue;
// }
ytline = ytlist[z].split("|");
// alert( "BUGS_1425 ytline="+ytline+" len="+ytline.length );
if( ytline.length == 1 ) { ytid = ytline[0]; }
if( ytline.length == 2 ) { ytid = ytline[1]; yt_title=ytline[0]; }
if( ytline.length == 3 ) { ytid = ytline[2]; yt_title=ytline[1]; yt_group=ytline[0]}
if( ytid.length < 5 ) { continue; }
// for( f=0; f< ytline.length; f++ ) {
// ytid_text = ytline[0];
// ytid = ytline[ytline.length-1];
// alert( "BUGS_1429 ytid="+ytid+" f="+f+" ytline="+ytline[f] );
// }
// ytid = ytline;
// ytid = ytline[1];
// ytid = ytlist[z];
// alert( "BUGS_1430 ytid="+ytid );
// ytid_filename = ytid.substring(ytid.lastIndexOf('/')+1);
// alert( "BUGS_1431 ytid_filename="+ytid_filename );
// ytid_ext = ytid_filename.split(".")[1];
// ytid_pathname = ytid.replace( ytid_filename, "" );
// alert( "BUGS_1440 ytid_pathname="+ytid_pathname );
// ytid_code = ytid_filename.replace(".mp4", "" );
// ytid_code = ytid_filename.replace(ytid_ext, "" ).replace(".","");
ytid_tn = "/imgs/links/tn/tn_yt.png";
ytid_tn = str2btn(ytline);
// alert("BUGS_7000 str2btn ytid_tn="+ytid_tn+" ytline="+ytline );
var ytid_id = ytid.split("=")[1];
ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/default.jpg";
// ytid_img = "http://i.ytimg.com/vi/" + ytid_id + "/maxresdefault.jpg";
// ytid_img = ytid_pathname + "/imgs/" + ytid_code + ".png";
// ytid_tn = ytid_pathname + "tn/tn_" + ytid_code + ".gif";
// if( ytid_pathname == "" ) {
// ytid_img = ytid_pathname + ytid_code + ".png";
// ytid_tn = ytid_pathname + ytid_code + ".gif";
// }
// if( ytid_pathname == "/" ) {
// ytid_img = ytid_pathname + "" + ytid_code + ".png";
// ytid_tn = ytid_pathname + "" + ytid_code + ".gif";
// }
//// ytout += "<a href='?ytid="+ytid+"' class='thumbnail' target=_blank>";
ytout += '<a href="'+ytid+'" target=_blank class="thumbnail">';
// alert( "bugs_1060 script_ytlist_show ytout="+ytout );
//// if( gif ) {
//// avout += " <img name='" + avid_img + "' height=25 src='"+avid_tn+"' border=0 height=100 >\n";
//// avout += " <span><img name='img_" + avid + "' src='"+avid_img+"' border=0 height=100 ></span>\n";
//// avout += " </a>";
//// }
//
// ytout += " <img name='" + ytid_tn + "' src='"+ytid_tn_default+"' border=0 height=25 >\n";
ytout += " <img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=25 >\n";
// ytout += " <span><img name='" + ytid_tn + "' src='"+ytid_tn+"' border=0 height=50 ></span>\n";
ytout += " <span><img name='" + ytid_img + "' src='"+ytid_img+"' border=0 height=300 alt='"+ytid_text+"' ></span>\n";
ytout += " </a>";
}
var ytout_spacer =
`<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>`;
ytout += ytout_spacer;
// alert( "BUGS_1035 script_ytlist_show ytout="+ytout );
var parent = document.getElementById('div_ytlist');
parent.insertAdjacentHTML('beforeend', ytout);
}
</script>
<script id="script_str2btn" >
function str2btn(str) {
// var btn_default = "/imgs/btn/koeye_handhither.gif";
var btn_default = "/imgs/links/tn/tn_yt.png";
var btn = btn_default;
var re = "";
var htmout = "";
var regex_btn = "";
// # /youtube/gi|yt/imgs/koeye_yt.png
// # /youtube/gi|yt/imgs/koeye_av.png
var regex_btns = `
// /youtube/gi|yt/imgs/koeye_yt.png
// /youtube/gi|yt/imgs/koeye_av.png
polly|/yt/imgs/yt_polly.png
mcduff|/yt/imgs/yt_mcduff.png
munder|/yt/imgs/yt_munder.png
^munder|/yt/imgs/yt_munder.png
webb|/yt/imgs/yt_webb.png
vlad|/yt/imgs/yt_vlad9t.png
borealis|/yt/imgs/yt_borealis.png
med/imgs/operation.png
dah|/yt/imgs/yt_dahboo.png
fulford|/yt/imgs/yt_fulford.png
newearth|/yt/imgs/yt_newearth.png
quinn|/yt/imgs/yt_quinn.png
kt|/yt/imgs/koeye_kt.png
`.split("\n");
var line = "";
var regex = "";
var fldlen = 0;
var flds = "";
// alert( "BUGS_104 regex_btns="+regex_btns );
for( j=0; j<regex_btns.length; j++ ) {
flds = regex_btns[j];
fldlen=flds.split("|").length;
// alert( "BUGS_105 j="+j+" flds="+flds);
if( flds == "" ){ continue; }
if( /\#/.test(flds)){ continue; }
if( /\/\//.test(flds)){ continue; }
regex_btn="/imgs/btn/koeye_handhi.gif";
regex = flds.split("|")[0];
re = flds.split("|")[0];
regex_btn = flds.split("|")[fldlen-1];
if( regex == "" ) { contihue; }
// alert( "BUGS_120 str2btn j="+j+" regex="+regex+" regex_btn="+regex_btn );
// regex_btn = regex_btns[j].split("|")[1];
// if( regex.test(str)) {
// var re = new RegExp( '/^yt_2020/' );
// var re = /\w+\s/gi;
// var re = /^yt_202003/gi;
// var re = /kt/gi;
// alert( "BUGS_111 str2btn ______ j="+j+" re="+re+" str="+str );
re = new RegExp(regex,"gi");
// alert( "BUGS_110 str2btn ______ j="+j+" re="+re+" str="+str );
if( re.test(str)) {
// alert( "BUGS_112 str2btn __MATCH j="+j+" re="+re+" str="+str );
return(regex_btn);
}
else {
// alert( "BUGS_113 str2btn nomatch j="+j+" re="+re+" str="+str );
}
}
return(btn_default);
}
</script>
<script id="script_hideshow1">
function script_hideshow1(id) {
alert( "BUGS_1500 script_hideshow1 id="+id );
}
</script>
<script id="script_hideshow">
function script_hideshow(element) {
// alert( "BUGS_1720 hideshow element="+element );
// alert( "BUGS_1722 hideshow kolists_divids="+kolists['divids'] );
var divids = kolists['divids'].split(" ");;
// alert( "BUGS_1731 hideshow divids="+divids );
var htmbugs = "";
htmbugs += '<div id="div_htmbugs">';
htmbugs += ' <h1>div_htmbugs</h1>';
htmbugs += ' <pre>';
var style_d = "_style_d";
var style_v = "_style_v";
// alert( "BUGS_1570 element="+element );
var htmout = ""; var j=0; var k=0;
var divid = "";
var div_divid = "";
var div_divid_w = "";
var div_divid_m = "";
var div_divid_b = "";
// var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
// var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
// var divids_hl = "hl hllinks hltext hlmouse";
//// var divids = "alloff toggle allon <br> hl av bb dd fb fs pn sl tl tm yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail".split(" ");
// var divids = kolists['divids'];
// var divids = "alloff toggle allon <br> jtfdc jtfinc jtfdcr <br> head body memes kov tail".split(" ");
// var divids = "games av_jtfdc av_jtfinc av_jtfdcr <br> av db dd fb fs pn sl tl tm yt zm <br> jtfdc jtfinc jtfdcr <br> head slots body memes kov tail".split(" ");
// var divids = "av_jtfdc av_jtfinc av_jtfdcr <br> av db dd fb fs pn sl tl tm yt zm <br> jtfdc jtfinc jtfdcr <br> head slots body memes kov tail".split(" ");
// alert( "BUGS_1730 hideshow element="+element );
// htmout += '<div id="div_buttons_hideshow">';
//// htmout += '<img src="/imgs/btn/koeyeb_alloff.png" onclick="script_hideshow(\'alloff\'); return false;">';
//// htmout += '<img src="/imgs/btn/koeyew_allon.png" onclick="script_hideshow(\'allon\'); return false;">';
//// htmout += '<br>';
// alert( "BUGS_2500 element="+element );
if(( element == "alloff" )) {
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) { continue; }
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="none";
}
if( document.getElementById(div_divid_w)) {
document.getElementById(div_divid_w).style.display="none";
}
if( document.getElementById(div_divid_m)) {
document.getElementById(div_divid_m).style.display="none";
}
if( document.getElementById(div_divid_b)) {
document.getElementById(div_divid_b).style.display="none";
}
}
}
if(( element == "toggle" )) {
// alert( "BUGS_1740 hideshow element="+element );
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) { continue; }
// alert( "BUGS_1770 hideshow toggle j="+j+" element="+element );
if( document.getElementById(div_divid)) {
if( document.getElementById(div_divid).style.display == "none" ) {
document.getElementById(div_divid).style.display="inline";
}
else {
document.getElementById(div_divid).style.display="none";
}
}
if( document.getElementById(div_divid_w)) {
if( document.getElementById(div_divid_w).style.display == "none" ) {
document.getElementById(div_divid_w).style.display="inline";
}
else {
document.getElementById(div_divid_w).style.display="none";
}
}
if( document.getElementById(div_divid_m)) {
if( document.getElementById(div_divid_m).style.display == "none" ) {
document.getElementById(div_divid_m).style.display="inline";
}
else {
document.getElementById(div_divid_m).style.display="none";
}
}
if( document.getElementById(div_divid_b)) {
if( document.getElementById(div_divid_b).style.display =="none" ) {
document.getElementById(div_divid_b).style.display="inline";
}
else {
document.getElementById(div_divid_b).style.display="none";
}
}
// var disp = document.getElementById(div_divid).style.display;
// alert( "BUGS_1810 toggle j="+j+" htmout="+htmout+ "element="+element );
}
}
if( element == "allon" ) {
// alert( "BUGS_2510 allon" );
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) { continue; }
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="inline";
}
if( document.getElementById(div_divid_w)) {
document.getElementById(div_divid_w).style.display="inline";
}
if( document.getElementById(div_divid_m)) {
document.getElementById(div_divid_m).style.display="inline";
}
if( document.getElementById(div_divid_b)) {
document.getElementById(div_divid_b).style.display="inline";
}
// alert( "BUGS_1840_allon j="+j+" htmout="+htmout+ "element="+element );
}
}
// alert( "BUGS_1800 hideshow element="+element );
htmout += '<hr color=white>';
htmout += '<img src="/imgs/btn/koeye_'+"alloff"+'.png" height=50 onclick="script_hideshow(\''+"alloff"+'\');return false;" alt="btn_'+"alloff"+'">';
htmout += '<img src="/imgs/btn/koeye_'+"toggle"+'.png" height=50 onclick="script_hideshow(\''+"toggle"+'\');return false;" alt="btn_'+"toggle"+'">';
htmout += '<img src="/imgs/btn/koeye_'+"allon"+'.png" height=50 onclick="script_hideshow(\''+"allon"+'\');return false;" alt="btn_'+"allon"+'">';
// htmout += '<img src="/imgs/btn/koeye_'+"games"+'.png" height=50 onclick="script_hideshow(\''+"div_games"+'\');return false;" alt="btn_'+"allon"+'">';
htmout += '<br>';
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) {
htmout += "<br>";
continue;
}
// document.getElementById("test").style.visibility = "hidden";
// document.getElementById("test").style.display = "none";
style_v="";
style_d="";
if( document.getElementById(div_divid)) {
style_v = document.getElementById(div_divid).style.visibility;
style_d = document.getElementById(div_divid).style.display;
}
htmbugs += "htmbugs j="+j+" divid="+divid;
htmbugs += " -== div_divid="+div_divid;
htmbugs += " element="+element;
htmbugs += " =- -=";
htmbugs += " style_d="+style_d+"";
htmbugs += " style_v="+style_v+"";
htmbugs += "====================\n";
// alert( "BUGS_1830 j="+j+" htmbugs="+htmbugs );
// if( div_divid.match(/element/) != '') {
// if( div_divid.match(element)) {
// if( div_divid == element ) {
// alert( "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
// htmbugs += "BUGS_141 _MATCH_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
// }
// else {
// alert( "BUGS_142 nomatch div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
// htmbugs += "BUGS_142 _match_ div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
// }
if( div_divid == element ) {
if( document.getElementById(div_divid)) {
style_d = document.getElementById(div_divid).style.display;
}
// alert( "BUGS_1850 MATCH div_divid="+div_divid+" element="+element+" style_d="+style_d );
if( document.getElementById(div_divid)) {
if( document.getElementById(div_divid).style.display == "none" ) {
htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
// alert( "BUGS_161 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
htmbugs += "BUGS_1850 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="inline";
}
if( document.getElementById(div_divid_w)) {
document.getElementById(div_divid_w).style.display="inline";
}
if( document.getElementById(div_divid_m)) {
document.getElementById(div_divid_m).style.display="inline";
}
if( document.getElementById(div_divid_b)) {
document.getElementById(div_divid_b).style.display="inline";
}
}
else {
htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
// alert( "BUGS_1870 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
htmbugs += "BUGS_162 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="none";
}
if( document.getElementById(div_divid_w)) {
document.getElementById(div_divid_w).style.display="none";
}
if( document.getElementById(div_divid_m)) {
document.getElementById(div_divid_m).style.display="none";
}
if( document.getElementById(div_divid_b)) {
document.getElementById(div_divid_b).style.display="none";
}
}}
}
// alert( "BUGS_1942 element="+element );
if( div_divid != element ) {
// alert( "BUGS_1885 rest div_divid="+div_divid+" element="+element );
if( document.getElementById(div_divid)) {
if( document.getElementById(div_divid).style.display == "none" ) {
htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'">';
// alert( "BUGS_1890 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
htmbugs += "BUGS_171 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
}
else {
htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
// alert( "BUGS_1900 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v );
htmbugs += "BUGS_172 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
}
}
}
}
// htmout += ' </div>';
htmbugs += " </pre>";
htmbugs += " </div>";
// alert( "BUGS_181 script_hideshow divid="+divid+" htmout="+htmout );
// alert( "BUGS_1911 htmout="+htmout );
// alert( "BUGS_1912 htmbugs="+htmbugs );
// document.getElementById("div_htmbugs").innerHTML = htmbugs;
if( document.getElementById("div_buttons_hideshow")) {
document.getElementById("div_buttons_hideshow").innerHTML = htmout;
}
if( document.getElementById("div_buttons_hideshow_w")) {
document.getElementById("div_buttons_hideshow_w").innerHTML = htmout;
}
if( document.getElementById("div_buttons_hideshow_m")) {
document.getElementById("div_buttons_hideshow_m").innerHTML = htmout;
}
if( document.getElementById("div_buttons_hideshow_b")) {
document.getElementById("div_buttons_hideshow_b").innerHTML = htmout;
}
if( document.getElementById("div_htmbugs")) {
document.getElementById("div_htmbugs").innerHTML = htmbugs;
}
}
</script>
<script id="script_fb_law">
function fb_law(args) {
// alert( "BUGS_4300 fb_law args="+args );
var imgb ="/imgs/btn/kob.png";
var imgw ="/imgs/btn/kow.png";
var img_fb_law ="/imgs/btn/btn_fb_law.png";
var img1 ="/fb/imgs/tn/tn_fb_cartoon_shelf1.png";
var img2 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png";
var img3 ="/fb/imgs/tn/tn_fb_cartoon_shelf2.png";
var img4 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png";
if( document.getElementById('div_fb_law')) {
if( document.getElementById('div_fb_law').style.display == "inline" ) {
// alert( "BUGS_4271 INLINE" );
// document.getElementById('div_fb_law').innerHTML='<div id="div_fb_law"><h1>div_fb_law</h1></div>';
document.getElementById('div_fb_law').style.display = "none";
if( document.getElementById('img_fb_law')) {
document.getElementById('img_fb_law').src = imgb;
document.getElementById('img_fb_law').height = 100;
}
if( document.getElementById('img_fb_law2')) {
document.getElementById('img_fb_law2').src = img_fb_law;
document.getElementById('img_fb_law2').height = 250;
}
return(args);
}
// else {
// alert( "BUGS_4272 HIDDEN" );
// document.getElementById('div_fb_law').style.display = "inline";
// if( document.getElementById('img_fb_law')) {
// document.getElementById('img_fb_law').src = imgw;
// document.getElementById('img_fb_law').height = 100;
// }
// if( document.getElementById('img_fb_law2')) {
// document.getElementById('img_fb_law2').src = imgb;
// document.getElementById('img_fb_law2').height = 100;
// }
// }
}
kolists['fb_law'] =
`/fb/law/topos/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf30/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf31/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf32/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf38/pages/1.jpg
# /fb/jtfdcr/animalcontrol/jtf39/pages/1.jpg
# /fb/jtfdcr/animalcontrol/pages/1.jpg
# /fb/jtfdcr/i/pages/1.jpg
# /fb/jtfdcr/jtfdcr_202004/pages/1.jpg
<br>
/fb/law/imgs/jkwii/1.jpg
/fb/jtfdc/pages/1.jpg
/fb/jtfinc/pages/1.jpg
/fb/law/archcity_defenders/pages/1.jpg
/fb/jtfdcr/animalcontrol/pages/1.jpg
/fb/law/imgs/who2jail/1.jpg
/fb/jtfdcr/pages/1.jpg
/fb/jtfdcr/preserve/pages/1.jpg
/fb/jtfdcr/protect/pages/1.jpg
/fb/jtfdcr/thieftvandalism/pages/1.jpg
/fb/jtfdcr/trials/pages/1.jpg
/fb/law/skwii/pages/1.jpg
# /fb/jtfdcr/preserve/barn_jtf30-29/pages/1.jpg
# /fb/jtfdcr/preserve/driveway_jtf30-29/pages/1.jpg
# /fb/jtfdcr/preserve/easement_jtf28-29/pages/1.jpg
# /fb/jtfdcr/preserve/easement_jtf30-29/pages/1.jpg
# /fb/jtfdcr/preserve/maga/pages/1.jpg
# /fb/jtfdcr/protect/jtf28/pages/1.jpg
# /fb/jtfdcr/protect/jtf30/pages/1.jpg
# /fb/jtfdcr/protect/jtf30-2/pages/1.jpg
# /fb/jtfdcr/protect/jtf31/pages/1.jpg
# /fb/jtfdcr/protect/jtf32/pages/1.jpg
# /fb/jtfdcr/protect/jtf38/pages/1.jpg
# /fb/jtfdcr/protect/jtf39/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf28/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf30/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf30-2/pages/1.jpg
# /fb/jtfdcr/thieftvandalism/jtf31/pages/1.jpg
# /fb/jtfdcr/trials/trial1_judge_/pages/1.jpg
# /fb/jtfdcr/trials/trial2_judge_schrader/pages/1.jpg
# /fb/jtfdcr/trials/trial3_judge_brown/pages/1.jpg
# /fb/jtfdcr/trials/trial4_judge_protect_jtf39_byrd/pages/1.jpg
# /fb/jtfdcr/trials/trial5_judge_heggie_jtfinc/pages/1.jpg
# /fb/jtfdcr/trials/trial6_judge_byrdbell_v_jkwii/pages/1.jpg
# /fb/law/imgs/1.jpg
<br><br><br><br>
# /fb/law/pages/1.jpg
/fb/law/jkwiiv_byrdbell/pages/1.jpg
/fb/law/law_cohen_alan/pages/1.jpg
/fb/law/law_cohen_nathan/pages/1.jpg
/fb/law/law_collections/pages/1.jpg
/fb/law/law_dolly/pages/1.jpg
/fb/law/law_donovan_joann/pages/1.jpg
/fb/law/law_elster_henry/pages/1.jpg
/fb/law/law_keuhlig_alexander/pages/1.jpg
/fb/law/law_korein_tillery/pages/1.jpg
/fb/law/law_law501/pages/1.jpg
/fb/law/law_smith_brown/pages/1.jpg
/fb/law/law_thompson_coburn/pages/1.jpg
/fb/law/law_walters_alan/pages/1.jpg
/fb/law/tc/db/pages/1.jpg
/fb/law/tc/kk/pages/1.jpg
/fb/law/tc/pages/1.jpg`;
// alert( "BUGS_4430 fb_law kolists_fb_law="+kolists['fb_law'] );
// alert( "BUGS_4241 fb_law kolists_fb_law="+kolists['fb_law'] );
kolist=kolists['fb_law'].split("\n");
kolist_len=kolist.length;
htmout = "";
htmout += '<div id="div_fb_law">';
htmout += ' <h1>div_fb_law</h1>';
for( j=0; j<kolist_len; j++ ) {
if( kolist[j].match("^#")) { continue; }
if( kolist[j].match("^<")) {
htmout += kolist[j];
continue;
}
img=kolist[j];
url=img.replace("/pages/1.jpg","");
htmout += '<a href="'+url+'" class="popover" ';
htmout += ' >';
htmout += ' <img src="'+img+'" height=50 ';
htmout += ' border=0 draggable="true">';
htmout += ' <span><img src="'+img+'" height=200 ';
htmout += ' border=0 draggable="true"></span>';
htmout += ' </a>';
}
htmout += '</div>';
if( document.getElementById('div_fb_law')) {
document.getElementById('div_fb_law').innerHTML=htmout;
}
// alert( "BUGS_4279 SHOW" );
document.getElementById('div_fb_law').style.display = "inline";
if( document.getElementById('img_fb_law')) {
document.getElementById('img_fb_law').src = imgw;
document.getElementById('img_fb_law').height = 100;
}
if( document.getElementById('img_fb_law2')) {
document.getElementById('img_fb_law2').src = imgb;
document.getElementById('img_fb_law2').height = 100;
}
return( kolists['fb_law'] );
}
</script>
<script id="script_jtfdc_stalkarounds">
function jtfdc_stalkarounds(args) {
// alert( "BUGS_4300 jtfdc_stalkarounds args="+args );
var imgb ="/imgs/btn/kob.png";
var imgw ="/imgs/btn/kow.png";
var img_jtfdc_stalkarounds ="/imgs/btn/btn_jtfdc_stalkarounds.png";
var img1 ="/fb/imgs/tn/tn_fb_cartoon_shelf1.png";
var img2 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png";
var img3 ="/fb/imgs/tn/tn_fb_cartoon_shelf2.png";
var img4 ="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png";
if( document.getElementById('div_jtfdc_stalkarounds')) {
if( document.getElementById('div_jtfdc_stalkarounds').style.display == "inline" ) {
// alert( "BUGS_4271 INLINE" );
// document.getElementById('div_jtfdc_stalkarounds').innerHTML='<div id="div_jtfdc_stalkarounds"><h1>div_jtfdc_stalkarounds</h1></div>';
document.getElementById('div_jtfdc_stalkarounds').style.display = "none";
if( document.getElementById('img_jtfdc_stalkarounds')) {
document.getElementById('img_jtfdc_stalkarounds').src = imgb;
document.getElementById('img_jtfdc_stalkarounds').height = 100;
}
if( document.getElementById('img_jtfdc_stalkarounds2')) {
document.getElementById('img_jtfdc_stalkarounds2').src = img_jtfdc_stalkarounds;
document.getElementById('img_jtfdc_stalkarounds2').height = 250;
}
return(args);
}
}
kolists['jtfdc_stalkarounds'] =
`/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200731_0755_stalkaroundacross_funny_whtpickup_n_bluebin.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200731_0829_stalkaroundup_confused_shywhtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds//jtfdc_20200731_1150_stalkaround_whtpickup_n_trailer.gif/jtfdc_20200731_0829_stalkaroundup_confused_shywhtwagon.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200608_0947_stalkaroundup_drtyltlcar_cyclerake_jtf30in_speedy_almostcrashbyb.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607amazzon_stalkaround_1415.gif
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200607_1850_stalkaroundacross_speedy_snydrksuvguy.gif`;
jaxurl="/txt/jtfdc_stalkarounds.txt";
kolist=kolists['jtfdc_stalkarounds'].split("\n");
kolist_len=kolist.length;
htmout = "";
htmout_mp4="<hr><hr><hr><hr>";
htmout += '<div id="div_jtfdc_stalkarounds">';
htmout += ' <h1>div_jtfdc_stalkarounds</h1>';
height_mp4=150;
height_gif=25;
height=height_gif;
// alert( "BUGS_5130 height_mp4="+height_mp4 );
k=0;
jlim=10;
// kolist_len=jlim;
for( j=0; j<kolist_len; j++ ) {
img=kolist[j];
href=kolist[j].split("|")[0];
if( kolist[j].match("^#")) { continue; }
if( kolist[j].match("png$")) { continue; }
if( kolist[j].match("jpg$")) { continue; }
if( kolist[j].match("^<")) {
htmout += kolist[j];
continue;
}
id=img.replace(".jpg","");
id=img.replace(".gif","");
id=img.replace(".mp4","");
id=img.replace(".png","");
gif=id.replace("$",".gif");
mp4=gif.replace(".gif",".mp4");
height=height_gif;
// if( kolist[j].match("mp4$")) { continue; }
if( href.match("mp4$")) {
height=height_mp4;
gif=href.replace(".mp4",".gif");
// alert( "BUGS_5150 MP4 href="+href );
}
// if( filecheck(mp4)) {
// k=k+1;
// href=mp4;
// height=height_mp4;
// alert( "BUGS_5131 ___FOUND k="+k+" mp4="+mp4+" href="+href );
// htmout_mp4 += k+". "+mp4+"<br>";
// }
url=mp4;
img=gif;
label=id.replace("/kb/jtfdcr/vid/","").replace(".gif","").replace(".mp4","" );
// htmout += '<a href="'+mp4+'" class="popover" ';
htmout += '<a href="'+href+'" class="popover" target=_blank ';
htmout += ' >';
// htmout += ' <img src="'+gif+'" height=100';
htmout += ' <img src="'+gif+'" height='+height+' ';
htmout += ' alt="'+id+'" ';
htmout += ' border=0 draggable="true">';
htmout += ' <span><img src="'+gif+'" height=300 ';
htmout += ' alt="'+id+'" ';
htmout += ' border=0 draggable="true"></span>';
htmout += ' '+j+'. '+label;
htmout += ' </a>';
htmout += ' <br><br><br>';
}
htmout += htmout_mp4;
htmout += '<h1>div_jtfdc_stalkarounds_tail</h1>';
htmout += '</div>';
if( document.getElementById('div_jtfdc_stalkarounds')) {
document.getElementById('div_jtfdc_stalkarounds').innerHTML=htmout;
}
// alert( "BUGS_4279 SHOW" );
document.getElementById('div_jtfdc_stalkarounds').style.display = "inline";
if( document.getElementById('img_jtfdc_stalkarounds')) {
document.getElementById('img_jtfdc_stalkarounds').src = imgw;
document.getElementById('img_jtfdc_stalkarounds').height = 100;
}
if( document.getElementById('img_jtfdc_stalkarounds2')) {
document.getElementById('img_jtfdc_stalkarounds2').src = imgb;
document.getElementById('img_jtfdc_stalkarounds2').height = 100;
}
return( kolists['jtfdc_stalkarounds'] );
}
</script>
<script id="script_mothersday">
function mothersday(args) {
// `/imgs/gif/mothersday/giphy_mothersday090.gif
kolists['mothersday'] =
`/imgs/gif/mothersday/giphy_mothersday10.gif
/imgs/gif/mothersday/giphy_mothersday11.gif
/imgs/gif/mothersday/giphy_mothersday60.gif
/imgs/gif/mothersday/giphy_mothersday80.gif`;
gifs = kolists['mothersday'].split("\n");
gifs_len=gifs.length;
gifid=random_int(gifs_len-1,0);
gif = gifs[gifid];
htmout = "";
htmout += '<div id="div_mothersday"';
htmout += '<h1>happy mothersday</h1>';
htmout += ' <img src="'+gif+'" onclick="window.open(\'/fb/mothersday\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_mothersday')) {
document.getElementById('div_mothersday').innerHTML=htmout;
}
}
</script>
<script id="script_divlist">
function divlist(args) {
args_len=args.split(",").length;
div_id=""; list_id=""; match="";
if( args_len > 1 ) { div_id=args.split(",")[0];}
if( args_len > 2 ) { list_id=args.split(",")[1];}
if( args_len > 3 ) { match=args.split(",")[2];}
alert( "bugs_6700 divlist args="+args+" args_len="+args_len );
alert( "bugs_6701 divlist div_id="+div_id+" list_id="+list_id+" match="+match );
kolists['edu'] =
`/fb/edu/imgs/edu.png
/fb/edu/imgs/edu_miami.png
/fb/edu/imgs/edu_csu.png
/fb/edu/imgs/edu_bw.png
/fb/edu/imgs/edu_lindenwood.png
/fb/edu/imgs/edu_baker.png`;
kolists['hoa'] =
`/fb/hoa/imgs/hoa.png
/fb/hoa/imgs/hoa_stonehendge.png
/fb/hoa/imgs/hoa_doevalley.png
/fb/hoa/imgs/hoa_jtfdc.png
/fb/hoa/imgs/hoa_jtfinc.png
/fb/hoa/imgs/hoa_barrington.png
`;
kolists['law'] =
`/fb/law/imgs/law.png
/fb/law/imgs/law_tc_kk.png
/fb/law/imgs/law_tc_db.png
/fb/law/imgs/law_sb.png
/fb/law/imgs/law_elster.png
/fb/law/imgs/law_law501.png
/fb/law/imgs/law_kt.png
`;
kolists['pano'] =
`pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/sphere.jpg
/pn/imgs/veneer.jpg
/pn/imgs/yard.jpg
`;
alert( "BUGS_6800 kolists_edu="+kolists['pano'] );
kolists['us'] =
`http://ko2.us|/imgs/us/lawdonovan.png|law_donovan|/imgs/btn/koeye.png|law|phn|email|note
http://lawdonovan.com|/imgs/us/lawdonovan.png|law_donovan|/imgs/btn/koeye.png|law|phn|email|note
http://nathanscohen.com/|/imgs/us/law_cohen_nathan_s.png|law__cohen_nathan_s|/imgs/btn/koeye.png|law|phn|email|note
https://www.linkedin.com/in/alan-cohen-2314473b/|/imgs/us/law_cohen_alan_w.png|law__cohen_alan_w|/imgs/btn/koeye.png|law|phn|email|note
https://twitter.com/AlanWCohenEsq|/imgs/us/cohen_alan_w_twitter.png|cohen_alan_w_twitter|/imgs/btn/koeye.png|law|phn|email|note
http://www.primerus.com/attorneys/alexander-h-kuehling-esq-rosenblum-goldenhersh-st-louis-missouri-mo.htm|/imgs/us/law_kuehling_alexander.png|law_law_kuehling_alexander|/imgs/btn/koeye.png|law|phn|email|note
http://elsterlaw.com/henry-elster-attorney-missouri-best/|/imgs/us/law_elster_henry.png|law_elster_henry|/imgs/btn/koeye.png|law|phn|email|note
https://pview.findlaw.com/view/2830721_1|/imgs/us/law_walters_alan.png|law_walters_alan|/imgs/btn/koeye.png|law|phn|email|note
https://www.thompsoncoburn.com/|/imgs/us/law_thompson_coburn.png|law__thompson_coburn|/imgs/btn/koeye.png|law|phn|email|note
http://koreintillery.com/|/imgs/us/law_korein_tillery.png|law_korein_tillery|/imgs/btn/koeye.png|law|phn|email|note
http://www.smithbrownllc.com/|/imgs/us/law_smith_brown.png|law_smith_brown|/imgs/btn/koeye.png|law|phn|email|note
https://www.lawyers.com/st-louis/missouri/Larry-B-Luber-1043827-a/|/imgs/us/law_luber_larry_b.png|muenkstax|/imgs/btn/koeye.png|law|phn|email|note
http://www.yourmissourijudges.org/judges/|/imgs/us/mo_judges.png|mo_judges|/imgs/btn/koeye.png|law|phn|email|note
http://www.yourmissourijudges.org/judges/schroeder-2012/|/imgs/us/judge_schroeder.png|judge_schroeder|/imgs/btn/koeye.png|law|phn|email|note
https://www.stlouisco.com/LawandPublicSafety/MunicipalCourts/Judges/JudgeDanielBrow/|/imgs/us/judge_brown_daniel.png|judge_brown_daniel|/imgs/btn/koeye.png|law|phn|email|note
https://jmhalumni.com|/imgs/us/jmhalumni.png|ed_jmhalumni|/imgs/btn/koeye.png|edu|phn|email|note
https://johnmarshallhighschool.com|/imgs/us/johnmarshallhighschool.png|ed_johnmarshallhighschool|/imgs/btn/koeye.png|edu|phn|email|note
https://www.greatschools.org/kentucky/brandenburg/1993-Brandenburg-High-School/|/imgs/us/brandenburg_highschool.png|ed_brandenburg-highschool|/imgs/btn/koeye.png|edu|phn|email|note
https://www.hazelwoodschools.org/Page/3143|/imgs/us/hazelwood_schools.png|ed_hazelwood_schools|/imgs/btn/koeye.png|edu|phn|email|note
https://bw.edu|/imgs/us/bw.png|ed_bw|/imgs/btn/koeye.png|edu|phn|email|note
http://oldtowndonuts.com|/imgs/us/oldtowndonuts.png|food_oldtowndonuts|/imgs/btn/koeye.png|food|phn|email|note
http://farkaspastries.com|/imgs/us/farkaspastries.png|food_farkaspastries|/imgs/btn/koeye.png|food|phn|email|note
https://www.facebook.com/HansaImportHouse|/imgs/us/hansaimporthouse.png|food_hansaimporthouse|/imgs/btn/koeye.png|food|phn|email|note
http://havanagrillco.com|/imgs/us/havanagrillco.png|food_havanagrillco|/imgs/btn/koeye.png|food|phn|email|note
http://spiros-restaurant.com|/imgs/us/spiros_restaurant.png|food_spiros_restaurant|/imgs/btn/koeye.png|food|phn|email|note
http://edelweissrest.com|/imgs/us/edelweissrest.png|food_edelweissrest|/imgs/btn/koeye.png|food|phn|email|note
https://www.facebook.com/woohoogreekfood2/|/imgs/us/woohoogreekfood2.png|food_woohoogreekfood2|/imgs/btn/koeye.png|food|phn|email|note
https://bdo.com/about/us-locations/bdo-st-louis|/imgs/us/bdo-stl.png|acct_bdo-stl|/imgs/btn/koeye.png|acct|phn|email|note
https://bdo.com/about/us-locations/bdo-cleveland-office|/imgs/us/bdo-cle.png|acct_bdo-cle|/imgs/btn/koeye.png|acct|phn|email|note
http://www.gatewayloan.com/|/imgs/us/gateway_mortgage.png|gateway_mortgage|/imgs/btn/koeye.png|acct|phn|email|note
https://chesonsulting.com|/imgs/us/checonsulting.png|biz_checonsulting|/imgs/btn/koeye.png|biz|phn|email|note
http://saic.com|/imgs/us/saic.png|saic|/imgs/btn/koeye.png|biz|phn|email|note
http://leidos.com|/imgs/us/leidos.png|leidos|/imgs/btn/koeye.png|biz|phn|email|note
http://dvunited.com|/imgs/us/dvunited.png|dvunited|/imgs/btn/koeye.png|cont|phn|email|note
http://tdginc.com|/imgs/us/tdginc.png|dalton_gang|/imgs/btn/koeye.png|cont|phn|email|note
http://allyntech.com|/imgs/us/allyntech.png|allyntech|/imgs/btn/koeye.png|cont|phn|email|note
https://www.linkedin.com/in/edgar-lewin-35a4b02b|/imgs/us/edgar-lewin.png|cont_edgar-lewin|/imgs/btn/koeye.png|cont|phn|email|note
http://ibm.com|/imgs/us/ibm.png|cont_ibm|/imgs/btn/koeye.png|cont|phn|email|note
http://boeing.com|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
http://ko2.us/index_focus.com|/imgs/us/focus_solutions.png|focus_solutions|/imgs/btn/koeye.png|biz|phn|email|note
http://www.finduslocal.com/hardware-stores/kentucky/brandenburg/allens-s-t-hardware-inc|/imgs/us/biz_allens_hardware.png|biz_allens_hardware|/imgs/btn/koeye.png|biz|phn|email|note
http://growwarehouse.com|/imgs/us/grow_warehouse.png|grow_warehouse|/imgs/btn/koeye.png|biz|phn|email|note
https://www.facebook.com/avondanceandmartialarts|/imgs/us/avondanceandmartialarts.png|avondanceandmartialarts|/imgs/btn/koeye.png|phy|phn|email|note
https://www.facebook.com/avondanceandmartialarts|/imgs/us/avondanceandmartialarts.png|avondanceandmartialarts|/imgs/btn/koeye.png|phy|phn|email|note
http://www.savellidanceandmartialarts.com/?load=html|/imgs/us/savelli_dance_martialarts.png|savelli_dance_martialarts|/imgs/btn/koeye.png|phy|phn|email|note
http://myfusiondance.com/?load=html|/imgs/us/fusion_dance.png|fusion_dance|/imgs/btn/koeye.png|phy|phn|email|note
http://www.superseriesbaseball.com/|/imgs/us/super_series_baseball.png|super_series_baseball|/imgs/btn/koeye.png|phy|phn|email|note
https://ftknox.afceachapters.org/|/imgs/us/afcea_knox.png|afcea_knox|/imgs/btn/koeye.png|org|phn|email|note
https://scott.afceachapters.org/|/imgs/us/afcea_scott.png|afcea_scott|/imgs/btn/koeye.png|org|phn|email|note
https://www.ble-t.org/|/imgs/us/ble.png|ble|/imgs/btn/koeye.png|org|phn|email|note
http://www.doevalley.org/|/imgs/us/doe_valley.png|doe_valley|/imgs/btn/koeye.png|org|phn|email|note
https://www.bw.edu/libraries|/imgs/us/bw_edu_lib.png|bw_edu_lib|/imgs/btn/koeye.png|lib|phn|email|note
http://librarytechnology.org/library/4941|/imgs/us/lib4941.png|lib4941|/imgs/btn/koeye.png|lib|phn|email|note
http://spokane.wsu.edu/library/|/imgs/us/wsu_edu_lib.png|spokane_wsu_lib|/imgs/btn/koeye.png|lib|phn|email|note
http://cpl.org|/imgs/us/lib_westpark.png|lib_westpark|/imgs/btn/koeye.png|lib|phn|email|note
http://librarytechnology.org|/imgs/us/lib8623.png|lib8623|/imgs/btn/koeye.png|lib|phn|email|note
http://www.slcl.org/content/florissant-valley-branc.com|/imgs/us/slcl_fvb.png|slcl_fvb|/imgs/btn/koeye.png|lib|phn|email|note
http://www.slcl.org/|/imgs/us/slcl.png|slcl_fvb|/imgs/btn/koeye.png|lib|phn|email|note
https://www.spectrum.com|/imgs/us/spectrum.png|spectrum|/imgs/btn/koeye.png|util|phn|email|note
https://www.stlouis-mo.gov/government/departments/health/animal-care-control/index.cfm|/imgs/us/animal_control.png|animal_control|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.ameren.com|/imgs/us/ameren.png|ameren|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.stlwater.com|/imgs/us/stlwater.png|stlwater|/imgs/btn/koeye.png|stlc|phn|email|note
http://stlcountycourts.com/DEP_Family_Court.php|/imgs/us/stlc_family_court.png|stlc_family_court|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.stlouis-mo.gov/government/departments/public-safety/fire/|/imgs/us/stlc_fire.png|stlc_fire|/imgs/btn/koeye.png|stlc|phn|email|note
https://www.healthgrades.com/physician/dr-alok-katyal-ynwtq|/imgs/us/dr_katyal_alok.png|dr_katyal_alok|/imgs/btn/koeye.png|med|phn|email|note
https://www.doximity.com/pub/alok-katyal-md|/imgs/us/docimity_katyal_alok.png|us/docimity_katyal_alok|/imgs/btn/koeye.png|med|phn|email|note
https://www.healthgrades.com/physician/dr-ayotunde-bamimore-gc8hf|/imgs/us/dr_bamimore_ayotunde.png|dr_bamimore_ayotunde|/imgs/btn/koeye.png|med|phn|email|note
https://doctor.webmd.com/doctor/ayotunde-bamimore-034e1bd5-d20b-42a5-9dfb-d9c09c4183b8-overview|/imgs/us/webmd_bamimore_ayotunde.png|webmd_bamimore_ayotunde|/imgs/btn/koeye.png|medhttps://www.healthgrades.com/physician/dr-jessica-smith-xgnvw|/imgs/us/dr_smith_jessica.png|dr_smith_jessica|/imgs/btn/koeye.png|med|phn|email|note
https://www.healthgrades.com/physician/dr-patrick-morris-xpsh2|/imgs/us/dds_morris_patrick.png|dds_morris_patrick|/imgs/btn/koeye.png|med|phn|email|note
https://www.facebook.com/pages/Patrick-R-Morris-DDS-MD/906948729378402U|/imgs/us/fb_dds_morris_patrick.png|fb_dds_morris_patrick|/imgs/btn/koeye.png|med|phn|email|note
https://blunt.senate.gov/public/|/imgs/us/uss_mo_blunt.png|uss_mo_boeing|/imgs/btn/koeye.png|gov|phn|email|note
https://www.mccaskill.senate.gov|/imgs/us/uss_mo_mccaskill.png|uss_mo_mccaskill|/imgs/btn/koeye.png|gov|phn|email|note
https://www.mcconnell.senate.gov/public|/imgs/us/uss_ky_mcconnell.png|uss_ky_mcconnell|/imgs/btn/koeye.png|gov|phn|email|note
http://www.paul.senage.gov|/imgs/us/uss_ky_paul.png|uss_ky_boeing|/imgs/btn/koeye.png|gov|phn|email|note
http://en.wikipedia.org/wiki/Mitch_McConnell|/imgs/us/wiki_mcconnell_mitch.png|wiki_mcconnell_mitch|/imgs/btn/koeye.png|gov|phn|email|note
https://www.senate.gov/?State=OH|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
https://www.senate.gov/general/contact_information/senators_cfm.cfm?State=KY|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
https://www.house.gov/general/contact_information/senators_cfm.cfm?State=MO|/imgs/us/boeing.png|boeing|/imgs/btn/koeye.png|cont|phn|email|note
index_konabus.html|/imgs/us/konabus.png|konabus|/imgs/btn/koeye.png|konabus|phn|email|note
http://growwarehouse.com|/imgs/us/growwarehouse.png|growwarehouse|/imgs/btn/koeye.png|konabus|phn|email|note
https://www.leafly.com/dispensary-info/the-epic-remedy---colorado-springs|/imgs/us/epic_remedy.png|epic_remedy|/imgs/btn/koeye.png|konabus|phn|email|note
https://www.weedsta.com/dispensary/colorado/colorado-springs/the-epic-remedy|/imgs/us/weedsta.png|weedsta|/imgs/btn/koeye.png|konabus|phn|email|note
https://www.coloradopotguide.com/where-to-buy-marijuana/colorado/colorado-springs/the-epic-remedy-south/||phn|email|note
index_sl_medcan_bible.html|/imgs/us/medcan_bible.png|medcan_bible|/imgs/btn/koeye.png|konabus|phn|email|note
http://franwell.com|/imgs/us/franwell.png|franwell|/imgs/btn/koeye.png|konabus|phn|email|note
http://www.metric.com|/imgs/us/metric.png|metric|/imgs/btn/koeye.png|konabus|phn|email|note
https://co.metric.com/log-in?ReturnUrl=%2f|/imgs/us/metric_co.png|metric_co|/imgs/btn/koeye.png|konabus|phn|email|note
https://oh.metric.com/log-in?ReturnUrl=%2f|/imgs/us/metric_oh.png|metric_oh|/imgs/btn/koeye.png|konabus|phn|email|note
https://or.metric.com/log-in?ReturnUrl=%2f|/imgs/us/metric_or.png|metric_or|/imgs/btn/koeye.png|konabus|phn|email|note
/us/konabus/ko_metric/ko_metric.php|/imgs/us/ko_metric.png|ko_metric|/imgs/btn/koeye.png|konabus|phn|email|note
http://www.chapelofthecross.org/|/imgs/us/chapel_of_the_cross.png|chapel_of_the_cross|/imgs/btn/koeye.png|rel|phn|email|note
https://www.lds.org/temples/details/st.-louis-missouri-temple|/imgs/us/lds_stl.png|lds_stl|/imgs/btn/koeye.png|rel|phn|email|note
https://www.bethanyenglish.org/|/imgs/us/bethany_english_lutheran.png|bethany_english_lutheran|/imgs/btn/koeye.png|rel|phn|email|note
https://www.meadecountymessenger.com/|/imgs/us/meade_county_messenger.png|meade_county_messenger|/imgs/btn/koeye.png|media|phn|email|note
/index_jtfdcr.html|/imgs/us/jtfdcr.png|jtfdcr|/imgs/btn/koeye.png|media|phn|email|note
https://mars.jpl.nasa.gov/msl/multimedia/raw/?s=#/?slide=2088|/imgs/us/mars_jpl_nasa.png|mars_jpl_nasa|/imgs/btn/koeye.png|sci|phn|email|note
https://mars.nasa.gov/mer/gallery/all/opportunity.html|/imgs/us/mars_nasa_gov.png|mars_nasa_gov|/imgs/btn/koeye.png|sci|phn|email|note
/index_jtfdcr.html|/imgs/us/jtfdcr.png|jtfdcr|/imgs/btn/koeye.png|media|phn|email|note
`;
htmout = "";
items = kolists[list_id].split("\n");
items_len=items.length;
for( j=0; j<items_len; j++ ) {
item = items[j];
// flds = item.split("|");
// flds_len=flds.length;
// my_href = item[j].split('|")[0];
// my_popimg = "/imgs/btn/kob.png";
// my_alt = "alt";
// my_id = "my_id";
// my_phn = "my_phn";
// my_email = "my_email";
// my_note = "my_note";
// if( flds_len > 1 ) { my_popimg = item[j].split('|")[1]; }
// if( flds_len > 2 ) { my_alt = item[j].split('|")[2]; }
// if( flds_len > 4 ) { my_id = item[j].split('|")[3]; }
// if( flds_len > 5 ) { my_phn = item[j].split('|")[4]; }
// if( flds_len > 6 ) { my_email = item[j].split('|")[5]; }
// if( flds_len > 7 ) { my_note = item[j].split('|")[6]; }
// htmout += "my_id="+my_id+"|";
// htmout += "my_phn="+my_phn+"|";
// htmout += "my_email="+my_email+"|";
// htmout += "my_note="+my_note+"|";
// item_id=random_int(items_len-1,0);
htmout += '<hr color=orange><hr color=orange>';
htmout += '<div id="'+div_id+'" >';
htmout += '<h1>'+id+'</h1>';
htmout += '<br><br><br><br>';
htmout += ' <img src="'+item+'" onclick="window.open(\''+url+'\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
}
if( document.getElementById(div_id)) {
document.getElementById('div_id').innerHTML=htmout;
}
return(args);
alert( "bugs_4002 us kolist="+kolists[id] );
}
</script>
<script id="script_edu">
function edu(args) {
alert( "bugs_5000 edu args="+args );
kolists['edu'] =
`/fb/edu/imgs/edu.png
/fb/edu/imgs/edu_miami.png
/fb/edu/imgs/edu_csu.png
/fb/edu/imgs/edu_bw.png
/fb/edu/imgs/edu_lindenwood.png
/fb/edu/imgs/edu_baker.png`;
alert( "BUGS_5000 edu kolists_edu="+kolists['edu'] );
edus = kolists['edu'].split("\n");
edus_len=edus.length;
eduid=random_int(edus_len-1,0);
edu = edus[eduid];
htmout = "";
htmout += '<hr color=orange><hr color=orange>';
htmout += '<div id="div_edu"';
htmout += '<h1>edu</h1>';
htmout += '<br><br><br><br>';
htmout += ' <img src="'+edu+'" onclick="window.open(\'/fb/edu\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_edu')) {
document.getElementById('div_edu').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_edu_bugs">
function edu_bugs(args) {
kolists['hoa'] =
`/fb/hoa/imgs/hoa.png
/fb/hoa/imgs/hoa_stonehendge.png
/fb/hoa/imgs/hoa_doevalley.png
/fb/hoa/imgs/hoa_jtfdc.png
/fb/hoa/imgs/hoa_jtfinc.png
/fb/hoa/imgs/hoa_barrington.png
`;
alert( "BUGS_6000 hoa kolists_hoas="+kolists['hoa'] );
hoas = kolists['hoa'].split("\n");
hoas_len=hoas.length;
hoaid=random_int(hoas_len-1,0);
hoa = hoas[hoaid];
htmout = "";
htmout += '<hr color=orange><hr color=orange>';
htmout += '<div id="div_hoa"';
htmout += '<h1>hoa</h1>';
htmout += '<br><br><br><br>';
htmout += ' <img src="'+hoa+'" onclick="window.open(\'/fb/hoa\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_hoa')) {
document.getElementById('div_hoa').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_hoa">
function hoa(args) {
kolists['hoa'] =
`/fb/hoa/imgs/hoa.png
/fb/hoa/imgs/hoa_stonehendge.png
/fb/hoa/imgs/hoa_doevalley.png
/fb/hoa/imgs/hoa_jtfdc.png
/fb/hoa/imgs/hoa_jtfinc.png
/fb/hoa/imgs/hoa_barrington.png
`;
alert( "BUGS_6000 hoa kolists_hoas="+kolists['hoa'] );
hoas = kolists['hoa'].split("\n");
hoas_len=hoas.length;
hoaid=random_int(hoas_len-1,0);
hoa = hoas[hoaid];
htmout = "";
htmout += '<hr color=orange><hr color=orange>';
htmout += '<div id="div_hoa"';
htmout += '<h1>hoa</h1>';
htmout += '<br><br><br><br>';
htmout += ' <img src="'+hoa+'" onclick="window.open(\'/fb/hoa\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_hoa')) {
document.getElementById('div_hoa').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_law">
function law(args) {
kolists['law'] =
`/fb/law/imgs/law.png
/fb/law/imgs/law_tc_kk.png
/fb/law/imgs/law_tc_db.png
/fb/law/imgs/law_sb.png
/fb/law/imgs/law_elster.png
/fb/law/imgs/law_law501.png
/fb/law/imgs/law_kt.png
`;
alert( "BUGS_7000 law kolists_law="+kolists['law'] );
laws = kolists['law'].split("\n");
laws_len=laws.length;
lawid=random_int(laws_len-1,0);
law = laws[lawid];
htmout = "";
htmout += '<hr color=orange><hr color=orange>';
htmout += '<div id="div_law"';
htmout += '<h1>law</h1>';
htmout += '<br><br><br><br>';
htmout += ' <img src="'+law+'" onclick="window.open(\'/fb/law\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_law')) {
document.getElementById('div_law').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_fathersday">
function fathersday(args) {
kolists['fathersday'] =
`/imgs/gif/giphy_fathersday/giphy_fahtersday41.gif
/imgs/gif/giphy_fathersday/giphy_fathers13.gif
/imgs/gif/giphy_fathersday/giphy_headbut.gif
/imgs/gif/giphy_fathersday/giphy_headbut01.gif`;
gifs = kolists['fathersday'].split("\n");
gifs_len=gifs.length;
gifid=random_int(gifs_len-1,0);
gif = gifs[gifid];
htmout = "";
htmout += '<hr color=orange><hr color=orange>';
htmout += '<div id="div_fathersday"';
htmout += '<h1>happy fathersday</h1>';
htmout += '<br><br><br><br>';
htmout += ' <img src="'+gif+'" onclick="window.open(\'/fb/fathersday\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_fathersday')) {
document.getElementById('div_fathersday').innerHTML=htmout;
}
}
</script>
<script id="script_anniversary">
function anniversary(args) {
// `/imgs/gif/mothersday/giphy_mothersday090.gif
kolists['anniversary'] =
`/imgs/gif/giphy_anniversary/giph_ann016.gif
/imgs/gif/giphy_anniversary/giph_ann06.gif
/imgs/gif/giphy_anniversary/giphy_ann_pizza2.gif
/imgs/gif/giphy_anniversary/gipy_ann34.gif`;
gifs = kolists['anniversary'].split("\n");
gifs_len=gifs.length;
gifid=random_int(gifs_len-1,0);
gif = gifs[gifid];
htmout = "";
htmout += '<div id="div_anniversary"';
htmout += '<h1>happy anniversary</h1>';
htmout += ' <img src="'+gif+'" onclick="window.open(\'/fb/anniversary\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_anniversary')) {
document.getElementById('div_anniversary').innerHTML=htmout;
}
}
</script>
<script id="script_reindependenceday">
function reindependenceday(args) {
kolists['reindependenceday'] =
`/imgs/gif/giphy_reindependenceday/giphy_july4.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependanceday.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_01.gif
/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_07.gif`;
gifs = kolists['reindependenceday'].split("\n");
gifs_len=gifs.length;
gifid=random_int(gifs_len-1,0);
gif = gifs[gifid];
htmout = "";
htmout += '<div id="div_reindependenceday"';
htmout += '<h1>happy reindependenceday</h1>';
htmout += ' <img src="'+gif+'" onclick="window.open(\'/fb/reindependenceday\');return false; " ';
htmout += ' height=400 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_reindependenceday')) {
document.getElementById('div_reindependenceday').innerHTML=htmout;
}
}
</script>
<script id="script_kogrids">
function kogrids(args) {
// alert( "BUGS_4300 kogrids args="+args );
// fb_law(args);
// jtfdc_stalkarounds(args);
// mothersday(args);
// fathersday(args);
// anniversary(args);
// reindependenceday(args);
postturtle_monkeytrap(args);
// alert( "BUGS_1852 kogrids len="+len+" kolist="+kolist );
// alert( "BUGS_1852 kogrids len="+kolist.length+" kolist="+kolist );
// var j=0; var len = divids.split(" ").length;
// script_hideshow('alloff');
// var id="zm";
// script_hideshow(id);
// script_hideshow1('allon');
// alert( "BUGS_1850 kogrids args="+args );
// var kolist = kolists['divids'];
// alert( "BUGS_1851 kogrids kolist="+kolist );
// alert( "BUGS_1851 kogrids divids="+divids );
// alert( "BUGS_1852 kogrids kolist_divids="+kolists['divids'] );
// alert( "BUGS_1860 kogrids len="+len+" kolist="+kolist );
var kolist = kolists['divids'].split(" ");
var len=kolist.length;
for ( j=0; j<len; j++ ) {
var rand = random_int(len,1);
var id=kolist[rand-1];
if( /alloff/.test(id)) {continue;}
if( /allon/.test(id)) {continue;}
if( /toggle/.test(id)) {continue;}
if( /</.test(id)) {continue;}
script_hideshow('alloff');
var divid="div_"+id;
// alert( "BUGS_1881 j="+j+" hideshow id="+id+" rand="+rand );
// script_hideshow('fb');
// script_hideshow('yt');
script_hideshow(divid);
// alert( "BUGS_1882 j="+j+" hideshow id="+id+" rand="+rand );
//// script_hideshow1('allon');
break;
}
var myko = new Array();
var mykob = new Array();
var mykow = new Array();
var mykoeyeb = new Array();
var mykoeyew = new Array();
mykob =
`/imgs/kogrids/tn/tn_kob_grid1.png
/imgs/kogrids/tn/tn_kob_grid2.png
/imgs/kogrids/tn/tn_kob_grid3.png
/imgs/kogrids/tn/tn_kob_grid4.png
/imgs/kogrids/tn/tn_kob_grid5.png
/imgs/kogrids/tn/tn_kob_grid6.png
/imgs/kogrids/tn/tn_kob_grid7.png
/imgs/kogrids/tn/tn_kob_grid8.png
/imgs/kogrids/tn/tn_kob_grid9.png
/imgs/kogrids/tn/tn_kob_grid.gif`.split("\n");
mykow =
`/imgs/kogrids/tn/tn_kow_grid1.png
/imgs/kogrids/tn/tn_kow_grid2.png
/imgs/kogrids/tn/tn_kow_grid3.png
/imgs/kogrids/tn/tn_kow_grid4.png
/imgs/kogrids/tn/tn_kow_grid5.png
/imgs/kogrids/tn/tn_kow_grid6.png
/imgs/kogrids/tn/tn_kow_grid7.png
/imgs/kogrids/tn/tn_kow_grid8.png
/imgs/kogrids/tn/tn_kow_grid9.png
/imgs/kogrids/tn/tn_kow_grip.gif`.split("\n");
mykoeyeb =
`/imgs/kogrids/tn/tn_koeyeb_grid1.png
/imgs/kogrids/tn/tn_koeyeb_grid2.png
/imgs/kogrids/tn/tn_koeyeb_grid3.png
/imgs/kogrids/tn/tn_koeyeb_grid4.png
/imgs/kogrids/tn/tn_koeyeb_grid5.png
/imgs/kogrids/tn/tn_koeyeb_grid6.png
/imgs/kogrids/tn/tn_koeyeb_grid7.png
/imgs/kogrids/tn/tn_koeyeb_grid8.png
/imgs/kogrids/tn/tn_koeyeb_grid9.png
/imgs/kogrids/tn/tn_koeyeb_grid_delay5.gif`.split("\n");
mykoeyew =
`/imgs/kogrids/tn/tn_koeyew_grid1.png
/imgs/kogrids/tn/tn_koeyew_grid2.png
/imgs/kogrids/tn/tn_koeyew_grid3.png
/imgs/kogrids/tn/tn_koeyew_grid4.png
/imgs/kogrids/tn/tn_koeyew_grid5.png
/imgs/kogrids/tn/tn_koeyew_grid6.png
/imgs/kogrids/tn/tn_koeyew_grid7.png
/imgs/kogrids/tn/tn_koeyew_grid8.png
/imgs/kogrids/tn/tn_koeyew_grid9.png
/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif`.split("\n");
var ko=Math.floor(Math.random()*myko.length);
var kob=Math.floor(Math.random()*mykob.length);
var kow=Math.floor(Math.random()*mykow.length);
var koeyeb=Math.floor(Math.random()*mykoeyeb.length);
var koeyew=Math.floor(Math.random()*mykoeyew.length);
var koeyeb1=Math.floor(Math.random()*mykoeyeb.length);
var koeyew1=Math.floor(Math.random()*mykoeyew.length);
var koeyeb2=Math.floor(Math.random()*mykoeyeb.length);
var koeyew2=Math.floor(Math.random()*mykoeyew.length);
var max=4; var min=1;
var delay1=random_int(max,min);
var delay2=random_int(max,min);
var delay3=random_int(max,min);
var delay4=random_int(max,min);
// var random_toggle = random_int(kolists['divids'].split(" ").length,1);
// script_hideshow('alloff');
// script_hideshow(kolists['divids'].split(" ")[random_toggle-1] );
if( delay1 = 1 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay100.gif";
if( delay1 = 2 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay25.gif";
if( delay1 = 3 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay50.gif";
if( delay1 = 4 ) mykoeyeb[10]="/imgs/kogrids/tn/tn_koeyew_grid_delay5.gif";
if( delay2 = 1 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay100.gif";
if( delay2 = 2 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay25.gif";
if( delay2 = 3 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay50.gif";
if( delay2 = 4 ) mykoeyew[10]="/imgs/kogrids/tn/tn_koeyew_grip_delay5.gif";
if (ko==0) ko=10;
if (kob==0) kob=10;
if (kow==0) kow=10;
if (koeyeb==0) koeyeb=10;
if (koeyew==0) koeyew=10;
if (koeyeb1==0) koeyeb1=10;
if (koeyew1==0) koeyew1=10;
if (koeyeb2==0) koeyeb2=10;
if (koeyew2==0) koeyew2=10;
var htmout_spacer =
`<br><br><br><br><br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<br><br><br><br>`;
htmout = '\n';
htmout += '<a href="/index.html" class="thumbnail" target=_blank>';
htmout += '<img src="'+mykoeyeb[koeyeb1]+'" height=75 alt=kob border=0>';
// htmout += '<span><img src="/imgs/kogrids/tn/tn_links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
htmout += '<span><img src="/imgs/kogrids/links_ko2us.png" height=400 alt="ko2.us" border=0></span>';
htmout += '</a>';
htmout += '   ';
htmout += '<a href="/ko_center/ko_center.php?q=login" class="thumbnail" target=_blank>';
htmout += '<img src="'+mykoeyew[koeyew1]+'" height=75 alt=koeyeb border=0>';
// htmout += '<span><img src="/imgs/kogrids/tn/tn_links_kologin.png" height=400 alt="kolgin" border=0></span>';
htmout += '<span><img src="/imgs/kogrids/links_kologin.png" height=400 alt="kolgin" border=0></span>';
htmout += '</a>';
htmout += '   ';
htmout += '<a href="/cfaa.html" class="thumbnail" target=_blank>';
htmout += '<img src="'+mykoeyeb[koeyeb2]+'" height=75 alt=koeyew border=0>';
// htmout += '<span><img src="/imgs/kogrids/tn/tn_links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
htmout += '<span><img src="/imgs/kogrids/links_cfaa.png" height=400 alt="ko2.us" border=0></span>';
htmout += '</a>';
htmout += '     ';
htmout += '<a href="https://www.bluehost.com/?utm_source=%28direct%29&utm_medium=affiliate&utm_campaign=affiliate-link_konet_notype" class="thumbnail" target=_blank>';
htmout += '<img src="'+mykoeyew[koeyew2]+'" height=75 alt=kow border=0>';
// htmout += '<span><img src="/imgs/kogrids/tn/tn_links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
htmout += '<span><img src="/imgs/kogrids/links_bluehost.png" height=400 alt="bluehost.com" border=0></span>';
htmout += '</a>';
htmout += '\n';
htmout_kogrids=htmout;
var htmout_lever_mw = "";
htmout_lever_mw += '<a href=#div_kogrids class="popover" >\n';
htmout_lever_mw += ' <img src=/imgs/btn/kop12.png onclick="kogrids(\'\'); return false;" border=0>\n';
htmout_lever_mw += ' <span><img src=/imgs/btn/kop34.png onclick="kogrids(\'\');return false;" border=0></span>\n';
htmout_lever_mw += ' </a>\n';
var htmout_lever_mb = "";
htmout_lever_mb += '<a href=#div_kogrids class="popover" >\n';
htmout_lever_mb += ' <img src=/imgs/btn/kop34.png onclick="kogrids(\'\'); return false;" border=0>\n';
htmout_lever_mb += ' <span><img src=/imgs/btn/kop12.png onclick="kogrids(\'\');return false;" border=0></span>\n';
htmout_lever_mb += ' </a>\n';
var htmout_m = "";
htmout_m += htmout_lever_mw;
htmout_m += htmout_kogrids;
htmout_m += htmout_lever_mb;
htmout_m += htmout_spacer;
htmout_lever_w = "";
htmout_lever_w += '<a href=# class="popover" >\n';
htmout_lever_w += ' <img src=/imgs/btn/kop1.png onclick="kogrids(\'w\'); return false;" border=0>\n';
htmout_lever_w += ' <span><img src=/imgs/btn/kop2.png onclick="kogrids(\'w\'); return false;" border=0></span>\n';
htmout_lever_w += ' </a>\n';
htmout_w = "";
htmout_w += htmout_lever_w;
htmout_w += htmout_kogrids;
htmout_w += htmout_spacer;
htmout_lever_b = "";
htmout_lever_b += '<a href=# class="popover" >\n';
htmout_lever_b += ' <img src=/imgs/btn/kop3.png onclick="kogrids(\'b\');return false;" border=0>\n';
htmout_lever_b += ' <span><img src=/imgs/btn/kop4.png onclick="kogrids(\'b\'); return false;" border=0></span>\n';
htmout_lever_b += ' </a>\n';
htmout_b = "";
htmout_b += htmout_kogrids;
htmout_b += htmout_lever_b;
htmout_b += htmout_spacer;
// alert( "BUGS_2140 kogrids_w htmout_w="+htmout_w );
// alert( "BUGS_2141 kogrids htmout="+htmout );
// var div_kogrids = document.getElementById('div_kogrids_m');
// div_kogrids.innerHTML = htmout_m;
// var div_kogrids_b = document.getElementById('div_kogrids_b');
// div_kogrids_b.innerHTML = htmout_b;
if(document.getElementById('div_kogrids_xx')){
document.getElementById('div_kogrids_xx').innerHTML=htmout_m;
}
// document.getElementById('div_kogrids').innerHTML=htmout;
document.getElementById('div_kogrids_w').innerHTML=htmout_w;
document.getElementById('div_kogrids_m').innerHTML=htmout_m;
document.getElementById('div_kogrids_b').innerHTML=htmout_b;
}
function random_int(max,min) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
</script>
<script id="script_toggle">
function script_toggle(element) {
// alert( "BUGS_2400 hideshow element="+element );
var htmbugs = "";
htmbugs += '<div id="div_htmbugs">';
htmbugs += ' <h1>div_htmbugs</h1>';
htmbugs += ' <pre>';
var style_d = "_style_d";
var style_v = "_style_v";
// alert( "BUGS_2401 element="+element );
var htmout = ""; var j=0; var k=0;
var divid = "";
var div_divid = "";
var div_divid_w = "";
var div_divid_m = "";
var div_divid_b = "";
// var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
// var divids = "head jtfdc jtfinc jtfdcr av db dd fb pn sl tl tm yt zm".split(" ");
// var divids = "allon toggle alloff head setup hunt tag swarm bd status all_places all_items all_sounds all_us all_eggs all_grass places items sounds us eggs grass yt av links ".split(" ");
var divids = "allon toggle alloff <br> hl jtfinc jtfdc bb fb head setup hunt tag swarm bd status all_places all_items all_sounds all_us all_eggs all_grass places items sounds us eggs grass yt av links ".split(" ");
if(( element == "alloff" )) {
// alertmsg( "BUGS_2450 hideshow divids_length="+divids.length );
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
// div_divid_w = div_divid+"_w";
// div_divid_m = div_divid+"_m";
// div_divid_b = div_divid+"_b";
if( divid == "<br>" ) { continue; }
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="none";
}
// if( document.getElementById(div_divid_w)) {
// document.getElementById(div_divid_w).style.display="none";
// }
// if( document.getElementById(div_divid_m)) {
// document.getElementById(div_divid_m).style.display="none";
// }
// if( document.getElementById(div_divid_b)) {
// document.getElementById(div_divid_b).style.display="none";
// }
}
}
if( element == "allon" ) {
// alertmsg( "BUGS_2460 hideshow divids_length="+divids.length );
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) { continue; }
if( document.getElementById(div_divid)) {
document.getElementById(div_divid).style.display="inline";
}
// if( document.getElementById(div_divid_w)) {
// document.getElementById(div_divid_w).style.display="inline";
// }
// if( document.getElementById(div_divid_m)) {
// document.getElementById(div_divid_m).style.display="inline";
// }
// if( document.getElementById(div_divid_b)) {
// document.getElementById(div_divid_b).style.display="inline";
// }
}
}
htmout += '<hr color=white>';
htmout += '<img src="/imgs/btn/koeye_'+"alloff"+'.png" height=50 onclick="script_hideshow(\''+"alloff"+'\');return false;" alt="btn_'+"alloff"+'">';
htmout += '<img src="/imgs/btn/koeye_'+"allon"+'.png" height=50 onclick="script_hideshow(\''+"allon"+'\');return false;" alt="btn_'+"allon"+'">';
htmout += "<hr color=pink>";
htmout += '<br>';
// alertmsg( "BUGS_2500 hideshow divids_length="+divids.length );
for( j=0; j<divids.length; j++ ) {
divid=divids[j];
div_divid="div_"+divid;
div_divid_w = div_divid+"_w";
div_divid_m = div_divid+"_m";
div_divid_b = div_divid+"_b";
if( divid == "<br>" ) {
htmout += "<br>";
continue;
}
style_v="";
style_d="";
if( document.getElementById(div_divid)) {
// style_v = document.getElementById(div_divid).style.visibility;
style_d = document.getElementById(div_divid).style.display;
// alert( "BUGS_880 div_divid="+div_divid+" style_d="+style_d );
}
htmbugs += "htmbugs j="+j+" divid="+divid;
htmbugs += " -== div_divid="+div_divid;
htmbugs += " element="+element;
htmbugs += " =- -=";
htmbugs += " style_d="+style_d+"";
htmbugs += " style_v="+style_v+"";
htmbugs += "====================\n";
// alertmsg("BUGS_2520 divid="+divid+" element="+element );
// if( div_divid == element ) {
if( divid == element ) {
// alertmsg("BUGS_2540 div_divid="+div_divid+" element="+element );
if( document.getElementById(div_divid)) {
style_d = document.getElementById(div_divid).style.display;
}
if( document.getElementById(div_divid)) {
// alert( "BUGS_900 div_div="+div_div+" style_d="+style_d );
if( document.getElementById(div_divid).style.display == "none" ) {
alert( "BUGS_901 div_div="+div_div+" style_d="+style_d );
htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
htmbugs += "BUGS_161 _DIV_DIVID-NONE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
document.getElementById(div_divid).style.display="inline";
// document.getElementById(div_divid_w).style.display="inline";
// document.getElementById(div_divid_m).style.display="inline";
// document.getElementById(div_divid_b).style.display="inline";
}
else {
htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
htmbugs += "BUGS_162 DIV_DIVID-INLINE div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
document.getElementById(div_divid).style.display="none";
// document.getElementById(div_divid_w).style.display="none";
// document.getElementById(div_divid_m).style.display="none";
// document.getElementById(div_divid_b).style.display="none";
}
}
}
if( div_divid != element ) {
if( document.getElementById(div_divid).style.display == "none" ) {
htmout += '<img src="/imgs/btn/koeyeb_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'">';
// htmbugs += "BUGS_921 div_divid_none div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
}
else {
htmout += '<img src="/imgs/btn/koeyew_'+divid+'.png" height=50 onclick="script_hideshow(\''+div_divid+'\');return false;" alt="btn_'+divid+'_hide">';
htmbugs += "BUGS_922 div_divid_inline div_divid="+div_divid+" element="+element+" style_d="+style_d+" style_v="+style_v;
}
}
}
htmbugs += " </pre>";
htmbugs += " </div>";
alertmsg( "BUGS_2590 htmout="+htmbugs );
document.getElementById("div_buttons_hideshow").innerHTML = htmout;
document.getElementById("div_htmbugs").innerHTML = htmbugs;
// document.getElementById("div_buttons_hideshow_w").innerHTML = htmout;
// document.getElementById("div_buttons_hideshow_m").innerHTML = htmout;
// document.getElementById("div_buttons_hideshow_b").innerHTML = htmout;
document.getElementById("div_htmbugs").innerHTML = htmbugs;
}
</script>
<script id="script_alertmsg1">
function alertmsg1(msg) {
// alert( "BUGS_2321 alertmsg1 msg="+msg );
}
</script>
<script id="script_alertmsg" >
function alertmsg(msg) {
// alert( "BUGS_2320 alertmsg="+msg );
if( document.getElementById('div_msg')) {
document.getElementById('div_msg').innerHTML = msg+"<hr color=white>";
}
// document.getElementById('div_log').innerHTML = msg;
// document.getElemetById('div_log').insertAdjacentHTML('afterbegin', msg);
// document.getElemetById('div_log').insertAdjacentHTML('beforebegin', msg);
// document.getElemetById('div_log').insertAdjacentHTML('beforeend', msg);
// if( document.getElementById('div_log_m')) {
// document.getElementById('div_log_m').insertAdjacentHTML("beforeend", msg+"<br>" );
// }
if( document.getElementById('div_log')) {
document.getElementById('div_log').insertAdjacentHTML("beforeend", msg+"<br>" );
}
// alert( "BUGS_2340 alertmsg="+msg );
return("");
}
</script>
<script id="script_dttm_bugs" >
function dttm_bugs(args) {
alert( "BUGS_1500 args="+args );
// var formatTime = function(time, format) {
// alert( "BUG1_1500 args="+args );
// time = typeof time == 'number' ? new Date(time) : time;
// format = format || 'yyyy-mm-dd hh:MM:ss';
// var year = time.getFullYear();
// var month = time.getMonth() + 1;
// var date = time.getDate();
// var hours = time.getHours();
// var minutes = time.getMinutes();
// var seconds = time.getSeconds();
// var add0 = function(t){ return t < 10 ? '0' + t : t }
// alert( "BUGS_1499" );
// var replaceMent = {
// 'yyyy': year,
// 'mm': add0(month),
// 'm': month,
// 'dd': add0(date),
// 'd': date,
// 'hh': add0(hours),
// 'h': hours,
// 'MM': add0(minutes),
// 'M': minutes,
// 'ss': add0(seconds),
// 's': seconds
// }
// alert( "BUGS_1510 format="+format );
// for( var k in replaceMent ){
// format = format.replace(k, replaceMent[k]);
// }
// }
// var dt = format;
// alert( "BUGS_1515 dt="+dt );
// return(dt);
}
</script>
<script id="script_dttm" >
function dttm(args) {
var now = new Date();
var yyyy_mm_dd = new Date().toISOString().slice(0, 10);
var hh_mm_dd = new Date().toISOString().slice(11, 19);
var dt=yyyy_mm_dd+"_"+hh_mm_dd;
return( dt );
}
</script>
<script id="script_postturtle_monkeytrap" >
function postturtle_monkeytrap(args) {
// alert( "BUGS_postturtle_monkeytrap args="+args );
var img_monkeytraps = `
/imgs/postturtle_moneytrap/monkeytrap1.png
/imgs/postturtle_moneytrap/monkeytrap2.jpg
/imgs/postturtle_moneytrap/monkeytrap3.jpg
/imgs/postturtle_moneytrap/monkeytrap10.jpg
/imgs/postturtle_moneytrap/monkeytrap11.jpg
/imgs/postturtle_moneytrap/monkeytrap12.jpg
/imgs/postturtle_moneytrap/monkeytrap13.jpg
/imgs/postturtle_moneytrap/monkeytrap14.jpg
/imgs/postturtle_moneytrap/monkeytrap17.jpg
/imgs/postturtle_moneytrap/monkeytrap18.jpg
/imgs/postturtle_moneytrap/monkeytrap20.jpg
/imgs/postturtle_moneytrap/monkeytrap21.png
/imgs/postturtle_moneytrap/monkeytrap22.png
/imgs/postturtle_moneytrap/monkeytrap24.jpg
/imgs/postturtle_moneytrap/monkeytrap28.jpg
/imgs/postturtle_moneytrap/monkeytrap29.jpg
/imgs/postturtle_moneytrap/monkeytrap30.jpg
/imgs/postturtle_moneytrap/monkeytrap31.jpg
/imgs/postturtle_moneytrap/monkeytrap34.png
/imgs/postturtle_moneytrap/monkeytrap36.jpg
/imgs/postturtle_moneytrap/monkeytrap37.jpg
/imgs/postturtle_moneytrap/monkeytrap37.png
/imgs/postturtle_moneytrap/monkeytrap4.png
/imgs/postturtle_moneytrap/monkeytrap5.jpg
/imgs/postturtle_moneytrap/monkeytrap54.jpg
/imgs/postturtle_moneytrap/monkeytrap6.jpg
/imgs/postturtle_moneytrap/monkeytrap7.png
/imgs/postturtle_moneytrap/monkeytrap8.jpg
/imgs/postturtle_moneytrap/monkeytrap9.jpg
`;
var img_postturtles = `
/imgs/postturtle_moneytrap/postturtl10.jpg
/imgs/postturtle_moneytrap/postturtl11.jpg
/imgs/postturtle_moneytrap/postturtl12.jpg
/imgs/postturtle_moneytrap/postturtl13.jpg
/imgs/postturtle_moneytrap/postturtl14.jpg
/imgs/postturtle_moneytrap/postturtl15.png
/imgs/postturtle_moneytrap/postturtl16.jpg
/imgs/postturtle_moneytrap/postturtl17.gif
/imgs/postturtle_moneytrap/postturtl18.jpg
/imgs/postturtle_moneytrap/postturtl2.jpg
/imgs/postturtle_moneytrap/postturtl20.jpg
/imgs/postturtle_moneytrap/postturtl21.jpg
/imgs/postturtle_moneytrap/postturtl22.jpg
/imgs/postturtle_moneytrap/postturtl23.jpg
/imgs/postturtle_moneytrap/postturtl24.jpg
/imgs/postturtle_moneytrap/postturtl25.png
/imgs/postturtle_moneytrap/postturtl26.gif
/imgs/postturtle_moneytrap/postturtl27.jpg
/imgs/postturtle_moneytrap/postturtl3.jpg
/imgs/postturtle_moneytrap/postturtl31.png
/imgs/postturtle_moneytrap/postturtl4.jpg
/imgs/postturtle_moneytrap/postturtl5.jpg
/imgs/postturtle_moneytrap/postturtl6.jpg
/imgs/postturtle_moneytrap/postturtl7.jpg
/imgs/postturtle_moneytrap/postturtl8.jpg
/imgs/postturtle_moneytrap/postturtl9.jpg
/imgs/postturtle_moneytrap/postturtle_caption.jpg
/imgs/postturtle_moneytrap/rose.jpg
# /imgs/postturtle_moneytrap/postturtl33.jpg
`;
var img_floods = `
/imgs/postturtle_moneytrap//floop_rooftop.jpg
/imgs/postturtle_moneytrap//floop_rooftop1.jpg
/imgs/postturtle_moneytrap//floop_rooftop11.jpg
/imgs/postturtle_moneytrap//floop_rooftop12.jpg
/imgs/postturtle_moneytrap//floop_rooftop13.jpg
/imgs/postturtle_moneytrap//floop_rooftop14.jpg
/imgs/postturtle_moneytrap//floop_rooftop15.jpg
/imgs/postturtle_moneytrap//floop_rooftop2.jpg
/imgs/postturtle_moneytrap//floop_rooftop20.jpg
/imgs/postturtle_moneytrap//floop_rooftop21.jpg
/imgs/postturtle_moneytrap//floop_rooftop3.jpg
/imgs/postturtle_moneytrap//floop_rooftop5.jpg
/imgs/postturtle_moneytrap//floop_rooftop6.jpg
/imgs/postturtle_moneytrap//floop_rooftop7.jpg
/imgs/postturtle_moneytrap//floop_rooftop8.jpg
/imgs/postturtle_moneytrap//floop_rooftop9.jpg
`;
// alert( "BUGS_4181 img_postturtles="+img_postturtles );
// alert( "BUGS_4182 img_monkeytraps="+img_monkeytraps );
// <img id="img_postturtle" src="/imgs/postturtle_moneytrap/postturtle_caption.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
// <img id="img_monkeytrap" src="/imgs/postturtle_moneytrap/monkeytrap10.jpg" onclick="window.open('/?monkeytrap');return false;" height=200 border=0 draggable="true">
// <img id="img_flood" src="/imgs/postturtle_moneytrap/floop1.jpg" onclick="window.open('/?flood');return false;" height=200 border=0 draggable="true">
var turtle=0; var turtle_max=0;
var monkey=0; var monkey_max=0;
var flood=0; var flood_max=0;
var turtle_max = img_postturtles.split("\n").length;
var monkey_max = img_monkeytraps.split("\n").length;
var flood_max = img_floods.split("\n").length;
turtle = random_int(turtle_max,0);
monkey = random_int(monkey_max,0);
flood = random_int(flood_max,0);
var img_postturtle = img_postturtles.split("\n")[turtle];
var img_monkeytrap = img_monkeytraps.split("\n")[monkey];
var img_flood = img_floods.split("\n")[flood];
if( filecheck(img_postturtle)) {
if( document.getElementById("img_postturtle")) {
document.getElementById("img_postturtle").src=img_postturtle;
}
}
if( filecheck(img_monkeytrap)) {
if( document.getElementById("img_monkeytrap")) {
document.getElementById("img_monkeytrap").src=img_monkeytrap;
}
}
if( filecheck(img_flood)) {
if( document.getElementById("img_flood")) {
document.getElementById("img_flood").src=img_flood;
}
}
}
</script>
<script>
function isOdd(num) { return num % 2;}
function oddOrEven(x) {return ( x & 1 ) ? "odd" : "even";}
</script>
<script id="script_kolists">
var kolists = [];
kolists['ids'] = `id0 id1 id2 id3`;
</script>
<script id="script_random_int">
function random_int(max,min) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
</script>
<script id="script_bugs">
function bugs(args) {
alert( "BUGS_7500 args="+args );
return(args);
}
</script>
<script id="script_keine">
function keine(i) {
// alert( "BUGS_8980 keine i="+i );
j=0; o=0;
is=i.toString().split("");
islen=is.length;
// alert( "BUGS_8995 keine j="+j+" islen="+islen+" is="+is );
for( j=0; j<islen; j++ ) {
o=o+parseInt(is[j]);
if( o>9 ) {
// alert( "BUGS_8996 TOBIG j="+j+" i="+i+" o="+o );
o=o-9;
// alert( "BUGS_8997 tobig j="+j+" i="+i+" o="+o );
}
}
// alert( "BUGS_9000 keine j="+j+" i="+i+" o="+o );
return(o);
}
</script>
<script id="script_grid_toggle">
function grid_toggle(args) {
// alert("BUGS_200 grid args="+args );
div_divid="div_grid";
if( document.getElementById('div_grid')) {
if( document.getElementById('div_grid').style.display == "inline" ) {
document.getElementById('div_grid').style.display="none";
if( document.getElementById('img_grid_toggle')) {
document.getElementById('img_grid_toggle').src="/imgs/btn/btn_keyhole_us1.png";
}
if( document.getElementById('img_grid_keys')) {
document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys1.png";
}
}
else{
document.getElementById('div_grid').style.display="inline";
if( document.getElementById('img_grid_toggle')) {
document.getElementById('img_grid_toggle').src="/imgs/btn/btn_keyhole2heaven.png";
}
// if( document.getElementById('img_grid_keys')) {
// document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys2.png";
// }
// return('');
}
}
return(args);
}
</script>
<script id="script_grid">
function grid(args) {
// alert("BUGS_200 grid args="+args );
// var ctx = document.getElementById('canvas_table_top').getContext('2d');
if( document.getElementById('img_grid_keys')) {
document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys_string1.png";
}
if(args=="") {
}
tokens=args;
k9s=tokens;
j=0; k=0;
if( args == '' ) {
tokens = '';
tokens += '-';
for( k=1; k<11; k++ ) {
// token = random_int(99999999,0);
token = random_int(999999,100000);
k9=token;
// alert("BUGS_9010 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
k9=keine(token);
// alert("BUGS_9020 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
token_str = token.toString();
tokens += token.toString(); tokens += '-';
// tokens += token_str; tokens += '-';
}
// tokens += '-';
}
k9s=tokens;
var tokes = tokens.split(/-/);
tokes_len = tokes.length;
head=0; tail=tokes_len-1;
if(( tokes[head] != "" ) && ( tokes[tail] != "" )) {
k9head=keine(tokes[head]);
status=0;
for( j=1; j<tail; j++ ) {
if( tokes[tail] == tokes[j] ) {
if( j == k9head ) { status=1; }
break;
}
}
if( status == 1 ) {
htmout = '';
htmout += '<img src="/imgs/btn/btn_key_happiness.png" ';
htmout += ' onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
htmout += ' height=400 border=0>';
}
else {
htmout = '';
htmout += '<img src="/imgs/btn/btn_keyhole_us.png" ';
htmout += ' onclick="window.open(\'/imgs/btn/btn_key_happiness.png\');return false;"';
htmout += ' height=400 border=0>';
}
if( document.getElementById('div_grid1')) {
document.getElementById('div_grid1').innerHTML = htmout;
}
return(args);
}
grid1 = '';
grid1 += '<div id="div_grid1" >';
grid1 += ' <h1>div_grid1</h1>';
grid1 += ' <h3>'+tokens+'</h3>';
grid1 += ' <br>';
grid1 += ' <table id="table_grid">';
// alert( "BUGS_150 grid1="+grid1+" tokes="+tokes );
j=0;
for(r=1; r<4; r++) {
grid1 += '<tr>';
for(c=1; c<4; c++) {
// alert( "BUGS_150 j="+j+"-"+r+"-"+c+" tokens="+tokens );
j=j+1;
grid1 += '<td>';
// grid1 += j;
if((tokes[head]=="")&&(tokes[tail]=="")) {
grid1 += '<img src="/imgs/btn/kob.png" onclick=';
// grid1 += ' "grid(\''+j+tokens+'\'); return false;" ';
grid1 += ' "grid(\''+tokes[j]+tokens+'\'); return false;" ';
grid1 += ' height=50 border=0>';
grid1 += '<br>';
// grid1 += tokes[j];
// grid1 += '<br>';
// grid1 += keine(tokes[j]);
// alert( "BUGS_151 j="+j+"-"+r+"-"+c+" tokens="+tokens );
}
if((tokes[head]!="")&&(tokes[tail]=="")) {
// if( tokes[head] == j ) {
if( tokes[head] == tokes[j] ) {
grid1 += '<img src="/imgs/btn/kow.png" ';
// grid1 += ' onclick="grid(\''+tokens+j+'\'); return false;" ';
grid1 += ' onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
grid1 += ' height=50 border=0>';
grid1 += '<br>';
// grid1 += tokes[j];
// grid1 += '<br>';
// grid1 += keine(tokes[j]);
}
else {
grid1 += '<img src="/imgs/btn/kob.png" ';
grid1 += ' onclick="grid(\''+tokens+tokes[j]+'\'); return false;" ';
grid1 += ' height=50 border=0>';
grid1 += '<br>';
// grid1 += tokes[j];
// grid1 += '<br>';
// grid1 += keine(tokes[j]);
}
// alert( "BUGS_152 j="+j+"-"+r+"-"+c+" tokens="+tokens );
}
if((tokes[head]!="")&&(tokes[tail]!="")) {
// if( tokes[head] == keine(tokes[tokes[tail]]) ) {
// if( tokes[ tokes[head]] == keine(tokes[tokes[tail]]) ) {
if( tokes[ tokes[head]] == tokes[tokes[tail]] ) {
grid1 += '<img src="/imgs/btn/btn_key_happiness.png" ';
grid1 += ' onclick="grid(\''+tokens+'\'); return false;" ';
grid1 += ' height=50 border=0>';
grid1 += '<br>';
grid1 += tokes[head]+'='+tokes[tail]+'<br>';
// grid1 += tokes[j]+<br>;
// grid1 += '<br>';
// grid1 += keine(tokes[tokes[tail]]);
}
else {
grid1 += '<img src="/imgs/btn/kob.png" ';
grid1 += ' onclick="grid(\''+tokens+'\'); return false;" ';
grid1 += ' height=50 border=0>';
grid1 += '<br>';
grid1 += tokes[j];
// grid1 += '<br>';
// grid1 += keine(tokes[j]);
}
// alert( "BUGS_153 j="+j+"-"+r+"-"+c+" tokens="+tokens );
}
grid1 += '<br>'+tokes[j];
// grid1 += '<br>'+keine(tokes[j]);
grid1 += '<br>';
grid1 += ' </td>';
// grid1 += '-'+k9;
// grid1 += '-'+keine(tokes[j]);
// alert( "BUGS_65 j="+j+" toke="+tokes[j] );
// grid1 += tokes[j].toString();
}
grid1 += ' </tr>';
}
grid1 += ' </table>';
grid1 += ' </div>';
// alert( "BUGS_111 grid1="+grid1 );
if( document.getElementById('div_grid')) {
document.getElementById('div_grid').innerHTML=grid1;
}
// alert( "BUGS_71 grid1="+grid1 );
return(args);
htmout = '';
htmout += '<div id="div_tokens">';
htmout += '<h1>div_tokens</h1>';
htmout += '<br>';
htmout += ' </div>';
if( document.getElementById('div_tokens')) {
document.getElementById('div_tokens').innerHTML=tokens;
}
htmout += '<div id="div_grid">';
htmout += '<h1>div_grid</h1>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-1\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-2\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-3\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<br>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-4\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-5\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-6\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<br>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-7\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-8\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-9\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<br><br><br><br>';
htmout += '<hr color=goldenrod';
// htmout += '<table>';
//
// j=0;
// for(r=0; r<3; r++ ) {
// htmout += ' <tr>';
// for( c=0; c<3; c++ ) {
// rand=random_int(99999999,0);
//// alert( "BUGS_202 j="+j+" rand="+rand );
// kolists[j] = rand;
// htmout += ' <td>';
// htmout += '<img src="/imgs/btn/kob.png"';
// htmout += ' alt="/imgs/btn/kob.png"';
// htmout += ' onclick="grid(\''j+'|'+kolists[j]+'\');return false;" ';
// htmout += ' height=50 border=0>';
// htmout += ' '+kolists[j];
// htmout += ' </td>';
// }
// htmout += ' </tr>';
// }
// htmout += ' </table>';
// htmout += ' </div>';
//
// htmout="<h1>BUGS_HTML</h1>";
// alert("BUGS_201 grid htmout="+htmout );
if( document.getElementById('div_grid')) {
document.getElementById('div_grid').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_grid_old">
function grid_old(args) {
// alert("BUGS_200 grid args="+args );
// var ctx = document.getElementById('canvas_table_top').getContext('2d');
if( document.getElementById('img_grid_keys')) {
document.getElementById('img_grid_keys').src="/imgs/btn/btn_keys_string1.png";
}
if(args=="") {
}
tokens=args;
k9s=tokens;
j=0; k=0;
if( args == '' ) {
tokens = '';
tokens += '-';
for( k=1; k<19; k++ ) {
token = random_int(9999,0);
k9=token;
// alert("BUGS_9010 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
k9=keine(token);
// alert("BUGS_9020 grid j="+j+" k="+k+" token="+token+" k9="+k9 );
token_str = token.toString();
tokens += token.toString(); tokens += '-';
// tokens += token_str; tokens += '-';
}
tokens += '-';
}
k9s=tokens;
var tokes = tokens.split(/-/);
tokes_len = tokes.length;
head=0; tail=tokes_len-1;
grid1 = '';
grid1 += '<div id="div_grid1" >';
grid1 += ' <h1>div_grid1</h1>';
grid1 += ' <br>';
grid1 += ' <table id="table_grid">';
// alert( "BUGS_80 grid1="+grid1+" tokes="+tokes );
j=0;
for(r=1; r<4; r++) {
grid1 += '<tr>';
for(c=1; c<4; c++) {
// alert( "BUGS_9050 j="+j+"-"+r+"-"+c );
j=j+1;
grid1 += '<td>';
grid1 += j;
// if( tokes[0] == "0000" ) {
// if( /-/.tokes[0] ) {
if( tokes[head] == "" ) {
grid1 += '<img src="/imgs/btn/kob.png" ';
}
else {
if(tokes[tail] == "" ) {
if( tokes[head] == j ) {
grid1 += '<img src="/imgs/btn/kow.png" ';
}
else {
grid1 += '<img src="/imgs/btn/kob.png" ';
}
}
else {
if( tokes[tail] == keine(tokes[head]) ) {
grid1 += '<img src="/imgs/btn/kow.png" ';
}
else {
grid1 += '<img src="/imgs/btn/kob.png" ';
}
}
}
// k9s[j] = k0s(tokes[j]);
grid1 += ' onclick="grid(\''+j+'-'+tokens+'\'); return false;" ';
// if( tokes[tail] == "" ) {
// grid1 += ' onclick="grid(\''+j+'-'+tokens+'\'); return false;" ';
// }
// else {
// grid1 += ' onclick="grid(\''+j+'-'+tokens+'-'+j+'\'); return false;" ';
// }
grid1 += ' height=50 border=0 >';
grid1 += '<br>'+tokes[j];
// grid1 += '-'+k9;
// grid1 += '-'+keine(tokes[j]);
grid1 += '<br>'+k9s[j];
grid1 += '<br>';
// alert( "BUGS_65 j="+j+" toke="+tokes[j] );
// grid1 += tokes[j].toString();
grid1 += ' </td>';
}
grid1 += ' </tr>';
}
grid1 += ' </table>';
grid1 += ' </div>';
// alert( "BUGS_111 grid1="+grid1 );
if( document.getElementById('div_grid')) {
document.getElementById('div_grid').innerHTML=grid1;
}
// alert( "BUGS_71 grid1="+grid1 );
return(args);
htmout = '';
htmout += '<div id="div_tokens">';
htmout += '<h1>div_tokens</h1>';
htmout += '<br>';
htmout += ' </div>';
if( document.getElementById('div_tokens')) {
document.getElementById('div_tokens').innerHTML=tokens;
}
htmout += '<div id="div_grid">';
htmout += '<h1>div_grid</h1>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-1\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-2\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-3\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<br>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-4\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-5\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-6\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<br>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-7\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-8\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<img src="/imgs/btn/kob.png" ';
htmout += ' onclick="grid(\'grid-9\');return false;" ';
htmout += ' height=50 border=0>';
htmout += '<br><br><br><br>';
htmout += '<hr color=goldenrod';
// htmout += '<table>';
//
// j=0;
// for(r=0; r<3; r++ ) {
// htmout += ' <tr>';
// for( c=0; c<3; c++ ) {
// rand=random_int(99999999,0);
//// alert( "BUGS_202 j="+j+" rand="+rand );
// kolists[j] = rand;
// htmout += ' <td>';
// htmout += '<img src="/imgs/btn/kob.png"';
// htmout += ' alt="/imgs/btn/kob.png"';
// htmout += ' onclick="grid(\''j+'|'+kolists[j]+'\');return false;" ';
// htmout += ' height=50 border=0>';
// htmout += ' '+kolists[j];
// htmout += ' </td>';
// }
// htmout += ' </tr>';
// }
// htmout += ' </table>';
// htmout += ' </div>';
//
// htmout="<h1>BUGS_HTML</h1>";
// alert("BUGS_201 grid htmout="+htmout );
if( document.getElementById('div_grid')) {
document.getElementById('div_grid').innerHTML=htmout;
}
return(args);
}
</script>
<script id="script_startup2">
function startup2(args) {
alert("BUGS_100 startup args="+args );
// grid(args);
// script_hideshow('allon');
// script_hideshow('div_pdfs');
return(args);
}
</script>
<script type = "text/javascript">
function drawgrid() {
if(document.getElementById('canvas_grid_table_top')) {;
var canvas = document.getElementById('canvas_grid_table_top');
}
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
// Create a pattern
for (var i = 0;i<7;i++) {
for (var j = 0;j<7;j++) {
ctx.fillStyle = 'rgb(' + Math.floor(255-20.5*i)+ ','+
Math.floor(255 - 42.5*j) + ',255)';
ctx.fillRect( j*25, i* 25, 55, 55 );
}
}
}
else {
alert('ALERT_100: unauthorized access logged !!');
}
}
</script>
</head>
<!-- <body bgcolor=darkslategrey> -->
<!-- <body bgcolor=wheat> -->
<!-- <body bgcolor=#FFFDDA> -->
<body onload="startup(''); return false;" >
<!-- Load an icon library to show a hamburger menu (bars) on small screens -->
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> -->
<!-- Top Navigation Menu -->
<div class="topnav">
<a href="#home" class="active">
<img id="img_topnav_logo" src="/imgs/btn/ok.png" height=50>
</a>
<!-- Navigation links (hidden by default) -->
<div id="myLinks">
<div id="div_kogrids_m"></div>
<canvas id="canvas_m" onclick="window.open('/?canvas_m'); return false;" height=400 witdh=400 draggable="true"></canvas>
<a href="#news">News</a>
<a href="#contact">Contact</a>
<a href="#about">About</a>
<img src="/fb/jkwii/pages/1.jpg" onclick="window.open('/fb/jkwii');return false;" border=0 height=100>
<hr color=white>
<hr color=black>
<a href="/notes.txt">notes</a>
<a href="#about">About</a>
<div id="div_log_m"><h1>div_log_m</h1></div>
</div>
<!-- "Hamburger menu" / "Bar icon" to toggle the navigation links -->
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
<i class="fa fa-bars"></i>
</a>
</div>
<!-- <img src="/imgs/btn/koeye_handhither.gif" onclick="startup(''); return false" height=50 border=0 > -->
<div id="div_kogrids_w" >
</div>
<div id="div_buttons_hideshow_w">
<img src="/imgs/btn/koeye_alloff.png" height=50 onclick="script_hideshow('alloff');return false;" alt="btn_alloff">
<img src="/imgs/btn/koeye_toggle.png" height=50 onclick="script_hideshow('toggle');return false;" alt="btn_alloff">
<img src="/imgs/btn/koeye_allon.png" height=50 onclick="script_hideshow('allon');return false;" alt="btn_allon">
<br>
<hr color=white>
<hr color=black>
<!-- <img src="/imgs/btn/koeyew_slots.png" height=50 onclick="script_hideshow('div_slots');return false;" alt="btn_slots"> -->
<!-- <img src="/imgs/btn/koeyew_hl.png" height=50 onclick="script_hideshow('div_hl');return false;" alt="btn_hl"> -->
<!-- <img src="/imgs/btn/koeyew_hllinks.png" height=50 onclick="script_hideshow('div_hllinks');return false;" alt="btn_hllinks"> -->
<!-- <img src="/imgs/btn/koeyew_hltext.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hltext"> -->
<!-- <img src="/imgs/btn/koeyew_hlmedia.png" height=50 onclick="script_hideshow('div_hltext');return false;" alt="btn_hlmedia"> -->
<!-- <img src="/imgs/btn/koeyew_games.png" height=50 onclick="script_hideshow('div_games');return false;" alt="btn_games"> -->
<!-- <img src="/imgs/btn/koeyew_av_jtfdc.png" height=50 onclick="script_hideshow('div_av_jtfdc');return false;" alt="btn_av_jtfdc"> -->
<!-- <img src="/imgs/btn/koeyew_av_jtfinc.png" height=50 onclick="script_hideshow('div_av_jtfinc');return false;" alt="btn_av_jtfinc"> -->
<!-- <img src="/imgs/btn/koeyew_av_jtfdcr.png" height=50 onclick="script_hideshow('div_av_jtfdcr');return false;" alt="btn_av_jtfdcr"> -->
<img src="/imgs/btn/koeyew_av.png" height=50 onclick="script_hideshow('div_av');return false;" alt="btn_av">
<img src="/imgs/btn/koeyew_bb.png" height=50 onclick="script_hideshow('div_db');return false;" alt="btn_db">
<img src="/imgs/btn/koeyew_dd.png" height=50 onclick="script_hideshow('div_dd');return false;" alt="btn_dd">
<img src="/imgs/btn/koeyew_fb.png" height=50 onclick="script_hideshow('div_fb');return false;" alt="btn_fb">
<img src="/imgs/btn/koeyew_fs.png" height=50 onclick="script_hideshow('div_fs');return false;" alt="btn_fs">
<img src="/imgs/btn/koeyew_pn.png" height=50 onclick="script_hideshow('div_pn');return false;" alt="btn_pn">
<img src="/imgs/btn/koeyew_sl.png" height=50 onclick="script_hideshow('div_sl');return false;" alt="btn_sl">
<img src="/imgs/btn/koeyew_tl.png" height=50 onclick="script_hideshow('div_tl');return false;" alt="btn_tl">
<img src="/imgs/btn/koeyew_tm.png" height=50 onclick="script_hideshow('div_tm');return false;" alt="btn_tm">
<img src="/imgs/btn/koeyew_yt.png" height=50 onclick="script_hideshow('div_yt');return false;" alt="btn_yt">
<img src="/imgs/btn/koeyew_zm.png" height=50 onclick="script_hideshow('div_zm');return false;" alt="btn_zm">
<br>
<img src="/imgs/btn/koeyew_jtfdc.png" height=50 onclick="script_hideshow('div_jtfdc');return false;" alt="btn_jtfdc">
<img src="/imgs/btn/koeyew_jtfinc.png" height=50 onclick="script_hideshow('div_jtfinc');return false;" alt="btn_jtfinc">
<img src="/imgs/btn/koeyew_jtfdcr.png" height=50 onclick="script_hideshow('div_jtfdcr');return false;" alt="btn_jtfdcr">
<br>
<img src="/imgs/btn/koeyew_head.png" height=50 onclick="script_hideshow('div_head');return false;" alt="btn_head">
<img src="/imgs/btn/koeyew_body.png" height=50 onclick="script_hideshow('div_body');return false;" alt="btn_body">
<img src="/imgs/btn/koeyew_memes.png" height=50 onclick="script_hideshow('div_memes');return false;" alt="btn_memes">
<img src="/imgs/btn/koeyew_kov.png" height=50 onclick="script_hideshow('div_kov');return false;" alt="btn_kov">
<img src="/imgs/btn/koeyew_tail.png" height=50 onclick="script_hideshow('div_tail');return false;" alt="btn_tail">
</div>
<div id="div_blob_w" hidden >
<h3>blobsallad_w</h3>
<hr color=white>
<canvas id="canvas_blob_w" width="600" height="400"></canvas><br>
<hr color=white>
<img id="img_startstop" src="/imgs/btn/koeye.png" onclick="startstop();return false;" height=30>
<!-- -= start =- -= stop =- -->
<br>
<hr color=white>
<img src="/imgs/btn/koeyeb.png" onclick="blobColl.split();return false;" height=30>
<img src="/imgs/btn/koeyeb.png" onclick="toggleGravity();return false;" height=30>
<img src="/imgs/btn/koeyeb.png" onclick="blobColl.join();return false;" height=30>
<!-- -= + =- -= = =- -= - =- -->
<hr color=white>
<br>
<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(-50.0,0.0));return false;" height=30>
<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(0.0,-50.0));return false;" height=30>
<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(0.0,50.0));return false;" height=30>
<img src="/imgs/btn/koeyeb.png" onclick="blobColl.addForce( new Vector(50.0,0.0));return false;" height=30>
<!-- -= l =- -= u =- -= d =- -= r =- -->
<hr color=whtie>
</div>
<hr color=pink>
<hr color=pink>
<div id="div_fathersday">
<h1>happy fathersday 2020</h1>
<br><br> <br><br>
<img src="/imgs/gif/giphy_fathersday/giphy_fathersday01.gif" onclick="window.open('/fb/fathersday');return false;"
height=400 border=0 draggable="yes" >
</div>
<br><br><br<br>
<hr color=goldenrod>
<hr color=orange>
<hr color=yellow>
<div id="div_holidays">
<h1>mothersday       -= holidays =-       fathersday</h1>
<hr color=goldenrod>
<br>
<!-- imgs/gif/mothersday/giphy_mothersday10...60,80 14_sparkle 43_flower -->
<img src="/imgs/gif/mothersday/giphy_mothersday20.gif" onclick="mothersday(\'args\');return false;"
height=150 border=0 draggable="yes" >
       
<img src="/imgs/gif/mothersday/giphy_mothersday22.gif" onclick="window.open('/fb/mothersday');return false;"
height=150 border=0 draggable="yes" >
       
       
<!-- imgs/gif/giphy_fathersday/giphy_fatersday03.gif ..46.gif 10 13 31 -->
<img src="/imgs/gif/giphy_fathersday/giphy_fathersday10.gif" onclick="fathersday(\'args\');return false;"
return false;" height=150 border=0>
       
<img src="/imgs/gif/giphy_fathersday/giphy_fathersday31.gif" onclick="window.open('/fb/fathersday');return false;"
return false;" height=150 border=0>
<br>
<hr color=yellow>
<hr color=goldenrod>
<hr color=pink>
<br>
<!-- giphy_ann13.gif 18.gif 21.gif _06.gif -->
<h1>anniversary       -= holidays =-       reindependenceday</h1>
<img src="/imgs/gif/giphy_anniversary/giphy_ann21.gif" alt="anniversary"
onclick="annivarsary('args'); return false;" height=150 border=0>
       
<img src="/imgs/gif/giphy_reindependenceday/giphy_reindependenseday_03.gif" alt="reindependenceday"
onclick="reindependenceday('args'); return false;" height=150 border=0>
</div>
<br>
<hr color=yellow>
<hr color=orange>
<hr color=goldenrod>
<div id="div_anniversary" hidden>
<h1>happy 43 annivarsary 2020</h1>
<img src="/imgs/gif/anniversary/giphy_anniversary.gif" onclick="window.open('/fb/mothersday');return false;"
height=400 border=0 draggable="yes" >
</div>
<div id="div_reindependenceday" hidden>
<h1>happy reindependenceday 2020</h1>
<img src="/imgs/gif/reindependenceday/giphy_reindependenceday.gif" onclick="window.open('/fb/mothersday');return false;"
height=400 border=0 draggable="yes" >
</div>
<div id="div_mothersday" hidden>
<h1>happy mothersday 2020</h1>
<img src="/imgs/gif/mothersday/giphy_mothersday40.gif" onclick="window.open('/fb/mothersday');return false;"
height=400 border=0 draggable="yes" >
</div>
<hr color=pink>
<hr color=pink>
<br><br><br><br>
<hr color=white>
<hr color=linen>
<hr color=black>
<div id="div_postturtle_monkeytrap">
<!--
<img id="img_postturtle" src="/imgs/postturtle_moneytrap/postturtl2.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
<img id="img_monkeytrap" src="/imgs/postturtle_moneytrap/monkeytrap2.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
<img id="img_flood" src="/imgs/postturtle_moneytrap/floop_rooftop2.jpg" onclick="window.open('/?postturtle');return false;" height=200 border=0 draggable="true">
-->
<img id="img_postturtle" src="/imgs/postturtle_moneytrap/postturtl2.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=200 border=0 draggable="true">
<img id="img_monkeytrap" src="/imgs/postturtle_moneytrap/monkeytrap2.jpg" onclick="window.open('/kb/kt/funny_monkeys_vs_dogs_cats_compilation_2017.mp4');return false;" height=200 border=0 draggable="true">
<img id="img_flood" src="/imgs/postturtle_moneytrap/floop_rooftop2.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=200 border=0 draggable="true">
</div>
<br>
<hr color=black>
<hr color=red>
<hr color=white>
<hr color=blue>
<hr color=white>
<hr color=slategray>
<hr color=darkslategray>
<hr color=black>
<div id="div_tclaw" >
<hr color=red>
<hr color=white>
<hr color=blue>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<h1>iperms</h1>
<hr color=blue>
<hr color=white>
<hr color=red>
<img src="/fb/iperms/pages/1.jpg" alt="fb/law/tc"
onclick="window.open('iperms.com');return false;"
height=200 border=0>
       
<img src="/imgs/btn/ko_center2.png" alt="ko_center"
onclick="window.open('/ko_center/ko_center.php');return false;"
height=200 border=0>
       
<img src="/imgs/btn/ko_center_tools.png" alt="ko_center_tools"
onclick="window.open('/ko_center/ko_center.php?q=tools');return false;"
height=200 border=0>
       
<img src="/imgs/btn/ko_center_zm.png" alt="ko_center_zm"
onclick="window.open('/ko_center/zm5/hrc_d.htm');return false;"
height=200 border=0>
       
<img src="/fb/bh/pages/1.jpg" alt="fb/bluehost"
onclick="window.open('/fb/bh/');return false;"
height=100 border=0>
<br><br><br><br>
<hr color=darkslategray>
<!--
<img src="/imgs/links/bdo_cle-trouten_floyd.png" alt="bdo_cle-trouten_floyd"
https://bdo.com/out-people/trouten-floyd
https://www.linkedin.com/in/floydtrouten
       
-->
<br><br><br><br>
<hr color=darkslategray>
<img src="/imgs/us/checonsulting.png" alt="che_consulting"
onclick="window.open('https://checonsulting.com');return false;"
height=200 border=0>
       
<img src="/imgs/links/missioncontinues.jpg"
alt="missioncontinues.org"
onclick="window.open(\'https://missioncontinues.org\'); return false;"
height=200 border=0>
       
<img src="/fb/focus/pages/1.jpg" alt="fb/focus"
onclick="window.open('/fb/focus');return false;"
height=200 border=0>
       
<img src="/fb/konet/pages/1.jpg" alt="fb/law/tc"
onclick="window.open('konet.org');return false;"
height=200 border=0>
<hr color=white>
<hr color=white>
<br><br>
<img id="zm_img_hrc2011" src="/zm/hrc2011/TileGroup0/0-0-0.jpg" onclick="window.open('/zm/zm_hrc2011.html');return false;" height=150 border=0 draggable="true">
<br><br> <br><br>
<hr color=blue>
<hr color=white>
<hr color=red>
<h1>accounting</h1>
<hr color=goldenrod>
<h1>restructure n accounting</h1>
<h2>barnes_wendling/ssg/bdo_cle-trouten_floyd bdo_stl-kraner_richard</h2>
<hr color=red>
<hr color=white>
<hr color=blue>
<hr color=blue>
<hr color=white>
<hr color=red>
<h2>saic / leidos </h2>
<img src="/imgs/btn/ko_saic.png" alt="ko_saic"
onclick="window.open('/ko_saic/ko_saic.php');return false;"
height=300 border=0>
<br>
<h2>kraner_richard bdo-stl</h2>
<img src="/imgs/links/bdo_stl-kraner_richard.png" alt="bdo_stl-kraner_richard"
onclick="window.open('https://www.bdo.com/our-people/richard-kraner');return false;"
height=100 border=0>
<br>
<h2>trouten_floyd barnes_wendling/bdo_cle/ssg_cle</h2>
<img src="/imgs/links/barnes_wendling-trouten_floyd.jpg" alt="barnes_wendling-trouten_floyd"
onclick="window.open('https://www.barneswendling.com/employees/floyd-trouten/');return false;"
height=200 border=0>
<br>
<hr color=linen>
<h2>thompson coburn IP</h2>
<img src="/fb/law/tc/kk/pages/1.jpg" alt="fb/law/tc/kk"
onclick="window.open('/fb/law/tc/kk');return false;"
height=150 border=0>
<br>
<hr color=linen>
<h2>busey </h2>
<img src="/imgs/btn/btn_busey" alt="busey_bank"
onclick="window.open('https://busey.com');return false;"
height=150 border=0>
<br>
<hr color=linen>
<h2>focus solutions </h2>
<img src="/fb/focus/pages/1.jpg" alt="focus solutions"
onclick="window.open('/fb/focus');return false;"
height=150 border=0>
<br>
<hr color=linen>
<h2>sk2saic_alversio_2016 konet_itso_oy4_award_30007_po10093205_rel2</h2>
<img src="/imgs/btn/btn_pdf1.png" alt="sk2saic_alverson" class="class_btn_pdf"
onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/email_saic_sk2alverson.pdf');return false;"
height=100 border=0>
<img src="/imgs/btn/btn_pdf.png" alt="konet_itso_oy4_award_e0007_po10093205_rel2" class="class_btn_pdf"
onclick="window.open('/pdf/web/viewer.html?file=/fb/emails/pdf/konet_itso_oy4_award_e0007_po10093205_rel2.pdf');return false;"
height=100 border=0>
<br>
<h2>iperms.com focus checonsulting konet.org</h2>
<br>
<img src="/fb/iperms/pages/1.jpg" alt="iperms.com"
onclick="window.open('iperms.com');return false;"
height=200 border=0>
       
<img src="/fb/focus/pages/1.jpg" alt="focus"
onclick="window.open('/fb/focus');return false;"
height=100 border=0>
       
<img src="/imgs/us/checonsulting.png" alt="che_consulting"
onclick="window.open('https://checonsulting.com');return false;"
height=100 border=0>
       
<img src="/fb/konet/pages/1.jpg" alt="konet.org"
onclick="window.open('konet.org');return false;"
height=80 border=0>
<br><br><bt><br>
<hr color=goldenrod>
<hr color=goldenrod>
<div id="div_pdfs">
<h1>div_pdfs</h1>
</div>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<div id="div_pdfs_jtfdc"><h3>div_pdfs_jtfdc</h3></div>
<div id="div_pdfs_konet"><h3>div_pdfs_konet</h3></div>
<div id="div_pdfs_iperms"><h3>div_pdfs_iperms</h3></div>
<div id="div_pdfs_saic"><h3>div_pdfs_saic</h3></div>
<div id="div_pdfs_kdar"><h3>div_pdfs_kdar</h3></div>
<div id="div_pdfs_pastryroad"><h3>div_pdfs_pastryroad</h3></div>
<div id="div_pdfs_kou"><h3>div_pdfs_kou</h3></div>
<div id="div_pdfs_trial6"><h3>div_pdfs_trial6</h3></div>
<div id="div_pdfs_trial7"><h3>div_pdfs_trial7</h3></div>
<div id="div_pdfs_all"><h3>div_pdfs_all</h3></div>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<br><br><br><br>
<hr color=orange>
<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa1" alt="pdfs_default"
onclick="pdfs_show('div_pdfs','');return false;"
height=200 border=0>
default
<br>
<hr color=goldenrod>
<br><br><br>
<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_iperms"
onclick="pdfs_show('div_pdfs_iperms','iperms');return false;"
height=50 border=0>
iperms
     
<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_konet"
onclick="pdfs_show('div_pdfs_konet','konet');return false;"
height=50 border=0>
konet
     
<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_saic"
onclick="pdfs_show('div_pdfs_saic','saic');return false;"
height=50 border=0>
saic
     
<br><br><br><br>
<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_jtfdc"
onclick="pdfs_show('div_pdfs_jtfdc','jtfdc');return false;"
height=50 border=0>
jtfdc
     
<img src="/imgs/btn/btn_pdfsa1.png" id="img_btn_pdfsa2" alt="pdfs_kdar"
onclick="pdfs_show('div_pdfs_kdra','kdar');return false;"
height=50 border=0>
kdar
     
<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_pastryroad"
onclick="pdfs_show('div_pdfs_pastryroad','pastryroad');return false;"
height=50 border=0>
pastryroad
     
<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_kou"
onclick="pdfs_show('div_pdfs_kou','kou');return false;"
height=50 border=0>
kou
<br>
<br>
<br>
<hr color=darkslategray>
<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_trial6"
onclick="pdfs_show('div_pdfs_trial6','trial6');return false;"
height=100 border=0>
<br>
<h2>trial6 jkwii_v_jtfinc 202008?? judge heggie </h2>
<br>
<h3>hoa roadmaint not done jtf28 - jtf29 - jtf30</h3>
<br>
<hr color=darkslategray>
<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdf1" alt="pdfs_trial7"
onclick="pdfs_show('div_trial7','trial7');return false;"
height=100 border=0>
<br>
<h2>trial7 jkwii_v_byrdbell 20200818_1800 judge concannon</h2>
<br><br><br><br>
<hr color=linen>
<img src="/imgs/btn/btn_pdfsa2.png" id="img_btn_pdfsa1" alt="pdfs_all"
onclick="pdfs_show('div_pdfs_all','all');return false;"
height=200 border=0>
<hr color=linen>
<br>
<hr color=linen>
<hr color=linen>
<hr color=linen>
<hr color=red>
<hr color=white>
<hr color=blue>
<h1>memes: a barr_christmas_story</h1>
<a href="/kb/memes/a_barr_christmas_story/index.html" class="popover" target=_blank>
<img src="/kb/memes/a_barr_christmas_story/barr_painting.png" height=300 border=0>
<span><img src="/kb/memes/a_barr_christmas_story/barrbunny_painting_inset.png" height=300 border=0></span>
</a>
       
<a href="/kb/memes/a_barr_christmas_story/index.html" class="popover" target=_blank>
<!--
<img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=10 border=0 >
<span><img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=300 border=0></span>
-->
<img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=10 border=0 >
<span><img src="imgs//gif/spacers/giphy_spacer_11.gif" width=150 height=300 border=0></span>
</a>
<a href="/kb/memes/a_barr_christmas_story/index.html" class="popover" target=_blank>
<img src="/kb/memes/a_barr_christmas_story/barrbunny_painting.png" height=300 border=0 >
<span><img src="/kb/memes/a_barr_christmas_story/barr_painting_inset.png" height=300 border=0></span>
</a>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<hr color=black>
<hr color=linen>
<hr color=black>
<!--
<img id="zm_takings_all_took" src="/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg" onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html');return false;" height=100 border=0 draggable="true">
       
<img id="zm_img_jtf2930" src="/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg " onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html');return false;" height=100 border=0 draggable="true">
       
-->
<br><br><br><br>
<hr color=linen>
<img src="/fb/jkwii/pages/1.jpg" alt="who2jail"
onclick="window.open('/fb/jkwii');return false;"
height=150 border=0>
       
<img id="zm_takings_all_took" src="/fb/law/jkwiiv_byrdbell/zm/donutvanlaw_takings/TileGroup0/0-0-0.jpg" onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_donutvanlaw_takings.html');return false;" height=100 border=0 draggable="true">
       
<img id="zm_img_jtf2930" src="/fb/law/jkwiiv_byrdbell/zm/jtf2930/TileGroup0/0-0-0.jpg " onclick="window.open('/fb/law/jkwiiv_byrdbell/zm/zm_jtf2930.html');return false;" height=100 border=0 draggable="true">
       
<!-- <img id="img_flood_law" src="/imgs/postturtle_moneytrap/floop_rooftop2.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=100 border=0 draggable="true"> -->
<img id="img_flood_law" src="/fb/law/pages/zn/zn_10.jpg" onclick="window.open('/fb/law/pages/zn/zn_10.jpg');return false;" height=100 border=0 draggable="true">
       
<!-- <img id="img_postturtle_law" src="/imgs/postturtle_moneytrap/postturtl2.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=100 border=0 draggable="true"> -->
<img id="img_postturtle_law" src="/jtfdcr.jpg" onclick="window.open('/jtfdcr.jpg');return false;" height=100 border=0 draggable="true">
       
<img src="/imgs/gif/notes/giphy_notes10.gif" alt="notes"
onclick="window.open('/txt/notes.txt');return false;"
height=75 border=0>
       
<img src="/imgs/gif/notes/giphy_notes03.gif" alt="ko_saic"
onclick="window.open('/txt/jtfdcr_mp4.txt');return false;"
height=75 border=0>
       
<img src="/fb/jtfdcr/pages/columbia_pw_adminiwii_ko2us.jpg" alt="jtfdc_protection_welcome"
onclick="window.open('/jtfdc_stalkarounds.html');return false;"
height=150 border=0>
       
<br><br> <br><br>
<hr color=black>
<hr color=linen>
<hr color=black>
<h1>jtfdc_stalkarounds jtfdc_20190516_0800_byrd_seagrist_dog_n_officers_bell_n_p</h1>
<h2>adverse possession</h2>
<img src="/fb/who2jail/pages/1.jpg" alt="who2jail"
onclick="window.open('/fb/who2jail');return false;"
height=150 border=0>
       
<img src="/imgs/btn/byrdbell..png" alt="jtfdc_20190516_0822_byrdbell_mp4"
onclick="window.open('/byrdbell.mp4');return false;"
height=150 border=0>
   
<img src="/imgs/btn/byrdbell1.png" alt="jtfdc_20190516_0822_byrdbell_mp4"
onclick="window.open('/byrdbell1.mp4');return false;"
height=100 width=100 border=0>
   
<img src="/imgs/btn/byrdbell2.png" alt="jtfdc_20190516_0822_byrdbell_mp4"
onclick="window.open('/byrdbell2.mp4');return false;"
height=75 width=75 border=0>
   
<img src="/imgs/btn/byrdbell3.png" alt="jtfdc_20190516_0822_byrdbell_mp4"
onclick="window.open('/byrdbell3.mp4');return false;"
height=50 width=50 border=0>
       
<img src="/fb/law/jkwiiv_byrdbell/pages/1.jpg" alt="jkwiiv_byrdbell"
onclick="window.open('/fb/law/jkwiiv/byrdbell');return false;"
height=150 border=0>
<hr color=black>
<hr color=linen>
<hr color=black>
<img src="/fb/jtfdc/pages/1.jpg" alt="fb/jtfdc"
onclick="window.open('/fb/jtfdc/');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/pages/1.jpg" alt="fb/jtfdcr"
onclick="window.open('/fb/jtfdcr');return false;"
height=200 border=0>
       
<img src="/fb/jtfinc/pages/1.jpg" alt="fb/jtfdcr"
onclick="window.open('/fb/jtfinc');return false;"
height=100 border=0>
       
       
<img src="/fb/stlc/pages/1.jpg" alt="fb/stlc"
onclick="window.open('/fb/stlc/');return false;"
height=200 border=0>
<br><br> <br><br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<img src="/fb/law/sl/pages/1.jpg" alt="fb/law/sl"
onclick="window.open('/fb/law/sl/');return false;"
height=200 border=0>
       
<img src="/fb/law/tc/pages/1.jpg" alt="fb/law/tc"
onclick="window.open('/fb/law/tc/');return false;"
height=200 border=0>
       
<img src="/fb/law/tc/kk/pages/1.jpg" alt="fb/law/tc/kk"
onclick="window.open('/fb/law/tc/kk');return false;"
height=150 border=0>
       
<img src="/fb/law/tc/db/pages/1.jpg" alt="fb/law/tc/db"
onclick="window.open('/fb/law/tc/db');return false;"
height=150 border=0>
       
       
<img src="/fb/law/law_law501/pages/1.jpg" alt="fb/law/law_law501"
onclick="window.open('/fb/law/law_law501/');return false;"
height=150 border=0>
       
<img src="/imgs/links/law_lawson_terry.jpg" alt="law_lawson_terry"
onclick="window.open('https://www.legaldirectories.com/Lawson-Terry-L-Jr-513853-Atty.aspx');return false;"
height=100 border=0>
       
<img src="/imgs/us/cohen_alan_w_twitter.png" alt="cohen_alan_w"
onclick="window.open('https://twitter.com/AlanWCohenEsq');return false;"
height=100 border=0>
       
<img src="/imgs/btn/btn_law_mccloskey.png" alt="mccloskeylaw"
onclick="window.open('https://www.mccloskeylaw.com');return false;"
height=150 border=0>
       
<img src="/imgs/btn/btn_law_kodner_watkins.png" alt="law_kodner_watkins"
onclick="window.open('https://www.kwklaw.net');return false;"
height=150 border=0>
       
<!--
<img src="/imgs/links/law_riezmanberger.jpg" alt="riezmanberger.com/"
onclick="window.open('https://www.riezmanberger.com/');return false;"
height=100 border=0>
       
-->
<br>
<hr color=linen>
<h1>riezmanberger - tyler_connor - jtfinc v jsk</h1>
<img src="/imgs/hats/hatclass_white1.png" alt="hatclass_white1"
onclick="window.open('/imgs/hats/hatclass_white1.png');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_riezmanberger_connor_tyler.jpg" alt="riezmanberger.com/"
onclick="window.open('https://www.riezmanberger.com/attorney-p-tyler-connor.html ');return false;"
height=100 border=0>
       
<img src="/imgs/hats/hatclass_white2.png" alt="hatclass_white2"
onclick="window.open('/imgs/hats/hatclass_white2.png');return false;"
height=100 border=0>
<hr color=linen>
<br>
<hr color=darkslategray>
<h1>castle doctrine law.cornell.edu</h1>
<h2>byrdbell v jkwii</h2>
<img src="/imgs/links/wiki_castle_doctrine.jpg"
alt="law_cornell_edu_castle_doctrin/"
onclick="window.open('https://en.wikipedia.org/wiki/Castle_doctrine');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_cornell_edu_castle_doctrine.jpg"
alt="law_cornell_edu_castle_doctrine"
onclick="window.open('https://www.law.cornell.edu/wex/castle_doctrine');return false;"
height=100 border=0>
<br>
<hr color=linen>
<h2>20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii</h2>
<h3>judge_daniel_brown</h3>
<h3>judge_craig_j_concannon</h3>
<h3>judge_celeste_e_endicott</h3>
<img src="/fb/jtfdcr/imgs/stlc_municipal_court_judges.jpg"
alt="stl_municiple_court_judges"
onclick="window.open('https://www.stlouisco.com/Law-and-Public-Safety/Municipal-Courts/Judges/JudgeCraigJConcannon'); return false;"
height=100 border=0>
       
       
<img src="/fb/jtfdcr/imgs/judge_concannon_craig_j.jpg"
alt="20200818_1800_trial7_honorable_judge_concannon_byrdbell_v_jkwii"
onclick="window.open('https://www.stlouisco.com/Law-and-Public-Safety/Municipal-Courts/Judges/Judge-Craig-J-Concannon'); return false;"
height=100 border=0>
       
<img src="/fb/jtfdcr/imgs/law_craigjconcannon_fb.jpg"
alt="law_concannon_facebook"
onclidk="window.open('https://www.facebook.com/LawOfficeOfCraigJConcannon/'); return false;"
height=100 border=0>
       
<img src="/fb/jtfdcr/imgs/law_craigjconcannon.jpg"
alt="law_concannon"
onclidk="window.open('https://www.facebook.com/LawOfficeOfCraigJConcannon/'); return false;"
height=100 border=0>
       
<img src="/fb/jtfdcr/imgs/law_craigjconcannon_about.jpg"
alt="law_concannon_about"
onclidk="window.open('https://www.linkedin.com/in/craig-concannon-64aa2119'); return false;"
height=100 border=0>
       
<img src="/fb/jtfdcr/imgs/law_craigjconcannon_about.jpg"
alt="law_concannon_about"
onclidk="window.open('https://www.linkedin.com/in/craig-concannon-64aa2119'); return false;"
height=100 border=0>
       
<img src="/fb/jtfdcr/imgs/stlc_20160404_ferguson_journos_judge_discretion.jpg"
alt="stlc_20160404_ferguson_journos_judge_discretion"
onclidk="window.open('https://www.courthousenews.com/arrested-journos-claim-judge-abused-discretion/'); return false;"
height=100 border=0>
       
<br>
<hr color=linen>
<img src="/fb/law/jkwii_v_byrdbell/pages/1.jpg"
alt="law_20200818_1800_trial7_judge_concannon_byrdbell_v_jkwii"
onclidk="window.open('/fb/law/jkwii_v_byrdbell'); return false;"
height=100 border=0>
<br>
<hr color=linen>
<img src="/imgs/links/law_fritzlawstl.jpg"
alt="fritzlawstl"
onclick="window.open('https://fritzlawstl.com');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_fritzlawstl_john_p_fritz.jpg"
alt="law_fritzlawstl_john_p_fritz"
onclick="window.open('https://fritzlawstl.com/attorneys/john-fritz');return false;"
height=100 border=0>
<br>
<hr color=linen>
<img src="/imgs/links/law_klar_izsak_stenger.jpg"
alt="lawsaintlouis_klar_izsak_stenger"
onclick="window.open('https://www.lawsaintlouis.com');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_kis_michael_p_singer_iii.jpg"
alt="kis_michael_p_singer_iii/"
onclick="window.open('https://www.lawsaintlouis.com/michael-p-singer-iii.html');return false;"
height=100 border=0>
<br>
<hr color=linen>
<img src="/imgs/links/law_bellonlawgroup.jpg"
alt="bellon_law_group"
onclick="window.open('https://www.bellonlawgroup.com');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_bellonlawgroup_sarah_brown.jpg"
alt="bellonlawgroup_susan_brown"
onclick="window.open('https://www.bellonlawgroup.com/attorney-profiles.html');return false;"
height=100 border=0>
<br>
<hr color=linen>
<img src="/imgs/links/law_jennifer_alterrieken.jpg"
alt="law_jennifer_alter-rieken"
onclick="window.open('https://jenalterlaw.com');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_korner.jpg"
alt="law_korner"
onclick="window.open('https://kornerlaw.com');return false;"
height=100 border=0>
       
<br>
<img src="/imgs/links/law_dowd_bennett.jpg"
alt="law_dowd_bennett"
onclick="window.open('https://www.dowdbennett.com/attorneys/');return false;"
height=100 border=0>
       
<img src="/imgs/links/law_dowd_bennett_gabriel_e_gore.jpg"
alt="law_dowd_bennett_gabriel_e_gore"
onclick="window.open('https://www.dowdbennett.com/attorneys/gabriel-gore/');return false;"
height=100 border=0>
       
<br>
https://www.dowdbennett.com/attorneys/
<hr color=linen>
<br>
<br>
<hr color=darkslategray>
<img src="/fb/law/law_keuhlig_alexander/pages/1.jpg"
alt="/fb/law/law_keuhlig_alexander/pages/1.jpg"
onclick="window.open('/fb/law/law_keuhlig_alexander/pages/1.jpg');return false;"
height=200 border=0>
       
<br><br><br><br>
<hr color=linen>
<hr color=linen>
<img src="/fb/law/law_cohen_alan/pages/1.jpg" alt="fb/law/law_cohen_alan"
onclick="window.open('/fb/law/law_cohen_alan');return false;"
height=100 border=0>
       
<img src="/fb/law/law_keuhlig_alexander/pages/1.jpg" alt="fb/law/keuhlig_alexander"
onclick="window.open('/fb/law/law_keuhlig_alexander');return false;"
height=100 border=0>
       
<img src="/fb/law/law_walters_alan/pages/1.jpg" alt="fb/law/keyhlig_alexander"
onclick="window.open('/fb/law/law_walters_alan');return false;"
height=100 border=0>
       
<img src="/fb/law/law_elster_henry/pages/1.jpg" alt="fb/law/keyhlig_alexander"
onclick="window.open('/fb/law/law_elster_henry');return false;"
height=100 border=0>
       
<img src="/fb/law/law_smith_brown/pages/1.jpg" alt="fb/law/keyhlig_alexander"
onclick="window.open('/fb/law/law_smith_brown');return false;"
height=100 border=0>
       
<img src="/fb/law/law_korein_tillery/pages/1.jpg" alt="fb/law/keyhlig_alexander"
onclick="window.open('/fb/law/law_korein_tillery');return false;"
height=100 border=0>
<br><br><br><br>
<hr color=darkslategray>
<hr color=darkslategray>
<img src="/imgs/hats/hatreflect_white1.png"
alt="hatreflect_white1"
onclick="window.open('/imgs/hats/hatreflect_white1.png');return false;"
height=50 border=0>
       
<img src="/imgs/us/law_dolley_kellyj.png" alt="/fb/law/law_dolly"
onclick="window.open('/fb/law/law_dolly/');return false;"
height=200 border=0>
       
<img src="/imgs/hats/hatreflect_white2.png"
alt="hatreflect_white2"
onclick="window.open('/imgs/hats/hatreflect_white2.png');return false;"
height=50 border=0>
<br>
<hr color=linen>
<hr color=darkslategray>
<img src="/imgs/hats/hatreflect_black1.png"
alt="hatreflect_black1"
onclick="window.open('/imgs/hats/hatw_reflection.png');return false;"
height=50 border=0>
<img src="/imgs/us/law_cohen_nathan_s.png" alt="fb/law/law_cohen_nathan_s"
onclick="window.open('/fb/law/law_cohen_nathan');return false;"
height=100 border=0>
       
<img src="/imgs/us/lawdonovan.png" alt="lawdonovan.com"
onclick="window.open('http://lawdonovan.com');return false;"
height=200 border=0>
       
<img src="/imgs/hats/hatreflect_black2.png"
alt="hatreflect_black2"
onclick="window.open('/imgs/hats/hatw_reflection.png');return false;"
height=50 border=0>
<hr color=darkslategray>
<hr color=darkslategray>
<hr color=red>
<hr color=white>
<hr color=blue>
<div id="div_fb_law" >
<h1>div_fb_law</h1>
</div>
<hr color=white>
<br><br><br><br>
<a href=# onclick="fb_law('');return false;" class="popover" target=_blank>
<img id="img_fb_law" src="/imgs/btn/kob.png" border=0>
<span><img id="img_fb_law2" src="/imgs/btn/btn_fb_law.png" height=250 border=0 ></span>
</a>
<br><br><br><br>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<br><br><br><br>
<div id="div_fb_links">
<h1>div_fb_links</h1>
</div>
<br><br><br><br>
<hr color=white>
<a href=# onclick="show_fb_links('pop');return false;" class="popover" target=_blank>
<img src="/fb/imgs/tn/tn_fb_cartoon_shelf1.png" border=0>
<span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png" width=200></span>
</a>
<a href=# onclick="show_fb_links('');return false;" class="popover" target=_blank>
<img src="/fb/imgs/tn/tn_fb_cartoon_shelf2.png" border=0>
<span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png" width=200></span>
</a>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<hr color=white>
<hr color=red>
<hr color=white>
<hr color=blue>
<hr color=red>
<hr color=white>
<hr color=blue>
<div id="div_jtfdc_stalkarounds_head" >
<hr color=pink>
<hr color=pink>
<hr color=pink>
<h1>pre 43 anniversary / july4 reindependence day stalkarounds</h1>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=black>
<hr color=black>
<hr color=darkslategray>
<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png"
alt="jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20200704_0000_gazibo_privatedrive_keepout_IMG_9434_800.png');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
alt="jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg"
onclick="window.open('/fb/jtfdcr/imgs/jtfdc_20200704_0000_privatedrive_notrespassing_IMG_9437.jpg');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg"
alt="jtfdc_keepout_covd19.jpg"
onclick="window.open('/fb/jtfdcr/pages/jtfdc_keepout_covd19.jpg');return false;"
height=200 border=0>
       
<img src="/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
alt="IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg"
onclick="window.open('/fb/jtfdcr/imgs/IMG_5611_jtfdc_original_notrespassing_willbeprosecuted.jpg');return false;"
height=200 border=0>
<br><br><br><br>
<hr color=darkslategray>
<hr color=darkslategray>
<h1>jtfdc stalkarounds</h1>
<hr color=darkslategray>
<br>
<h1>div_jtfdc_stalkarounds</h1>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<img src="/imgs/btn/koeye_jtfdc_stalkarounds.png" alt="div_zpid"
onclick="window.open('/index_jtfdc_stalkarounds.html'); return false;"
height=100 border=0>
<br>
<hr color=goldenrod>
<hr color=goldenrod>
<hr color=goldenrod>
<div id="div_jtfdc_stalkarounds" >
<h1>div_jtfdc_stalkarounds</h1>
</div>
<hr color=white>
<br><br><br><br>
<a href=# onclick="jtfdc_stalkarounds('');return false;" class="popover" target=_blank>
<img id="img_jtfdc_stalkarounds" src="/imgs/btn/kob.png" border=0>
<span><img id="img_jtfdc_stalkarounds2" src="/imgs/btn/btn_jtfdc_stalkarounds.png" height=250 border=0 ></span>
</a>
<br><br><br><br>
<br><br><br><br>
<hr color=red>
<hr color=white>
<hr color=blue>
<br><br><br><br>
<div id="div_jtfdc_stalkarounds_links">
<h1>div_jtfdc_stalkarounds_links</h1>
</div>
<br><br><br><br>
<hr color=white>
<a href=# onclick="show_jtfdc_stalkarounds_links('pop');return false;" class="popover" target=_blank>
<img src="/fb/imgs/tn/tn_fb_cartoon_shelf1.png" border=0>
<span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk1.png" width=200></span>
</a>
<a href=# onclick="show_jtfdc_stalkarounds_links('');return false;" class="popover" target=_blank>
<img src="/fb/imgs/tn/tn_fb_cartoon_shelf2.png" border=0>
<span><img src="/fb/imgs/tn/tn_fb_cartoon_stackwalk2.png" width=200></span>
</a>
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<hr color=white>
<hr color=red>
<hr color=white>
<hr color=blue>
<!--
<iframe src="/jsdoit_clock.html" height=100 border=0 draggable="true" frameborder="0" scrolling="yes" ></iframe>
<iframe src="/jsdoit_sailboat.html" height=100 border=0 draggable="true" frameborder="0" scrolling="yes" ></iframe>
<iframe id="myframe_neave_wobble" src="/index_neave_wobble.html" width="300" height="200" frameborder="0" scrolling="yes"></iframe>
<iframe id="myframe_neave_wobble" src="/index_neave_wobble.html" width="600" height="200" frameborder="0" scrolling="yes"></iframe>
-->
<br><br>
<hr color="blue">
<iframe id="myframe_neave_im" src="/index_neave_im.html" width="700" height="200" frameborder="0" scrolling="yes"></iframe>
<hr color="blue">
<br><br>
<hr color="red">
<hr color="white">
<hr color="blue">
<hr color="blue">
<hr color="white">
<hr color="red">
<br><br>
<img src="/imgs/jsdoit/jsdoit_clock.png" onclick="window.open('/jsdoit_clock.html');return false;" height=100 border=0 draggable="true" >
<img src="/imgs/jsdoit/jsdoit_sailboat.png" onclick="window.open('/jsdoit_sailboat.html');return false;" height=100 border=0 draggable="true" >
<img src="/imgs/jsdoit/jsdoit_shoo.png" onclick="window.open('/jsdoit_shoo.html');return false;"
height=100 border=0 draggable="true" >
     
<img src="/imgs/jsdoit/jsdoit_shoot.png" onclick="window.open('/jsdoit_shoot.html');return false;"
height=100 border=0 draggable="true" >
     
<br><br><br><br>
<img src="/imgs/jsdoit/jsdoit.png" onclick="window.open('/jsdoit.html');return false;"
height=100 border=0 draggable="true" >
<img src="/imgs/jsdoit/jsdoit_kokbdm.png" onclick="window.open('/svc/kokbdm/index.html');return false;"
height=100 border=0 draggable="true" frameborder="0" scrolling="yes" ></iframe>
<hr color=black>
<hr color=darkslategray>
<hr color=slategray>
<br><br><br>
<!-- <center> -->
<br><br><br><br>
<div id="div_kov_w" ><h1>div_kov_w</h1></div>
<br><br><br><br>
<div id="div_divs" ><h1>div_divs</h1>
<img src="/imgs/btn/koeye_handhither.gif" onclick="koshow('divs'); return false;"
draggable="true" height=50 >
<img src="/imgs/btn/koeyeb_divs.png" onclick="koshow('divs'); return false;"
draggable="true" height=50 >
</div id="div_divs_tail">
<br><br><br><br>
<div id="div_kovs" ><h1>div_kovs</h1>
<img src="/imgs/btn/koeye_handhither.gif" onclick="koshow('kovs'); return false;"
draggable="true" height=50 >
<img src="/imgs/btn/koeyeb_kovs.png" onclick="koshow('kovs'); return false;"
draggable="true" height=50 >
</div id="div_kovs_tail">
<br><br><br><br>
<div id="div_yt" ><h1>div_yt</h1>
bug hunting
<br>
<!--
<img src="/imgs/btn/koeye_handhither.gif" onclick="koshow('yt'); return false;"
draggable="true" height=50 >
-->
<img src="/imgs/btn/koeyeb_yt.png" onclick="koshow('yt'); return false;"
draggable="true" height=25 >
</div id="div_yt_tail">
<div id="div_bb_w"><h1>div_bb_w</h1>
<hr color=white>
<hr color=black>
<!-- <canvas id="canvas_anim" color="darkslategray" onclick="window.open('/?canvas'); return false;" -->
<canvas id="canvas_anim" onclick="window.open('/todays.html?id=jtfdc_202004'); return false;" height=400 witdh=400 draggable="true"></canvas>
<hr color=black>
<hr color=white>
<hr color=white>
<hr color=black>
<!-- <canvas id="canvas_wiibb" color="darkslategray" onclick="window.open('/?canvas'); return false;"
height=600 width=2000 draggable="true"></canvas>
-->
<!--
<canvas id="canvas_bbwii" onclick="window.open('/todays.html?id=jtfdc_202004'); return false;" height=650 witdh=2000 draggable="true"></canvas>
<hr color=black>
<hr color=white>
<hr color=yellow>
<canvas id="canvas_blobs" onclick="window.open('/blobs.html?id=jtfdc_202004'); return false;" height=650 witdh=2000 draggable="true"></canvas>
<hr color=white>
<hr color=black>
-->
<!--
<canvas id="canvas" color="darkslategray" onclick="window.open('/?canvas'); return false;"
height=600 width=2000 draggable="true"></canvas>
-->
<canvas id="canvas" color="darkslategray" onclick="window.open('/todays.html?id=jtfdcr_202004'); return false;"
height=600 width=2000 draggable="true"></canvas>
<hr color=black>
<hr color=white>
</div id="div_bb_w_tail">
<div id="div_hl_w">
<hr color=red>
<hr color=white>
<hr color=blue>
<img src="/fb/jtfdc/pages/jtfdc_keepout_covd_eagles.jpg" height=900
alt = "jtfdcr_keepout_covid_lockdown_eagles"
onclick="window.open('/todays.html?id=20200413');return false;"
width=1200 border=0>
<br>
<hr color=black>
<hr color=red>
<hr color=black>
<img src="/fb/med/imgs/cdc_coronavirus_disease_2019.png"
onclick="window.open('http://cdc.gov');return false;"
width=1200 border=0>
<hr color=blue>
<hr color=white>
<hr color=red>
<details id="details_w">
<summary>details_w</summary>
<h1> something small enough to escape casual notice</h1>
<pre>
global pandemic lockdown
shelter in place
<h1>our home - our private court - our business</h1>
<pre>
private court markers need to be
restored/returned/replaced
- sawhorse with stop and private property signs
- pair of our stolen/siezed 500 lb cement eagles
- pair of our stolen/siezed survallence cameras
who delegated authority to
prohibit and obstruct
our attempts to comply with
national "shelter in place/lockdown" orders
gang of insane neigbors declare
- our private court est 1978
- our private driveway 300 feet offroad since 2001
- our easement to our back yard and shared barn
thier public turnaround and commons
thier private dog pony club
all thier friends support thier taking
people should live your own lives
please just leave us alone
</pre>
defford court has its own
internal issues disputes to resolve with
the haslekassldorfers
our donutvanloaw showhorned
sisterhouse neigbors
ignore the severe and impending damage
thier unapproved mini-shed installation has caused.
- the 300 foot sinkhole under our driveway
- collapsing barn wall from erosion mud
- denial of service to our own back yard
needs to end
dogs / easement blockage /
setups and fake police calls
still working
making wonderful things happen
does a falling tree make a sound
if your not thier to hear it?
yes
"build it and they will come"
working on my party dress - nowhere to go
jkwii @hi_risk
</pre>
<img src="/fb/jtfdc/pages/1.jpg" onclick="window.open('/fb/jtfdc/'); return false;" border=0 height=100>
</details>
<img src="/imgs/btn/ko.png" onclick="window.open('http://ko2.us');return false;" >
<img src="/imgs/btn/koeye_jitsi.png" onclick="window.open('https://meet.jit.si/ko2us'); return false;" border=0 >
<img src="/imgs/btn/koeye_duckduckgo.png" onclick="window.open('http://duckduckgo.com');return false;" >
<img src="/imgs/btn/koeye_dailymail.png" onclick="window.open('http://dailymail.co.uk');return false;" >
<img src="/imgs/btn/koeye_zerohedge.png" onclick="window.open('http://zerohedge.com');return false;" >
<img src="/imgs/btn/koeye_youtube.png" onclick="window.open('http://youtube.com');return false;" >
<img src="/imgs/btn/koeye_mars.png" onclick="window.open('https://mars.nasa.gov/msl/multimedia/raw-images/?order=sol+desc%2Cinstrument_sort+asc%2Csample_type_sort+asc%2C+date_taken+desc&per_page=50&page=0&mission=msl');return false;" >
<img src="/imgs/btn/ok.png" onclick="window.open('http://ko1.us');return false;" >
<hr color=red>
<hr color=white>
<hr color=blue>
<!-- <img src="/imgs/btn/koeye_handhither.gif" onclick="startup_canvas(''); return false" height=50 border=0 > -->
<!-- <img src="/imgs/btn/koeye_handhither.gif" onclick="dttm(''); return false" height=50 border=0 > -->
<!--
<div id="div_buttons_hideshow_w" >
<h1>div_buttons_hideshow_w</h1>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('alloff');return false;" >
<canvas id="canvas_button_alloff_w" width=200 height=80 onclick="script_hideshow('alloff');return false;" ></canvas>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('allon');return false;" >
<canvas id="canvas_button_allon_w" width=200 height=80 onclick="script_hideshow('allon');return false;" ></canvas>
<br>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('head');return false;" >
<canvas id="canvas_button_head_w" width=200 height=80 onclick="script_hideshow('head');return false;" ></canvas>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('head');return false;" >
<canvas id="canvas_button_setup_w" width=200 height=80 onclick="script_hideshow('setup');return false;"></canvas>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('head');return false;" >
<canvas id="canvas_button_hunt_w" width=200 height=80 onclick="script_hideshow('hunt');return false;"></canvas>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('tag');return false;" >
<canvas id="canvas_button_tag_w" width=200 height=80 onclick="script_hideshow('tag');return false;"></canvas>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('swarm');return false;" >
<canvas id="canvas_button_swarm_w" width=200 height=80 onclick="script_hideshow('swarm');return false;"></canvas>
<img src="/imgs/btn/kop23.png" width=200 height=80 onclick="script_hideshow('tail');return false;" >
<canvas id="canvas_button_tail_w" width=200 height=80 onclick="script_hideshow('tail');return false;"></canvas>
-->
</div>
<hr color=yellow>
<hr color=red>
<!--
<div id="div_buttons_hideshow_b" ><h1>div_buttons_hideshow_b</h1></div>
<div id="div_buttons_hideshow_w" ><h1>div_buttons_hideshow_w</h1></div>
<div id="div_buttons_hideshow_m" ><h1>div_buttons_hideshow_m</h1></div>
-->
<canvas id="canvas_button_alloff_w"></canvas>
<canvas id="canvas_button_alltoggle_w"></canvas>
<canvas id="canvas_button_head_w"></canvas>
<!--
<canvas id="canvas_button_setup_w"></canvas>
<canvas id="canvas_button_av_w"></canvas>
<canvas id="canvas_button_fb_w"></canvas>
<canvas id="canvas_button_sl_w"></canvas>
<canvas id="canvas_button_tl_w"></canvas>
<canvas id="canvas_button_yt_w"></canvas>
<canvas id="canvas_button_zm_w"></canvas>
-->
<!--
<hr color=white>
<hr color=black>
<canvas id="canvas" color="darkslategray" onclick="window.open('/?canvas'); return false;"
height=600 width=2000 draggable="true"></canvas>
<hr color=black>
<hr color=white>
-->
<canvas id="canvas_w" onclick="window.open('/?canvas_w'); return false;" height=200 witdh=400 draggable="true"></canvas>
<canvas id="canvas_b" onclick="window.open('/?canvas_b'); return false;" height=400 witdh=200 draggable="true"></canvas>
<hr color=white>
<hr color=black>
<div id="div_msg_w" >
<h1>div_msg_w<h2>
</div>
<hr color=black>
<hr color=white>
<!-- <img src="/imgs/btn/koeye_handhither.gif" onclick="startup(''); return false" > -->
<!-- <img src="/imgs/btn/koeye_handhither.gif" onclick="script_hideshow('alloff'); return false" > -->
<hr color=white>
<hr color=black>
<div id="div_log_w" ><h1>div_log_w</h1></div>
<br><br><br><br>
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br><br><br>
<!--
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
<div id="div_fblink" >
<h1>div_fblink</h1>
<hr color=red>
<img src="/imgs/btn/koeye_handhither.gif" onclick="show_kolists('');return false;"
height=200 >
<hr color=red>
</div>
<div id="div_fb_w" ><h1>div_fb_w</h1>
<div id="canvas_fb">
<div class="zoom-icon zoom-icon-in"></div>
<div class="magazine-viewport">
<div class="container">
<div class="magazine">
<!-- Next button -->
<div ignore="1" class="next-button"></div>
<!-- Previous button -->
<div ignore="1" class="previous-button"></div>
</div>
</div>
</div>
-->
<!-- Thumbnails -->
<!--
<div id="div_tn"></div>
<div class="thumbnails" >
<div>
<ul>
<li class="i">
<img src="pages/tn/tn_1.png" width="76" height="100" class="page-1">
<span>1</span>
</li>
<li class="d">
<img src="pages/tn/tn_2.png" width="76" height="100" class="page-2">
<img src="pages/tn/tn_3.png" width="76" height="100" class="page-3">
<span>2-3</span>
</li>
<li class="d">
<img src="pages/tn/tn_4.png" width="76" height="100" class="page-4">
<img src="pages/tn/tn_5.png" width="76" height="100" class="page-5">
<span>4-5</span>
</li>
<li class="d">
<img src="pages/tn/tn_6.png" width="76" height="100" class="page-6">
<img src="pages/tn/tn_7.png" width="76" height="100" class="page-7">
<span>6-7</span>
</li>
<li class="d">
<img src="pages/tn/tn_8.png" width="76" height="100" class="page-8">
<img src="pages/tn/tn_9.png" width="76" height="100" class="page-9">
<span>8-9</span>
</li>
<li class="d">
<img src="pages/tn/tn_10.png" width="76" height="100" class="page-10">
<img src="pages/tn/tn_11.png" width="76" height="100" class="page-11">
<span>10-11</span>
</li>
<li class="d">
<img src="pages/tn/tn_12.png" width="76" height="100" class="page-12">
<img src="pages/tn/tn_13.png" width="76" height="100" class="page-13">
<span>12-13</span>
</li>
<li class="d">
<img src="pages/tn/tn_14.png" width="76" height="100" class="page-14">
<img src="pages/tn/tn_15.png" width="76" height="100" class="page-15">
<span>14-15</span>
</li>
<li class="d">
<img src="pages/tn/tn_16.png" width="76" height="100" class="page-14">
<img src="pages/tn/tn_17.png" width="76" height="100" class="page-15">
<span>16-17</span>
</li>
<li class="i">
<img src="pages/tn/tn_18.png" width="76" height="100" class="page-16">
<span>18</span>
</li>
<ul>
<div> </div>
</div>
</div>
</div id="div_fb_w_tail" >
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
-->
<br><br><br><br>
<br><br><br><br>
<br><br><br><br>
<hr color="white">
<hr color="pink">
<div id="div_happyeaster" >
<h1>div_happyeaster</h1>
<hr color="white">
<hr color="pink">
<hr color=white>
<hr color=pink>
<hr color=red>
<hr color=pink>
<hr color=white>
<!--
<script id="script_youtubeapi">
function youtube_api(args) {
var ytid = "WhWc3b3KhnY";
$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id="+ytid);
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);
}
</script>
-->
<div id="div_yt_w" draggable="true" ><h1>div_yt_w</h1>
<img src="https://img.youtube.com/vi/2Q3y3Cre1-k/default.jpg"
alt="yt_kitt_avril"
onclick="window.open('https://www.youtube.com/watch?v=2Q3y3Cre1-k');return false;"
); return false;"
height=200 border=0 >
<img src="https://img.youtube.com/vi/WhWc3b3KhnY/default.jpg"
alt="yt_spring"
onclick="window.open('https://www.youtube.com/watch?v=WhWc3b3KhnY');return false;"
); return false;"
height=200 border=0 >
       
<img src="https://img.youtube.com/vi/7fjTY_ABMj0/default.jpg"
alt="yt_morrison_2008"
onclick="window.open('https://www.youtube.com/watch?v=7fjTY_ABMj0&list=PL7919B9B0B051C6A8&index=1'); return false;"
); return false;"
height=200 border=0 >
       
<img src="https://img.youtube.com/vi/IAaLzP1U4nc/default.jpg"
alt="yt_first_of_spring"
onclick="window.open('https://www.youtube.com/watch?v=IAaLzP1U4nc');return false;"
); return false;"
height=200 border=0 >
<img src="https://img.youtube.com/vi/T2fLsCPd1-I/default.jpg"
alt="yt_chillicothe_1938"
onclick="window.open('https://www.youtube.com/watch?v=T2fLsCPd1-I');return false;"
); return false;"
height=200 border=0 >
<br><br>
<!--
<img src="https://img.youtube.com/vi/QEcTjhUN_7U/default.jpg"
alt="yt_harold_loyd_safty"
onclick="window.open('https://www.youtube.com/watch?v=QEcTjhUN_7U');return false;"
); return false;"
height=100 border=0 >
       
-->
<!--
<img src="/imgs/btn/kobubbleb_avril.png"
alt="test2_mp4 /index1_avril.mp4"
onclick="window.open('/index1_avril.mp4');return false;"
); return false;"
height=200 border=0 >
-->
       
<br><br>
<hr color=green>
<img src="/imgs/btn/kobubbleb.png"
alt="videobox_avril /index1_avril.mp4"
onclick="window.open('/av/show_videobox.html?avid=/index1_avril.mp4');return false;"
); return false;"
height=100 border=0 >
       
<!-- twins <img src="/imgs/gif/eggs/giphy_eggs_03.gif" height=100> -->
<!-- <img src="/imgs/gif/eggs/giphy_eggs_03.gif" height=200 -->
<hr color=black>
<img src="http://ka12/fb/jtfdcr/pages/columbia_pw_adminiwii_ko2us.jpg" alt="jtfdc_protection_welcome"
onclick="window.open('/jtfdc_stalkarounds.html');return false;"
height=150 border=0>
<br>
<hr color=black>
<div id="div_jtfdc_stalkarounds">
<h1>jtfdc_stalkarounds</h1>
</div>
<script id="script_jtfdc_stalkarounds">
function jtfdc_stalkarounds(args) {
// alert( "BUGS_6700 jtfdc_stalkarounds args="+args );
kolists['jtfdc_stalkarounds'] =
`/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.jpg
/kb/jtfdcr/vid/jtfdc_kids/jtfdc_20200411_1538_ks.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200411_1538_ks.jpg
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.jpg`;
kolists['jtfdc_stalkarounds_20200503'] = `
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_2006_stalkaroundup_whtchvy_ladies_LG5ZOE_IMG_9402.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/tn_jtfdc_20200714_1815_stalkaround_jtfcerememaybe_allbelongs2us_jkwii_notthese3_IMG_9364.mp4
/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200424_1850_stalkaroundup_speedy_bigtruckvan.jpg
/kb/jtfdcr/vid/jtfdc_kids/jtfdc_20200411_1538_ks.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200411_1538_ks.jpg
# /kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4|/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.jpg
`;
if( document.getElementById('div_jtfdc_stalkarounds')) {
if( document.getElementById('div_jtfdc_stalkarounds').style.display == "inline" ) {
document.getElementById('div_jtfdc_stalkarounds').style.display == "none" );
if( document.getElementById('img_jtfdc_stalkarounds')) {
document.getElementById('img_jtfdc_stalkarounds').src="/imgs/btn/kob.png";
}
if( document.getElementById('img_jtfdc_stalkarounds2')) {
document.getElementById('img_jtfdc_stalkarounds2').src="/imgs/btn/btn_jtfdc_stalkarounds.png";
}
return(args);
}
if( document.getElementById('div_jtfdc_stalkarounds').style.display == "none" ) {
document.getElementById('div_jtfdc_stalkarounds').style.display == "inline" );
if( document.getElementById('img_jtfdc_stalkarounds')) {
document.getElementById('img_jtfdc_stalkarounds').src="/imgs/btn/kow.png";
}
if( document.getElementById('img_jtfdc_stalkarounds2')) {
document.getElementById('img_jtfdc_stalkarounds2').src="/imgs/btn/kob.png";
}
return(args);
}
}
// alert( "BUGS_6851 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
jaxurl="/txt/jtfdc_stalkarounds.txt";
if( filecheck(jaxurl)) {
jax(jaxurl);
kolists['jtfdc_stalkarounds']=kolists['jax'];
// alert( "BUGS_6852 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
}
kolists['jtfdc_stalkarounds']=kolists['jax'];
alert( "BUGS_6853 jtfdc_stalkarounds kolists_jtfdc_stalkarounds="+kolists['jtfdc_stalkarounds'] );
htmout = '';
list=kolists['jtfdc_stalkarounds'].split("\n");
htmout += '<div id="div_jtfdc_stalkarounds" >';
htmout += ' <h1>div_jtfdc_stalkarounds</h1>';
for( j=0; j<list.length; j++ ) {
line=list[j];
if( line=="" ) { continue; }
if( /^#/.test(line)) { continue; }
src_mp4=line;
src_tn=src_mp4.replace(".mp4",".jpg");
// pipelen=line.split("|");
src_mp4=line.split("|")[0];
src_tn=line.split("|")[1];
title=j+" "+src_mp4;
title=title.replace(".mp4","");
title=title.replace("/kb/","");
// alert( "BUGS_5370 src_mp4="+src_mp4 );
// alert( "BUGS_5370 src_tn="+src_tn );
// if(! filecheck(src_mp4)) {
// alert( "BUGS_5370 NOTFOUND src_mp4="+src_mp4 );
// src_mp4="/kb/vid/notfound.mp4";
// }
// if(! filecheck(src_tn)) {
// src_tn="/imgs/notfound.gif";
// }
htmout += ' <h2>'+title+'</h2>';
htmout += ' <img src="'+src_tn+'" ';
htmout += ' onclick="window.open(\''+src_mp4+'\'); return false;" ';
htmout += ' height=100 border=0 draggable="true" >';
htmout += ' <br>';
// alert( "BUGS_5371 jtfdc_stalkarounds htmout="+htmout );
// alert( "BUGS_5372 jtfdc_stalkarounds htmout="+htmout );
}
htmout += ' </div>';
htmout += '<hr color=black>';
htmout += '<hr color=white>';
htmout += '<br><br><br><br>';
divid="div_jtfdc_stalkarounds";
if( document.getElementById(divid)) {
// alert( "BUGS_5380 DIV_FOUND jtfdc_stalkarounds htmout="+htmout );
document.getElementById(divid).innerHTML=htmout;
}
// alert( "BUGS_5390 jtfdc_stalkarounds htmout="+htmout );
}
</script>
<img src="/imgs/btn/kobubblew.png"
alt="videobox_chillicothe"
onclick="window.open('/av/show_videobox_chillicothe.html?avid=/kb/vid/jkwii/jtfdcchillicothe_ohio_the_good_old_days_1938_looking_back.mp4');return false;"
); return false;"
height=100 border=0 >
       
<!--
<img src="/imgs/btn/kobubblew_avril.png"
alt="chillicothe_ohio_good_old_days_1938_looking_back"
onclick="window.open(
'/kb/vid/jkwii/jtfdcchillicothe_ohio_the_good_old_days_1938_looking_back.mp4'
); return false;"
height=200 border=0 >
-->
</div id="div_yt_w_tail" >
<hr color=white>
<hr color=pink>
<hr color=red>
<hr color=pink>
<!-- </div id="div_unknown_tail"> -->
<hr color=white>
<hr color=pink>
<div id="div_body_w" draggable="true" ><h1>div_body_w</h1>
<img src="/fb/heart/pages/1.jpg" alt="heart" onclick="window.open('/fb/heart/');return false;"
height=100 border=0 >
     
<img src="/gm/imgs/btn/btn_chapelofthecross.png" alt="chapelofthecross" onclick="window.open('https://www.chapelofthecross.org/');return false;"
height=100 border=0 >
     
<!-- <img src="/imgs/gif/eggs/giphy_eggs_01.gif" alt="gm" onclick="window.open('/gm/gm_eggs.html');return false;" -->
<img src="/fb/birthday/pages/1.jpg" alt="fb/birthday" onclick="window.open('/fb/birthday/');return false;"
height=200 border=0 >
     
<img src="/imgs/btn/jsdoit.png" alt="jsdoit" onclick="window.open('/jsdoit.html');return false;"
height=200 border=0 >
     
<img src="/fb/birthday/pages/1.jpg" alt="fb/birthday" onclick="window.open('/fb/birthday/');return false;"
height=200 border=0 >
     
<img src="/imgs/btn/koeye_blobs.png" alt="koeye_blobs"
onclick="window.open('/blob.html');return false;"
height=200 border=0>
     
<img src="/imgs/gif/eggs/giphy_eggs_03.gif" alt="gm" onclick="window.open('/gm/gm_eggs.html');return false;"
height=200 border=0 >
     
<img src="/gm/imgs/btn/btn_latterdaysaints_stl.png" alt="latterdaysaints" onclick="window.open('https://www.facebook.com/pages/LDS-Temple-St-Louis-MO/161979377153524');return false;"
height=100 border=0 >
     
<img src="/fb/soul/pages/1.jpg" alt="heart" onclick="window.open('/fb/soul/');return false;"
height=100 border=0 >
     
<hr color="pink">
<hr color="white">
</div id="div_body_w_tail" >
<hr color="pink">
<hr color="white">
<div id="div_jtfdcr_w" draggable="true" >
<div id="div_jtfdcr_dot_dot_dot" >
<br>
<hr color="black">
<hr color="black">
<hr color="black">
<br>
<h1>jtfdcr_dot_dot_dot ... </h1>
<h2> 20200408 ... 20200328</h2>
<hr color=black>
<hr color=yellow>
<hr color=black>
<img src="/fb/med/imgs/cdc_banner.png" height=100 onclick="window.open('http://cdc.gov');return false;" >
<hr color=black>
<hr color=yellow>
<hr color=black>
<br>
<h1>defford court report 20200326-20200330_0900</h1>
<h3>20200326_1830 offroad shiny white suv medmask</h3>
<!-- <img src="/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.png" -->
<!-- <img src="/gm/imgs/btn/btn_cycle.png" -->
<img src="/imgs/btn/kobubble.png"
alt="jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu"
onclick="window.open(
'/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200327_1532_stalkaround_jtf30_yellowcycler_fu_fu_fu.mp4'
); return false;"
height=100 border=0 >
<img src="/fb/donutvanlaw/pages/1.jpg"
alt="jtf32_donutvanlaw" onclick="window.open(
'/fb/donutvanlaw/'
);return false;"
height=100 border=0 >
     
<img src="https://img.youtube.com/vi/Oo4KXZVApsQ/default.jpg"
alt="yt_spring"
onclick="window.open('https://www.youtube.com/watch?v=Oo4KXZVApsQ');return false;"
); return false;"
height=200 border=0 >
<img src="/fb/soul/pages/koeye_faithchurch.png"
alt="faithchurch" onclick="window.open( 'http://faithchurch.com'
);return false;"
height=100 border=0 >
     
<img src="/imgs/btn/koeye_todays"
alt="todays" onclick="window.open( '/todays.html?id=20200413'
);return false;"
height=100 border=0 >
     
<img src="/kb/jtfdcr/vid/jtfdc_20170529_memorialday_tiny/jtfdc_20170529_0703_00028_memorialday_jkwii_jtf30_doogy.png"
alt="tourdedonut_stl" onclick="window.open( '/holidays.html?id=jtfdc_20170529_memorialday'
);return false;"
height=100 border=0 >
     
<img src="/gm/imgs/btn/btn_tourdedonut_stl.png"
alt="tourdedonut_stl" onclick="window.open( 'http://www.tourdedonut.org/'
);return false;"
height=100 border=0 >
     
<img src="/gm/imgs/btn/btn_bebikeclub.png"
alt="bebikeclub" onclick="window.open(
'https://www.bebikeclub.org/'
);return false;"
height=100 border=0 >
     
<!--
btn_tourdedonut.org
http://www.tourdedonut.org/
-->
<h3>20200328_0928 chapel_of_the_crosswalkers jtf4- "hi mr_T says jkwii"
"go to hell" says mr_T back to wii"
</h3>
<details id="detail_crosswalkers">
<h2>detail_crosswalkers</h2>
<pre>
satruday 9:28
two mature woman strangers appear
wander into our private 3 house court
explore our obstructed barn/backyard easement
curious
what are you two here to see
apparently your not here for me
looking familiar they searched back through time
we all discover together thier old friend of mine
old friends from our old church
all three kids attended there
well before this corona scare
invited the ladies for a quick tour
appear they were here as mr_T lures
from over the hill
mr_T speeds into our court
"hi mr_T" but no reply
"is this man bothering you ladies"
failed new police incident schedules to report
"go to hell" mr_T only retort
curious
old time neighbors from our youth
are just the one who have forgotten the truth
jkwii@hi_risk
</pre>
</details>
<!-- <img src="/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.png" -->
<!-- '/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4' -->
<!-- <img src="/gm/imgs/btn/btn_chapelcrosswalkers.png" -->
<img src="/imgs/btn/kobubble.png"
alt="/kb/jtfdcr/vid/jtfdc_stalkarounds_tiny/tn_jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4"
onclick="window.open(
'/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_0920_jkwii_chapelwakers_tomazy_got2hell_lures.mp4'
); return false;"
height=100 border=0 >
     
<img src="/fb/byrdpucker/pages/1.jpg"
alt="jtf39_byrdpucker" onclick="window.open(
'/fb/byrdpucker'
);return false;"
height=100 border=0 >
     
<img src="/gm/imgs/btn/btn_ks_contractors.png"
alt="fb_ks_contractors_stl" onclick="window.open('https://ksgcstl.com');return false;"
height=80 border=0 >
     
<img src="/gm/imgs/btn/btn_fb_ks_contractors.png"
alt="fb_ks_contractors" onclick="window.open( 'https://www.facebook.com/K.T.Contracting85/photos/a.647903691927784/1407436845974461/?type=1&theater');return false;"
height=80 border=0 >
     
<img src="/gm/imgs/btn/btn_fb_sk_contractors.png"
alt="fb_ks_contractors" onclick="window.open(
'https://www.facebook.com/skcontractors4344/'
);return false;"
height=80 border=0 >
     
<img src="/gm/imgs/btn/btn_cardinalcontractors_stl.png"
alt="cardinalcontractors_stl" onclick="window.open(
'https://cardinalcontractorsllc.com/'
);return false;"
height=80 border=0 >
     
<img src="/gm/imgs/btn/btn_fb_cardinalcontractors_stl.png"
alt="fb_cardinalcontractors_stl" onclick="window.open(
'https://www.facebook.com/cardinalroof/'
);return false;"
height=80 border=0 >
     
<img src="/gm/imgs/btn/btn_alberici.png"
alt="alberici" onclick="window.open( 'https://alberici.com/');return false;"
height=80 border=0 >
     
<img src="/gm/imgs/btn/btn_fb_alberici.png"
alt="fb_alberici" onclick="window.open( 'https://www.facebook.com/AlbericiConstructors');return false;"
height=80 border=0 >
     
<br>
<hr color=blue>
<hr color=lightblue>
<img src="/imgs/links/biz_bistatepool.jpg"
alt="bistatepool"
onclick="window.open('https://bistatepool.com');return false;"
height=100 border=0>
<hr color=lightblue>
<hr color=blue>
<br><br>
<img src="/imgs/btn/kobubble.png"
alt="jtfdc_20200328_2235_stalkarounup_xmaslite_rumble_truck" onclick="window.open(
'/kb/jtfdcr/vid/jtfdc_stalkarounds/jtfdc_20200328_2235_stalkarounup_xmaslite_rumble_truck.mp4'
);return false;"
height=80 border=0 >
</div>
</div id="div_jtfdcr_w_tail" >
<hr color=red>
<hr color=white>
<hr color=blue>
<hr color=black>
<h1>- = +</h1>
<img src="/imgs/btn/koeye_alloff.png" onclick="window.open('/mobmin.html');return false;" >
<img src="/imgs/btn/koeye.png" onclick="window.open('/');return false;" >
<img src="/imgs/btn/btn_gm.png" onclick="window.open('/gm/');return false;" height=100 >
<img src="/imgs/gif/view/giphy_view19.gif" onclick="window.open('/mob_vu.html');return false;" height=100 >
<img src="/imgs/btn/koeye.png" onclick="window.open('/');return false;" >
<img src="/imgs/btn/koeye_allon.png" onclick="window.open('/mobmax.html');return false;" >
<hr color=black>
<hr color=blue>
<hr color=white>
<hr color=red>
<h1>- = +</h1>
<img src="/ko1/pages/1.jpg" onclick="window.open('http://ko1.us');return false;" border=0 height=100 >
<img src="/fb/konet/pages/1.jpg" onclick="window.open('http://konet.org');return false;" border=0 height=100 >
<img src="/fb/iperms/pages/1.jpg" onclick="window.open('http://iperms.com');return false;" border=0 height=100 >
<hr color=blue>
<hr color=white>
<hr color=red>
<br><br>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<h2>- + =</h2>
<img src="/gm/pages/1.jpg" onclick="window.open('/gm/');return false;" height=100 border=0 >
<img src="/fb/operation/pages/1.jpg" onclick="window.open('/fb/operation/');return false;" height=100 border=0 >
<img src="/fb/kitiworks/pages/1.jpg" onclick="window.open('/fb/kitiworks/');return false;" height=100 border=0 >
<img src="/fb/pastryroad/pages/1.jpg" onclick="window.open('/fb/pastryroad/');return false;" height=100 border=0 >
<img src="/fb/jkwii/pages/1.jpg" onclick="window.open('/fb/jkwii/');return false;" height=100 border=0 >
<img src="/fb/jtfdc/pages/1.jpg" onclick="window.open('/fb/jtfdc/');return false;" height=100 border=0 >
<img src="/fb/kt/pages/1.jpg" onclick="window.open('/fb/kt/');return false;" target=_blank border=0 height=100>
<hr color=pink>
<hr color=pink>
<hr color=pink>
<hr color=white>
<hr color=black>
<h2>- = +</h2>
<img src="/fb/birthday/pages/1.jpg" onclick="window.open('/fb/birthday/');return false;" height=100 border=0 >
<img src="/fb/neuz/pages/1.jpg" onclick="window.open('/fb/neuz/');return false;" height=100 border=0 >
<img src="/fb/law/pages/1.jpg" onclick="window.open('/fb/law/');return false;" height=100 border=0 >
<img src="/fb/med/pages/1.jpg" onclick="window.open('/fb/med/');return false;" height=100 border=0 >
<img src="/fb/gov/pages/1.jpg" onclick="window.open('/fb/gov/');return false;" height=100 border=0 >
<img src="/fb/iperms/pages/1.jpg" onclick="window.open('/fb/iperms/');return false;" height=100 border=0 >
<img src="/fb/pages/1.jpg" onclick="window.open('/fb/');return false;" height=100 border=0 >
<img src="/fb/jtfdc/pages/1.jpg" onclick="window.open('/fb/jtfdc/');return false;" height=100 border=0 >
<img src="/fb/konet/pages/1.jpg" onclick="window.open('/fb/konet/');return false;" height=100 border=0 >
<img src="/fb/gofunwii/pages/1.jpg" onclick="window.open('/fb/gofunwii/');return false;" height=100 border=0 >
<hr color=black>
<hr color=white>
<hr color=white>
<hr color=black>
<!--
<h3>h3</h3>
<canvas id="canvas_b" onclick="window.open('/?q=b'); return false;" color=black ></canvas>
<canvas id="canvas_w" onclick="window.open('/?q=w'); return false;" color=white ></canvas>
<canvas id="canvas_m" onclick="window.open('/?q=m'); return false;" color=maize ></canvas>
-->
<hr color=white>
<hr color=black>
<hr color=white>
<hr color=black>
<hr color=black>
<hr color=white>
<hr color=red>
<hr color=blue>
<!--
<img src="/imgs/btn/koeye_handhither.gif" onclick="document.location.href='/?handhither'; return false;">
-->
<hr color=yellow>
<hr color=black>
<hr color=yellow>
<hr color=black>
<hr color=yellow>
<!--
<style id="style_videobox">
// div {
div_video {
position: absolute;
top: 50%;
transform: translate(-50%,-50%);
width: 480px;
height: 380px;
border-radius: 10px;
background-color: #eee;
background-image: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.1));
}
.hidden {left: -50%;}
.showing {left: 50%;}
// div video {
div_video video {
display: block;
width: 400px;
margin: 40px auto;
}
</style>
-->
<hr color=red>
<hr color=white>
<hr color=blue>
<!--
<button>Display video</button>
<div_video id="div_videobox" class="hidden">
<video id="video_videobox">
<source src="/index1_avril.mp4" type="video/mp4">
<source src="/index1_avril.webm" type="video/webm">
<p>access_logged <a href="/index1_avril.mp4"></a>.</p>
</video>
</div>
-->
<hr color=red>
<hr color=white>
<hr color=blue>
<button id="button" ></button>
<div id="div" ><h1>div</h1></div>
<video id="video" ></video>
<script id="script_videobox">
function videobox(args) {
const btn = document.querySelector('button');
const videoBox = document.querySelector('div');
const video = document.querySelector('video');
btn.onclick = function() {
videoBox.setAttribute('class','showing');
videoBox.onclick = function() {
videoBox.setAttribute('class','hidden');
};
video.onclick = function(e) {
e.stopPropagation();
video.play();
};
}
</script>
<div id="div_yt_b" draggable="true><h1>div_yt_b</h1>
<hr color=black>
<hr color=white>
<img src="/imgs/btn/kobubble.png"
alt="leonard_cohen_slow_mp4"
onclick="window.open('/kb/vid/jkwii/jkwiileonard_cohen_slow_audio.mp4');return false;"
); return false;"
height=100 border=0 >
       
<img src="/imgs/btn/kobubble.png"
alt="test3_htm /kb/vid/jkwii/jkwiileonard_cohen_slow_audio.mp4"
onclick="window.open('/av/show_videobox_slow.html?avid=/kb/vid/jkwii/jkwiileonard_cohen_slow_audio.mp4');return false;"
); return false;"
height=50 border=0 >
<hr color=white>
<hr color=black>
</div id="div_yt_b" draggable="true>
<div id="div_tail">
<h2>div_tail</h2>
<a href="/notes.txt" target=_blank><img src=/imgs/gif/notes/giphy_notes10.gif height=100 border=0 alt="notes.txt"></a>
<a href="/mobmin.html" class="popover" target=_blank>
<img src="/imgs/btn/giphy_phone01.gif" width=100 height=100>
</a>
<a href="/index2big4most.html" class="popover" target=_blank>
<img src="/imgs/btn/giphy_mouse01.gif" width=100 height=100>
</a>
<a href="/mobmax.html" class="popover" target=_blank>
<img src="/imgs/btn/giphy_phone01.gif" width=100 height=100>
</a>
<a href="/find_jtfdc_mp4.txt" target=_blank>
<img src=/imgs/gif/notes/giphy_notes08.gif height=100 border=0 alt="find_jtfdc_mp4">
</a>
</div>
</div>
<hr color=red>
<hr color=red>
<hr color=white>
<hr color=blue>
<div id="div_dd_w" draggable="true" ><h1>div_dd_w</h1>
<div id="div_drop" ondrop="dropw1(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_steel_linear.png" height=100 width=600>
</div>
<div id="div_drop0" ondrop="dropw1(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_frax4d01.png" height=100 width=600>
</div>
<div id="div_drop1" ondrop="dropw1(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton04a.png" height=100 width=600>
</div>
<div id="div_drop2" ondrop="dropw1(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton04b.png" height=100 width=600>
</div>
<div id="div_dropw" ondrop="dropw(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton06.png" height=100 width=600>
</div>
<div id="div_dropb" ondrop="dropb(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton06a.png" height=100 width=600>
</div>
<div id="div_dropw1" ondrop="dropw1(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton06b.png" height=100 width=600>
</div>
<div id="div_dropb1" ondrop="dropb1(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton07a.png" height=100 width=600>
</div>
<div id="div_dropw2" ondrop="dropw2(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_newton07b.png" height=100 width=600>
</div>
<div id="div_dropb2" ondrop="dropb2(event)" ondragover="allowDrop(event)">
<img src="/gm/imgs/bg/bg_background1.png" height=100 width=600>
</div>
<hr color=red>
<hr color=red>
<hr color=red>
<hr color=red>
<img id="img_drop" src="/gm/imgs/btn/ko.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<img id="img_drop0" src="/gm/imgs/btn/koeye.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<img id="img_drop1" src="/gm/imgs/btn/koeyew.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<img id="img_drop2" src="/gm/imgs/btn/koeyeb.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<img id="img_dropw" src="/gm/imgs/btn/kiw.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<img id="img_dropb" src="/gm/imgs/btn/kib.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<br>
<br>
<img id="drag12" src="/imgs/btn/kop12.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag13" src="/imgs/btn/kop23.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag14" src="/imgs/btn/kop34.png" draggable="true" ondragstart="drag(event)" height=50 >
<!-- <img id="drag15" src="/imgs/btn/kop14.png" draggable="true" ondragstart="drag(event)" height=50 > -->
<br>
<img id="img_dropw1" src="/gm/imgs/btn/kop12.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<!-- <img id="img_dropb1" src="/gm/imgs/btn/kop23.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50> -->
<img id="img_dropb2" src="/gm/imgs/btn/kop14.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<img id="img_dropw2" src="/gm/imgs/btn/kop34.png" ondrop="dropb2(event)" ondragover="allowDrop(event)" height=50>
<hr color=white>
<img id="drag1" src="/imgs/btn/ko.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag3" src="/imgs/btn/koeye.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag4" src="/imgs/btn/koeyeb.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag5" src="/imgs/btn/koeyew.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag2" src="/imgs/btn/ok.png" draggable="true" ondragstart="drag(event)" height=50 >
<br>
<br>
<img id="drag8" src="/imgs/btn/kop1.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag9" src="/imgs/btn/kop2.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag10" src="/imgs/btn/kop3.png" draggable="true" ondragstart="drag(event)" height=50 >
<img id="drag11" src="/imgs/btn/kop4.png" draggable="true" ondragstart="drag(event)" height=50 >
<br>
<img id="drag16" src="/imgs/btn/kop1234.png" draggable="true" ondragstart="drag(event)" height=50 >
</div id="div_dd_tail_w" >
<script id="script_drop">
function drop(e) {
// var e_id=e.getAttribute('id');
// var eid = e.attribute("id");
// var e_id=e.getAttribute("id");
alert( "MSG_1000 drop e="+e);
}
function drop0(e) {
alert( "MSG_1000 drop0 e="+e);
}
function drop1(e) {
alert( "MSG_1000 drop1 e="+e);
}
function drop2(e) {
alert( "MSG_1000 drop2 e="+e);
}
function dropb(e) {
alert( "MSG_1000 dropb e="+e);
}
function dropw(e) {
alert( "MSG_1000 dropw e="+e);
}
function dropb1(e) {
alert( "MSG_1000 drob1 e="+e);
}
function dropw1(e) {
alert( "MSG_1000 dropw1 e="+e);
}
function dropb2(e) {
alert( "MSG_1000 dropb2 e="+e);
}
function dropw2(e) {
alert( "MSG_1000 dropw2 e="+e);
}
</script>
<div id="div_form" hidden>
<h1>div_form</h1>
<form id="form" >
<div id="div_form_fname">
<label for="fname">First name: </label>
<input id="fname" type="text">
</div>
<div id="div_form_lname">
<label for="lname">Last name: </label>
<input id="lname" type="text">
</div>
<div id="div_form_submit">
<input id="submit" type="submit">
</div>
</form>
<p></p>
</div>
<script id="script_form">
const form = document.querySelector('form');
const fname = document.getElementById('fname');
const lname = document.getElementById('lname');
const para = document.querySelector('p');
form.onsubmit = function(e) {
if (fname.value === '' || lname.value === '') {
e.preventDefault();
para.textContent = 'both';
}
}
</script>
<!-- </center> -->
<div id="div_btn_hideshow_b" ><h3>div_btn_hideshow_b</h3></div>
<div id="div_buttons_hideshow_b"><h3>div_buttons_hideshow_b</h3></div>
<div id="div_kogrids_b"></div>
<!-- <script src='/fb/extras/jquery.min.1.7.js'></script> -->
<!-- <script src='/fb/extras/modnizr.2.5.3.min.js'></script> -->
<!-- <script src='/fb/lib/hash.js'></script> -->
<!-- <script src='/fb/lib/turn_html4.js'></script> -->
<!-- <script src='/fb/lib/zoom.js'></script> -->
<!-- <script src='/fb/html/magazine/js/magazine.js'></script> -->
<!-- <script src='data:/text/plain;base64,LyoKICogTWFnYXppbmUgc2FtcGxlCiovCgpmdW5jdGlvbiBhZGRQYWdlKHBhZ2UsIGJvb2spIHsKCgl2YXIgaWQsIHBhZ2VzID0gYm9vay50dXJuKCdwYWdlcycpOwoKCS8vIENyZWF0ZSBhIG5ldyBlbGVtZW50IGZvciB0aGlzIHBhZ2UKCXZhciBlbGVtZW50ID0gJCgnPGRpdiAvPicsIHt9KTsKCgkvLyBBZGQgdGhlIHBhZ2UgdG8gdGhlIGZsaXBib29rCglpZiAoYm9vay50dXJuKCdhZGRQYWdlJywgZWxlbWVudCwgcGFnZSkpIHsKCgkJLy8gQWRkIHRoZSBpbml0aWFsIEhUTUwKCQkvLyBJdCB3aWxsIGNvbnRhaW4gYSBsb2FkZXIgaW5kaWNhdG9yIGFuZCBhIGdyYWRpZW50CgkJZWxlbWVudC5odG1sKCc8ZGl2IGNsYXNzPSJncmFkaWVudCI+PC9kaXY+PGRpdiBjbGFzcz0ibG9hZGVyIj48L2Rpdj4nKTsKCgkJLy8gTG9hZCB0aGUgcGFnZQoJCWxvYWRQYWdlKHBhZ2UsIGVsZW1lbnQpOwoJfQoKfQoKZnVuY3Rpb24gbG9hZFBhZ2UocGFnZSwgcGFnZUVsZW1lbnQpIHsKCgkvLyBDcmVhdGUgYW4gaW1hZ2UgZWxlbWVudAoKCXZhciBpbWcgPSAkKCc8aW1nIC8+Jyk7CgoJaW1nLm1vdXNlZG93bihmdW5jdGlvbihlKSB7CgkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJfSk7CgoJaW1nLmxvYWQoZnVuY3Rpb24oKSB7CgkJCgkJLy8gU2V0IHRoZSBzaXplCgkJJCh0aGlzKS5jc3Moe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSk7CgoJCS8vIEFkZCB0aGUgaW1hZ2UgdG8gdGhlIHBhZ2UgYWZ0ZXIgbG9hZGVkCgoJCSQodGhpcykuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwoKCQkvLyBSZW1vdmUgdGhlIGxvYWRlciBpbmRpY2F0b3IKCQkKCQlwYWdlRWxlbWVudC5maW5kKCcubG9hZGVyJykucmVtb3ZlKCk7Cgl9KTsKCgkvLyBMb2FkIHRoZSBwYWdlCgoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLmpwZycpOwoKCWxvYWRSZWdpb25zKHBhZ2UsIHBhZ2VFbGVtZW50KTsKCn0KCi8vIFpvb20gaW4gLyBab29tIG91dAoKZnVuY3Rpb24gem9vbVRvKGV2ZW50KSB7CgoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCWlmICgkKCcubWFnYXppbmUtdmlld3BvcnQnKS5kYXRhKCkucmVnaW9uQ2xpY2tlZCkgewoJCQkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0JykuZGF0YSgpLnJlZ2lvbkNsaWNrZWQgPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCWlmICgkKCcubWFnYXppbmUtdmlld3BvcnQnKS56b29tKCd2YWx1ZScpPT0xKSB7CgkJCQkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0Jykuem9vbSgnem9vbUluJywgZXZlbnQpOwoJCQkJfSBlbHNlIHsKCQkJCQkkKCcubWFnYXppbmUtdmlld3BvcnQnKS56b29tKCd6b29tT3V0Jyk7CgkJCQl9CgkJCX0KCQl9LCAxKTsKCn0KCgoKLy8gTG9hZCByZWdpb25zCgpmdW5jdGlvbiBsb2FkUmVnaW9ucyhwYWdlLCBlbGVtZW50KSB7CgoJJC5nZXRKU09OKCdwYWdlcy8nK3BhZ2UrJy1yZWdpb25zLmpzb24nKS4KCQlkb25lKGZ1bmN0aW9uKGRhdGEpIHsKCgkJCSQuZWFjaChkYXRhLCBmdW5jdGlvbihrZXksIHJlZ2lvbikgewoJCQkJYWRkUmVnaW9uKHJlZ2lvbiwgZWxlbWVudCk7CgkJCX0pOwoJCX0pOwp9CgovLyBBZGQgcmVnaW9uCgpmdW5jdGlvbiBhZGRSZWdpb24ocmVnaW9uLCBwYWdlRWxlbWVudCkgewoJCgl2YXIgcmVnID0gJCgnPGRpdiAvPicsIHsnY2xhc3MnOiAncmVnaW9uICAnICsgcmVnaW9uWydjbGFzcyddfSksCgkJb3B0aW9ucyA9ICQoJy5tYWdhemluZScpLnR1cm4oJ29wdGlvbnMnKSwKCQlwYWdlV2lkdGggPSBvcHRpb25zLndpZHRoLzIsCgkJcGFnZUhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0OwoKCXJlZy5jc3MoewoJCXRvcDogTWF0aC5yb3VuZChyZWdpb24ueS9wYWdlSGVpZ2h0KjEwMCkrJyUnLAoJCWxlZnQ6IE1hdGgucm91bmQocmVnaW9uLngvcGFnZVdpZHRoKjEwMCkrJyUnLAoJCXdpZHRoOiBNYXRoLnJvdW5kKHJlZ2lvbi53aWR0aC9wYWdlV2lkdGgqMTAwKSsnJScsCgkJaGVpZ2h0OiBNYXRoLnJvdW5kKHJlZ2lvbi5oZWlnaHQvcGFnZUhlaWdodCoxMDApKyclJwoJfSkuYXR0cigncmVnaW9uLWRhdGEnLCAkLnBhcmFtKHJlZ2lvbi5kYXRhfHwnJykpOwoKCglyZWcuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwp9CgovLyBQcm9jZXNzIGNsaWNrIG9uIGEgcmVnaW9uCgpmdW5jdGlvbiByZWdpb25DbGljayhldmVudCkgewoKCXZhciByZWdpb24gPSAkKGV2ZW50LnRhcmdldCk7CgoJaWYgKHJlZ2lvbi5oYXNDbGFzcygncmVnaW9uJykpIHsKCgkJJCgnLm1hZ2F6aW5lLXZpZXdwb3J0JykuZGF0YSgpLnJlZ2lvbkNsaWNrZWQgPSB0cnVlOwoJCQoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCSQoJy5tYWdhemluZS12aWV3cG9ydCcpLmRhdGEoKS5yZWdpb25DbGlja2VkID0gZmFsc2U7CgkJfSwgMTAwKTsKCQkKCQl2YXIgcmVnaW9uVHlwZSA9ICQudHJpbShyZWdpb24uYXR0cignY2xhc3MnKS5yZXBsYWNlKCdyZWdpb24nLCAnJykpOwoKCQlyZXR1cm4gcHJvY2Vzc1JlZ2lvbihyZWdpb24sIHJlZ2lvblR5cGUpOwoKCX0KCn0KCi8vIFByb2Nlc3MgdGhlIGRhdGEgb2YgZXZlcnkgcmVnaW9uCgpmdW5jdGlvbiBwcm9jZXNzUmVnaW9uKHJlZ2lvbiwgcmVnaW9uVHlwZSkgewoKCWRhdGEgPSBkZWNvZGVQYXJhbXMocmVnaW9uLmF0dHIoJ3JlZ2lvbi1kYXRhJykpOwoKCXN3aXRjaCAocmVnaW9uVHlwZSkgewoJCWNhc2UgJ2xpbmsnIDoKCgkJCXdpbmRvdy5vcGVuKGRhdGEudXJsKTsKCgkJYnJlYWs7CgkJY2FzZSAnem9vbScgOgoKCQkJdmFyIHJlZ2lvbk9mZnNldCA9IHJlZ2lvbi5vZmZzZXQoKSwKCQkJCXZpZXdwb3J0T2Zmc2V0ID0gJCgnLm1hZ2F6aW5lLXZpZXdwb3J0Jykub2Zmc2V0KCksCgkJCQlwb3MgPSB7CgkJCQkJeDogcmVnaW9uT2Zmc2V0LmxlZnQtdmlld3BvcnRPZmZzZXQubGVmdCwKCQkJCQl5OiByZWdpb25PZmZzZXQudG9wLXZpZXdwb3J0T2Zmc2V0LnRvcAoJCQkJfTsKCgkJCSQoJy5tYWdhemluZS12aWV3cG9ydCcpLnpvb20oJ3pvb21JbicsIHBvcyk7CgoJCWJyZWFrOwoJCWNhc2UgJ3RvLXBhZ2UnIDoKCgkJCSQoJy5tYWdhemluZScpLnR1cm4oJ3BhZ2UnLCBkYXRhLnBhZ2UpOwoKCQlicmVhazsKCX0KCn0KCi8vIExvYWQgbGFyZ2UgcGFnZQoKZnVuY3Rpb24gbG9hZExhcmdlUGFnZShwYWdlLCBwYWdlRWxlbWVudCkgewoJCgl2YXIgaW1nID0gJCgnPGltZyAvPicpOwoKCWltZy5sb2FkKGZ1bmN0aW9uKCkgewoKCQl2YXIgcHJldkltZyA9IHBhZ2VFbGVtZW50LmZpbmQoJ2ltZycpOwoJCSQodGhpcykuY3NzKHt3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJ30pOwoJCSQodGhpcykuYXBwZW5kVG8ocGFnZUVsZW1lbnQpOwoJCXByZXZJbWcucmVtb3ZlKCk7CgkJCgl9KTsKCgkvLyBMb2FkbmV3IHBhZ2UKCQoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLWxhcmdlLmpwZycpOwp9CgovLyBMb2FkIHNtYWxsIHBhZ2UKCmZ1bmN0aW9uIGxvYWRTbWFsbFBhZ2UocGFnZSwgcGFnZUVsZW1lbnQpIHsKCQoJdmFyIGltZyA9IHBhZ2VFbGVtZW50LmZpbmQoJ2ltZycpOwoKCWltZy5jc3Moe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSk7CgoJaW1nLnVuYmluZCgnbG9hZCcpOwoJLy8gTG9hZG5ldyBwYWdlCgoJaW1nLmF0dHIoJ3NyYycsICdwYWdlcy8nICsgIHBhZ2UgKyAnLmpwZycpOwp9CgovLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjg0ODgKCmZ1bmN0aW9uIGlzQ2hyb21lKCkgewoKCXJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpIT0tMTsKCn0KCmZ1bmN0aW9uIGRpc2FibGVDb250cm9scyhwYWdlKSB7CgkJaWYgKHBhZ2U9PTEpCgkJCSQoJy5wcmV2aW91cy1idXR0b24nKS5oaWRlKCk7CgkJZWxzZQoJCQkkKCcucHJldmlvdXMtYnV0dG9uJykuc2hvdygpOwoJCQkJCQoJCWlmIChwYWdlPT0kKCcubWFnYXppbmUnKS50dXJuKCdwYWdlcycpKQoJCQkkKCcubmV4dC1idXR0b24nKS5oaWRlKCk7CgkJZWxzZQoJCQkkKCcubmV4dC1idXR0b24nKS5zaG93KCk7Cn0KCi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBmb3IgdGhlIHZpZXdwb3J0CgpmdW5jdGlvbiByZXNpemVWaWV3cG9ydCgpIHsKCgl2YXIgd2lkdGggPSAkKHdpbmRvdykud2lkdGgoKSwKCQloZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCksCgkJb3B0aW9ucyA9ICQoJy5tYWdhemluZScpLnR1cm4oJ29wdGlvbnMnKTsKCgkkKCcubWFnYXppbmUnKS5yZW1vdmVDbGFzcygnYW5pbWF0ZWQnKTsKCgkkKCcubWFnYXppbmUtdmlld3BvcnQnKS5jc3MoewoJCXdpZHRoOiB3aWR0aCwKCQloZWlnaHQ6IGhlaWdodAoJfSkuCgl6b29tKCdyZXNpemUnKTsKCgoJaWYgKCQoJy5tYWdhemluZScpLnR1cm4oJ3pvb20nKT09MSkgewoJCXZhciBib3VuZCA9IGNhbGN1bGF0ZUJvdW5kKHsKCQkJd2lkdGg6IG9wdGlvbnMud2lkdGgsCgkJCWhlaWdodDogb3B0aW9ucy5oZWlnaHQsCgkJCWJvdW5kV2lkdGg6IE1hdGgubWluKG9wdGlvbnMud2lkdGgsIHdpZHRoKSwKCQkJYm91bmRIZWlnaHQ6IE1hdGgubWluKG9wdGlvbnMuaGVpZ2h0LCBoZWlnaHQpCgkJfSk7CgoJCWlmIChib3VuZC53aWR0aCUyIT09MCkKCQkJYm91bmQud2lkdGgtPTE7CgoJCQkKCQlpZiAoYm91bmQud2lkdGghPSQoJy5tYWdhemluZScpLndpZHRoKCkgfHwgYm91bmQuaGVpZ2h0IT0kKCcubWFnYXppbmUnKS5oZWlnaHQoKSkgewoKCQkJJCgnLm1hZ2F6aW5lJykudHVybignc2l6ZScsIGJvdW5kLndpZHRoLCBib3VuZC5oZWlnaHQpOwoKCQkJaWYgKCQoJy5tYWdhemluZScpLnR1cm4oJ3BhZ2UnKT09MSkKCQkJCSQoJy5tYWdhemluZScpLnR1cm4oJ3BlZWwnLCAnYnInKTsKCgkJCSQoJy5uZXh0LWJ1dHRvbicpLmNzcyh7aGVpZ2h0OiBib3VuZC5oZWlnaHQsIGJhY2tncm91bmRQb3NpdGlvbjogJy0zOHB4ICcrKGJvdW5kLmhlaWdodC8yLTMyLzIpKydweCd9KTsKCQkJJCgnLnByZXZpb3VzLWJ1dHRvbicpLmNzcyh7aGVpZ2h0OiBib3VuZC5oZWlnaHQsIGJhY2tncm91bmRQb3NpdGlvbjogJy00cHggJysoYm91bmQuaGVpZ2h0LzItMzIvMikrJ3B4J30pOwoJCX0KCgkJJCgnLm1hZ2F6aW5lJykuY3NzKHt0b3A6IC1ib3VuZC5oZWlnaHQvMiwgbGVmdDogLWJvdW5kLndpZHRoLzJ9KTsKCX0KCgl2YXIgbWFnYXppbmVPZmZzZXQgPSAkKCcubWFnYXppbmUnKS5vZmZzZXQoKSwKCQlib3VuZEggPSBoZWlnaHQgLSBtYWdhemluZU9mZnNldC50b3AgLSAkKCcubWFnYXppbmUnKS5oZWlnaHQoKSwKCQltYXJnaW5Ub3AgPSAoYm91bmRIIC0gJCgnLnRodW1ibmFpbHMgPiBkaXYnKS5oZWlnaHQoKSkgLyAyOwoKCWlmIChtYXJnaW5Ub3A8MCkgewoJCSQoJy50aHVtYm5haWxzJykuY3NzKHtoZWlnaHQ6MX0pOwoJfSBlbHNlIHsKCQkkKCcudGh1bWJuYWlscycpLmNzcyh7aGVpZ2h0OiBib3VuZEh9KTsKCQkkKCcudGh1bWJuYWlscyA+IGRpdicpLmNzcyh7bWFyZ2luVG9wOiBtYXJnaW5Ub3B9KTsKCX0KCglpZiAobWFnYXppbmVPZmZzZXQudG9wPCQoJy5tYWRlJykuaGVpZ2h0KCkpCgkJJCgnLm1hZGUnKS5oaWRlKCk7CgllbHNlCgkJJCgnLm1hZGUnKS5zaG93KCk7CgoJJCgnLm1hZ2F6aW5lJykuYWRkQ2xhc3MoJ2FuaW1hdGVkJyk7CgkKfQoKCi8vIE51bWJlciBvZiB2aWV3cyBpbiBhIGZsaXBib29rCgpmdW5jdGlvbiBudW1iZXJPZlZpZXdzKGJvb2spIHsKCXJldHVybiBib29rLnR1cm4oJ3BhZ2VzJykgLyAyICsgMTsKfQoKLy8gQ3VycmVudCB2aWV3IGluIGEgZmxpcGJvb2sKCmZ1bmN0aW9uIGdldFZpZXdOdW1iZXIoYm9vaywgcGFnZSkgewoJcmV0dXJuIHBhcnNlSW50KChwYWdlIHx8IGJvb2sudHVybigncGFnZScpKS8yICsgMSwgMTApOwp9CgpmdW5jdGlvbiBtb3ZlQmFyKHllcykgewoJaWYgKE1vZGVybml6ciAmJiBNb2Rlcm5penIuY3NzdHJhbnNmb3JtcykgewoJCSQoJyNzbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUnKS5jc3Moe3pJbmRleDogeWVzID8gLTEgOiAxMDAwMH0pOwoJfQp9CgpmdW5jdGlvbiBzZXRQcmV2aWV3KHZpZXcpIHsKCgl2YXIgcHJldmlld1dpZHRoID0gMTEyLAoJCXByZXZpZXdIZWlnaHQgPSA3MywKCQlwcmV2aWV3U3JjID0gJ3BhZ2VzL3ByZXZpZXcuanBnJywKCQlwcmV2aWV3ID0gJChfdGh1bWJQcmV2aWV3LmNoaWxkcmVuKCc6Zmlyc3QnKSksCgkJbnVtUGFnZXMgPSAodmlldz09MSB8fCB2aWV3PT0kKCcjc2xpZGVyJykuc2xpZGVyKCdvcHRpb24nLCAnbWF4JykpID8gMSA6IDIsCgkJd2lkdGggPSAobnVtUGFnZXM9PTEpID8gcHJldmlld1dpZHRoLzIgOiBwcmV2aWV3V2lkdGg7CgoJX3RodW1iUHJldmlldy4KCQlhZGRDbGFzcygnbm8tdHJhbnNpdGlvbicpLgoJCWNzcyh7d2lkdGg6IHdpZHRoICsgMTUsCgkJCWhlaWdodDogcHJldmlld0hlaWdodCArIDE1LAoJCQl0b3A6IC1wcmV2aWV3SGVpZ2h0IC0gMzAsCgkJCWxlZnQ6ICgkKCQoJyNzbGlkZXInKS5jaGlsZHJlbignOmZpcnN0JykpLndpZHRoKCkgLSB3aWR0aCAtIDE1KS8yCgkJfSk7CgoJcHJldmlldy5jc3MoewoJCXdpZHRoOiB3aWR0aCwKCQloZWlnaHQ6IHByZXZpZXdIZWlnaHQKCX0pOwoKCWlmIChwcmV2aWV3LmNzcygnYmFja2dyb3VuZC1pbWFnZScpPT09JycgfHwKCQlwcmV2aWV3LmNzcygnYmFja2dyb3VuZC1pbWFnZScpPT0nbm9uZScpIHsKCgkJcHJldmlldy5jc3Moe2JhY2tncm91bmRJbWFnZTogJ3VybCgnICsgcHJldmlld1NyYyArICcpJ30pOwoKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CgkJCV90aHVtYlByZXZpZXcucmVtb3ZlQ2xhc3MoJ25vLXRyYW5zaXRpb24nKTsKCQl9LCAwKTsKCgl9CgoJcHJldmlldy5jc3Moe2JhY2tncm91bmRQb3NpdGlvbjoKCQknMHB4IC0nKygodmlldy0xKSpwcmV2aWV3SGVpZ2h0KSsncHgnCgl9KTsKfQoKLy8gV2lkdGggb2YgdGhlIGZsaXBib29rIHdoZW4gem9vbWVkIGluCgpmdW5jdGlvbiBsYXJnZU1hZ2F6aW5lV2lkdGgoKSB7CgkKCXJldHVybiAyMjE0OwoKfQoKLy8gZGVjb2RlIFVSTCBQYXJhbWV0ZXJzCgpmdW5jdGlvbiBkZWNvZGVQYXJhbXMoZGF0YSkgewoKCXZhciBwYXJ0cyA9IGRhdGEuc3BsaXQoJyYnKSwgZCwgb2JqID0ge307CgoJZm9yICh2YXIgaSA9MDsgaTxwYXJ0cy5sZW5ndGg7IGkrKykgewoJCWQgPSBwYXJ0c1tpXS5zcGxpdCgnPScpOwoJCW9ialtkZWNvZGVVUklDb21wb25lbnQoZFswXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KGRbMV0pOwoJfQoKCXJldHVybiBvYmo7Cn0KCi8vIENhbGN1bGF0ZSB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNxdWFyZSB3aXRoaW4gYW5vdGhlciBzcXVhcmUKCmZ1bmN0aW9uIGNhbGN1bGF0ZUJvdW5kKGQpIHsKCQoJdmFyIGJvdW5kID0ge3dpZHRoOiBkLndpZHRoLCBoZWlnaHQ6IGQuaGVpZ2h0fTsKCglpZiAoYm91bmQud2lkdGg+ZC5ib3VuZFdpZHRoIHx8IGJvdW5kLmhlaWdodD5kLmJvdW5kSGVpZ2h0KSB7CgkJCgkJdmFyIHJlbCA9IGJvdW5kLndpZHRoL2JvdW5kLmhlaWdodDsKCgkJaWYgKGQuYm91bmRXaWR0aC9yZWw+ZC5ib3VuZEhlaWdodCAmJiBkLmJvdW5kSGVpZ2h0KnJlbDw9ZC5ib3VuZFdpZHRoKSB7CgkJCQoJCQlib3VuZC53aWR0aCA9IE1hdGgucm91bmQoZC5ib3VuZEhlaWdodCpyZWwpOwoJCQlib3VuZC5oZWlnaHQgPSBkLmJvdW5kSGVpZ2h0OwoKCQl9IGVsc2UgewoJCQkKCQkJYm91bmQud2lkdGggPSBkLmJvdW5kV2lkdGg7CgkJCWJvdW5kLmhlaWdodCA9IE1hdGgucm91bmQoZC5ib3VuZFdpZHRoL3JlbCk7CgkJCgkJfQoJfQoJCQoJcmV0dXJuIGJvdW5kOwp9'></script> -->
<script id="fb_extras_jquery_min_17_js" src='data:/text/plain;base64,LyohIGpRdWVyeSB2MS43IGpxdWVyeS5jb20gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gY0EoYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTphLm5vZGVUeXBlPT09OT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1mdW5jdGlvbiBjeChhKXtpZighY21bYV0pe3ZhciBiPWMuYm9keSxkPWYoIjwiK2ErIj4iKS5hcHBlbmRUbyhiKSxlPWQuY3NzKCJkaXNwbGF5Iik7ZC5yZW1vdmUoKTtpZihlPT09Im5vbmUifHxlPT09IiIpe2NufHwoY249Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjbi5mcmFtZUJvcmRlcj1jbi53aWR0aD1jbi5oZWlnaHQ9MCksYi5hcHBlbmRDaGlsZChjbik7aWYoIWNvfHwhY24uY3JlYXRlRWxlbWVudCljbz0oY24uY29udGVudFdpbmRvd3x8Y24uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjby53cml0ZSgoYy5jb21wYXRNb2RlPT09IkNTUzFDb21wYXQiPyI8IWRvY3R5cGUgaHRtbD4iOiIiKSsiPGh0bWw+PGJvZHk+IiksY28uY2xvc2UoKTtkPWNvLmNyZWF0ZUVsZW1lbnQoYSksY28uYm9keS5hcHBlbmRDaGlsZChkKSxlPWYuY3NzKGQsImRpc3BsYXkiKSxiLnJlbW92ZUNoaWxkKGNuKX1jbVthXT1lfXJldHVybiBjbVthXX1mdW5jdGlvbiBjdyhhLGIpe3ZhciBjPXt9O2YuZWFjaChjcy5jb25jYXQuYXBwbHkoW10sY3Muc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBjdigpe2N0PWJ9ZnVuY3Rpb24gY3UoKXtzZXRUaW1lb3V0KGN2LDApO3JldHVybiBjdD1mLm5vdygpfWZ1bmN0aW9uIGNsKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gY2soKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY2UoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxlPXt9LGcsaCxpPWQubGVuZ3RoLGosaz1kWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09InN0cmluZyImJihlW2gudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2hdKTtsPWssaz1kW2ddO2lmKGs9PT0iKiIpaz1sO2Vsc2UgaWYobCE9PSIqIiYmbCE9PWspe209bCsiICIrayxuPWVbbV18fGVbIiogIitrXTtpZighbil7cD1iO2ZvcihvIGluIGUpe2o9by5zcGxpdCgiICIpO2lmKGpbMF09PT1sfHxqWzBdPT09IioiKXtwPWVbalsxXSsiICIra107aWYocCl7bz1lW29dLG89PT0hMD9uPXA6cD09PSEwJiYobj1vKTticmVha319fX0hbiYmIXAmJmYuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK20ucmVwbGFjZSgiICIsIiB0byAiKSksbiE9PSEwJiYoYz1uP24oYyk6cChvKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGNkKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1hLm1pbWVUeXBlfHxjLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gY2MoYSxiLGMsZCl7aWYoZi5pc0FycmF5KGIpKWYuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkcudGVzdChhKT9kKGEsZSk6Y2MoYSsiWyIrKHR5cGVvZiBlPT0ib2JqZWN0Inx8Zi5pc0FycmF5KGUpP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZiIT1udWxsJiZ0eXBlb2YgYj09Im9iamVjdCIpZm9yKHZhciBlIGluIGIpY2MoYSsiWyIrZSsiXSIsYltlXSxjLGQpO2Vsc2UgZChhLGIpfWZ1bmN0aW9uIGNiKGEsYyl7dmFyIGQsZSxnPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBjKWNbZF0hPT1iJiYoKGdbZF0/YTplfHwoZT17fSkpW2RdPWNbZF0pO2UmJmYuZXh0ZW5kKCEwLGEsZSl9ZnVuY3Rpb24gY2EoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJWLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9Y2EoYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9Y2EoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJfKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiRShhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxlPWI9PT0id2lkdGgiP2J6OmJBO2lmKGQ+MCl7YyE9PSJib3JkZXIiJiZmLmVhY2goZSxmdW5jdGlvbigpe2N8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2QrPXBhcnNlRmxvYXQoZi5jc3MoYSxjK3RoaXMpKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDB9KTtyZXR1cm4gZCsicHgifWQ9YkIoYSxiLGIpO2lmKGQ8MHx8ZD09bnVsbClkPWEuc3R5bGVbYl18fDA7ZD1wYXJzZUZsb2F0KGQpfHwwLGMmJmYuZWFjaChlLGZ1bmN0aW9uKCl7ZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIit0aGlzKSl8fDAsYyE9PSJwYWRkaW5nIiYmKGQrPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYz09PSJtYXJnaW4iJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrdGhpcykpfHwwKX0pO3JldHVybiBkKyJweCJ9ZnVuY3Rpb24gYnIoYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmksIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBicShhKXt2YXIgYj0oYS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7Yj09PSJpbnB1dCI/YnAoYSk6YiE9PSJzY3JpcHQiJiZ0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCImJmYuZ3JlcChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLGJwKX1mdW5jdGlvbiBicChhKXtpZihhLnR5cGU9PT0iY2hlY2tib3gifHxhLnR5cGU9PT0icmFkaW8iKWEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkfWZ1bmN0aW9uIGJvKGEpe3JldHVybiB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIGJuKGEsYil7dmFyIGM7aWYoYi5ub2RlVHlwZT09PTEpe2IuY2xlYXJBdHRyaWJ1dGVzJiZiLmNsZWFyQXR0cmlidXRlcygpLGIubWVyZ2VBdHRyaWJ1dGVzJiZiLm1lcmdlQXR0cmlidXRlcyhhKSxjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihjPT09Im9iamVjdCIpYi5vdXRlckhUTUw9YS5vdXRlckhUTUw7ZWxzZSBpZihjIT09ImlucHV0Inx8YS50eXBlIT09ImNoZWNrYm94IiYmYS50eXBlIT09InJhZGlvIil7aWYoYz09PSJvcHRpb24iKWIuc2VsZWN0ZWQ9YS5kZWZhdWx0U2VsZWN0ZWQ7ZWxzZSBpZihjPT09ImlucHV0Inx8Yz09PSJ0ZXh0YXJlYSIpYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWV9ZWxzZSBhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKTtiLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pfX1mdW5jdGlvbiBibShhLGIpe2lmKGIubm9kZVR5cGU9PT0xJiYhIWYuaGFzRGF0YShhKSl7dmFyIGMsZCxlLGc9Zi5fZGF0YShhKSxoPWYuX2RhdGEoYixnKSxpPWcuZXZlbnRzO2lmKGkpe2RlbGV0ZSBoLmhhbmRsZSxoLmV2ZW50cz17fTtmb3IoYyBpbiBpKWZvcihkPTAsZT1pW2NdLmxlbmd0aDtkPGU7ZCsrKWYuZXZlbnQuYWRkKGIsYysoaVtjXVtkXS5uYW1lc3BhY2U/Ii4iOiIiKStpW2NdW2RdLm5hbWVzcGFjZSxpW2NdW2RdLGlbY11bZF0uZGF0YSl9aC5kYXRhJiYoaC5kYXRhPWYuZXh0ZW5kKHt9LGguZGF0YSkpfX1mdW5jdGlvbiBibChhLGIpe3JldHVybiBmLm5vZGVOYW1lKGEsInRhYmxlIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBYKGEpe3ZhciBiPVkuc3BsaXQoIiAiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gVyhhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihSLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1mLmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBWKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBOKCl7cmV0dXJuITB9ZnVuY3Rpb24gTSgpe3JldHVybiExfWZ1bmN0aW9uIG4oYSxiLGMpe3ZhciBkPWIrImRlZmVyIixlPWIrInF1ZXVlIixnPWIrIm1hcmsiLGg9Zi5fZGF0YShhLGQpO2gmJihjPT09InF1ZXVlInx8IWYuX2RhdGEoYSxlKSkmJihjPT09Im1hcmsifHwhZi5fZGF0YShhLGcpKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLl9kYXRhKGEsZSkmJiFmLl9kYXRhKGEsZykmJihmLnJlbW92ZURhdGEoYSxkLCEwKSxoLmZpcmUoKSl9LDApfWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiIGluIGEpe2lmKGI9PT0iZGF0YSImJmYuaXNFbXB0eU9iamVjdChhW2JdKSljb250aW51ZTtpZihiIT09InRvSlNPTiIpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbChhLGMsZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVwbGFjZShrLCItJDEiKS50b0xvd2VyQ2FzZSgpO2Q9YS5nZXRBdHRyaWJ1dGUoZSk7aWYodHlwZW9mIGQ9PSJzdHJpbmciKXt0cnl7ZD1kPT09InRydWUiPyEwOmQ9PT0iZmFsc2UiPyExOmQ9PT0ibnVsbCI/bnVsbDpmLmlzTnVtZXJpYyhkKT9wYXJzZUZsb2F0KGQpOmoudGVzdChkKT9mLnBhcnNlSlNPTihkKTpkfWNhdGNoKGcpe31mLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVybiBkfWZ1bmN0aW9uIGgoYSl7dmFyIGI9Z1thXT17fSxjLGQ7YT1hLnNwbGl0KC9ccysvKTtmb3IoYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliW2FbY11dPSEwO3JldHVybiBifXZhciBjPWEuZG9jdW1lbnQsZD1hLm5hdmlnYXRvcixlPWEubG9jYXRpb24sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIEsoKXtpZighZS5pc1JlYWR5KXt0cnl7Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KEssMSk7cmV0dXJufWUucmVhZHkoKX19dmFyIGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGUuZm4uaW5pdChhLGIsaCl9LGY9YS5qUXVlcnksZz1hLiQsaCxpPS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXGQvLG49L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxvPS9eW1xdLDp7fVxzXSokLyxwPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscT0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscj0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHM9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8sdD0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdT0vKG1zaWUpIChbXHcuXSspLyx2PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdz0vLShbYS16XXxbMC05XSkvaWcseD0vXi1tcy0vLHk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisiIikudG9VcHBlckNhc2UoKX0sej1kLnVzZXJBZ2VudCxBLEIsQyxEPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEY9QXJyYXkucHJvdG90eXBlLnB1c2gsRz1BcnJheS5wcm90b3R5cGUuc2xpY2UsSD1TdHJpbmcucHJvdG90eXBlLnRyaW0sST1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixKPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1uLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNyIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9GLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEIuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhHLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEcuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkYsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO0IuZmlyZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLnVuYmluZCgicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCFCKXtCPWUuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixDKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSygpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJm0udGVzdChhKSYmIWlzTmFOKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpKW0QuY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxlLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8ZS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUUuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhRS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxFLmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgYX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihvLnRlc3QoYi5yZXBsYWNlKHAsIkAiKS5yZXBsYWNlKHEsIl0iKS5yZXBsYWNlKHIsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe3ZhciBkLGY7dHJ5e2EuRE9NUGFyc2VyPyhmPW5ldyBET01QYXJzZXIsZD1mLnBhcnNlRnJvbVN0cmluZyhjLCJ0ZXh0L3htbCIpKTooZD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGQuYXN5bmM9ImZhbHNlIixkLmxvYWRYTUwoYykpfWNhdGNoKGcpe2Q9Yn0oIWR8fCFkLmRvY3VtZW50RWxlbWVudHx8ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGgpJiZlLmVycm9yKCJJbnZhbGlkIFhNTDogIitjKTtyZXR1cm4gZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZqLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeCwibXMtIikucmVwbGFjZSh3LHkpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGUuaXNGdW5jdGlvbihhKTtpZihkKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmNhbGwoYVtnXSxnLGFbZysrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpIP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOkguY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UoaywiIikucmVwbGFjZShsLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGQ9ZS50eXBlKGEpO2EubGVuZ3RoPT1udWxsfHxkPT09InN0cmluZyJ8fGQ9PT0iZnVuY3Rpb24ifHxkPT09InJlZ2V4cCJ8fGUuaXNXaW5kb3coYSk/Ri5jYWxsKGMsYSk6ZS5tZXJnZShjLGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihJKXJldHVybiBJLmNhbGwoYixhLGMpO2Q9Yi5sZW5ndGgsYz1jP2M8MD9NYXRoLm1heCgwLGQrYyk6YzowO2Zvcig7YzxkO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoPVtdLGk9MCxqPWEubGVuZ3RoLGs9YSBpbnN0YW5jZW9mIGV8fGohPT1iJiZ0eXBlb2Ygaj09Im51bWJlciImJihqPjAmJmFbMF0mJmFbai0xXXx8aj09PTB8fGUuaXNBcnJheShhKSk7aWYoaylmb3IoO2k8ajtpKyspZj1jKGFbaV0saSxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7ZWxzZSBmb3IoZyBpbiBhKWY9YyhhW2ddLGcsZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO3JldHVybiBoLmNvbmNhdC5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXt2YXIgZD1hW2NdO2M9YSxhPWR9aWYoIWUuaXNGdW5jdGlvbihhKSlyZXR1cm4gYjt2YXIgZj1HLmNhbGwoYXJndW1lbnRzLDIpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGYuY29uY2F0KEcuY2FsbChhcmd1bWVudHMpKSl9O2cuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxnLmd1aWR8fGUuZ3VpZCsrO3JldHVybiBnfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGQsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZS5hY2Nlc3MoYSxqLGNbal0sZixnLGQpO3JldHVybiBhfWlmKGQhPT1iKXtmPSFoJiZmJiZlLmlzRnVuY3Rpb24oZCk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2QuY2FsbChhW2tdLGssZyhhW2tdLGMpKTpkLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpifSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1zLmV4ZWMoYSl8fHQuZXhlYyhhKXx8dS5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ2LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SlsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSxBPWUudWFNYXRjaCh6KSxBLmJyb3dzZXImJihlLmJyb3dzZXJbQS5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj1BLnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIsKgIikmJihrPS9eW1xzXHhBMF0rLyxsPS9bXHNceEEwXSskLyksaD1lKGMpLGMuYWRkRXZlbnRMaXN0ZW5lcj9DPWZ1bmN0aW9uKCl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxlLnJlYWR5KCl9OmMuYXR0YWNoRXZlbnQmJihDPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGMuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQyksZS5yZWFkeSgpKX0pLHR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQmJmRlZmluZS5hbWQualF1ZXJ5JiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gZX0pO3JldHVybiBlfSgpLGc9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT1hP2dbYV18fGgoYSk6e307dmFyIGM9W10sZD1bXSxlLGksaixrLGwsbT1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9tKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhby5oYXMoZykpJiZjLnB1c2goZyl9LG49ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGw9anx8MCxqPTAsaz1jLmxlbmd0aDtmb3IoO2MmJmw8aztsKyspaWYoY1tsXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aT0hMSxjJiYoYS5vbmNlP2U9PT0hMD9vLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCksby5maXJlV2l0aChlWzBdLGVbMV0pKSl9LG89e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO20oYXJndW1lbnRzKSxpP2s9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaj1hLG4oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2kmJmY8PWsmJihrLS0sZjw9bCYmbC0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJm8uZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaT9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbihiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe28uZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZX19O3JldHVybiBvfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5kb25lLmFwcGx5KGksYXJndW1lbnRzKS5mYWlsLmFwcGx5KGksYXJndW1lbnRzKX0scGlwZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuRGVmZXJyZWQoZnVuY3Rpb24oZCl7Zi5lYWNoKHtkb25lOlthLCJyZXNvbHZlIl0sZmFpbDpbYiwicmVqZWN0Il0scHJvZ3Jlc3M6W2MsIm5vdGlmeSJdfSxmdW5jdGlvbihhLGIpe3ZhciBjPWJbMF0sZT1iWzFdLGc7Zi5pc0Z1bmN0aW9uKGMpP2lbYV0oZnVuY3Rpb24oKXtnPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpLGcmJmYuaXNGdW5jdGlvbihnLnByb21pc2UpP2cucHJvbWlzZSgpLnRoZW4oZC5yZXNvbHZlLGQucmVqZWN0LGQubm90aWZ5KTpkW2UrIldpdGgiXSh0aGlzPT09aT9kOnRoaXMsW2ddKX0pOmlbYV0oZFtlXSl9KX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKWE9aDtlbHNlIGZvcih2YXIgYiBpbiBoKWFbYl09aFtiXTtyZXR1cm4gYX19LGk9aC5wcm9taXNlKHt9KSxqO2ZvcihqIGluIGcpaVtqXT1nW2pdLmZpcmUsaVtqKyJXaXRoIl09Z1tqXS5maXJlV2l0aDtpLmRvbmUoZnVuY3Rpb24oKXtlPSJyZXNvbHZlZCJ9LGMuZGlzYWJsZSxkLmxvY2spLmZhaWwoZnVuY3Rpb24oKXtlPSJyZWplY3RlZCJ9LGIuZGlzYWJsZSxkLmxvY2spLGEmJmEuY2FsbChpLGkpO3JldHVybiBpfSx3aGVuOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2VbYV09YXJndW1lbnRzLmxlbmd0aD4xP2kuY2FsbChhcmd1bWVudHMsMCk6YixqLm5vdGlmeVdpdGgoayxlKX19ZnVuY3Rpb24gbChhKXtyZXR1cm4gZnVuY3Rpb24oYyl7YlthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpjLC0tZ3x8ai5yZXNvbHZlV2l0aChqLGIpfX12YXIgYj1pLmNhbGwoYXJndW1lbnRzLDApLGM9MCxkPWIubGVuZ3RoLGU9QXJyYXkoZCksZz1kLGg9ZCxqPWQ8PTEmJmEmJmYuaXNGdW5jdGlvbihhLnByb21pc2UpP2E6Zi5EZWZlcnJlZCgpLGs9ai5wcm9taXNlKCk7aWYoZD4xKXtmb3IoO2M8ZDtjKyspYltjXSYmYltjXS5wcm9taXNlJiZmLmlzRnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGwoYyksai5yZWplY3QsbShjKSk6LS1nO2d8fGoucmVzb2x2ZVdpdGgoaixiKX1lbHNlIGohPT1hJiZqLnJlc29sdmVXaXRoKGosZD9bYV06W10pO3JldHVybiBrfX0pLGYuc3VwcG9ydD1mdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1jLmRvY3VtZW50RWxlbWVudCxkLGUsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7YS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxhLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz48bmF2PjwvbmF2PiIsZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksZT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07aWYoIWR8fCFkLmxlbmd0aHx8IWUpcmV0dXJue307Zz1jLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGg9Zy5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxpPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0saz17bGVhZGluZ1doaXRlc3BhY2U6YS5maXJzdENoaWxkLm5vZGVUeXBlPT09Myx0Ym9keTohYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3RvcC8udGVzdChlLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6ZS5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PSIvYSIsb3BhY2l0eTovXjAuNTUvLnRlc3QoZS5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsdW5rbm93bkVsZW1zOiEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibmF2IikubGVuZ3RoLGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6YS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsc3VibWl0QnViYmxlczohMCxjaGFuZ2VCdWJibGVzOiEwLGZvY3VzaW5CdWJibGVzOiExLGRlbGV0ZUV4cGFuZG86ITAsbm9DbG9uZUV2ZW50OiEwLGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6ITEsc2hyaW5rV3JhcEJsb2NrczohMSxyZWxpYWJsZU1hcmdpblJpZ2h0OiEwfSxpLmNoZWNrZWQ9ITAsay5ub0Nsb25lQ2hlY2tlZD1pLmNsb25lTm9kZSghMCkuY2hlY2tlZCxnLmRpc2FibGVkPSEwLGsub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2godil7ay5kZWxldGVFeHBhbmRvPSExfSFhLmFkZEV2ZW50TGlzdGVuZXImJmEuYXR0YWNoRXZlbnQmJmEuZmlyZUV2ZW50JiYoYS5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtrLm5vQ2xvbmVFdmVudD0hMX0pLGEuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSksaT1jLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaS52YWx1ZT0idCIsaS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT1pLnZhbHVlPT09InQiLGkuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGEuYXBwZW5kQ2hpbGQoaSksbD1jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxsLmFwcGVuZENoaWxkKGEubGFzdENoaWxkKSxrLmNoZWNrQ2xvbmU9bC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYS5pbm5lckhUTUw9IiIsYS5zdHlsZS53aWR0aD1hLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiLG09Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLG89Yy5jcmVhdGVFbGVtZW50KG0/ImRpdiI6ImJvZHkiKSxwPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LG0mJmYuZXh0ZW5kKHAse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTk5OXB4Iix0b3A6Ii05OTlweCJ9KTtmb3IodCBpbiBwKW8uc3R5bGVbdF09cFt0XTtvLmFwcGVuZENoaWxkKGEpLG49bXx8YixuLmluc2VydEJlZm9yZShvLG4uZmlyc3RDaGlsZCksay5hcHBlbmRDaGVja2VkPWkuY2hlY2tlZCxrLmJveE1vZGVsPWEub2Zmc2V0V2lkdGg9PT0yLCJ6b29tImluIGEuc3R5bGUmJihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsYS5zdHlsZS56b29tPTEsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWEub2Zmc2V0V2lkdGg9PT0yLGEuc3R5bGUuZGlzcGxheT0iIixhLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixrLnNocmlua1dyYXBCbG9ja3M9YS5vZmZzZXRXaWR0aCE9PTIpLGEuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0ncGFkZGluZzowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIscT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLHU9cVswXS5vZmZzZXRIZWlnaHQ9PT0wLHFbMF0uc3R5bGUuZGlzcGxheT0iIixxWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGsucmVsaWFibGVIaWRkZW5PZmZzZXRzPXUmJnFbMF0ub2Zmc2V0SGVpZ2h0PT09MCxhLmlubmVySFRNTD0iIixjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihqPWMuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5zdHlsZS53aWR0aD0iMCIsai5zdHlsZS5tYXJnaW5SaWdodD0iMCIsYS5hcHBlbmRDaGlsZChqKSxrLnJlbGlhYmxlTWFyZ2luUmlnaHQ9KHBhcnNlSW50KChjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoaixudWxsKXx8e21hcmdpblJpZ2h0OjB9KS5tYXJnaW5SaWdodCwxMCl8fDApPT09MCk7aWYoYS5hdHRhY2hFdmVudClmb3IodCBpbntzdWJtaXQ6MSxjaGFuZ2U6MSxmb2N1c2luOjF9KXM9Im9uIit0LHU9cyBpbiBhLHV8fChhLnNldEF0dHJpYnV0ZShzLCJyZXR1cm47IiksdT10eXBlb2YgYVtzXT09ImZ1bmN0aW9uIiksa1t0KyJCdWJibGVzIl09dTtmKGZ1bmN0aW9uKCl7dmFyIGEsYixkLGUsZyxoLGk9MSxqPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOjA7IixsPSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDsiLG49InN0eWxlPSciK2orImJvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7JyIscD0iPGRpdiAiK24rIj48ZGl2PjwvZGl2PjwvZGl2PiIrIjx0YWJsZSAiK24rIiBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPiIrIjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjttPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTshbXx8KGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bCsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2krInB4IixtLmluc2VydEJlZm9yZShhLG0uZmlyc3RDaGlsZCksbz1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8uc3R5bGUuY3NzVGV4dD1qK2wsby5pbm5lckhUTUw9cCxhLmFwcGVuZENoaWxkKG8pLGI9by5maXJzdENoaWxkLGQ9Yi5maXJzdENoaWxkLGc9Yi5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQsaD17ZG9lc05vdEFkZEJvcmRlcjpkLm9mZnNldFRvcCE9PTUsZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM6Zy5vZmZzZXRUb3A9PT01fSxkLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZC5zdHlsZS50b3A9IjIwcHgiLGguZml4ZWRQb3NpdGlvbj1kLm9mZnNldFRvcD09PTIwfHxkLm9mZnNldFRvcD09PTE1LGQuc3R5bGUucG9zaXRpb249ZC5zdHlsZS50b3A9IiIsYi5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixiLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsaC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9ZC5vZmZzZXRUb3A9PT0tNSxoLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PW0ub2Zmc2V0VG9wIT09aSxtLnJlbW92ZUNoaWxkKGEpLG89YT1udWxsLGYuZXh0ZW5kKGssaCkpfSksby5pbm5lckhUTUw9IiIsbi5yZW1vdmVDaGlsZChvKSxvPWw9Zz1oPW09aj1hPWk9bnVsbDtyZXR1cm4ga30oKSxmLmJveE1vZGVsPWYuc3VwcG9ydC5ib3hNb2RlbDt2YXIgaj0vXig/Olx7LipcfXxcWy4qXF0pJC8saz0vKFtBLVpdKS9nO2YuZXh0ZW5kKHtjYWNoZTp7fSx1dWlkOjAsZXhwYW5kbzoialF1ZXJ5IisoZi5mbi5qcXVlcnkrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksbm9EYXRhOntlbWJlZDohMCxvYmplY3Q6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsYXBwbGV0OiEwfSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YS5ub2RlVHlwZT9mLmNhY2hlW2FbZi5leHBhbmRvXV06YVtmLmV4cGFuZG9dO3JldHVybiEhYSYmIW0oYSl9LGRhdGE6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBnLGgsaSxqPWYuZXhwYW5kbyxrPXR5cGVvZiBjPT0ic3RyaW5nIixsPWEubm9kZVR5cGUsbT1sP2YuY2FjaGU6YSxuPWw/YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvLG89Yz09PSJldmVudHMiO2lmKCghbnx8IW1bbl18fCFvJiYhZSYmIW1bbl0uZGF0YSkmJmsmJmQ9PT1iKXJldHVybjtufHwobD9hW2YuZXhwYW5kb109bj0rK2YudXVpZDpuPWYuZXhwYW5kbyksbVtuXXx8KG1bbl09e30sbHx8KG1bbl0udG9KU09OPWYubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZT9tW25dPWYuZXh0ZW5kKG1bbl0sYyk6bVtuXS5kYXRhPWYuZXh0ZW5kKG1bbl0uZGF0YSxjKTtnPWg9bVtuXSxlfHwoaC5kYXRhfHwoaC5kYXRhPXt9KSxoPWguZGF0YSksZCE9PWImJihoW2YuY2FtZWxDYXNlKGMpXT1kKTtpZihvJiYhaFtjXSlyZXR1cm4gZy5ldmVudHM7az8oaT1oW2NdLGk9PW51bGwmJihpPWhbZi5jYW1lbENhc2UoYyldKSk6aT1oO3JldHVybiBpfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGUsZyxoPWYuZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP2YuY2FjaGU6YSxrPWk/YVtmLmV4cGFuZG9dOmYuZXhwYW5kbztpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKT9iPWI6YiBpbiBkP2I9W2JdOihiPWYuY2FtZWxDYXNlKGIpLGIgaW4gZD9iPVtiXTpiPWIuc3BsaXQoIiAiKSk7Zm9yKGU9MCxnPWIubGVuZ3RoO2U8ZztlKyspZGVsZXRlIGRbYltlXV07aWYoIShjP206Zi5pc0VtcHR5T2JqZWN0KShkKSlyZXR1cm59fWlmKCFjKXtkZWxldGUgaltrXS5kYXRhO2lmKCFtKGpba10pKXJldHVybn1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8IWouc2V0SW50ZXJ2YWw/ZGVsZXRlIGpba106altrXT1udWxsLGkmJihmLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYVtmLmV4cGFuZG9dOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyk6YVtmLmV4cGFuZG9dPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWYubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxmLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZyxoPW51bGw7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQiKXtpZih0aGlzLmxlbmd0aCl7aD1mLmRhdGEodGhpc1swXSk7aWYodGhpc1swXS5ub2RlVHlwZT09PTEmJiFmLl9kYXRhKHRoaXNbMF0sInBhcnNlZEF0dHJzIikpe2U9dGhpc1swXS5hdHRyaWJ1dGVzO2Zvcih2YXIgaT0wLGo9ZS5sZW5ndGg7aTxqO2krKylnPWVbaV0ubmFtZSxnLmluZGV4T2YoImRhdGEtIik9PT0wJiYoZz1mLmNhbWVsQ2FzZShnLnN1YnN0cmluZyg1KSksbCh0aGlzWzBdLGcsaFtnXSkpO2YuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiLCEwKX19cmV0dXJuIGh9aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEodGhpcyxhKX0pO2Q9YS5zcGxpdCgiLiIpLGRbMV09ZFsxXT8iLiIrZFsxXToiIjtpZihjPT09Yil7aD10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitkWzFdKyIhIixbZFswXV0pLGg9PT1iJiZ0aGlzLmxlbmd0aCYmKGg9Zi5kYXRhKHRoaXNbMF0sYSksaD1sKHRoaXNbMF0sYSxoKSk7cmV0dXJuIGg9PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTpofXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGU9W2RbMF0sY107Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIrZFsxXSsiISIsZSksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitkWzFdKyIhIixlKX0pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLGYuZXh0ZW5kKHtfbWFyazpmdW5jdGlvbihhLGIpe2EmJihiPShifHwiZngiKSsibWFyayIsZi5fZGF0YShhLGIsKGYuX2RhdGEoYSxiKXx8MCkrMSkpfSxfdW5tYXJrOmZ1bmN0aW9uKGEsYixjKXthIT09ITAmJihjPWIsYj1hLGE9ITEpO2lmKGIpe2M9Y3x8ImZ4Ijt2YXIgZD1jKyJtYXJrIixlPWE/MDooZi5fZGF0YShiLGQpfHwxKS0xO2U/Zi5fZGF0YShiLGQsZSk6KGYucmVtb3ZlRGF0YShiLGQsITApLG4oYixjLCJtYXJrIikpfX0scXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1mLl9kYXRhKGEsYiksYyYmKCFkfHxmLmlzQXJyYXkoYyk/ZD1mLl9kYXRhKGEsYixmLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKTtyZXR1cm4gZHx8W119fSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWYucXVldWUoYSxiKSxkPWMuc2hpZnQoKSxlPXt9O2Q9PT0iaW5wcm9ncmVzcyImJihkPWMuc2hpZnQoKSksZCYmKGI9PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxmLl9kYXRhKGEsYisiLnJ1biIsZSksZC5jYWxsKGEsZnVuY3Rpb24oKXtmLmRlcXVldWUoYSxiKX0sZSkpLGMubGVuZ3RofHwoZi5yZW1vdmVEYXRhKGEsYisicXVldWUgIitiKyIucnVuIiwhMCksbihhLGIsInF1ZXVlIikpfX0pLGYuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGMpe3R5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIpO2lmKGM9PT1iKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYucXVldWUodGhpcyxhLGMpO2E9PT0iZngiJiZiWzBdIT09ImlucHJvZ3Jlc3MiJiZmLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9Zi5meD9mLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIG0oKXstLWh8fGQucmVzb2x2ZVdpdGgoZSxbZV0pfXR5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPWIpLGE9YXx8ImZ4Ijt2YXIgZD1mLkRlZmVycmVkKCksZT10aGlzLGc9ZS5sZW5ndGgsaD0xLGk9YSsiZGVmZXIiLGo9YSsicXVldWUiLGs9YSsibWFyayIsbDt3aGlsZShnLS0paWYobD1mLmRhdGEoZVtnXSxpLGIsITApfHwoZi5kYXRhKGVbZ10saixiLCEwKXx8Zi5kYXRhKGVbZ10sayxiLCEwKSkmJmYuZGF0YShlW2ddLGksZi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksITApKWgrKyxsLmFkZChtKTttKCk7cmV0dXJuIGQucHJvbWlzZSgpfX0pO3ZhciBvPS9bXG5cdFxyXS9nLHA9L1xzKy8scT0vXHIvZyxyPS9eKD86YnV0dG9ufGlucHV0KSQvaSxzPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLHQ9L15hKD86cmVhKT8kL2ksdT0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSx2PWYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsdyx4LHk7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLnByb3ApfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe2E9Zi5wcm9wRml4W2FdfHxhO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1thXT1iLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGMpe319KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZyxoLGk7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyIpe2I9YS5zcGxpdChwKTtmb3IoYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7ZT10aGlzW2NdO2lmKGUubm9kZVR5cGU9PT0xKWlmKCFlLmNsYXNzTmFtZSYmYi5sZW5ndGg9PT0xKWUuY2xhc3NOYW1lPWE7ZWxzZXtnPSIgIitlLmNsYXNzTmFtZSsiICI7Zm9yKGg9MCxpPWIubGVuZ3RoO2g8aTtoKyspfmcuaW5kZXhPZigiICIrYltoXSsiICIpfHwoZys9YltoXSsiICIpO2UuY2xhc3NOYW1lPWYudHJpbShnKX19fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoLGksajtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nInx8YT09PWIpe2M9KGF8fCIiKS5zcGxpdChwKTtmb3IoZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7Zz10aGlzW2RdO2lmKGcubm9kZVR5cGU9PT0xJiZnLmNsYXNzTmFtZSlpZihhKXtoPSgiICIrZy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKG8sIiAiKTtmb3IoaT0wLGo9Yy5sZW5ndGg7aTxqO2krKyloPWgucmVwbGFjZSgiICIrY1tpXSsiICIsIiAiKTtnLmNsYXNzTmFtZT1mLnRyaW0oaCl9ZWxzZSBnLmNsYXNzTmFtZT0iIn19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEsZD10eXBlb2YgYj09ImJvb2xlYW4iO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2YodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGc9MCxoPWYodGhpcyksaT1iLGo9YS5zcGxpdChwKTt3aGlsZShlPWpbZysrXSlpPWQ/aTohaC5oYXNDbGFzcyhlKSxoW2k/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmZi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Zvcig7YzxkO2MrKylpZih0aGlzW2NdLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZz10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihnKXtjPWYudmFsSG9va3NbZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXXx8Zi52YWxIb29rc1tnLnR5cGVdO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZywidmFsdWUiKSkhPT1iKXJldHVybiBkO2Q9Zy52YWx1ZTtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2QucmVwbGFjZShxLCIiKTpkPT1udWxsPyIiOmR9cmV0dXJuIGJ9ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCFhfHxqPT09M3x8aj09PTh8fGo9PT0yKXJldHVybiBiO2lmKGUmJmMgaW4gZi5hdHRyRm4pcmV0dXJuIGYoYSlbY10oZCk7aWYoISgiZ2V0QXR0cmlidXRlImluIGEpKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJuIGJ9aWYoaCYmInNldCJpbiBoJiZpJiYoZz1oLnNldChhLGQsYykpIT09YilyZXR1cm4gZzthLnNldEF0dHJpYnV0ZShjLCIiK2QpO3JldHVybiBkfWlmKGgmJiJnZXQiaW4gaCYmaSYmKGc9aC5nZXQoYSxjKSkhPT1udWxsKXJldHVybiBnO2c9YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIGc9PT1udWxsP2I6Z30scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxnLGg9MDtpZihhLm5vZGVUeXBlPT09MSl7ZD0oYnx8IiIpLnNwbGl0KHApLGc9ZC5sZW5ndGg7Zm9yKDtoPGc7aCsrKWU9ZFtoXS50b0xvd2VyQ2FzZSgpLGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihyLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlmLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFmLnN1cHBvcnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJmYubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTthLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9Yyk7cmV0dXJuIGJ9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuZ2V0KGEsYik7cmV0dXJuIGIgaW4gYT9hLnZhbHVlOm51bGx9LHNldDpmdW5jdGlvbihhLGIsYyl7aWYodyYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdy5zZXQoYSxiLGMpO2EudmFsdWU9Yn19fSxwcm9wRml4Ont0YWJpbmRleDoidGFiSW5kZXgiLHJlYWRvbmx5OiJyZWFkT25seSIsImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIsY2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIixjb250ZW50ZWRpdGFibGU6ImNvbnRlbnRFZGl0YWJsZSJ9LHByb3A6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpPWEubm9kZVR5cGU7aWYoIWF8fGk9PT0zfHxpPT09OHx8aT09PTIpcmV0dXJuIGI7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6cy50ZXN0KGEubm9kZU5hbWUpfHx0LnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX19KSxmLmF0dHJIb29rcy50YWJpbmRleD1mLnByb3BIb29rcy50YWJJbmRleCx4PXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWYucHJvcChhLGMpO3JldHVybiBlPT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPSEwKSxhLnNldEF0dHJpYnV0ZShjLGMudG9Mb3dlckNhc2UoKSkpO3JldHVybiBjfX0sdnx8KHk9e25hbWU6ITAsaWQ6ITB9LHc9Zi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGMpe3ZhciBkO2Q9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkJiYoeVtjXT9kLm5vZGVWYWx1ZSE9PSIiOmQuc3BlY2lmaWVkKT9kLm5vZGVWYWx1ZTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEuZ2V0QXR0cmlidXRlTm9kZShkKTtlfHwoZT1jLmNyZWF0ZUF0dHJpYnV0ZShkKSxhLnNldEF0dHJpYnV0ZU5vZGUoZSkpO3JldHVybiBlLm5vZGVWYWx1ZT1iKyIifX0sZi5hdHRySG9va3MudGFiaW5kZXguc2V0PXcuc2V0LGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmF0dHJIb29rc1tiXT1mLmV4dGVuZChmLmF0dHJIb29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXthLnNldEF0dHJpYnV0ZShiLCJhdXRvIik7cmV0dXJuIGN9fX0pfSksZi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtnZXQ6dy5nZXQsc2V0OmZ1bmN0aW9uKGEsYixjKXtiPT09IiImJihiPSJmYWxzZSIpLHcuc2V0KGEsYixjKX19KSxmLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWR8fGYuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYyl7Zi5hdHRySG9va3NbY109Zi5leHRlbmQoZi5hdHRySG9va3NbY10se2dldDpmdW5jdGlvbihhKXt2YXIgZD1hLmdldEF0dHJpYnV0ZShjLDIpO3JldHVybiBkPT09bnVsbD9iOmR9fSl9KSxmLnN1cHBvcnQuc3R5bGV8fChmLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKXx8Yn0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD0iIitifX0pLGYuc3VwcG9ydC5vcHRTZWxlY3RlZHx8KGYucHJvcEhvb2tzLnNlbGVjdGVkPWYuZXh0ZW5kKGYucHJvcEhvb2tzLnNlbGVjdGVkLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIG51bGx9fSkpLGYuc3VwcG9ydC5lbmN0eXBlfHwoZi5wcm9wRml4LmVuY3R5cGU9ImVuY29kaW5nIiksZi5zdXBwb3J0LmNoZWNrT258fGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6YS52YWx1ZX19fSksZi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT1mLmV4dGVuZChmLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihmLmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD1mLmluQXJyYXkoZihhKS52YWwoKSxiKT49MH19KX0pO3ZhciB6PS9cLiguKikkLyxBPS9eKD86dGV4dGFyZWF8aW5wdXR8c2VsZWN0KSQvaSxCPS9cLi9nLEM9LyAvZyxEPS9bXlx3XHMufGBdL2csRT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sRj0vXGJob3ZlcihcLlxTKyk/LyxHPS9ea2V5LyxIPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxJPS9eKFx3KikoPzojKFtcd1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sSj1mdW5jdGlvbihhKXt2YXIgYj1JLmV4ZWMoYSk7YiYmCihiWzFdPShiWzFdfHwiIikudG9Mb3dlckNhc2UoKSxiWzNdPWJbM10mJm5ldyBSZWdFeHAoIig/Ol58XFxzKSIrYlszXSsiKD86XFxzfCQpIikpO3JldHVybiBifSxLPWZ1bmN0aW9uKGEsYil7cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHxhLmlkPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KGEuY2xhc3NOYW1lKSl9LEw9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZXZlbnQuc3BlY2lhbC5ob3Zlcj9hOmEucmVwbGFjZShGLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighKGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8IWN8fCFkfHwhKGg9Zi5fZGF0YShhKSkpKXtkLmhhbmRsZXImJihwPWQsZD1wLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyksaj1oLmV2ZW50cyxqfHwoaC5ldmVudHM9aj17fSksaT1oLmhhbmRsZSxpfHwoaC5oYW5kbGU9aT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiYoIWF8fGYuZXZlbnQudHJpZ2dlcmVkIT09YS50eXBlKT9mLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGkuZWxlbSxhcmd1bWVudHMpOmJ9LGkuZWxlbT1hKSxjPUwoYykuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUUuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLG5hbWVzcGFjZTpuLmpvaW4oIi4iKX0scCksZyYmKG8ucXVpY2s9SihnKSwhby5xdWljayYmZi5leHByLm1hdGNoLlBPUy50ZXN0KGcpJiYoby5pc1Bvc2l0aW9uYWw9ITApKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuaGFzRGF0YShhKSYmZi5fZGF0YShhKSxnLGgsaSxqLGssbCxtLG4sbyxwLHE7aWYoISFlJiYhIShtPWUuZXZlbnRzKSl7Yj1MKGJ8fCIiKS5zcGxpdCgiICIpO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe2g9RS5leGVjKGJbZ10pfHxbXSxpPWhbMV0saj1oWzJdO2lmKCFpKXtqPWo/Ii4iK2o6IiI7Zm9yKGwgaW4gbSlmLmV2ZW50LnJlbW92ZShhLGwraixjLGQpO3JldHVybn1uPWYuZXZlbnQuc3BlY2lhbFtpXXx8e30saT0oZD9uLmRlbGVnYXRlVHlwZTpuLmJpbmRUeXBlKXx8aSxwPW1baV18fFtdLGs9cC5sZW5ndGgsaj1qP25ldyBSZWdFeHAoIihefFxcLikiK2ouc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtpZihjfHxqfHxkfHxuLnJlbW92ZSlmb3IobD0wO2w8cC5sZW5ndGg7bCsrKXtxPXBbbF07aWYoIWN8fGMuZ3VpZD09PXEuZ3VpZClpZighanx8ai50ZXN0KHEubmFtZXNwYWNlKSlpZighZHx8ZD09PXEuc2VsZWN0b3J8fGQ9PT0iKioiJiZxLnNlbGVjdG9yKXAuc3BsaWNlKGwtLSwxKSxxLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxuLnJlbW92ZSYmbi5yZW1vdmUuY2FsbChhLHEpfWVsc2UgcC5sZW5ndGg9MDtwLmxlbmd0aD09PTAmJmshPT1wLmxlbmd0aCYmKCghbi50ZWFyZG93bnx8bi50ZWFyZG93bi5jYWxsKGEsaik9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxpLGUuaGFuZGxlKSxkZWxldGUgbVtpXSl9Zi5pc0VtcHR5T2JqZWN0KG0pJiYobz1lLmhhbmRsZSxvJiYoby5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2guaW5kZXhPZigiISIpPj0wJiYoaD1oLnNsaWNlKDAsLTEpLGs9ITApLGguaW5kZXhPZigiLiIpPj0wJiYoaT1oLnNwbGl0KCIuIiksaD1pLnNoaWZ0KCksaS5zb3J0KCkpO2lmKCghZXx8Zi5ldmVudC5jdXN0b21FdmVudFtoXSkmJiFmLmV2ZW50Lmdsb2JhbFtoXSlyZXR1cm47Yz10eXBlb2YgYz09Im9iamVjdCI/Y1tmLmV4cGFuZG9dP2M6bmV3IGYuRXZlbnQoaCxjKTpuZXcgZi5FdmVudChoKSxjLnR5cGU9aCxjLmlzVHJpZ2dlcj0hMCxjLmV4Y2x1c2l2ZT1rLGMubmFtZXNwYWNlPWkuam9pbigiLiIpLGMubmFtZXNwYWNlX3JlPWMubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2kuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbCxvPWguaW5kZXhPZigiOiIpPDA/Im9uIitoOiIiLChnfHwhZSkmJmMucHJldmVudERlZmF1bHQoKTtpZighZSl7aj1mLmNhY2hlO2ZvcihsIGluIGopaltsXS5ldmVudHMmJmpbbF0uZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGpbbF0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZSksZD1kIT1udWxsP2YubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxwPWYuZXZlbnQuc3BlY2lhbFtoXXx8e307aWYocC50cmlnZ2VyJiZwLnRyaWdnZXIuYXBwbHkoZSxkKT09PSExKXJldHVybjtyPVtbZSxwLmJpbmRUeXBlfHxoXV07aWYoIWcmJiFwLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhlKSl7cz1wLmRlbGVnYXRlVHlwZXx8aCxuPW51bGw7Zm9yKG09ZS5wYXJlbnROb2RlO207bT1tLnBhcmVudE5vZGUpci5wdXNoKFttLHNdKSxuPW07biYmbj09PWUub3duZXJEb2N1bWVudCYmci5wdXNoKFtuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvd3x8YSxzXSl9Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKyl7bT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk7aWYoYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfWMudHlwZT1oLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fCghcC5fZGVmYXVsdHx8cC5fZGVmYXVsdC5hcHBseShlLm93bmVyRG9jdW1lbnQsZCk9PT0hMSkmJihoIT09ImNsaWNrInx8IWYubm9kZU5hbWUoZSwiYSIpKSYmZi5hY2NlcHREYXRhKGUpJiZvJiZlW2hdJiYoaCE9PSJmb2N1cyImJmghPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNldFdpZHRoIT09MCkmJiFmLmlzV2luZG93KGUpJiYobj1lW29dLG4mJihlW29dPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpLGYuZXZlbnQudHJpZ2dlcmVkPWIsbiYmKGVbb109bikpO3JldHVybiBjLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KGYuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtjLnR5cGVdfHxbXSxlPWQuZGVsZWdhdGVDb3VudCxnPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGg9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsaT0oZi5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9KS5oYW5kbGUsaj1bXSxrLGwsbSxuLG8scCxxLHIscyx0LHU7Z1swXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZihlJiYhYy50YXJnZXQuZGlzYWJsZWQmJighYy5idXR0b258fGMudHlwZSE9PSJjbGljayIpKWZvcihtPWMudGFyZ2V0O20hPXRoaXM7bT1tLnBhcmVudE5vZGV8fHRoaXMpe289e30scT1bXTtmb3Ioaz0wO2s8ZTtrKyspcj1kW2tdLHM9ci5zZWxlY3Rvcix0PW9bc10sci5pc1Bvc2l0aW9uYWw/dD0odHx8KG9bc109ZihzKSkpLmluZGV4KG0pPj0wOnQ9PT1iJiYodD1vW3NdPXIucXVpY2s/SyhtLHIucXVpY2spOmYobSkuaXMocykpLHQmJnEucHVzaChyKTtxLmxlbmd0aCYmai5wdXNoKHtlbGVtOm0sbWF0Y2hlczpxfSl9ZC5sZW5ndGg+ZSYmai5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGUpfSk7Zm9yKGs9MDtrPGoubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cD1qW2tdLGMuY3VycmVudFRhcmdldD1wLmVsZW07Zm9yKGw9MDtsPHAubWF0Y2hlcy5sZW5ndGgmJiFjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7bCsrKXtyPXAubWF0Y2hlc1tsXTtpZihofHwhYy5uYW1lc3BhY2UmJiFyLm5hbWVzcGFjZXx8Yy5uYW1lc3BhY2VfcmUmJmMubmFtZXNwYWNlX3JlLnRlc3Qoci5uYW1lc3BhY2UpKWMuZGF0YT1yLmRhdGEsYy5oYW5kbGVPYmo9cixuPShpfHxyLmhhbmRsZXIpLmFwcGx5KHAuZWxlbSxnKSxuIT09YiYmKGMucmVzdWx0PW4sbj09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKX19cmV0dXJuIGMucmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7YS53aGljaD09bnVsbCYmKGEud2hpY2g9Yi5jaGFyQ29kZSE9bnVsbD9iLmNoYXJDb2RlOmIua2V5Q29kZSk7cmV0dXJuIGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50IHdoZWVsRGVsdGEiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsZCl7dmFyIGUsZixnLGg9ZC5idXR0b24saT1kLmZyb21FbGVtZW50O2EucGFnZVg9PW51bGwmJmQuY2xpZW50WCE9bnVsbCYmKGU9YS50YXJnZXQub3duZXJEb2N1bWVudHx8YyxmPWUuZG9jdW1lbnRFbGVtZW50LGc9ZS5ib2R5LGEucGFnZVg9ZC5jbGllbnRYKyhmJiZmLnNjcm9sbExlZnR8fGcmJmcuc2Nyb2xsTGVmdHx8MCktKGYmJmYuY2xpZW50TGVmdHx8ZyYmZy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWQuY2xpZW50WSsoZiYmZi5zY3JvbGxUb3B8fGcmJmcuc2Nyb2xsVG9wfHwwKS0oZiYmZi5jbGllbnRUb3B8fGcmJmcuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmaSYmKGEucmVsYXRlZFRhcmdldD1pPT09YS50YXJnZXQ/ZC50b0VsZW1lbnQ6aSksIWEud2hpY2gmJmghPT1iJiYoYS53aGljaD1oJjE/MTpoJjI/MzpoJjQ/MjowKTtyZXR1cm4gYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW2YuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGQsZSxnPWEsaD1mLmV2ZW50LmZpeEhvb2tzW2EudHlwZV18fHt9LGk9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzO2E9Zi5FdmVudChnKTtmb3IoZD1pLmxlbmd0aDtkOyllPWlbLS1kXSxhW2VdPWdbZV07YS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGMpLGEudGFyZ2V0Lm5vZGVUeXBlPT09MyYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT09PWImJihhLm1ldGFLZXk9YS5jdHJsS2V5KTtyZXR1cm4gaC5maWx0ZXI/aC5maWx0ZXIoYSxnKTphfSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHl9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4iLG5vQnViYmxlOiEwfSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0Iixub0J1YmJsZTohMH0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP046TSk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPU47dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Tjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Tix0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6TSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpNLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOk19LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPWYuZXZlbnQuc3BlY2lhbFtiXT17ZGVsZWdhdGVUeXBlOmIsYmluZFR5cGU6YixoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWEucmVsYXRlZFRhcmdldCxkPWEuaGFuZGxlT2JqLGU9ZC5zZWxlY3RvcixnLGg7aWYoIWN8fGQub3JpZ1R5cGU9PT1hLnR5cGV8fGMhPT1iJiYhZi5jb250YWlucyhiLGMpKWc9YS50eXBlLGEudHlwZT1kLm9yaWdUeXBlLGg9ZC5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9ZztyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJmYuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksZC5fc3VibWl0X2F0dGFjaGVkPSEwKX0pfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksZi5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKEEudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIilmLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSxmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCkpfSk7cmV0dXJuITF9Zi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7QS50ZXN0KGIubm9kZU5hbWUpJiYhYi5fY2hhbmdlX2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNTaW11bGF0ZWQmJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiBBLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9TTtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24uY2FsbCh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2UudHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS50eXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1NKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLmJpbmQoYixhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksRy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxILnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2F9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xKXtpZih0eXBlb2YgYS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYodHlwZW9mIGEuaW5uZXJUZXh0PT0ic3RyaW5nIilyZXR1cm4gYS5pbm5lclRleHQucmVwbGFjZShrLCIiKTtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZSs9bihhKX1lbHNlIGlmKGQ9PT0zfHxkPT09NClyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoYj0wO2M9YVtiXTtiKyspYy5ub2RlVHlwZSE9PTgmJihlKz1uKGMpKTtyZXR1cm4gZX0sbz1tLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT0ic3RyaW5nIixkPWMmJiFsLnRlc3QoYiksZT1jJiYhZDtkJiYoYj1iLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7ZisrKWlmKGg9YVtmXSl7d2hpbGUoKGg9aC5wcmV2aW91c1NpYmxpbmcpJiZoLm5vZGVUeXBlIT09MSk7YVtmXT1lfHxoJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2h8fCExOmg9PT1ifWUmJm0uZmlsdGVyKGIsYSwhMCl9LCI+IjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dHlwZW9mIGI9PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFsLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTz0vVW50aWwkLyxQPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLFE9LywvLFI9L14uW146I1xbXC4sXSokLyxTPUFycmF5LnByb3RvdHlwZS5zbGljZSxUPWYuZXhwci5tYXRjaC5QT1MsVT17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVyh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFcodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1QudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVQudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVihjWzBdKXx8VihkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKSxnPVMuY2FsbChhcmd1bWVudHMpO08udGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJzdHJpbmciJiYoZT1mLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFVW2FdP2YudW5pcXVlKGUpOmUsKHRoaXMubGVuZ3RoPjF8fFEudGVzdChkKSkmJlAudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsZy5qb2luKCIsIikpfX0pLGYuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpmLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGQ9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWYoZykuaXMoZCkpKWcubm9kZVR5cGU9PT0xJiZlLnB1c2goZyksZz1nW2NdO3JldHVybiBlfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFk9ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBjYW52YXMgZGF0YWxpc3QgZGV0YWlscyBmaWdjYXB0aW9uIGZpZ3VyZSBmb290ZXIgaGVhZGVyIGhncm91cCBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcHJvZ3Jlc3Mgc2VjdGlvbiBzdW1tYXJ5IHRpbWUgdmlkZW8iLFo9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZywkPS9eXHMrLyxfPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsYmE9LzwoW1x3Ol0rKS8sYmI9Lzx0Ym9keS9pLGJjPS88fCYjP1x3KzsvLGJkPS88KD86c2NyaXB0fHN0eWxlKS9pLGJlPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYmY9bmV3IFJlZ0V4cCgiPCg/OiIrWS5yZXBsYWNlKCIgIiwifCIpKyIpIiwiaSIpLGJnPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJoPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmk9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmo9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYms9WChjKTtiai5vcHRncm91cD1iai5vcHRpb24sYmoudGJvZHk9YmoudGZvb3Q9YmouY29sZ3JvdXA9YmouY2FwdGlvbj1iai50aGVhZCxiai50aD1iai50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJqLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9Im9iamVjdCImJmEhPT1iKXJldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gZi50ZXh0KHRoaXMpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykud3JhcEFsbChhKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Zi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGYodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9Zihhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPXRoaXMucHVzaFN0YWNrKHRoaXMsImFmdGVyIgosYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShaLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJkLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCEkLnRlc3QoYSkpJiYhYmpbKGJhLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPWEucmVwbGFjZShfLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChlKXt0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfX1lbHNlIGYuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmh0bWwoYS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChhKTtyZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGE9ZihhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7Zih0aGlzKS5yZW1vdmUoKSxiP2YoYikuYmVmb3JlKGEpOmYoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKGYoZi5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXN9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaSxqPWFbMF0saz1bXTtpZighZi5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2Ygaj09InN0cmluZyImJmJnLnRlc3QoaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoZi5pc0Z1bmN0aW9uKGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9Zih0aGlzKTthWzBdPWouY2FsbCh0aGlzLGUsYz9nLmh0bWwoKTpiKSxnLmRvbU1hbmlwKGEsYyxkKX0pO2lmKHRoaXNbMF0pe2k9aiYmai5wYXJlbnROb2RlLGYuc3VwcG9ydC5wYXJlbnROb2RlJiZpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDppfTplPWYuYnVpbGRGcmFnbWVudChhLHRoaXMsayksaD1lLmZyYWdtZW50LGguY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2c9aD1oLmZpcnN0Q2hpbGQ6Zz1oLmZpcnN0Q2hpbGQ7aWYoZyl7Yz1jJiZmLm5vZGVOYW1lKGcsInRyIik7Zm9yKHZhciBsPTAsbT10aGlzLmxlbmd0aCxuPW0tMTtsPG07bCsrKWQuY2FsbChjP2JsKHRoaXNbbF0sZyk6dGhpc1tsXSxlLmNhY2hlYWJsZXx8bT4xJiZsPG4/Zi5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZi5lYWNoKGssYnIpfXJldHVybiB0aGlzfX0pLGYuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZyxoLGksaj1hWzBdO2ImJmJbMF0mJihpPWJbMF0ub3duZXJEb2N1bWVudHx8YlswXSksaS5jcmVhdGVEb2N1bWVudEZyYWdtZW50fHwoaT1jKSxhLmxlbmd0aD09PTEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmai5sZW5ndGg8NTEyJiZpPT09YyYmai5jaGFyQXQoMCk9PT0iPCImJiFiZS50ZXN0KGopJiYoZi5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFiZy50ZXN0KGopKSYmIWYuc3VwcG9ydC51bmtub3duRWxlbXMmJmJmLnRlc3QoaikmJihnPSEwLGg9Zi5mcmFnbWVudHNbal0saCYmaCE9PTEmJihlPWgpKSxlfHwoZT1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxmLmNsZWFuKGEsaSxlLGQpKSxnJiYoZi5mcmFnbWVudHNbal09aD9lOjEpO3JldHVybntmcmFnbWVudDplLGNhY2hlYWJsZTpnfX0sZi5mcmFnbWVudHM9e30sZi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBkPVtdLGU9ZihjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmUubGVuZ3RoPT09MSl7ZVtiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZihlW2hdKVtiXShqKSxkPWQuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhkLGEsZS5zZWxlY3Rvcil9fSksZi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmNsb25lTm9kZSghMCksZSxnLGg7aWYoKCFmLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZi5pc1hNTERvYyhhKSl7Ym4oYSxkKSxlPWJvKGEpLGc9Ym8oZCk7Zm9yKGg9MDtlW2hdOysraClnW2hdJiZibihlW2hdLGdbaF0pfWlmKGIpe2JtKGEsZCk7aWYoYyl7ZT1ibyhhKSxnPWJvKGQpO2ZvcihoPTA7ZVtoXTsrK2gpYm0oZVtoXSxnW2hdKX19ZT1nPW51bGw7cmV0dXJuIGR9LGNsZWFuOmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBnO2I9Ynx8Yyx0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO3ZhciBoPVtdLGk7Zm9yKHZhciBqPTAsazsoaz1hW2pdKSE9bnVsbDtqKyspe3R5cGVvZiBrPT0ibnVtYmVyIiYmKGsrPSIiKTtpZighayljb250aW51ZTtpZih0eXBlb2Ygaz09InN0cmluZyIpaWYoIWJjLnRlc3Qoaykpaz1iLmNyZWF0ZVRleHROb2RlKGspO2Vsc2V7az1rLnJlcGxhY2UoXywiPCQxPjwvJDI+Iik7dmFyIGw9KGJhLmV4ZWMoayl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksbT1ialtsXXx8YmouX2RlZmF1bHQsbj1tWzBdLG89Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtiPT09Yz9iay5hcHBlbmRDaGlsZChvKTpYKGIpLmFwcGVuZENoaWxkKG8pLG8uaW5uZXJIVE1MPW1bMV0rayttWzJdO3doaWxlKG4tLSlvPW8ubGFzdENoaWxkO2lmKCFmLnN1cHBvcnQudGJvZHkpe3ZhciBwPWJiLnRlc3QoaykscT1sPT09InRhYmxlIiYmIXA/by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGROb2RlczptWzFdPT09Ijx0YWJsZT4iJiYhcD9vLmNoaWxkTm9kZXM6W107Zm9yKGk9cS5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHFbaV0sInRib2R5IikmJiFxW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZxW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocVtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmJC50ZXN0KGspJiZvLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKCQuZXhlYyhrKVswXSksby5maXJzdENoaWxkKSxrPW8uY2hpbGROb2Rlc312YXIgcjtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYoa1swXSYmdHlwZW9mIChyPWsubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHI7aSsrKWJxKGtbaV0pO2Vsc2UgYnEoayk7ay5ub2RlVHlwZT9oLnB1c2goayk6aD1mLm1lcmdlKGgsayl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiaC50ZXN0KGEudHlwZSl9O2ZvcihqPTA7aFtqXTtqKyspaWYoZSYmZi5ub2RlTmFtZShoW2pdLCJzY3JpcHQiKSYmKCFoW2pdLnR5cGV8fGhbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChoW2pdLnBhcmVudE5vZGU/aFtqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhbal0pOmhbal0pO2Vsc2V7aWYoaFtqXS5ub2RlVHlwZT09PTEpe3ZhciBzPWYuZ3JlcChoW2pdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnKTtoLnNwbGljZS5hcHBseShoLFtqKzEsMF0uY29uY2F0KHMpKX1kLmFwcGVuZENoaWxkKGhbal0pfX1yZXR1cm4gaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5ldmVudC5zcGVjaWFsLGc9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe2lmKGkubm9kZU5hbWUmJmYubm9EYXRhW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1pW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGogaW4gYi5ldmVudHMpZVtqXT9mLmV2ZW50LnJlbW92ZShpLGopOmYucmVtb3ZlRXZlbnQoaSxqLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9Zz9kZWxldGUgaVtmLmV4cGFuZG9dOmkucmVtb3ZlQXR0cmlidXRlJiZpLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJzPS9hbHBoYVwoW14pXSpcKS9pLGJ0PS9vcGFjaXR5PShbXildKikvLGJ1PS8oW0EtWl18Xm1zKS9nLGJ2PS9eLT9cZCsoPzpweCk/JC9pLGJ3PS9eLT9cZC8sYng9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnk9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJ6PVsiTGVmdCIsIlJpZ2h0Il0sYkE9WyJUb3AiLCJCb3R0b20iXSxiQixiQyxiRDtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YkIoYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Zi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmISFhLnN0eWxlKXt2YXIgZyxoLGk9Zi5jYW1lbENhc2UoYyksaj1hLnN0eWxlLGs9Zi5jc3NIb29rc1tpXTtjPWYuY3NzUHJvcHNbaV18fGk7aWYoZD09PWIpe2lmKGsmJiJnZXQiaW4gayYmKGc9ay5nZXQoYSwhMSxlKSkhPT1iKXJldHVybiBnO3JldHVybiBqW2NdfWg9dHlwZW9mIGQsaD09PSJzdHJpbmciJiYoZz1ieC5leGVjKGQpKSYmKGQ9KyhnWzFdKzEpKitnWzJdK3BhcnNlRmxvYXQoZi5jc3MoYSxjKSksaD0ibnVtYmVyIik7aWYoZD09bnVsbHx8aD09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47aD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYkIpcmV0dXJuIGJCKGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfX0pLGYuY3VyQ1NTPWYuY3NzLGYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlO2lmKGMpe2lmKGEub2Zmc2V0V2lkdGghPT0wKXJldHVybiBiRShhLGIsZCk7Zi5zd2FwKGEsYnksZnVuY3Rpb24oKXtlPWJFKGEsYixkKX0pO3JldHVybiBlfX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJ2LnRlc3QoYikpcmV0dXJuIGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBidC50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZz1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJmYudHJpbShnLnJlcGxhY2UoYnMsIiIpKT09PSIiKXtjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7aWYoZCYmIWQuZmlsdGVyKXJldHVybn1jLmZpbHRlcj1icy50ZXN0KGcpP2cucmVwbGFjZShicyxlKTpnKyIgIitlfX0pLGYoZnVuY3Rpb24oKXtmLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGYuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihhLGIpe3ZhciBjO2Yuc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe2I/Yz1iQihhLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW5SaWdodCIpOmM9YS5zdHlsZS5tYXJnaW5SaWdodH0pO3JldHVybiBjfX0pfSksYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYkM9ZnVuY3Rpb24oYSxjKXt2YXIgZCxlLGc7Yz1jLnJlcGxhY2UoYnUsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoIShlPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykpcmV0dXJuIGI7aWYoZz1lLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSlkPWcuZ2V0UHJvcGVydHlWYWx1ZShjKSxkPT09IiImJiFmLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYSkmJihkPWYuc3R5bGUoYSxjKSk7cmV0dXJuIGR9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiRD1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSwhYnYudGVzdChmKSYmYncudGVzdChmKSYmKGM9Zy5sZWZ0LGQ9YS5ydW50aW1lU3R5bGUmJmEucnVudGltZVN0eWxlLmxlZnQsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZy5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDAsZj1nLnBpeGVsTGVmdCsicHgiLGcubGVmdD1jLGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWQpKTtyZXR1cm4gZj09PSIiPyJhdXRvIjpmfSksYkI9YkN8fGJELGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYkY9LyUyMC9nLGJHPS9cW1xdJC8sYkg9L1xyP1xuL2csYkk9LyMuKiQvLGJKPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYks9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJMPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYk09L14oPzpHRVR8SEVBRCkkLyxiTj0vXlwvXC8vLGJPPS9cPy8sYlA9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYlE9L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYlI9L1xzKy8sYlM9LyhbPyZdKV89W14mXSovLGJUPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiVT1mLmZuLmxvYWQsYlY9e30sYlc9e30sYlgsYlksYlo9WyIqLyJdK1siKiJdO3RyeXtiWD1lLmhyZWZ9Y2F0Y2goYiQpe2JYPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJYLmhyZWY9IiIsYlg9YlguaHJlZn1iWT1iVC5leGVjKGJYLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiVSlyZXR1cm4gYlUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYlAsIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJRLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJLLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJILCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiSCwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2NiKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksY2IoYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlgsaXNMb2NhbDpiTC50ZXN0KGJZWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Ylp9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6Yl8oYlYpLGFqYXhUcmFuc3BvcnQ6Yl8oYlcpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2NkKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWNlKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5maXJlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksaj1kLnN0YXR1c0NvZGV8fHt9LGssbD17fSxtPXt9LG4sbyxwLHEscixzPTAsdCx1LHY9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXMpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPW1bY109bVtjXXx8YSxsW2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBzPT09Mj9uOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHM9PT0yKXtpZighbyl7bz17fTt3aGlsZShjPWJKLmV4ZWMobikpb1tjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1vW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtzfHwoZC5taW1lVHlwZT1hKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLHAmJnAuYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aC5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1pLmFkZCx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJJLCIiKS5yZXBsYWNlKGJOLGJZWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlIpLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJULmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iWVsxXSYmclsyXT09YllbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiWVszXXx8KGJZWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGNhKGJWLGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJNLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJPLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlMsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYk8udGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiWisiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1jYShiVyxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7czwyP3coLTEseik6Zi5lcnJvcih6KX19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpY2MoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYkYsIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY2Y9Zi5ub3coKSxjZz0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitjZisrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjZy50ZXN0KGIudXJsKXx8ZSYmY2cudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2csbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNnLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2g9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNqKWNqW2FdKDAsMSl9OiExLGNpPTAsY2o7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNrKCl8fGNsKCl9OmNrLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKXtpZighYy5jcm9zc0RvbWFpbnx8Zi5zdXBwb3J0LmNvcnMpe3ZhciBkO3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZyl7dmFyIGg9Yy54aHIoKSxpLGo7Yy51c2VybmFtZT9oLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMsYy51c2VybmFtZSxjLnBhc3N3b3JkKTpoLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMpO2lmKGMueGhyRmllbGRzKWZvcihqIGluIGMueGhyRmllbGRzKWhbal09Yy54aHJGaWVsZHNbal07Yy5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYy5taW1lVHlwZSksIWMuY3Jvc3NEb21haW4mJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihqIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGosZVtqXSl9Y2F0Y2goayl7fWguc2VuZChjLmhhc0NvbnRlbnQmJmMuZGF0YXx8bnVsbCksZD1mdW5jdGlvbihhLGUpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGQmJihlfHxoLnJlYWR5U3RhdGU9PT00KSl7ZD1iLGkmJihoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsY2gmJmRlbGV0ZSBjaltpXSk7aWYoZSloLnJlYWR5U3RhdGUhPT00JiZoLmFib3J0KCk7ZWxzZXtqPWguc3RhdHVzLGw9aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxtPXt9LG49aC5yZXNwb25zZVhNTCxuJiZuLmRvY3VtZW50RWxlbWVudCYmKG0ueG1sPW4pLG0udGV4dD1oLnJlc3BvbnNlVGV4dDt0cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjaSxjaCYmKGNqfHwoY2o9e30sZihhKS51bmxvYWQoY2gpKSxjaltpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY209e30sY24sY28sY3A9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNxPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY3IsY3M9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY3Q7Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSxlPT09IiImJmYuY3NzKGQsImRpc3BsYXkiKT09PSJub25lIiYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjeChkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdygiaGlkZSIsMyksYSxiLGMpO3ZhciBkLGUsZz0wLGg9dGhpcy5sZW5ndGg7Zm9yKDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1mLmNzcyhkLCJkaXNwbGF5IiksZSE9PSJub25lIiYmIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGUpKTtmb3IoZz0wO2c8aDtnKyspdGhpc1tnXS5zdHlsZSYmKHRoaXNbZ10uc3R5bGUuZGlzcGxheT0ibm9uZSIpO3JldHVybiB0aGlzfSxfdG9nZ2xlOmYuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dHlwZW9mIGE9PSJib29sZWFuIjtmLmlzRnVuY3Rpb24oYSkmJmYuaXNGdW5jdGlvbihiKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOmE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZD9hOmYodGhpcykuaXMoIjpoaWRkZW4iKTtmKHRoaXMpW2I/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZShjdygidG9nZ2xlIiwzKSxhLGIsYyk7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG87Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSksaD1hW2ddLGYuaXNBcnJheShoKT8oYi5hbmltYXRlZFByb3BlcnRpZXNbZ109aFsxXSxoPWFbZ109aFswXSk6Yi5hbmltYXRlZFByb3BlcnRpZXNbZ109Yi5zcGVjaWFsRWFzaW5nJiZiLnNwZWNpYWxFYXNpbmdbZ118fGIuZWFzaW5nfHwic3dpbmciO2lmKGg9PT0iaGlkZSImJmR8fGg9PT0ic2hvdyImJiFkKXJldHVybiBiLmNvbXBsZXRlLmNhbGwodGhpcyk7YyYmKGc9PT0iaGVpZ2h0Inx8Zz09PSJ3aWR0aCIpJiYoYi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV0sZi5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmYuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSImJighZi5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXR8fGN4KHRoaXMubm9kZU5hbWUpPT09ImlubGluZSI/dGhpcy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOnRoaXMuc3R5bGUuem9vbT0xKSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpO2ZvcihpIGluIGEpaj1uZXcgZi5meCh0aGlzLGIsaSksaD1hW2ldLGNwLnRlc3QoaCk/KG89Zi5fZGF0YSh0aGlzLCJ0b2dnbGUiK2kpfHwoaD09PSJ0b2dnbGUiP2Q/InNob3ciOiJoaWRlIjowKSxvPyhmLl9kYXRhKHRoaXMsInRvZ2dsZSIraSxvPT09InNob3ciPyJoaWRlIjoic2hvdyIpLGpbb10oKSk6altoXSgpKTooaz1jcS5leGVjKGgpLGw9ai5jdXIoKSxrPyhtPXBhcnNlRmxvYXQoa1syXSksbj1rWzNdfHwoZi5jc3NOdW1iZXJbaV0/IiI6InB4IiksbiE9PSJweCImJihmLnN0eWxlKHRoaXMsaSwobXx8MSkrbiksbD0obXx8MSkvai5jdXIoKSpsLGYuc3R5bGUodGhpcyxpLGwrbikpLGtbMV0mJihtPShrWzFdPT09Ii09Ij8tMToxKSptK2wpLGouY3VzdG9tKGwsbSxuKSk6ai5jdXN0b20obCxoLCIiKSk7cmV0dXJuITB9dmFyIGU9Zi5zcGVlZChiLGMsZCk7aWYoZi5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSxbITFdKTthPWYuZXh0ZW5kKHt9LGEpO3JldHVybiBlLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZS5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGMsZCl7dHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChhLGIsYyl7dmFyIGU9YltjXTtmLnJlbW92ZURhdGEoYSxjLCEwKSxlLnN0b3AoZCl9dmFyIGIsYz0hMSxlPWYudGltZXJzLGc9Zi5fZGF0YSh0aGlzKTtkfHxmLl91bm1hcmsoITAsdGhpcyk7aWYoYT09bnVsbClmb3IoYiBpbiBnKWdbYl0uc3RvcCYmYi5pbmRleE9mKCIucnVuIik9PT1iLmxlbmd0aC00JiZoKHRoaXMsZyxiKTtlbHNlIGdbYj1hKyIucnVuIl0mJmdbYl0uc3RvcCYmaCh0aGlzLGcsYik7Zm9yKGI9ZS5sZW5ndGg7Yi0tOyllW2JdLmVsZW09PT10aGlzJiYoYT09bnVsbHx8ZVtiXS5xdWV1ZT09PWEpJiYoZD9lW2JdKCEwKTplW2JdLnNhdmVTdGF0ZSgpLGM9ITAsZS5zcGxpY2UoYiwxKSk7KCFkfHwhYykmJmYuZGVxdWV1ZSh0aGlzLGEpfSl9fSksZi5lYWNoKHtzbGlkZURvd246Y3coInNob3ciLDEpLHNsaWRlVXA6Y3coImhpZGUiLDEpLHNsaWRlVG9nZ2xlOmN3KCJ0b2dnbGUiLDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLGYuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmdHlwZW9mIGE9PSJvYmplY3QiP2YuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8Zi5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFmLmlzRnVuY3Rpb24oYikmJmJ9O2QuZHVyYXRpb249Zi5meC5vZmY/MDp0eXBlb2YgZC5kdXJhdGlvbj09Im51bWJlciI/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIGYuZnguc3BlZWRzP2YuZnguc3BlZWRzW2QuZHVyYXRpb25dOmYuZnguc3BlZWRzLl9kZWZhdWx0O2lmKGQucXVldWU9PW51bGx8fGQucXVldWU9PT0hMClkLnF1ZXVlPSJmeCI7ZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKGEpe2YuaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZT9mLmRlcXVldWUodGhpcyxkLnF1ZXVlKTphIT09ITEmJmYuX3VubWFyayh0aGlzKX07cmV0dXJuIGR9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGc9Zi5meDt0aGlzLnN0YXJ0VGltZT1jdHx8Y3UoKSx0aGlzLmVuZD1jLHRoaXMubm93PXRoaXMuc3RhcnQ9YSx0aGlzLnBvcz10aGlzLnN0YXRlPTAsdGhpcy51bml0PWR8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksaC5xdWV1ZT10aGlzLm9wdGlvbnMucXVldWUsaC5lbGVtPXRoaXMuZWxlbSxoLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2Uub3B0aW9ucy5oaWRlJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3ApPT09YiYmZi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuc3RhcnQpfSxoKCkmJmYudGltZXJzLnB1c2goaCkmJiFjciYmKGNyPXNldEludGVydmFsKGcudGljayxnLmludGVydmFsKSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09YXx8Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuc2hvdz0hMCxhIT09Yj90aGlzLmN1c3RvbSh0aGlzLmN1cigpLGEpOnRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxmKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1mLl9kYXRhKHRoaXMuZWxlbSwiZnhzaG93Iit0aGlzLnByb3ApfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9Y3R8fGN1KCksZz0hMCxoPXRoaXMuZWxlbSxpPXRoaXMub3B0aW9ucztpZihhfHxlPj1pLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlzLm5vdz10aGlzLmVuZCx0aGlzLnBvcz10aGlzLnN0YXRlPTEsdGhpcy51cGRhdGUoKSxpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdPSEwO2ZvcihiIGluIGkuYW5pbWF0ZWRQcm9wZXJ0aWVzKWkuYW5pbWF0ZWRQcm9wZXJ0aWVzW2JdIT09ITAmJihnPSExKTtpZihnKXtpLm92ZXJmbG93IT1udWxsJiYhZi5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3MmJmYuZWFjaChbIiIsIlgiLCJZIl0sZnVuY3Rpb24oYSxiKXtoLnN0eWxlWyJvdmVyZmxvdyIrYl09aS5vdmVyZmxvd1thXX0pLGkuaGlkZSYmZihoKS5oaWRlKCk7aWYoaS5oaWRlfHxpLnNob3cpZm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpZi5zdHlsZShoLGIsaS5vcmlnW2JdKSxmLnJlbW92ZURhdGEoaCwiZnhzaG93IitiLCEwKSxmLnJlbW92ZURhdGEoaCwidG9nZ2xlIitiLCEwKTtkPWkuY29tcGxldGUsZCYmKGkuY29tcGxldGU9ITEsZC5jYWxsKGgpKX1yZXR1cm4hMX1pLmR1cmF0aW9uPT1JbmZpbml0eT90aGlzLm5vdz1lOihjPWUtdGhpcy5zdGFydFRpbWUsdGhpcy5zdGF0ZT1jL2kuZHVyYXRpb24sdGhpcy5wb3M9Zi5lYXNpbmdbaS5hbmltYXRlZFByb3BlcnRpZXNbdGhpcy5wcm9wXV0odGhpcy5zdGF0ZSxjLDAsMSxpLmR1cmF0aW9uKSx0aGlzLm5vdz10aGlzLnN0YXJ0Kyh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0aGlzLnBvcyksdGhpcy51cGRhdGUoKTtyZXR1cm4hMH19LGYuZXh0ZW5kKGYuZngse3RpY2s6ZnVuY3Rpb24oKXt2YXIgYSxiPWYudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2NdPT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxmLmZ4LnN0b3AoKX0saW50ZXJ2YWw6MTMsc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoY3IpLGNyPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLCJvcGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2EuZWxlbS5zdHlsZSYmYS5lbGVtLnN0eWxlW2EucHJvcF0hPW51bGw/YS5lbGVtLnN0eWxlW2EucHJvcF09YS5ub3crYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5meC5zdGVwW2JdPWZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLGIsTWF0aC5tYXgoMCxhLm5vdykpfX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN5PS9edCg/OmFibGV8ZHxoKSQvaSxjej0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9mLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChkKXt9dmFyIGU9Yi5vd25lckRvY3VtZW50LGc9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFmLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9ZS5ib2R5LGk9Y0EoZSksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmYuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciYmKCFmLnN1cHBvcnQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjeS50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGU9ZCxkPWIub2Zmc2V0UGFyZW50KSxmLnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3oudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3oudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y0EoZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y0EodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGQsInBhZGRpbmciKSk6dGhpc1tkXSgpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGQsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTnVtZXJpYyhqKT9qOml9cmV0dXJuIHRoaXMuY3NzKGQsdHlwZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9Zn0pKHdpbmRvdyk7'></script>
<script id="fb_extras_modnizr_253_min_js" src='data:/text/plain;base64,LyogTW9kZXJuaXpyIDIuNS4zIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECiAqIEJ1aWxkOiBodHRwOi8vd3d3Lm1vZGVybml6ci5jb20vZG93bmxvYWQvIy1jc3N0cmFuc2Zvcm1zLWNzc3RyYW5zZm9ybXMzZC1zaGl2LWNzc2NsYXNzZXMtdGVzdHN0eWxlcy10ZXN0cHJvcC10ZXN0YWxscHJvcHMtcHJlZml4ZXMtZG9tcHJlZml4ZXMtbG9hZAogKi8KO3dpbmRvdy5Nb2Rlcm5penI9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIHooYSl7ai5jc3NUZXh0PWF9ZnVuY3Rpb24gQShhLGIpe3JldHVybiB6KG0uam9pbihhKyI7IikrKGJ8fCIiKSl9ZnVuY3Rpb24gQihhLGIpe3JldHVybiB0eXBlb2YgYT09PWJ9ZnVuY3Rpb24gQyhhLGIpe3JldHVybiEhfigiIithKS5pbmRleE9mKGIpfWZ1bmN0aW9uIEQoYSxiKXtmb3IodmFyIGQgaW4gYSlpZihqW2FbZF1dIT09YylyZXR1cm4gYj09InBmeCI/YVtkXTohMDtyZXR1cm4hMX1mdW5jdGlvbiBFKGEsYixkKXtmb3IodmFyIGUgaW4gYSl7dmFyIGY9YlthW2VdXTtpZihmIT09YylyZXR1cm4gZD09PSExP2FbZV06QihmLCJmdW5jdGlvbiIpP2YuYmluZChkfHxiKTpmfXJldHVybiExfWZ1bmN0aW9uIEYoYSxiLGMpe3ZhciBkPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHIoMSksZT0oYSsiICIrby5qb2luKGQrIiAiKStkKS5zcGxpdCgiICIpO3JldHVybiBCKGIsInN0cmluZyIpfHxCKGIsInVuZGVmaW5lZCIpP0QoZSxiKTooZT0oYSsiICIrcC5qb2luKGQrIiAiKStkKS5zcGxpdCgiICIpLEUoZSxiLGMpKX12YXIgZD0iMi41LjMiLGU9e30sZj0hMCxnPWIuZG9jdW1lbnRFbGVtZW50LGg9Im1vZGVybml6ciIsaT1iLmNyZWF0ZUVsZW1lbnQoaCksaj1pLnN0eWxlLGssbD17fS50b1N0cmluZyxtPSIgLXdlYmtpdC0gLW1vei0gLW8tIC1tcy0gIi5zcGxpdCgiICIpLG49IldlYmtpdCBNb3ogTyBtcyIsbz1uLnNwbGl0KCIgIikscD1uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiAiKSxxPXt9LHI9e30scz17fSx0PVtdLHU9dC5zbGljZSx2LHc9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsaSxqLGs9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPWIuYm9keSxtPWw/bDpiLmNyZWF0ZUVsZW1lbnQoImJvZHkiKTtpZihwYXJzZUludChkLDEwKSl3aGlsZShkLS0paj1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGouaWQ9ZT9lW2RdOmgrKGQrMSksay5hcHBlbmRDaGlsZChqKTtyZXR1cm4gZj1bIiYjMTczOyIsIjxzdHlsZT4iLGEsIjwvc3R5bGU+Il0uam9pbigiIiksay5pZD1oLChsP2s6bSkuaW5uZXJIVE1MKz1mLG0uYXBwZW5kQ2hpbGQoayksbHx8KG0uc3R5bGUuYmFja2dyb3VuZD0iIixnLmFwcGVuZENoaWxkKG0pKSxpPWMoayxhKSxsP2sucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrKTptLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobSksISFpfSx4PXt9Lmhhc093blByb3BlcnR5LHk7IUIoeCwidW5kZWZpbmVkIikmJiFCKHguY2FsbCwidW5kZWZpbmVkIik/eT1mdW5jdGlvbihhLGIpe3JldHVybiB4LmNhbGwoYSxiKX06eT1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluIGEmJkIoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbYl0sInVuZGVmaW5lZCIpfSxGdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD11LmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGc9Yy5hcHBseShmLGQuY29uY2F0KHUuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChnKT09PWc/ZzpmfXJldHVybiBjLmFwcGx5KGIsZC5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGV9KTt2YXIgRz1mdW5jdGlvbihhLGMpe3ZhciBkPWEuam9pbigiIiksZj1jLmxlbmd0aDt3KGQsZnVuY3Rpb24oYSxjKXt2YXIgZD1iLnN0eWxlU2hlZXRzW2Iuc3R5bGVTaGVldHMubGVuZ3RoLTFdLGc9ZD9kLmNzc1J1bGVzJiZkLmNzc1J1bGVzWzBdP2QuY3NzUnVsZXNbMF0uY3NzVGV4dDpkLmNzc1RleHR8fCIiOiIiLGg9YS5jaGlsZE5vZGVzLGk9e307d2hpbGUoZi0tKWlbaFtmXS5pZF09aFtmXTtlLmNzc3RyYW5zZm9ybXMzZD0oaS5jc3N0cmFuc2Zvcm1zM2QmJmkuY3NzdHJhbnNmb3JtczNkLm9mZnNldExlZnQpPT09OSYmaS5jc3N0cmFuc2Zvcm1zM2Qub2Zmc2V0SGVpZ2h0PT09M30sZixjKX0oWyxbIkBtZWRpYSAoIixtLmpvaW4oInRyYW5zZm9ybS0zZCksKCIpLGgsIikiLCJ7I2Nzc3RyYW5zZm9ybXMzZHtsZWZ0OjlweDtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6M3B4O319Il0uam9pbigiIildLFssImNzc3RyYW5zZm9ybXMzZCJdKTtxLmNzc3RyYW5zZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4hIUYoInRyYW5zZm9ybSIpfSxxLmNzc3RyYW5zZm9ybXMzZD1mdW5jdGlvbigpe3ZhciBhPSEhRigicGVyc3BlY3RpdmUiKTtyZXR1cm4gYSYmIndlYmtpdFBlcnNwZWN0aXZlImluIGcuc3R5bGUmJihhPWUuY3NzdHJhbnNmb3JtczNkKSxhfTtmb3IodmFyIEggaW4gcSl5KHEsSCkmJih2PUgudG9Mb3dlckNhc2UoKSxlW3ZdPXFbSF0oKSx0LnB1c2goKGVbdl0/IiI6Im5vLSIpK3YpKTtyZXR1cm4geigiIiksaT1rPW51bGwsZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGgoKXt2YXIgYT1rLmVsZW1lbnRzO3JldHVybiB0eXBlb2YgYT09InN0cmluZyI/YS5zcGxpdCgiICIpOmF9ZnVuY3Rpb24gaShhKXt2YXIgYj17fSxjPWEuY3JlYXRlRWxlbWVudCxlPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxmPWUoKTthLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGU9KGJbYV18fChiW2FdPWMoYSkpKS5jbG9uZU5vZGUoKTtyZXR1cm4gay5zaGl2TWV0aG9kcyYmZS5jYW5IYXZlQ2hpbGRyZW4mJiFkLnRlc3QoYSk/Zi5hcHBlbmRDaGlsZChlKTplfSxhLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9RnVuY3Rpb24oImgsZiIsInJldHVybiBmdW5jdGlvbigpe3ZhciBuPWYuY2xvbmVOb2RlKCksYz1uLmNyZWF0ZUVsZW1lbnQ7aC5zaGl2TWV0aG9kcyYmKCIraCgpLmpvaW4oKS5yZXBsYWNlKC9cdysvZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXT1jKGEpLGYuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKShrLGYpfWZ1bmN0aW9uIGooYSl7dmFyIGI7cmV0dXJuIGEuZG9jdW1lbnRTaGl2ZWQ/YTooay5zaGl2Q1NTJiYhZSYmKGI9ISFnKGEsImFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWF1ZGlve2Rpc3BsYXk6bm9uZX1jYW52YXMsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lOyp6b29tOjF9W2hpZGRlbl17ZGlzcGxheTpub25lfWF1ZGlvW2NvbnRyb2xzXXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7Knpvb206MX1tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfSIpKSxmfHwoYj0haShhKSksYiYmKGEuZG9jdW1lbnRTaGl2ZWQ9YiksYSl9dmFyIGM9YS5odG1sNXx8e30sZD0vXjx8Xig/OmJ1dHRvbnxmb3JtfG1hcHxzZWxlY3R8dGV4dGFyZWEpJC9pLGUsZjsoZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGU9ImhpZGRlbiJpbiBhLGY9YS5jaGlsZE5vZGVzLmxlbmd0aD09MXx8ZnVuY3Rpb24oKXt0cnl7Yi5jcmVhdGVFbGVtZW50KCJhIil9Y2F0Y2goYSl7cmV0dXJuITB9dmFyIGM9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHR5cGVvZiBjLmNsb25lTm9kZT09InVuZGVmaW5lZCJ8fHR5cGVvZiBjLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9PSJ1bmRlZmluZWQifHx0eXBlb2YgYy5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIn0oKX0pKCk7dmFyIGs9e2VsZW1lbnRzOmMuZWxlbWVudHN8fCJhYmJyIGFydGljbGUgYXNpZGUgYXVkaW8gYmRpIGNhbnZhcyBkYXRhIGRhdGFsaXN0IGRldGFpbHMgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFyayBtZXRlciBuYXYgb3V0cHV0IHByb2dyZXNzIHNlY3Rpb24gc3VtbWFyeSB0aW1lIHZpZGVvIixzaGl2Q1NTOmMuc2hpdkNTUyE9PSExLHNoaXZNZXRob2RzOmMuc2hpdk1ldGhvZHMhPT0hMSx0eXBlOiJkZWZhdWx0IixzaGl2RG9jdW1lbnQ6an07YS5odG1sNT1rLGooYil9KHRoaXMsYiksZS5fdmVyc2lvbj1kLGUuX3ByZWZpeGVzPW0sZS5fZG9tUHJlZml4ZXM9cCxlLl9jc3NvbVByZWZpeGVzPW8sZS50ZXN0UHJvcD1mdW5jdGlvbihhKXtyZXR1cm4gRChbYV0pfSxlLnRlc3RBbGxQcm9wcz1GLGUudGVzdFN0eWxlcz13LGcuY2xhc3NOYW1lPWcuY2xhc3NOYW1lLnJlcGxhY2UoLyhefFxzKW5vLWpzKFxzfCQpLywiJDEkMiIpKyhmPyIganMgIit0LmpvaW4oIiAiKToiIiksZX0odGhpcyx0aGlzLmRvY3VtZW50KSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIGUoYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIn1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoYSl7cmV0dXJuIWF8fGE9PSJsb2FkZWQifHxhPT0iY29tcGxldGUifHxhPT0idW5pbml0aWFsaXplZCJ9ZnVuY3Rpb24gaCgpe3ZhciBhPXAuc2hpZnQoKTtxPTEsYT9hLnQ/bShmdW5jdGlvbigpeyhhLnQ9PSJjIj9CLmluamVjdENzczpCLmluamVjdEpzKShhLnMsMCxhLmEsYS54LGEuZSwxKX0sMCk6KGEoKSxoKCkpOnE9MH1mdW5jdGlvbiBpKGEsYyxkLGUsZixpLGope2Z1bmN0aW9uIGsoYil7aWYoIW8mJmcobC5yZWFkeVN0YXRlKSYmKHUucj1vPTEsIXEmJmgoKSxsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIpKXthIT0iaW1nIiYmbShmdW5jdGlvbigpe3QucmVtb3ZlQ2hpbGQobCl9LDUwKTtmb3IodmFyIGQgaW4geVtjXSl5W2NdLmhhc093blByb3BlcnR5KGQpJiZ5W2NdW2RdLm9ubG9hZCgpfX12YXIgaj1qfHxCLmVycm9yVGltZW91dCxsPXt9LG89MCxyPTAsdT17dDpkLHM6YyxlOmYsYTppLHg6an07eVtjXT09PTEmJihyPTEseVtjXT1bXSxsPWIuY3JlYXRlRWxlbWVudChhKSksYT09Im9iamVjdCI/bC5kYXRhPWM6KGwuc3JjPWMsbC50eXBlPWEpLGwud2lkdGg9bC5oZWlnaHQ9IjAiLGwub25lcnJvcj1sLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2suY2FsbCh0aGlzLHIpfSxwLnNwbGljZShlLDAsdSksYSE9ImltZyImJihyfHx5W2NdPT09Mj8odC5pbnNlcnRCZWZvcmUobCxzP251bGw6biksbShrLGopKTp5W2NdLnB1c2gobCkpfWZ1bmN0aW9uIGooYSxiLGMsZCxmKXtyZXR1cm4gcT0wLGI9Ynx8ImoiLGUoYSk/aShiPT0iYyI/djp1LGEsYix0aGlzLmkrKyxjLGQsZik6KHAuc3BsaWNlKHRoaXMuaSsrLDAsYSkscC5sZW5ndGg9PTEmJmgoKSksdGhpc31mdW5jdGlvbiBrKCl7dmFyIGE9QjtyZXR1cm4gYS5sb2FkZXI9e2xvYWQ6aixpOjB9LGF9dmFyIGw9Yi5kb2N1bWVudEVsZW1lbnQsbT1hLnNldFRpbWVvdXQsbj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxvPXt9LnRvU3RyaW5nLHA9W10scT0wLHI9Ik1vekFwcGVhcmFuY2UiaW4gbC5zdHlsZSxzPXImJiEhYi5jcmVhdGVSYW5nZSgpLmNvbXBhcmVOb2RlLHQ9cz9sOm4ucGFyZW50Tm9kZSxsPWEub3BlcmEmJm8uY2FsbChhLm9wZXJhKT09IltvYmplY3QgT3BlcmFdIixsPSEhYi5hdHRhY2hFdmVudCYmIWwsdT1yPyJvYmplY3QiOmw/InNjcmlwdCI6ImltZyIsdj1sPyJzY3JpcHQiOnUsdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBBcnJheV0ifSx4PVtdLHk9e30sej17dGltZW91dDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aCYmKGEudGltZW91dD1iWzBdKSxhfX0sQSxCO0I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgYT1hLnNwbGl0KCIhIiksYj14Lmxlbmd0aCxjPWEucG9wKCksZD1hLmxlbmd0aCxjPXt1cmw6YyxvcmlnVXJsOmMscHJlZml4ZXM6YX0sZSxmLGc7Zm9yKGY9MDtmPGQ7ZisrKWc9YVtmXS5zcGxpdCgiPSIpLChlPXpbZy5zaGlmdCgpXSkmJihjPWUoYyxnKSk7Zm9yKGY9MDtmPGI7ZisrKWM9eFtmXShjKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsZSxmLGcsaSl7dmFyIGo9YihhKSxsPWouYXV0b0NhbGxiYWNrO2oudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLGouYnlwYXNzfHwoZSYmKGU9ZChlKT9lOmVbYV18fGVbZ118fGVbYS5zcGxpdCgiLyIpLnBvcCgpLnNwbGl0KCI/IilbMF1dfHxoKSxqLmluc3RlYWQ/ai5pbnN0ZWFkKGEsZSxmLGcsaSk6KHlbai51cmxdP2oubm9leGVjPSEwOnlbai51cmxdPTEsZi5sb2FkKGoudXJsLGouZm9yY2VDU1N8fCFqLmZvcmNlSlMmJiJjc3MiPT1qLnVybC5zcGxpdCgiLiIpLnBvcCgpLnNwbGl0KCI/Iikuc2hpZnQoKT8iYyI6YyxqLm5vZXhlYyxqLmF0dHJzLGoudGltZW91dCksKGQoZSl8fGQobCkpJiZmLmxvYWQoZnVuY3Rpb24oKXtrKCksZSYmZShqLm9yaWdVcmwsaSxnKSxsJiZsKGoub3JpZ1VybCxpLGcpLHlbai51cmxdPTJ9KSkpfWZ1bmN0aW9uIGkoYSxiKXtmdW5jdGlvbiBjKGEsYyl7aWYoYSl7aWYoZShhKSljfHwoaj1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtrLmFwcGx5KHRoaXMsYSksbCgpfSksZyhhLGosYiwwLGgpO2Vsc2UgaWYoT2JqZWN0KGEpPT09YSlmb3IobiBpbiBtPWZ1bmN0aW9uKCl7dmFyIGI9MCxjO2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmYisrO3JldHVybiBifSgpLGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKCFjJiYhLS1tJiYoZChqKT9qPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9Ompbbl09ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2EmJmEuYXBwbHkodGhpcyxiKSxsKCl9fShrW25dKSksZyhhW25dLGosYixuLGgpKX1lbHNlIWMmJmwoKX12YXIgaD0hIWEudGVzdCxpPWEubG9hZHx8YS5ib3RoLGo9YS5jYWxsYmFja3x8ZixrPWosbD1hLmNvbXBsZXRlfHxmLG0sbjtjKGg/YS55ZXA6YS5ub3BlLCEhaSksaSYmYyhpKX12YXIgaixsLG09dGhpcy55ZXBub3BlLmxvYWRlcjtpZihlKGEpKWcoYSwwLG0sMCk7ZWxzZSBpZih3KGEpKWZvcihqPTA7ajxhLmxlbmd0aDtqKyspbD1hW2pdLGUobCk/ZyhsLDAsbSwwKTp3KGwpP0IobCk6T2JqZWN0KGwpPT09bCYmaShsLG0pO2Vsc2UgT2JqZWN0KGEpPT09YSYmaShhLG0pfSxCLmFkZFByZWZpeD1mdW5jdGlvbihhLGIpe3pbYV09Yn0sQi5hZGRGaWx0ZXI9ZnVuY3Rpb24oYSl7eC5wdXNoKGEpfSxCLmVycm9yVGltZW91dD0xZTQsYi5yZWFkeVN0YXRlPT1udWxsJiZiLmFkZEV2ZW50TGlzdGVuZXImJihiLnJlYWR5U3RhdGU9ImxvYWRpbmciLGIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQT1mdW5jdGlvbigpe2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwwKSxiLnJlYWR5U3RhdGU9ImNvbXBsZXRlIn0sMCkpLGEueWVwbm9wZT1rKCksYS55ZXBub3BlLmV4ZWN1dGVTdGFjaz1oLGEueWVwbm9wZS5pbmplY3RKcz1mdW5jdGlvbihhLGMsZCxlLGksail7dmFyIGs9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxsLG8sZT1lfHxCLmVycm9yVGltZW91dDtrLnNyYz1hO2ZvcihvIGluIGQpay5zZXRBdHRyaWJ1dGUobyxkW29dKTtjPWo/aDpjfHxmLGsub25yZWFkeXN0YXRlY2hhbmdlPWsub25sb2FkPWZ1bmN0aW9uKCl7IWwmJmcoay5yZWFkeVN0YXRlKSYmKGw9MSxjKCksay5vbmxvYWQ9ay5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LG0oZnVuY3Rpb24oKXtsfHwobD0xLGMoMSkpfSxlKSxpP2sub25sb2FkKCk6bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG4pfSxhLnllcG5vcGUuaW5qZWN0Q3NzPWZ1bmN0aW9uKGEsYyxkLGUsZyxpKXt2YXIgZT1iLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqLGM9aT9oOmN8fGY7ZS5ocmVmPWEsZS5yZWw9InN0eWxlc2hlZXQiLGUudHlwZT0idGV4dC9jc3MiO2ZvcihqIGluIGQpZS5zZXRBdHRyaWJ1dGUoaixkW2pdKTtnfHwobi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLG0oYywwKSl9fSh0aGlzLGRvY3VtZW50KSxNb2Rlcm5penIubG9hZD1mdW5jdGlvbigpe3llcG5vcGUuYXBwbHkod2luZG93LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX07'></script>
<script id="fb_lib_hash_js" src='data:/text/plain;base64,LyoqCiAqIGhhc2guanMKICoKICogQ29weXJpZ2h0IChDKSAyMDEyIEVtbWFudWVsIEdhcmNpYQogKiBNSVQgTGljZW5zZWQKICoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBIYXNoLnB1c2hTdGF0ZSh0cnVlKTsKICoKICogSGFzaC5vbignL3BhZ2UvKFswLTldKykkJywKICoJe3llcDogZnVuY3Rpb24ocGF0aCwgcGFydHMpIHsgfSwgbm9wOiBmdW5jdGlvbigpIHsgfX0sCiAqCSdQYWdlICQxJyk7CiAqCiAqIEhhc2guZ28oJy9wYWdlLzEnKTsKICoqLwoKKGZ1bmN0aW9uKCkgewoKJ3VzZSBzdHJpY3QnOwoKdmFyIGhhc2hlcyA9IHt9LAoJcmVnZXhwID0ge30sCgloaXN0b3J5ID0gW10sCglmcmVxID0gMTAwLAoJbnVtID0gMCwKCXB1c2hTdGF0ZSA9IGZhbHNlLAoJdGltZXIgPSBudWxsLAoJY3VycmVudFVybCA9IG51bGwsCgoJZnJlZXplID0gZnVuY3Rpb24ob2JqKSB7CgkJaWYgKE9iamVjdC5mcmVlemUpIHJldHVybiBPYmplY3QuZnJlZXplKG9iaik7CgkJcmV0dXJuIG9iajsKCX0sCgoJZ2V0SGFzaFBhcnRzID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJyk7Cgl9LAoKCXN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHsKCQkKCQlpZiAoIXRpbWVyKQoJCQl0aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewoJCQkJaWYgKG51bT4wICYmIGN1cnJlbnRVcmwhPXdpbmRvdy5sb2NhdGlvbi5ocmVmKSB7CgkJCQkJY3VycmVudFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwoJCQkJCXdpbmRvdy5IYXNoLmNoZWNrKCk7CgkJCQl9CgkJCX0sIGZyZXEpOwoKCX0sCgoJc3RvcFRpbWVyID0gZnVuY3Rpb24oKSB7CgoJCWlmICh0aW1lcikgewoJCQljbGVhckludGVydmFsKHRpbWVyKTsKCQkJdGltZXIgPSBudWxsOwoJCX0KCgl9OwoKd2luZG93Lkhhc2ggPSBmcmVlemUoewoKCQlwdXNoU3RhdGU6IGZ1bmN0aW9uKHllcykgewoKCQkJaWYgKHdpbmRvdy5oaXN0b3J5ICYmIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSkKCQkJCXB1c2hTdGF0ZSA9IHllczsKCgkJCXJldHVybiB0aGlzOwoJCX0sCgoJCWZyYWdtZW50OiBmdW5jdGlvbigpIHsKCQkJCgkJCXZhciBoYXNoID0gZ2V0SGFzaFBhcnRzKCk7CgkJCXJldHVybiAocHVzaFN0YXRlKSA/CgkJCQl3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAoKGhhc2hbMV0pID8gJyMnICsgaGFzaFsxXSA6ICcnKQoJCQkJOiBoYXNoWzFdIHx8ICcnOwoKCQl9LAoJCQoJCWdldDogZnVuY3Rpb24ocGF0aCwgcGFyYW1zKSB7CgkJCQoJCQl2YXIgcCwgZnJhZ21lbnQgPSAnJywgcGFyYW1ldGVycyA9IFtdOwoKCQkJZm9yKHAgaW4gcGFyYW1zKSB7CgkJCQlpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkocCkpCgkJCQkJY29udGludWU7CgkJCQlwYXJhbWV0ZXJzLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHApICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1twXSkpOwoJCQl9CgoJCQlpZiAocGFyYW1ldGVycy5sZW5ndGg+MCkKCQkJCXBhcmFtZXRlcnMgPSAnPycgKyBwYXJhbWV0ZXJzLmpvaW4oJyYnKTsKCQkKCQkJcmV0dXJuIChwdXNoU3RhdGUpID8gcGF0aCArIHBhcmFtZXRlcnMgOgoJCQkJZ2V0SGFzaFBhcnRzKClbMF0gKyAnIycgKyBwYXRoICsgcGFyYW1ldGVyczsKCgkJfSwKCgkJZ286IGZ1bmN0aW9uKGhhc2gsIHBhcmFtcykgewoKCQkJaWYgKHRoaXMuZnJhZ21lbnQoKSE9aGFzaCkgewoJCQkJdmFyIHRvID0gdGhpcy5nZXQoaGFzaCwgcGFyYW1zKTsKCgkJCQlpZiAocHVzaFN0YXRlKQoJCQkJCXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBkb2N1bWVudC50aXRsZSwgdG8pOwoJCQkJZWxzZQoJCQkJCXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdG87CgkJCQl9CgkJCQoJCQlyZXR1cm4gdGhpczsKCQl9LAoKCQl1cGRhdGU6IGZ1bmN0aW9uICgpIHsKCQkJCgkJCWN1cnJlbnRVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKCQkJcmV0dXJuIHRoaXM7CgoJCX0sCgoJCW9uOiBmdW5jdGlvbihoYXNoLCBjYWxsYmFjaywgdGl0bGUpIHsKCgkJCWlmICghaGFzaGVzW2hhc2hdKQoJCQkJaGFzaGVzW2hhc2hdID0ge3RpdGxlOiB0aXRsZSwgbGlzdGVuZXJzOiBbXX07CgkJCQoJCQloYXNoZXNbaGFzaF0ubGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOwoJCQludW0rKzsKCQkJc3RhcnRUaW1lcigpOwoKCQkJcmV0dXJuIHRoaXM7CgkJfSwKCgkJY2hlY2s6IGZ1bmN0aW9uKCkgewoKCQkJdmFyIGksCgkJCQloYXNoLAoJCQkJcGFydHMsCgkJCQlmcmFnbWVudCA9IHRoaXMuZnJhZ21lbnQoKTsKCgoJCQlmb3IgKGhhc2ggaW4gaGFzaGVzKSB7CgkJCQlpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoYXNoZXMsIGhhc2gpKQoJCQkJCWNvbnRpbnVlOwoKCQkJCWhhc2hlc1toYXNoXS5yZWdleHAgPSBoYXNoZXNbaGFzaF0ucmVnZXhwIHx8IG5ldyBSZWdFeHAoaGFzaCk7CgoJCQkJaWYgKChwYXJ0cyA9IGhhc2hlc1toYXNoXS5yZWdleHAuZXhlYyhmcmFnbWVudCkpKSB7CgkJCQkJaWYgKGhhc2hlc1toYXNoXS50aXRsZSkKCQkJCQkJZG9jdW1lbnQudGl0bGUgPSBoYXNoZXNbaGFzaF0udGl0bGU7CgoJCQkJCWZvciAoaSA9IDA7IGk8aGFzaGVzW2hhc2hdLmxpc3RlbmVycy5sZW5ndGg7IGkrKykKCQkJCQkJaWYgKGhhc2hlc1toYXNoXS5saXN0ZW5lcnNbaV0ueWVwKQoJCQkJCQkJaGFzaGVzW2hhc2hdLmxpc3RlbmVyc1tpXS55ZXAoZnJhZ21lbnQsIHBhcnRzKTsKCQkJCX0gZWxzZSB7CgkJCQkJZm9yIChpID0gMDsgaTxoYXNoZXNbaGFzaF0ubGlzdGVuZXJzLmxlbmd0aDsgaSsrKQoJCQkJCQlpZiAoaGFzaGVzW2hhc2hdLmxpc3RlbmVyc1tpXS5ub3ApCgkJCQkJCQloYXNoZXNbaGFzaF0ubGlzdGVuZXJzW2ldLm5vcChmcmFnbWVudCk7CgkJCQl9CgoJCQl9CgoJCQlyZXR1cm4gdGhpczsKCQl9Cn0pOwoKfSkoKTsK'></script>
<script id="fb_lib_turn_html4_js" src='data:/text/plain;base64,LyoqCiAqIHR1cm4uanMgNHRoIHJlbGVhc2UgSFRNTDQgdmVyc2lvbgogKiB0dXJuanMuY29tCiAqIHR1cm5qcy5jb20vbGljZW5zZS50eHQKICoKICogQ29weXJpZ2h0IChDKSAyMDEyIEVtbWFudWVsIEdhcmNpYQogKiBBbGwgcmlnaHRzIHJlc2VydmVkCiAqKi8KCihmdW5jdGlvbigkKSB7CgondXNlIHN0cmljdCc7Cgp2YXIgaGFzM2QsCgogIHZlbmRvciA9ICcnLAogIAogIHZlcnNpb24gPSAnNC4xLjAnLAoKICBpc1RvdWNoID0gZmFsc2UsCgogIG1vdXNlRXZlbnRzID0KICAgIHsKICAgICAgZG93bjogJ21vdXNlZG93bicsCiAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICB1cDogJ21vdXNldXAnLAogICAgICBvdmVyOiAnbW91c2VvdmVyJywKICAgICAgb3V0OiAnbW91c2VvdXQnCiAgICB9LAoKICBjb3JuZXJzID0gewogICAgYmFja3dhcmQ6IFsnbCddLAogICAgZm9yd2FyZDogWydyJ10sCiAgICBhbGw6IFsnbCcsICdyJ10KICB9LAoKICAvLyBEaXNwbGF5IHZhbHVlcwoKICBkaXNwbGF5cyA9IFsnc2luZ2xlJywgJ2RvdWJsZSddLAoKICAvLyBEaXJlY3Rpb24gdmFsdWVzCgogIGRpcmVjdGlvbnMgPSBbJ2x0cicsICdydGwnXSwKCiAgLy8gRGVmYXVsdCBvcHRpb25zCgogIHR1cm5PcHRpb25zID0gewoKICAgIC8vIEVuYWJsZXMgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCgogICAgYWNjZWxlcmF0aW9uOiB0cnVlLAoKICAgIC8vIERpc3BsYXkKCiAgICBkaXNwbGF5OiAnZG91YmxlJywKCiAgICAvLyBEdXJhdGlvbiBvZiB0cmFuc2l0aW9uIGluIG1pbGxpc2Vjb25kcwoKICAgIGR1cmF0aW9uOiA2MDAsCgogICAgLy8gRmlyc3QgcGFnZQoKICAgIHBhZ2U6IDEsCiAgICAKICAgIC8vIEVuYWJsZXMgZ3JhZGllbnRzCgogICAgZ3JhZGllbnRzOiB0cnVlLAoKICAgIC8vIEV2ZW50cwoKICAgIHdoZW46IG51bGwKICB9LAoKICBmbGlwT3B0aW9ucyA9IHsKCiAgICAvLyBFbmFibGVzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgoKICAgIGFjY2VsZXJhdGlvbjogdHJ1ZSwKICAgIAogICAgLy8gQ29ybmVycwogICAgLy8gYmFja3dhcmQ6IEFjdGl2YXRlcyBib3RoIHRsIGFuZCBibCBjb3JuZXJzCiAgICAvLyBmb3J3YXJkOiBBY3RpdmF0ZXMgYm90aCB0ciBhbmQgYnIgY29ybmVycwogICAgLy8gYWxsOiBBY3RpdmF0ZXMgYWxsIHRoZSBjb3JuZXJzCgogICAgY29ybmVyczogJ2ZvcndhcmQnLAogICAgCiAgICAvLyBTaXplIG9mIHRoZSBhY3RpdmUgem9uZSBvZiBlYWNoIGNvcm5lcgoKICAgIGNvcm5lclNpemU6IDEwMCwKCgogICAgLy8gRHVyYXRpb24gb2YgdHJhbnNpdGlvbiBpbiBtaWxsaXNlY29uZHMKCiAgICBkdXJhdGlvbjogNjAwLAogICAgCiAgICAvLyBFbmFibGVzIGdyYWRpZW50cwoKICAgIGdyYWRpZW50czogdHJ1ZQoKICB9LAoKICAvLyBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIERPTSwgbWluaW11bSB2YWx1ZTogNgoKICBwYWdlc0luRE9NID0gNiwKICAKCnR1cm5NZXRob2RzID0gewoKICAvLyBTaW5nbGV0b24gY29uc3RydWN0b3IKICAvLyAkKCcjc2VsZWN0b3InKS50dXJuKFtvcHRpb25zXSk7CgogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICBpZiAodGhpcy5sZW5ndGg+MSkKICAgICAgdGhyb3cgdHVybkVycm9yKCdUaGlzIHNlbGVjdG9yIGhhcyBtb3JlIHRoYW4gMSBlbGVtZW50Jyk7CiAgICAKICAgIC8vIERlZmluZSBjb25zdGFudHMKICAgIAogICAgdmVuZG9yID0gZ2V0UHJlZml4KCk7CgogICAgdmFyIGksIHBhZ2VOdW0gPSAwLCBkYXRhID0gdGhpcy5kYXRhKCksIGNoID0gdGhpcy5jaGlsZHJlbigpOwoKICAgIC8vIFNldCBpbml0aWFsIGNvbmZpZ3VyYXRpb24KCiAgICBvcHRzID0gJC5leHRlbmQoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCksCiAgICAgIGRpcmVjdGlvbjogdGhpcy5hdHRyKCdkaXInKSB8fCB0aGlzLmNzcygnZGlyZWN0aW9uJykgfHwgJ2x0cicKICAgIH0sIHR1cm5PcHRpb25zLCBvcHRzKTsKCiAgICBkYXRhLm9wdHMgPSBvcHRzOwogICAgZGF0YS5wYWdlT2JqcyA9IHt9OwogICAgZGF0YS5wYWdlcyA9IHt9OwogICAgZGF0YS5wYWdlV3JhcCA9IHt9OwogICAgZGF0YS5wYWdlUGxhY2UgPSB7fTsKICAgIGRhdGEucGFnZU12ID0gW107CiAgICBkYXRhLnpvb20gPSAxOwogICAgZGF0YS50b3RhbFBhZ2VzID0gb3B0cy5wYWdlcyB8fCAwOwogICAgZGF0YS5kb2NFdmVudHMgPSB7CiAgICAgIG1vdXNlU3RhcnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpICYmCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9ldmVudFN0YXJ0LmNhbGwoZGF0YS5wYWdlc1twYWdlXSwgZSk9PT1mYWxzZSkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0sCgogICAgICBtb3VzZU1vdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciBwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgICAgICBpZiAoaGFzKHBhZ2UsIGRhdGEucGFnZXMpKQogICAgICAgICAgICBmbGlwTWV0aG9kcy5fZXZlbnRNb3ZlLmNhbGwoZGF0YS5wYWdlc1twYWdlXSwgZSk7CiAgICAgIH0sCgogICAgICBtb3VzZUVuZDogZnVuY3Rpb24oZSkgewogICAgICAgIGZvciAodmFyIHBhZ2UgaW4gZGF0YS5wYWdlcykKICAgICAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9ldmVudEVuZC5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGUpOwogICAgICB9CiAgICB9OwoKICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lcnMKCiAgICBpZiAob3B0cy53aGVuKQogICAgICBmb3IgKGkgaW4gb3B0cy53aGVuKQogICAgICAgIGlmIChoYXMoaSwgb3B0cy53aGVuKSkKICAgICAgICAgIHRoaXMuYmluZChpLCBvcHRzLndoZW5baV0pOwoKICAgIC8vIFNldCB0aGUgY3NzCgogICAgdGhpcy5jc3Moe3Bvc2l0aW9uOiAncmVsYXRpdmUnLCB3aWR0aDogb3B0cy53aWR0aCwgaGVpZ2h0OiBvcHRzLmhlaWdodH0pOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBkaXNwbGF5CgogICAgdGhpcy50dXJuKCdkaXNwbGF5Jywgb3B0cy5kaXNwbGF5KTsKCiAgICAvLyBTZXQgdGhlIGRpcmVjdGlvbgoKICAgIGlmIChvcHRzLmRpcmVjdGlvbiE9PScnKQogICAgICB0aGlzLnR1cm4oJ2RpcmVjdGlvbicsIG9wdHMuZGlyZWN0aW9uKTsKCgogICAgLy8gQWRkIHBhZ2VzIGZyb20gdGhlIERPTQoKICAgIGZvciAoaSA9IDA7IGk8Y2gubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCQoY2hbaV0pLmF0dHIoJ2lnbm9yZScpIT0nMScpIHsKICAgICAgICB0aGlzLnR1cm4oJ2FkZFBhZ2UnLCBjaFtpXSwgKytwYWdlTnVtKTsKICAgICAgfQogICAgfQoKICAgIC8vIEV2ZW50IGxpc3RlbmVycwoKICAgICQodGhpcykuYmluZChtb3VzZUV2ZW50cy5kb3duLCBkYXRhLmRvY0V2ZW50cy5tb3VzZVN0YXJ0KS4KICAgICAgYmluZCgnc3RhcnQnLCB0dXJuTWV0aG9kcy5fc3RhcnQpLgogICAgICBiaW5kKCdlbmQnLCB0dXJuTWV0aG9kcy5fZW5kKS4KICAgICAgYmluZCgncHJlc3NlZCcsIHR1cm5NZXRob2RzLl9wcmVzc2VkKS4KICAgICAgYmluZCgncmVsZWFzZWQnLCB0dXJuTWV0aG9kcy5fcmVsZWFzZWQpLgogICAgICBiaW5kKCdmbGlwJywgdHVybk1ldGhvZHMuX2ZsaXApOwoKICAgICQoZG9jdW1lbnQpLmJpbmQobW91c2VFdmVudHMubW92ZSwgZGF0YS5kb2NFdmVudHMubW91c2VNb3ZlKS4KICAgICAgYmluZChtb3VzZUV2ZW50cy51cCwgZGF0YS5kb2NFdmVudHMubW91c2VFbmQpOwoKICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlCgogICAgdGhpcy50dXJuKCdwYWdlJywgb3B0cy5wYWdlKTsKCiAgICBkYXRhLmRvbmUgPSB0cnVlOwoKICAgIHJldHVybiB0aGlzOwogIH0sCgogIC8vIEFkZHMgYSBwYWdlIGZyb20gZXh0ZXJuYWwgZGF0YQoKICBhZGRQYWdlOiBmdW5jdGlvbihlbGVtZW50LCBwYWdlKSB7CgogICAgdmFyIGN1cnJlbnRQYWdlLAogICAgICBjbGFzc05hbWUsCiAgICAgIGluY1BhZ2VzID0gZmFsc2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbGFzdFBhZ2UgPSBkYXRhLnRvdGFsUGFnZXMrMTsKCiAgICBpZiAoZGF0YS5kZXN0cm95aW5nKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gUmVhZCB0aGUgcGFnZSBudW1iZXIgZnJvbSB0aGUgY2xhc3NOYW1lIG9mIGBlbGVtZW50YCAtIGZvcm1hdDogcFswLTldKwoKICAgIGlmICgoY3VycmVudFBhZ2UgPSAvXGJwKFswLTldKylcYi8uZXhlYygkKGVsZW1lbnQpLmF0dHIoJ2NsYXNzJykpKSkKICAgICAgcGFnZSA9IHBhcnNlSW50KGN1cnJlbnRQYWdlWzFdLCAxMCk7CgogICAgaWYgKHBhZ2UpIHsKICAgICAgCiAgICAgIGlmIChwYWdlPT1sYXN0UGFnZSkKICAgICAgICBpbmNQYWdlcyA9IHRydWU7CiAgICAgIGVsc2UgaWYgKHBhZ2U+bGFzdFBhZ2UpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCdQYWdlICInK3BhZ2UrJyIgY2Fubm90IGJlIGluc2VydGVkJyk7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIHBhZ2UgPSBsYXN0UGFnZTsKICAgICAgaW5jUGFnZXMgPSB0cnVlOwoKICAgIH0KCiAgICBpZiAocGFnZT49MSAmJiBwYWdlPD1sYXN0UGFnZSkgewoKICAgICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpCiAgICAgICAgY2xhc3NOYW1lID0gKHBhZ2UlMikgPyAnIG9kZCcgOiAnIGV2ZW4nOwogICAgICBlbHNlCiAgICAgICAgY2xhc3NOYW1lID0gJyc7CgogICAgICAvLyBTdG9wIGFuaW1hdGlvbnMKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3N0b3AnKTsKCiAgICAgIC8vIE1vdmUgcGFnZXMgaWYgaXQncyBuZWNlc3NhcnkKICAgICAgaWYgKHBhZ2UgaW4gZGF0YS5wYWdlT2JqcykKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgcGFnZSwgMSk7CgogICAgICAvLyBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHBhZ2VzCiAgICAgIGlmIChpbmNQYWdlcykKICAgICAgICBkYXRhLnRvdGFsUGFnZXMgPSBsYXN0UGFnZTsKCiAgICAgIC8vIEFkZCBlbGVtZW50CiAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0gPSAkKGVsZW1lbnQpLgogICAgICAgIGNzcyh7J2Zsb2F0JzogJ2xlZnQnfSkuCiAgICAgICAgYWRkQ2xhc3MoJ3BhZ2UgcCcgKyBwYWdlICsgY2xhc3NOYW1lKTsKCiAgICAgIC8vIEFkZCBwYWdlCiAgICAgIHR1cm5NZXRob2RzLl9hZGRQYWdlLmNhbGwodGhpcywgcGFnZSk7CgoKICAgICAgLy8gVXBkYXRlIHZpZXcKICAgICAgaWYgKGRhdGEuZG9uZSkKICAgICAgICB0aGlzLnR1cm4oJ3VwZGF0ZScpOwoKCiAgICAgIC8vIFJlbW92ZSBwYWdlcyBvdXQgb2YgcmFuZ2UKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZUZyb21ET00uY2FsbCh0aGlzKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICAvLyBBZGRzIGEgcGFnZQoKICBfYWRkUGFnZTogZnVuY3Rpb24ocGFnZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBlbGVtZW50ID0gZGF0YS5wYWdlT2Jqc1twYWdlXTsKCiAgICBpZiAoZWxlbWVudCkKICAgICAgaWYgKHR1cm5NZXRob2RzLl9uZWNlc3NQYWdlLmNhbGwodGhpcywgcGFnZSkpIHsKCiAgICAgICAgaWYgKCFkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CgogICAgICAgICAgdmFyIHByb3AgPSB0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGlzLCBwYWdlLCB0cnVlKTsKCiAgICAgICAgICBlbGVtZW50LmNzcyh7d2lkdGg6IHByb3Aud2lkdGgsIGhlaWdodDogcHJvcC5oZWlnaHR9KTsKCiAgICAgICAgICAvLyBQbGFjZQogICAgICAgICAgZGF0YS5wYWdlUGxhY2VbcGFnZV0gPSBwYWdlOwoKICAgICAgICAgIC8vIFdyYXBwZXIKICAgICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0gPSAkKCc8ZGl2Lz4nLAogICAgICAgICAgICB7J2NsYXNzJzogJ3R1cm4tcGFnZS13cmFwcGVyJywKICAgICAgICAgICAgICBwYWdlOiBwYWdlLAogICAgICAgICAgICAgIGNzczoge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ319KS4KICAgICAgICAgICAgY3NzKHByb3ApOwoKICAgICAgICAgIC8vIEFwcGVuZCB0byB0aGlzCiAgICAgICAgICB0aGlzLmFwcGVuZChkYXRhLnBhZ2VXcmFwW3BhZ2VdKTsKCiAgICAgICAgICAvLyBNb3ZlIGVsZW1lbnQgdG8gd3JhcHBlcgogICAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5wcmVwZW5kKGRhdGEucGFnZU9ianNbcGFnZV0pOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBwYWdlIGlzIGluIHRoZSBjdXJyZW50IHZpZXcsIGNyZWF0ZSB0aGUgZmxpcCBlZmZlY3QKICAgICAgICBpZiAoIXBhZ2UgfHwgdHVybk1ldGhvZHMuX3NldFBhZ2VMb2MuY2FsbCh0aGlzLCBwYWdlKT09MSkKICAgICAgICAgIHR1cm5NZXRob2RzLl9tYWtlRmxpcC5jYWxsKHRoaXMsIHBhZ2UpOwogICAgICAgIAogICAgICB9IGVsc2UgewoKICAgICAgICAvLyBQbGFjZQogICAgICAgIGRhdGEucGFnZVBsYWNlW3BhZ2VdID0gMDsKCiAgICAgICAgLy8gUmVtb3ZlIGVsZW1lbnQgZnJvbSB0aGUgRE9NCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgICBkYXRhLnBhZ2VPYmpzW3BhZ2VdLnJlbW92ZSgpOwoKICAgICAgfQoKICB9LAoKICAvLyBDaGVja3MgaWYgYSBwYWdlIGlzIGluIG1lbW9yeQogIAogIGhhc1BhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICByZXR1cm4gaGFzKHBhZ2UsIHRoaXMuZGF0YSgpLnBhZ2VPYmpzKTsKICAKICB9LAoKICAvLyBDZW50ZXJzIHRoZSBmbGlwYm9vawoKICBjZW50ZXI6IGZ1bmN0aW9uKHBhZ2UpIHsKICAgIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgc2l6ZSA9ICQodGhpcykudHVybignc2l6ZScpLAogICAgICBsZWZ0ID0gc2l6ZS53aWR0aC8oZGF0YS56b29tKjIpIC1zaXplLndpZHRoLzI7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpIHsKICAgICAgdmFyIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlIHx8IGRhdGEudHBhZ2UgfHwgZGF0YS5wYWdlKTsKCiAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpIHsKICAgICAgICBpZiAoIXZpZXdbMF0pCiAgICAgICAgICBsZWZ0IC09IHNpemUud2lkdGgvNDsKICAgICAgICBlbHNlIGlmICghdmlld1sxXSkKICAgICAgICAgIGxlZnQgKz0gc2l6ZS53aWR0aC80OwogICAgICB9IGVsc2UgewogICAgICAgIGlmICghdmlld1swXSkKICAgICAgICAgIGxlZnQgKz0gc2l6ZS53aWR0aC80OwogICAgICAgIGVsc2UgaWYgKCF2aWV3WzFdKQogICAgICAgICAgbGVmdCAtPSBzaXplLndpZHRoLzQ7CiAgICAgIH0KICAgIH0KCiAgICAkKHRoaXMpLmNzcyh7bWFyZ2luTGVmdDogbGVmdH0pOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEZXN0cm95cyB0aGUgZmxpcGJvb2sKCiAgZGVzdHJveTogZnVuY3Rpb24gKCkgewoKICAgIHZhciBwYWdlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgZGF0YS5kZXN0cm95aW5nID0gdHJ1ZTsKCiAgICAkKHRoaXMpLnVuYmluZChtb3VzZUV2ZW50cy5kb3duKQogICAgICAudW5iaW5kKCdlbmQnKQogICAgICAudW5iaW5kKCdmaXJzdCcpCiAgICAgIC51bmJpbmQoJ2ZsaXAnKQogICAgICAudW5iaW5kKCdsYXN0JykKICAgICAgLnVuYmluZCgncHJlc3NlZCcpCiAgICAgIC51bmJpbmQoJ3JlbGVhc2VkJykKICAgICAgLnVuYmluZCgnc3RhcnQnKQogICAgICAudW5iaW5kKCd0dXJuaW5nJykKICAgICAgLnVuYmluZCgndHVybmVkJykKICAgICAgLnVuYmluZCgnem9vbWluZycpOwoKICAgICQoZG9jdW1lbnQpLnVuYmluZChtb3VzZUV2ZW50cy5tb3ZlLCBkYXRhLmRvY0V2ZW50cy5tb3VzZU1vdmUpLgogICAgICB1bmJpbmQobW91c2VFdmVudHMudXAsIGRhdGEuZG9jRXZlbnRzLm1vdXNlRW5kKTsKICAgIAogICAgd2hpbGUgKGRhdGEudG90YWxQYWdlcyE9PTApIHsKICAgICAgdGhpcy50dXJuKCdyZW1vdmVQYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIH0KCiAgICBpZiAoZGF0YS5mcGFyZW50KQogICAgICBkYXRhLmZwYXJlbnQucmVtb3ZlKCk7CgogICAgaWYgKGRhdGEuc2hhZG93KQogICAgICBkYXRhLnNoYWRvdy5yZW1vdmUoKTsKCiAgICB0aGlzLnJlbW92ZURhdGEoKTsKICAgIGRhdGEgPSBudWxsOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBDaGVja3MgaWYgdGhpcyBlbGVtZW50IGlzIGEgZmxpcGJvb2sKCiAgaXM6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0eXBlb2YodGhpcy5kYXRhKCkucGFnZXMpPT0nb2JqZWN0JzsKCiAgfSwKCiAgLy8gU2V0cyBhbmQgZ2V0cyB0aGUgem9vbSB2YWx1ZQoKICB6b29tOiBmdW5jdGlvbihuZXdab29tKSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihuZXdab29tKT09J251bWJlcicpIHsKCiAgICAgIGlmIChuZXdab29tPDAuMDAxIHx8IG5ld1pvb20+MTAwKQogICAgICAgIHRocm93IHR1cm5FcnJvcihuZXdab29tKyAnIGlzIG5vdCBhIHZhbHVlIGZvciB6b29tJyk7CiAgICAKICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgnem9vbWluZycpOwogICAgICB0aGlzLnRyaWdnZXIoZXZlbnQsIFtuZXdab29tLCBkYXRhLnpvb21dKTsKCiAgICAgIGlmIChldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgCiAgICAgIHZhciBzaXplID0gJCh0aGlzKS50dXJuKCdzaXplJyksCiAgICAgICAgaXogPSAxL2RhdGEuem9vbSwKICAgICAgICBuZXdXaWR0aCA9IE1hdGgucm91bmQoc2l6ZS53aWR0aCAqIGl6ICogbmV3Wm9vbSksCiAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5yb3VuZChzaXplLmhlaWdodCAqIGl6ICogbmV3Wm9vbSk7CiAgICAKICAgICAgZGF0YS56b29tID0gbmV3Wm9vbTsKCiAgICAgICQodGhpcykudHVybignc3RvcCcpLgogICAgICAgIHR1cm4oJ3NpemUnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KS4KICAgICAgICBjc3Moe21hcmdpblRvcDogc2l6ZS5oZWlnaHQgKiBpeiAvIDIgLSBuZXdIZWlnaHQgLyAyfSk7CgogICAgICBpZiAoZGF0YS5vcHRzLmF1dG9DZW50ZXIpCiAgICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKICAgICAgZWxzZQogICAgICAgICQodGhpcykuY3NzKHttYXJnaW5MZWZ0OiBzaXplLndpZHRoICogaXogLyAyIC0gbmV3V2lkdGggLyAyfSk7CiAgICAgIAogICAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwodGhpcyk7CiAgCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0gZWxzZQogICAgICByZXR1cm4gZGF0YS56b29tOwoKICB9LAoKICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgcGFnZQoKICBfcGFnZVNpemU6IGZ1bmN0aW9uKHBhZ2UsIHBvc2l0aW9uKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgcHJvcCA9IHt9OwoKICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICBwcm9wLndpZHRoID0gdGhpcy53aWR0aCgpOwogICAgICBwcm9wLmhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7CgogICAgICBpZiAocG9zaXRpb24pIHsKICAgICAgICBwcm9wLnRvcCA9IDA7CiAgICAgICAgcHJvcC5sZWZ0ID0gMDsKICAgICAgICBwcm9wLnJpZ2h0ID0gJ2F1dG8nOwogICAgICB9CgogICAgfSBlbHNlIHsKCiAgICAgIHZhciBwYWdlV2lkdGggPSB0aGlzLndpZHRoKCkvMiwKICAgICAgICBwYWdlSGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTsKCiAgICAgIGlmIChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdvd24tc2l6ZScpKSB7CiAgICAgICAgcHJvcC53aWR0aCA9IGRhdGEucGFnZU9ianNbcGFnZV0ud2lkdGgoKTsKICAgICAgICBwcm9wLmhlaWdodCA9IGRhdGEucGFnZU9ianNbcGFnZV0uaGVpZ2h0KCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHJvcC53aWR0aCA9IHBhZ2VXaWR0aDsKICAgICAgICBwcm9wLmhlaWdodCA9IHBhZ2VIZWlnaHQ7CiAgICAgIH0KCiAgICAgIGlmIChwb3NpdGlvbikgewogICAgICAgIHZhciBvZGQgPSBwYWdlJTI7CiAgICAgICAgcHJvcC50b3AgPSAocGFnZUhlaWdodC1wcm9wLmhlaWdodCkvMjsKCiAgICAgICAgaWYgKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgewogICAgICAgICAgCiAgICAgICAgICBwcm9wWyhvZGQpID8gJ3JpZ2h0JyA6ICdsZWZ0J10gPSBwYWdlV2lkdGgtcHJvcC53aWR0aDsKICAgICAgICAgIHByb3BbKG9kZCkgPyAnbGVmdCcgOiAncmlnaHQnXSA9ICdhdXRvJzsKCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIAogICAgICAgICAgcHJvcFsob2RkKSA/ICdsZWZ0JyA6ICdyaWdodCddID0gcGFnZVdpZHRoLXByb3Aud2lkdGg7CiAgICAgICAgICBwcm9wWyhvZGQpID8gJ3JpZ2h0JyA6ICdsZWZ0J10gPSAnYXV0byc7CgogICAgICAgIH0KCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcHJvcDsKCiAgfSwKCiAgLy8gUHJlcGFyZXMgdGhlIGZsaXAgZWZmZWN0IGZvciBhIHBhZ2UKCiAgX21ha2VGbGlwOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBpZiAoIWRhdGEucGFnZXNbcGFnZV0gJiYgZGF0YS5wYWdlUGxhY2VbcGFnZV09PXBhZ2UpIHsKICAgICAgdmFyIGNvcm5lciwKICAgICAgICBzaW5nbGUgPSBkYXRhLmRpc3BsYXk9PSdzaW5nbGUnLAogICAgICAgIG9kZCA9IHBhZ2UlMjsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0gPSBkYXRhLnBhZ2VPYmpzW3BhZ2VdLgogICAgICAgIGNzcyh0dXJuTWV0aG9kcy5fcGFnZVNpemUuY2FsbCh0aGlzLCBwYWdlKSkuCiAgICAgICAgZmxpcCh7cGFnZTogcGFnZSwKICAgICAgICAgIG5leHQ6IChvZGQgfHwgc2luZ2xlKSA/IHBhZ2UrMSA6IHBhZ2UtMSwKICAgICAgICAgIHR1cm46IHRoaXMsCiAgICAgICAgICBkdXJhdGlvbjogZGF0YS5vcHRzLmR1cmF0aW9uLAogICAgICAgICAgYWNjZWxlcmF0aW9uIDogZGF0YS5vcHRzLmFjY2VsZXJhdGlvbiwKICAgICAgICAgIGdyYWRpZW50czogZGF0YS5vcHRzLmdyYWRpZW50cwogICAgICAgICAgfSkuCiAgICAgICAgICBmbGlwKCdkaXNhYmxlJywgZGF0YS5kaXNhYmxlZCk7CiAgICB9CgogICAgcmV0dXJuIGRhdGEucGFnZXNbcGFnZV07CiAgfSwKCiAgLy8gTWFrZXMgcGFnZXMgd2l0aGluIGEgcmFuZ2UKCiAgX21ha2VSYW5nZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIHJhbmdlLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEudG90YWxQYWdlczwxKQogICAgICByZXR1cm47CgogICAgcmFuZ2UgPSB0aGlzLnR1cm4oJ3JhbmdlJyk7CgogICAgZm9yIChwYWdlID0gcmFuZ2VbMF07IHBhZ2U8PXJhbmdlWzFdOyBwYWdlKyspCiAgICAgIHR1cm5NZXRob2RzLl9hZGRQYWdlLmNhbGwodGhpcywgcGFnZSk7CgogIH0sCgogIC8vIFJldHVybnMgYSByYW5nZSBvZiBwYWdlcyB0aGF0IHNob3VsZCBiZSBpbiB0aGUgRE9NCiAgLy8gRXhhbXBsZToKICAvLyAtIHBhZ2UgaW4gdGhlIGN1cnJlbnQgdmlldywgcmV0dXJuIHRydWUKICAvLyAqIHBhZ2UgaXMgaW4gdGhlIHJhbmdlLCByZXR1cm4gdHJ1ZQogIC8vIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlCiAgLy8KICAvLyAxIDItMyA0LTUgNi03IDgtOSAxMC0xMSAxMi0xMwogIC8vICAgKiogICoqICAtLSAgICoqICAqKgoKICByYW5nZTogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciByZW1haW5pbmdQYWdlcywgbGVmdCwgcmlnaHQsIHZpZXcsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKTsKCgogICAgICBwYWdlID0gcGFnZSB8fCBkYXRhLnRwYWdlIHx8IGRhdGEucGFnZSB8fCAxOwogICAgICB2aWV3ID0gdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICAgIGlmIChwYWdlPDEgfHwgcGFnZT5kYXRhLnRvdGFsUGFnZXMpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJytwYWdlKyciIGlzIG5vdCBhIHBhZ2UgZm9yIHJhbmdlJyk7CiAgICAKICAgICAgdmlld1sxXSA9IHZpZXdbMV0gfHwgdmlld1swXTsKICAgICAgCiAgICAgIGlmICh2aWV3WzBdPj0xICYmIHZpZXdbMV08PWRhdGEudG90YWxQYWdlcykgewoKICAgICAgICByZW1haW5pbmdQYWdlcyA9IE1hdGguZmxvb3IoKHBhZ2VzSW5ET00tMikvMik7CgogICAgICAgIGlmIChkYXRhLnRvdGFsUGFnZXMtdmlld1sxXSA+IHZpZXdbMF0pIHsKICAgICAgICAgIGxlZnQgPSBNYXRoLm1pbih2aWV3WzBdLTEsIHJlbWFpbmluZ1BhZ2VzKTsKICAgICAgICAgIHJpZ2h0ID0gMipyZW1haW5pbmdQYWdlcy1sZWZ0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByaWdodCA9IE1hdGgubWluKGRhdGEudG90YWxQYWdlcy12aWV3WzFdLCByZW1haW5pbmdQYWdlcyk7CiAgICAgICAgICBsZWZ0ID0gMipyZW1haW5pbmdQYWdlcy1yaWdodDsKICAgICAgICB9CgogICAgICB9IGVsc2UgewogICAgICAgIGxlZnQgPSBwYWdlc0luRE9NLTE7CiAgICAgICAgcmlnaHQgPSBwYWdlc0luRE9NLTE7CiAgICAgIH0KCiAgICAgIHJldHVybiBbTWF0aC5tYXgoMSwgdmlld1swXS1sZWZ0KSwKICAgICAgICAgIE1hdGgubWluKGRhdGEudG90YWxQYWdlcywgdmlld1sxXStyaWdodCldOwoKICB9LAoKICAvLyBEZXRlY3RzIGlmIGEgcGFnZSBpcyB3aXRoaW4gdGhlIHJhbmdlIG9mIGBwYWdlc0luRE9NYCBmcm9tIHRoZSBjdXJyZW50IHZpZXcKCiAgX25lY2Vzc1BhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKICAgIAogICAgaWYgKHBhZ2U9PT0wKQogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICByYW5nZSA9IHRoaXMudHVybigncmFuZ2UnKTsKCiAgICByZXR1cm4gZGF0YS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKSB8fAogICAgICAocGFnZT49cmFuZ2VbMF0gJiYgcGFnZTw9cmFuZ2VbMV0pOwogICAgCiAgfSwKCiAgLy8gUmVsZWFzZXMgbWVtb3J5IGJ5IHJlbW92aW5nIHBhZ2VzIGZyb20gdGhlIERPTQoKICBfcmVtb3ZlRnJvbURPTTogZnVuY3Rpb24oKSB7CgogICAgdmFyIHBhZ2UsIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICBmb3IgKHBhZ2UgaW4gZGF0YS5wYWdlV3JhcCkKICAgICAgaWYgKGhhcyhwYWdlLCBkYXRhLnBhZ2VXcmFwKSAmJgogICAgICAgICF0dXJuTWV0aG9kcy5fbmVjZXNzUGFnZS5jYWxsKHRoaXMsIHBhZ2UpKQogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlIGZyb20gRE9NIGFuZCBpdHMgaW50ZXJuYWwgcmVmZXJlbmNlcwoKICBfcmVtb3ZlUGFnZUZyb21ET006IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKSB7CiAgICAgIHZhciBkZCA9IGRhdGEucGFnZXNbcGFnZV0uZGF0YSgpOwoKICAgICAgZmxpcE1ldGhvZHMuX21vdmVGb2xkaW5nUGFnZS5jYWxsKGRhdGEucGFnZXNbcGFnZV0sIGZhbHNlKTsKCiAgICAgIGlmIChkZC5mICYmIGRkLmYuZndyYXBwZXIpCiAgICAgICAgZGQuZi5md3JhcHBlci5yZW1vdmUoKTsKCiAgICAgIGRhdGEucGFnZXNbcGFnZV0ucmVtb3ZlRGF0YSgpOwogICAgICBkYXRhLnBhZ2VzW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlc1twYWdlXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgZGF0YS5wYWdlT2Jqc1twYWdlXS5yZW1vdmUoKTsKCiAgICBpZiAoZGF0YS5wYWdlV3JhcFtwYWdlXSkgewogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLnJlbW92ZSgpOwogICAgICBkZWxldGUgZGF0YS5wYWdlV3JhcFtwYWdlXTsKICAgIH0KCiAgICBkZWxldGUgZGF0YS5wYWdlUGxhY2VbcGFnZV07CgogIH0sCgogIC8vIFJlbW92ZXMgYSBwYWdlCgogIHJlbW92ZVBhZ2U6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPDEgfHwgcGFnZT5kYXRhLnRvdGFsUGFnZXMpCiAgICAgIHRocm93IHR1cm5FcnJvcignVGhlIHBhZ2UgJysgcGFnZSArICcgZG9lc25cJ3QgZXhpc3QnKTsKICAgICAgCiAgICBpZiAoZGF0YS5wYWdlT2Jqc1twYWdlXSkgewoKICAgICAgLy8gU3RvcCBhbmltYXRpb25zCiAgICAgIHRoaXMudHVybignc3RvcCcpOwoKICAgICAgLy8gUmVtb3ZlIGBwYWdlYAogICAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlUGFnZUZyb21ET00uY2FsbCh0aGlzLCBwYWdlKTsKICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CgogICAgfQoKICAgIC8vIE1vdmUgdGhlIHBhZ2VzIGJlaGluZCBgcGFnZWAKICAgIHR1cm5NZXRob2RzLl9tb3ZlUGFnZXMuY2FsbCh0aGlzLCBwYWdlLCAtMSk7CgogICAgLy8gUmVzaXplIHRoZSBzaXplIG9mIHRoaXMgZmxpcGJvb2sKICAgIGRhdGEudG90YWxQYWdlcyA9IGRhdGEudG90YWxQYWdlcy0xOwoKICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHZpZXcKCiAgICBpZiAoZGF0YS5wYWdlPmRhdGEudG90YWxQYWdlcykKICAgICAgdGhpcy50dXJuKCdwYWdlJywgZGF0YS50b3RhbFBhZ2VzKTsKICAgIGVsc2UKICAgICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwoKICAgIHJldHVybiB0aGlzOwogIAogIH0sCgogIC8vIE1vdmVzIHBhZ2VzCgogIF9tb3ZlUGFnZXM6IGZ1bmN0aW9uKGZyb20sIGNoYW5nZSkgewoKICAgIHZhciBwYWdlLAogICAgICB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBzaW5nbGUgPSBkYXRhLmRpc3BsYXk9PSdzaW5nbGUnLAogICAgICBtb3ZlID0gZnVuY3Rpb24ocGFnZSkgewoKICAgICAgICB2YXIgbmV4dCA9IHBhZ2UgKyBjaGFuZ2UsCiAgICAgICAgICBvZGQgPSBuZXh0JTIsCiAgICAgICAgICBjbGFzc05hbWUgPSAob2RkKSA/ICcgb2RkICcgOiAnIGV2ZW4gJzsKCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgICBkYXRhLnBhZ2VPYmpzW25leHRdID0gZGF0YS5wYWdlT2Jqc1twYWdlXQogICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3AnICsgcGFnZSArICcgb2RkIGV2ZW4nKQogICAgICAgICAgICAuYWRkQ2xhc3MoJ3AnICsgbmV4dCArIGNsYXNzTmFtZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VQbGFjZVtwYWdlXSAmJiBkYXRhLnBhZ2VXcmFwW3BhZ2VdKSB7CiAgICAgICAgICBkYXRhLnBhZ2VQbGFjZVtuZXh0XSA9IG5leHQ7CiAgICAgICAgCiAgICAgICAgaWYgKGRhdGEucGFnZU9ianNbbmV4dF0uaGFzQ2xhc3MoJ2ZpeGVkJykpCiAgICAgICAgICBkYXRhLnBhZ2VXcmFwW25leHRdID0gZGF0YS5wYWdlV3JhcFtwYWdlXQogICAgICAgICAgICAuYXR0cigncGFnZScsIG5leHQpOwogICAgICAgIGVsc2UKICAgICAgICAgIGRhdGEucGFnZVdyYXBbbmV4dF0gPSBkYXRhLnBhZ2VXcmFwW3BhZ2VdLgogICAgICAgICAgICBjc3ModHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhhdCwgbmV4dCwgdHJ1ZSkpLgogICAgICAgICAgICBhdHRyKCdwYWdlJywgbmV4dCk7CiAgICAKICAgICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgICAgICBkYXRhLnBhZ2VzW25leHRdID0gZGF0YS5wYWdlc1twYWdlXQogICAgICAgICAgICAgIC5mbGlwKCdvcHRpb25zJywgewogICAgICAgICAgICAgICAgcGFnZTogbmV4dCwKICAgICAgICAgICAgICAgIG5leHQ6IChzaW5nbGUgfHwgb2RkKSA/IG5leHQrMSA6IG5leHQtMSwKICAgICAgICAgICAgICAgIGNvcm5lcnM6IChzaW5nbGUpID8gJ2FsbCcgOgogICAgICAgICAgICAgICAgICAoKG9kZCkgPyAnZm9yd2FyZCcgOiAnYmFja3dhcmQnKQogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgIGlmIChjaGFuZ2UpIHsKICAgICAgICAgICAgZGVsZXRlIGRhdGEucGFnZXNbcGFnZV07CiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VQbGFjZVtwYWdlXTsKICAgICAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbcGFnZV07CiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhZ2VXcmFwW3BhZ2VdOwogICAgICAgICAgICBkZWxldGUgZGF0YS5wYWdlT2Jqc1twYWdlXTsKICAgICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICBpZiAoY2hhbmdlPjApCiAgICAgIGZvciAocGFnZT1kYXRhLnRvdGFsUGFnZXM7IHBhZ2U+PWZyb207IHBhZ2UtLSkKICAgICAgICBtb3ZlKHBhZ2UpOwogICAgZWxzZQogICAgICBmb3IgKHBhZ2U9ZnJvbTsgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzOyBwYWdlKyspCiAgICAgICAgbW92ZShwYWdlKTsKCiAgfSwKCiAgLy8gU2V0cyBvciBHZXRzIHRoZSBkaXNwbGF5IG1vZGUKCiAgZGlzcGxheTogZnVuY3Rpb24oZGlzcGxheSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIGN1cnJlbnREaXNwbGF5ID0gZGF0YS5kaXNwbGF5OwoKICAgIGlmIChkaXNwbGF5KSB7CgogICAgICBpZiAoJC5pbkFycmF5KGRpc3BsYXksIGRpc3BsYXlzKT09LTEpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJytkaXNwbGF5ICsgJyIgaXMgbm90IGEgdmFsdWUgZm9yIGRpc3BsYXknKTsKICAgICAgCiAgICAgIGlmIChkaXNwbGF5PT0nc2luZ2xlJykgewogICAgICAgIGlmICghZGF0YS5wYWdlT2Jqc1swXSkgewoKICAgICAgICAgIHRoaXMudHVybignc3RvcCcpLgogICAgICAgICAgICBjc3MoeydvdmVyZmxvdyc6ICdoaWRkZW4nfSk7CgogICAgICAgICAgZGF0YS5wYWdlT2Jqc1swXSA9ICQoJzxkaXYgLz4nLAogICAgICAgICAgICAgIHsnY2xhc3MnOiAncGFnZSBwLXRlbXBvcmFsJ30pLgogICAgICAgICAgICBjc3Moe3dpZHRoOiB0aGlzLndpZHRoKCksIGhlaWdodDogdGhpcy5oZWlnaHQoKX0pLgogICAgICAgICAgICBhcHBlbmRUbyh0aGlzKTsKCiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChkYXRhLnBhZ2VPYmpzWzBdKSB7CiAgICAgICAgICB0aGlzLnR1cm4oJ3N0b3AnKS5jc3MoeydvdmVyZmxvdyc6ICcnfSk7CiAgICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLnJlbW92ZSgpOwogICAgICAgICAgZGVsZXRlIGRhdGEucGFnZU9ianNbMF07CiAgICAgICAgfQogICAgICB9CgogICAgICBkYXRhLmRpc3BsYXkgPSBkaXNwbGF5OwoKICAgICAgaWYgKGN1cnJlbnREaXNwbGF5KSB7CiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnR1cm4oJ3NpemUnKTsKICAgICAgICB0dXJuTWV0aG9kcy5fbW92ZVBhZ2VzLmNhbGwodGhpcywgMSwgMCk7CiAgICAgICAgdGhpcy50dXJuKCdzaXplJywgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLgogICAgICAgICAgdHVybigndXBkYXRlJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzOwoKICAgIH0gZWxzZQogICAgICByZXR1cm4gY3VycmVudERpc3BsYXk7CiAgCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGlwYm9vawoKICBkaXJlY3Rpb246IGZ1bmN0aW9uKGRpcikgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKHR5cGVvZihkaXIpPT0ndW5kZWZpbmVkJykgewoKICAgICAgcmV0dXJuIGRhdGEuZGlyZWN0aW9uOwoKICAgIH0gZWxzZSB7CgogICAgICBkaXIgPSBkaXIudG9Mb3dlckNhc2UoKTsKCiAgICAgIGlmICgkLmluQXJyYXkoZGlyLCBkaXJlY3Rpb25zKT09LTEpCiAgICAgICAgdGhyb3cgdHVybkVycm9yKCciJyArIGRpciArICciIGlzIG5vdCBhIHZhbHVlIGZvciBkaXJlY3Rpb24nKTsKCiAgICAgIGlmIChkaXI9PSdydGwnKSB7CiAgICAgICAgJCh0aGlzKS5hdHRyKCdkaXInLCAnbHRyJykuCiAgICAgICAgICBjc3Moe2RpcmVjdGlvbjogJ2x0cid9KTsKICAgICAgfQoKICAgICAgZGF0YS5kaXJlY3Rpb24gPSBkaXI7CgogICAgICBpZiAoZGF0YS5kb25lKQogICAgICAgIHRoaXMudHVybignc2l6ZScsICQodGhpcykud2lkdGgoKSwgJCh0aGlzKS5oZWlnaHQoKSk7CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgfSwKCiAgLy8gRGV0ZWN0cyBpZiB0aGUgcGFnZXMgYXJlIGJlaW5nIGFuaW1hdGVkCgogIGFuaW1hdGluZzogZnVuY3Rpb24oKSB7CgogICAgcmV0dXJuIHRoaXMuZGF0YSgpLnBhZ2VNdi5sZW5ndGg+MDsKCiAgfSwKCiAgLy8gRGlzYWJsZXMgYW5kIGVuYWJsZXMgdGhlIGVmZmVjdAoKICBkaXNhYmxlOiBmdW5jdGlvbihib29sKSB7CgogICAgdmFyIHBhZ2UsCiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgICAgZGF0YS5kaXNhYmxlZCA9IGJvb2w9PT11bmRlZmluZWQgfHwgYm9vbD09PXRydWU7CgogICAgZm9yIChwYWdlIGluIGRhdGEucGFnZXMpCiAgICAgIGlmIChoYXMocGFnZSwgZGF0YS5wYWdlcykpCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywgKGJvb2wpID8gJC5pbkFycmF5KHBhZ2UsIHZpZXcpIDogZmFsc2UpOwoKICAgIHJldHVybiB0aGlzOwoKICB9LAoKICAvLyBEaXNhYmxlcyBhbmQgZW5hYmxlcyB0aGUgZWZmZWN0CgogIGRpc2FibGVkOiBmdW5jdGlvbihkaXNhYmxlKSB7CgogICAgaWYgKGRpc2FibGU9PT11bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLmRpc2FibGVkPT09dHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB0aGlzLnR1cm4oJ2Rpc2FibGUnLCBkaXNhYmxlKTsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgc2l6ZQoKICBzaXplOiBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewoKICAgICAgdmFyIHBhZ2UsIHByb3AsCiAgICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICAgIHBhZ2VXaWR0aCA9IChkYXRhLmRpc3BsYXk9PSdkb3VibGUnKSA/IHdpZHRoLzIgOiB3aWR0aDsKCiAgICAgIHRoaXMuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CgogICAgICBpZiAoZGF0YS5wYWdlT2Jqc1swXSkKICAgICAgICBkYXRhLnBhZ2VPYmpzWzBdLmNzcyh7d2lkdGg6IHBhZ2VXaWR0aCwgaGVpZ2h0OiBoZWlnaHR9KTsKICAgICAgCiAgICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VXcmFwKSB7CiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpIGNvbnRpbnVlOwoKICAgICAgICBwcm9wID0gdHVybk1ldGhvZHMuX3BhZ2VTaXplLmNhbGwodGhpcywgcGFnZSwgdHJ1ZSk7CgogICAgICAgIGRhdGEucGFnZU9ianNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICAgIGRhdGEucGFnZVdyYXBbcGFnZV0uY3NzKHByb3ApOwoKICAgICAgICBpZiAoZGF0YS5wYWdlc1twYWdlXSkKICAgICAgICAgIGRhdGEucGFnZXNbcGFnZV0uY3NzKHt3aWR0aDogcHJvcC53aWR0aCwgaGVpZ2h0OiBwcm9wLmhlaWdodH0pOwogICAgICB9CgogICAgICB0aGlzLnR1cm4oJ3Jlc2l6ZScpOwoKICAgICAgcmV0dXJuIHRoaXM7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIHJldHVybiB7d2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpfTsKCiAgICB9CiAgfSwKCiAgLy8gUmVzaXplcyBlYWNoIHBhZ2UKCiAgcmVzaXplOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VzWzBdKSB7CiAgICAgIGRhdGEucGFnZVdyYXBbMF0uY3NzKHtsZWZ0OiAtdGhpcy53aWR0aCgpfSk7CiAgICAgIGRhdGEucGFnZXNbMF0uZmxpcCgncmVzaXplJywgdHJ1ZSk7CiAgICB9CgogICAgZm9yIChwYWdlID0gMTsgcGFnZSA8PSBkYXRhLnRvdGFsUGFnZXM7IHBhZ2UrKykKICAgICAgaWYgKGRhdGEucGFnZXNbcGFnZV0pCiAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdyZXNpemUnLCB0cnVlKTsKCgogIH0sCgogIC8vIFJlbW92ZXMgYW4gYW5pbWF0aW9uIGZyb20gdGhlIGNhY2hlCgogIF9yZW1vdmVNdjogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBpLCBkYXRhID0gdGhpcy5kYXRhKCk7CiAgICAgIAogICAgZm9yIChpPTA7IGk8ZGF0YS5wYWdlTXYubGVuZ3RoOyBpKyspCiAgICAgIGlmIChkYXRhLnBhZ2VNdltpXT09cGFnZSkgewogICAgICAgIGRhdGEucGFnZU12LnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQoKICAgIHJldHVybiBmYWxzZTsKCiAgfSwKCiAgLy8gQWRkcyBhbiBhbmltYXRpb24gdG8gdGhlIGNhY2hlCiAgCiAgX2FkZE12OiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlTXYuY2FsbCh0aGlzLCBwYWdlKTsKICAgIGRhdGEucGFnZU12LnB1c2gocGFnZSk7CgogIH0sCgogIC8vIEdldHMgaW5kZXhlcyBmb3IgYSB2aWV3CgogIF92aWV3OiBmdW5jdGlvbihwYWdlKSB7CiAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwogICAgCiAgICBwYWdlID0gcGFnZSB8fCBkYXRhLnBhZ2U7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J2RvdWJsZScpCiAgICAgIHJldHVybiAocGFnZSUyKSA/IFtwYWdlLTEsIHBhZ2VdIDogW3BhZ2UsIHBhZ2UrMV07CiAgICBlbHNlCiAgICAgIHJldHVybiBbcGFnZV07CgogIH0sCgogIC8vIEdldHMgYSB2aWV3CgogIHZpZXc6IGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICB2aWV3ID0gdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCBwYWdlKTsKCiAgICBpZiAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJykKICAgICAgcmV0dXJuIFsodmlld1swXT4wKSA/IHZpZXdbMF0gOiAwLAogICAgICAgICh2aWV3WzFdPD1kYXRhLnRvdGFsUGFnZXMpID8gdmlld1sxXSA6IDBdOwogICAgZWxzZQogICAgICByZXR1cm4gWyh2aWV3WzBdPjAgJiYgdmlld1swXTw9ZGF0YS50b3RhbFBhZ2VzKSA/IHZpZXdbMF0gOiAwXTsKCiAgfSwKCiAgLy8gU3RvcHMgYW5pbWF0aW9ucwoKICBzdG9wOiBmdW5jdGlvbihpZ25vcmUsIGFuaW1hdGUpIHsKCiAgICBpZiAodGhpcy50dXJuKCdhbmltYXRpbmcnKSkgewogICAgICB2YXIgaSwgb3B0cywgcGFnZSwKICAgICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgICAgcGFnZXMgPSBkYXRhLnBhZ2VNdjsKCiAgICAgIGRhdGEucGFnZU12ID0gW107CgogICAgICBpZiAoZGF0YS50cGFnZSkgewogICAgICAgIGRhdGEucGFnZSA9IGRhdGEudHBhZ2U7CiAgICAgICAgZGVsZXRlIGRhdGFbJ3RwYWdlJ107CiAgICAgIH0KCiAgICAgIGZvciAoaSA9IDA7IGk8cGFnZXMubGVuZ3RoOyBpKyspIHsKCiAgICAgICAgcGFnZSA9IGRhdGEucGFnZXNbcGFnZXNbaV1dOwogICAgICAgIG9wdHMgPSBwYWdlLmRhdGEoKS5mLm9wdHM7CgogICAgICAgIHBhZ2UuZmxpcCgnaGlkZUZvbGRlZFBhZ2UnLCBmYWxzZSk7CgogICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbChwYWdlLCBmYWxzZSk7CgogICAgICAgIGRhdGEucGFnZVBsYWNlW29wdHMubmV4dF0gPSBvcHRzLm5leHQ7CgogICAgICAgIGlmIChvcHRzLmZvcmNlKSB7CiAgICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5wYWdlJTI9PT0wKSA/IG9wdHMucGFnZS0xIDogb3B0cy5wYWdlKzE7CiAgICAgICAgICBkZWxldGUgb3B0c1snZm9yY2UnXTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB0aGlzLnR1cm4oJ3VwZGF0ZScpOwoKICAgIHJldHVybiB0aGlzOwogIAogIH0sCgogIC8vIEdldHMgYW5kIHNldHMgdGhlIG51bWJlciBvZiBwYWdlcwoKICBwYWdlczogZnVuY3Rpb24ocGFnZXMpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlcykgewogICAgICBpZiAocGFnZXM8ZGF0YS50b3RhbFBhZ2VzKSB7CgogICAgICAgIGZvciAodmFyIHBhZ2UgPSBwYWdlcysxOyBwYWdlPD1kYXRhLnRvdGFsUGFnZXM7IHBhZ2UrKykKICAgICAgICAgIHRoaXMudHVybigncmVtb3ZlUGFnZScsIHBhZ2UpOwoKICAgICAgICBpZiAodGhpcy50dXJuKCdwYWdlJyk+cGFnZXMpCiAgICAgICAgICB0aGlzLnR1cm4oJ3BhZ2UnLCBwYWdlcyk7CiAgICAgIH0KCiAgICAgIGRhdGEudG90YWxQYWdlcyA9IHBhZ2VzOwoKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEudG90YWxQYWdlczsKCiAgfSwKCiAgLy8gQ2hlY2tzIG1pc3NpbmcgcGFnZXMKCiAgX21pc3NpbmcgOiBmdW5jdGlvbihwYWdlKSB7CiAgICAKICAgIHZhciBwLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHJhbmdlID0gdGhpcy50dXJuKCdyYW5nZScsIHBhZ2UpLAogICAgICBtaXNzaW5nID0gW107CgogICAgZm9yIChwID0gcmFuZ2VbMF07IHA8PXJhbmdlWzFdOyBwKyspIHsKICAgICAgaWYgKCFkYXRhLnBhZ2VPYmpzW3BdKQogICAgICAgIG1pc3NpbmcucHVzaChwKTsKICAgIH0KCiAgICBpZiAobWlzc2luZy5sZW5ndGg+MCkKICAgICAgdGhpcy50cmlnZ2VyKCdtaXNzaW5nJywgW21pc3NpbmddKTsKICAgIAogIH0sCgogIC8vIFNldHMgYSBwYWdlIHdpdGhvdXQgZWZmZWN0CgogIF9maXRQYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKSwKICAgICAgbmV3VmlldyA9IHRoaXMudHVybigndmlldycsIHBhZ2UpOwogICAgCiAgICB0dXJuTWV0aG9kcy5fbWlzc2luZy5jYWxsKHRoaXMsIHBhZ2UpOwoKICAgIGlmICghZGF0YS5wYWdlT2Jqc1twYWdlXSkKICAgICAgcmV0dXJuOwoKICAgIGRhdGEucGFnZSA9IHBhZ2U7CgogICAgdGhpcy50dXJuKCdzdG9wJyk7CiAgICB0dXJuTWV0aG9kcy5fcmVtb3ZlRnJvbURPTS5jYWxsKHRoaXMpOwogICAgdHVybk1ldGhvZHMuX21ha2VSYW5nZS5jYWxsKHRoaXMpOwogICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHRoaXMpOwogICAgdGhpcy50cmlnZ2VyKCd0dXJuZWQnLCBbcGFnZSwgbmV3Vmlld10pOwoKICAgIGlmIChkYXRhLm9wdHMuYXV0b0NlbnRlcikKICAgICAgdGhpcy50dXJuKCdjZW50ZXInKTsKCiAgfSwKICAKICAvLyBUdXJucyB0byBhIHBhZ2UKCiAgX3R1cm5QYWdlOiBmdW5jdGlvbihwYWdlLCBmcm9tTW91c2VBY3Rpb24pIHsKCiAgICB2YXIgY3VycmVudCwgbmV4dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLAogICAgICBwbGFjZSA9IGRhdGEucGFnZVBsYWNlW3BhZ2VdLAogICAgICB2aWV3ID0gdGhpcy50dXJuKCd2aWV3JyksCiAgICAgIG5ld1ZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnLCBwYWdlKTsKICAKICAgIGlmIChkYXRhLnBhZ2UhPXBhZ2UpIHsKCiAgICAgIHZhciBldmVudCA9ICQuRXZlbnQoJ3R1cm5pbmcnKTsKICAgICAgdGhpcy50cmlnZ2VyKGV2ZW50LCBbcGFnZSwgbmV3Vmlld10pOwoKICAgICAgaWYgKGV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKQogICAgICAgIHJldHVybjsKCiAgICAgIGlmICgkLmluQXJyYXkoMSwgbmV3VmlldykhPS0xKQogICAgICAgIHRoaXMudHJpZ2dlcignZmlyc3QnKTsKICAgICAgaWYgKCQuaW5BcnJheShkYXRhLnRvdGFsUGFnZXMsIG5ld1ZpZXcpIT0tMSkKICAgICAgICB0aGlzLnRyaWdnZXIoJ2xhc3QnKTsKCiAgICB9CgoKCiAgICBpZiAoZnJvbU1vdXNlQWN0aW9uKSB7CgogICAgICB0aGlzLnR1cm4oJ3N0b3AnLCBwbGFjZSk7CgogICAgfSBlbHNlIHsKCiAgICAgIHR1cm5NZXRob2RzLl9taXNzaW5nLmNhbGwodGhpcywgcGFnZSk7CiAgICAgIAogICAgICBpZiAoIWRhdGEucGFnZU9ianNbcGFnZV0pCiAgICAgICAgcmV0dXJuOwoKICAgICAgdGhpcy50dXJuKCdzdG9wJyk7CiAgICAgIGRhdGEucGFnZSA9IHBhZ2U7CiAgICB9CiAgICAKCiAgICB0dXJuTWV0aG9kcy5fbWFrZVJhbmdlLmNhbGwodGhpcyk7CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKICAgICAgY3VycmVudCA9IHZpZXdbMF07CiAgICAgIG5leHQgPSBuZXdWaWV3WzBdOwogICAgfSBlbHNlIGlmICh2aWV3WzFdICYmIHBhZ2U+dmlld1sxXSkgewogICAgICBjdXJyZW50ID0gdmlld1sxXTsKICAgICAgbmV4dCA9IG5ld1ZpZXdbMF07CiAgICB9IGVsc2UgaWYgKHZpZXdbMF0gJiYgcGFnZTx2aWV3WzBdKSB7CiAgICAgIGN1cnJlbnQgPSB2aWV3WzBdOwogICAgICBuZXh0ID0gbmV3Vmlld1sxXTsKICAgIH0KCiAgICBpZiAoZGF0YS5wYWdlc1tjdXJyZW50XSkgewoKICAgICAgdmFyIG9wdHMgPSBkYXRhLnBhZ2VzW2N1cnJlbnRdLmRhdGEoKS5mLm9wdHM7CiAgICAgIGRhdGEudHBhZ2UgPSBuZXh0OwogICAgICAKICAgICAgaWYgKG9wdHMubmV4dCE9bmV4dCkgewogICAgICAgIG9wdHMubmV4dCA9IG5leHQ7CiAgICAgICAgZGF0YS5wYWdlUGxhY2VbbmV4dF0gPSBvcHRzLnBhZ2U7CiAgICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CgogICAgICAgIGlmIChkYXRhLmRpcmVjdGlvbj09J2x0cicpIHsKICAgICAgICAgIGRhdGEucGFnZXNbY3VycmVudF0uZmxpcCgndHVyblBhZ2UnLAogICAgICAgICAgICAobmV3Vmlld1swXSA+IHZpZXdbMF0pID8gJ3InIDogJ2wnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScsCiAgICAgICAgICAgIChuZXdWaWV3WzBdID4gdmlld1swXSkgPyAnbCcgOiAncicpOwogICAgICAgIH0KCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgZGF0YS5wYWdlc1tjdXJyZW50XS5mbGlwKCd0dXJuUGFnZScpOwoKICAgICAgfQogICAgfQoKICB9LAoKICAvLyBHZXRzIGFuZCBzZXRzIGEgcGFnZQoKICBwYWdlOiBmdW5jdGlvbihwYWdlKSB7CgogICAgcGFnZSA9IHBhcnNlSW50KHBhZ2UsIDEwKTsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChwYWdlPjAgJiYgcGFnZTw9ZGF0YS50b3RhbFBhZ2VzKSB7CiAgICAgIGlmICghZGF0YS5kb25lIHx8ICQuaW5BcnJheShwYWdlLCB0aGlzLnR1cm4oJ3ZpZXcnKSkhPS0xKQogICAgICAgIHR1cm5NZXRob2RzLl9maXRQYWdlLmNhbGwodGhpcywgcGFnZSk7CiAgICAgIGVsc2UKICAgICAgICB0dXJuTWV0aG9kcy5fdHVyblBhZ2UuY2FsbCh0aGlzLCBwYWdlKTsKICAgIAogICAgICByZXR1cm4gdGhpczsKCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGRhdGEucGFnZTsKICAKICB9LAoKICAvLyBUdXJucyB0byB0aGUgbmV4dCB2aWV3CgogIG5leHQ6IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB0aGlzLnR1cm4oJ3BhZ2UnLAogICAgICB0dXJuTWV0aG9kcy5fdmlldy5jYWxsKHRoaXMsIHRoaXMuZGF0YSgpLnBhZ2UpLnBvcCgpICsgMSk7CiAgCiAgfSwKCiAgLy8gVHVybnMgdG8gdGhlIHByZXZpb3VzIHZpZXcKCiAgcHJldmlvdXM6IGZ1bmN0aW9uKCkgewogICAgCiAgICByZXR1cm4gdGhpcy50dXJuKCdwYWdlJywKICAgICAgdHVybk1ldGhvZHMuX3ZpZXcuY2FsbCh0aGlzLCB0aGlzLmRhdGEoKS5wYWdlKS5zaGlmdCgpIC0gMSk7CgogIH0sCgogIHBlZWw6IGZ1bmN0aW9uKGNvcm5lciwgYW5pbWF0ZSkgewogICAgCiAgICByZXR1cm4gdGhpczsKCiAgfSwKCiAgLy8gQWRkcyBhIG1vdGlvbiB0byB0aGUgaW50ZXJuYWwgbGlzdAogIC8vIFRoaXMgZXZlbnQgaXMgY2FsbGVkIGluIGNvbnRleHQgb2YgZmxpcAoKICBfYWRkTW90aW9uUGFnZTogZnVuY3Rpb24oKSB7CgogICAgdmFyIG9wdHMgPSAkKHRoaXMpLmRhdGEoKS5mLm9wdHMsCiAgICAgIHR1cm4gPSBvcHRzLnR1cm4sCiAgICAgIGRkID0gdHVybi5kYXRhKCk7CgogICAgdHVybk1ldGhvZHMuX2FkZE12LmNhbGwodHVybiwgb3B0cy5wYWdlKTsKICAgIGRkLnBhZ2VQbGFjZVtvcHRzLm5leHRdID0gb3B0cy5wYWdlOwogICAgdHVybi50dXJuKCd1cGRhdGUnKTsKCiAgfSwKCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9zdGFydDogZnVuY3Rpb24oZSwgb3B0cywgY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSBvcHRzLnR1cm4uZGF0YSgpOwoKICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgIHR1cm5NZXRob2RzLl91cGRhdGVTaGFkb3cuY2FsbChvcHRzLnR1cm4pOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgY29ybmVyKSB7CgogICAgICBpZiAoKGNvcm5lcj09J2wnICYmIGRhdGEuZGlyZWN0aW9uPT0nbHRyJykKICAgICAgICB8fAogICAgICAgIChjb3JuZXI9PSdyJyAmJiBkYXRhLmRpcmVjdGlvbj09J3J0bCcpKQogICAgICB7CiAgICAgICAgCiAgICAgICAgb3B0cy5uZXh0ID0gKG9wdHMubmV4dDxvcHRzLnBhZ2UpID8gb3B0cy5uZXh0IDogb3B0cy5wYWdlLTE7CiAgICAgICAgb3B0cy5mb3JjZSA9IHRydWU7CgogICAgICB9IGVsc2UgewoKICAgICAgICBvcHRzLm5leHQgPSAob3B0cy5uZXh0Pm9wdHMucGFnZSkgPyBvcHRzLm5leHQgOiBvcHRzLnBhZ2UrMTsKCiAgICAgIH0KCiAgICB9CgogICAgdHVybk1ldGhvZHMuX2FkZE1vdGlvblBhZ2UuY2FsbChlLnRhcmdldCk7CiAgICB0dXJuTWV0aG9kcy5fdXBkYXRlU2hhZG93LmNhbGwob3B0cy50dXJuKTsKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX2VuZDogZnVuY3Rpb24oZSwgb3B0cywgdHVybmVkKSB7CgogICAgdmFyIHRoYXQgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHRoYXQuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBvcHRzLnR1cm4sCiAgICAgIGRkID0gdHVybi5kYXRhKCk7CgogICAgaWYgKHR1cm5lZCB8fCBkZC50cGFnZSkgewoKICAgICAgaWYgKGRkLnRwYWdlPT1vcHRzLm5leHQgfHwgZGQudHBhZ2U9PW9wdHMucGFnZSkgewogICAgICAgIGRlbGV0ZSBkZFsndHBhZ2UnXTsKICAgICAgICB0dXJuTWV0aG9kcy5fZml0UGFnZS5jYWxsKHR1cm4sIGRkLnRwYWdlIHx8IG9wdHMubmV4dCwgdHJ1ZSk7CiAgICAgIH0KCiAgICB9IGVsc2UgewoKICAgICAgdHVybk1ldGhvZHMuX3JlbW92ZU12LmNhbGwodHVybiwgb3B0cy5wYWdlKTsKICAgICAgdHVybk1ldGhvZHMuX3VwZGF0ZVNoYWRvdy5jYWxsKHR1cm4pOwogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0KICAgIAogIH0sCiAgCiAgLy8gVGhpcyBldmVudCBpcyBjYWxsZWQgaW4gY29udGV4dCBvZiBmbGlwCgogIF9wcmVzc2VkOiBmdW5jdGlvbihlKSB7CgogICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9ICQoZS50YXJnZXQpLmRhdGEoKS5mLAogICAgICBwYWdlcyA9IGRhdGEub3B0cy50dXJuLmRhdGEoKS5wYWdlczsKCiAgICBmb3IgKHBhZ2UgaW4gcGFnZXMpCiAgICAgIGlmIChwYWdlIT1kYXRhLm9wdHMucGFnZSkKICAgICAgICBwYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywgdHJ1ZSk7CgogICAgcmV0dXJuIGRhdGEudGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKCiAgX3JlbGVhc2VkOiBmdW5jdGlvbihlLCBwb2ludCkgewoKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgdmFyIG91dEFyZWEsCiAgICAgIHBhZ2UgPSAkKGUudGFyZ2V0KSwKICAgICAgZGF0YSA9IHBhZ2UuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgdHVybkRhdGEgPSB0dXJuLmRhdGEoKTsKICAgIAogICAgaWYgKHR1cm5EYXRhLmRpc3BsYXk9PSdzaW5nbGUnKSB7CiAgICAgIG91dEFyZWEgPSAocG9pbnQuY29ybmVyPT0ncicpID8KICAgICAgICBwb2ludC54PHBhZ2Uud2lkdGgoKS8yOgogICAgICAgIHBvaW50Lng+cGFnZS53aWR0aCgpLzI7CiAgICB9IGVsc2UgewogICAgICBvdXRBcmVhID0gcG9pbnQueDwwIHx8IHBvaW50Lng+cGFnZS53aWR0aCgpOwogICAgfQoKICAgIGlmICgobmV3IERhdGUoKSkuZ2V0VGltZSgpLWRhdGEudGltZTwyMDAgfHwgb3V0QXJlYSkgewoKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgdHVybk1ldGhvZHMuX3R1cm5QYWdlLmNhbGwoCiAgICAgICAgdHVybiwKICAgICAgICBkYXRhLm9wdHMubmV4dCwKICAgICAgICBmbGlwTWV0aG9kcy5fY29ybmVyQWN0aXZhdGVkLmNhbGwocGFnZSwgcG9pbnQsIDEpID09PSBmYWxzZQogICAgICApOwoKICAgIH0KCiAgICB0dXJuRGF0YS5tb3VzZUFjdGlvbiA9IGZhbHNlOwoKICB9LAoKICAvLyBUaGlzIGV2ZW50IGlzIGNhbGxlZCBpbiBjb250ZXh0IG9mIGZsaXAKICAKICBfZmxpcDogZnVuY3Rpb24oZSkgewoKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgdmFyIG9wdHMgPSAkKGUudGFyZ2V0KS5kYXRhKCkuZi5vcHRzOwoKICAgIG9wdHMudHVybi50cmlnZ2VyKCd0dXJuJywgW29wdHMubmV4dF0pOwoKICAgIGlmIChvcHRzLnR1cm4uZGF0YSgpLm9wdHMuYXV0b0NlbnRlcikKICAgICAgb3B0cy50dXJuLnR1cm4oJ2NlbnRlcicsIG9wdHMubmV4dCk7CgogIH0sCgogIC8vIENhbGN1bGF0ZSB0aGUgei1pbmRleCB2YWx1ZSBmb3IgcGFnZXMgZHVyaW5nIHRoZSBhbmltYXRpb24KCiAgY2FsY3VsYXRlWjogZnVuY3Rpb24obXYpIHsKCiAgICB2YXIgaSwgcGFnZSwgbmV4dFBhZ2UsIHBsYWNlUGFnZSwgZHBhZ2UsCiAgICAgIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKSwKICAgICAgY3VycmVudFBhZ2UgPSB2aWV3WzBdIHx8IHZpZXdbMV0sCiAgICAgIHIgPSB7cGFnZVo6IHt9LCBwYXJ0Wjoge30sIHBhZ2VWOiB7fX0sCgogICAgICBhZGRWaWV3ID0gZnVuY3Rpb24ocGFnZSkgewogICAgICAgIHZhciB2aWV3ID0gdGhhdC50dXJuKCd2aWV3JywgcGFnZSk7CiAgICAgICAgaWYgKHZpZXdbMF0pIHIucGFnZVZbdmlld1swXV0gPSB0cnVlOwogICAgICAgIGlmICh2aWV3WzFdKSByLnBhZ2VWW3ZpZXdbMV1dID0gdHJ1ZTsKICAgICAgfTsKICAgIAogICAgZm9yIChpID0gMDsgaTxtdi5sZW5ndGg7IGkrKykgewogICAgICBwYWdlID0gbXZbaV07CiAgICAgIG5leHRQYWdlID0gZGF0YS5wYWdlc1twYWdlXS5kYXRhKCkuZi5vcHRzLm5leHQ7CiAgICAgIHBsYWNlUGFnZSA9IGRhdGEucGFnZVBsYWNlW3BhZ2VdOwogICAgICBhZGRWaWV3KHBhZ2UpOwogICAgICBhZGRWaWV3KG5leHRQYWdlKTsKICAgICAgZHBhZ2UgPSAoZGF0YS5wYWdlUGxhY2VbbmV4dFBhZ2VdPT1uZXh0UGFnZSkgPyBuZXh0UGFnZSA6IHBhZ2U7CiAgICAgIHIucGFnZVpbZHBhZ2VdID0gZGF0YS50b3RhbFBhZ2VzIC0gTWF0aC5hYnMoY3VycmVudFBhZ2UtZHBhZ2UpOwogICAgICByLnBhcnRaW3BsYWNlUGFnZV0gPSBkYXRhLnRvdGFsUGFnZXMqMiArIE1hdGguYWJzKGN1cnJlbnRQYWdlLWRwYWdlKTsKICAgIH0KCiAgICByZXR1cm4gcjsKICB9LAoKICAvLyBVcGRhdGVzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGV2ZXJ5IHBhZ2UKCiAgdXBkYXRlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgcGFnZSwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGlmIChkYXRhLnBhZ2VNdi5sZW5ndGggJiYgZGF0YS5wYWdlTXZbMF0hPT0wKSB7CgogICAgICAvLyBVcGRhdGUgbW90aW9uCgogICAgICB2YXIgcCwKICAgICAgICBmaXhlZCwKICAgICAgICBwb3MgPSB0aGlzLnR1cm4oJ2NhbGN1bGF0ZVonLCBkYXRhLnBhZ2VNdiksCiAgICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEudHBhZ2UpOwogICAgCiAgICAgIGZvciAocGFnZSBpbiBkYXRhLnBhZ2VXcmFwKSB7CgogICAgICAgIGlmICghaGFzKHBhZ2UsIGRhdGEucGFnZVdyYXApKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIGZpeGVkID0gZGF0YS5wYWdlT2Jqc1twYWdlXS5oYXNDbGFzcygnZml4ZWQnKTsKCiAgICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5jc3MoewogICAgICAgICAgZGlzcGxheTogKHBvcy5wYWdlVltwYWdlXSB8fCBmaXhlZCkgPyAnJyA6ICdub25lJywKICAgICAgICAgICd6LWluZGV4JzogcG9zLnBhZ2VaW3BhZ2VdIHx8ICgoZml4ZWQpID8gLTEgOiAwKQogICAgICAgIH0pOwoKICAgICAgICBpZiAoKHAgPSBkYXRhLnBhZ2VzW3BhZ2VdKSkgewogICAgICAgICAgcC5mbGlwKCd6JywgcG9zLnBhcnRaW3BhZ2VdIHx8IG51bGwpOwoKICAgICAgICAgIGlmIChwb3MucGFnZVZbcGFnZV0pCiAgICAgICAgICAgIHAuZmxpcCgncmVzaXplJyk7CgogICAgICAgICAgaWYgKGRhdGEudHBhZ2UpCiAgICAgICAgICAgIHAuZmxpcCgnZGlzYWJsZScsIHRydWUpOyAvLyBkYXRhLmRpc2FibGVkIHx8IHBhZ2UhPWFwYWdlCiAgICAgICAgfQogICAgICB9CiAgCiAgICB9IGVsc2UgewoKICAgICAgLy8gVXBkYXRlIHN0YXRpYyBwYWdlcwoKICAgICAgZm9yIChwYWdlIGluIGRhdGEucGFnZVdyYXApIHsKCiAgICAgICAgaWYgKCFoYXMocGFnZSwgZGF0YS5wYWdlV3JhcCkpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBhZ2VMb2NhdGlvbiA9IHR1cm5NZXRob2RzLl9zZXRQYWdlTG9jLmNhbGwodGhpcywgcGFnZSk7CgogICAgICAgIGlmIChkYXRhLnBhZ2VzW3BhZ2VdKQogICAgICAgICAgZGF0YS5wYWdlc1twYWdlXS5mbGlwKCdkaXNhYmxlJywKICAgICAgICAgICAgZGF0YS5kaXNhYmxlZCB8fCBwYWdlTG9jYXRpb24hPTEpLmZsaXAoJ3onLCBudWxsKTsKCiAgICAgIH0KICAgIH0KICB9LAoKICAvLyBVcGRhdGVzIHRoZSBwb3NpdGlvbiBhbmQgc2l6ZSBvZiB0aGUgZmxpcGJvb2sncyBzaGFkb3cKCiAgX3VwZGF0ZVNoYWRvdzogZnVuY3Rpb24oKSB7CiAgICAKICAgIHZhciB2aWV3LCB2aWV3Miwgc2hhZG93LAogICAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpLAogICAgICBwYWdlV2lkdGggPSAoZGF0YS5kaXNwbGF5PT0nc2luZ2xlJykgPyB3aWR0aCA6IHdpZHRoLzI7CgogICAgdmlldyA9IHRoaXMudHVybigndmlldycpOwoKICAgIGlmICghZGF0YS5zaGFkb3cpIHsKICAgICAgZGF0YS5zaGFkb3cgPSAkKCc8ZGl2IC8+JywKICAgICAgewogICAgICAgICdjbGFzcyc6ICdzaGFkb3cnLAogICAgICAgICdjc3MnOiBkaXZBdHQoMCwgMCwgMCkuY3NzCiAgICAgIH0pLgogICAgICBhcHBlbmRUbyh0aGlzKTsKICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaTxkYXRhLnBhZ2VNdi5sZW5ndGg7IGkrKykgewogICAgICBpZiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pCiAgICAgICAgYnJlYWs7CiAgICAKICAgICAgdmlldyA9IHRoaXMudHVybigndmlldycsIGRhdGEucGFnZXNbZGF0YS5wYWdlTXZbaV1dLmRhdGEoKS5mLm9wdHMubmV4dCk7CiAgICAgIHZpZXcyID0gdGhpcy50dXJuKCd2aWV3JywgZGF0YS5wYWdlTXZbaV0pOwoKICAgICAgdmlld1swXSA9IHZpZXdbMF0gJiYgdmlldzJbMF07CiAgICAgIHZpZXdbMV0gPSB2aWV3WzFdICYmIHZpZXcyWzFdOwogICAgfQoKICAgIGlmICghdmlld1swXSkgc2hhZG93ID0gKGRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPyAxIDogMjsKICAgIGVsc2UgaWYgKCF2aWV3WzFdKSBzaGFkb3cgPSAoZGF0YS5kaXJlY3Rpb249PSdsdHInKSA/IDIgOiAxOwogICAgZWxzZSBzaGFkb3cgPSAzOwoKICAgIHN3aXRjaCAoc2hhZG93KSB7CiAgICAgIGNhc2UgMToKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogcGFnZVdpZHRoCiAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBkYXRhLnNoYWRvdy5jc3MoewogICAgICAgICAgd2lkdGg6IHBhZ2VXaWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZGF0YS5zaGFkb3cuY3NzKHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgdG9wOiAwLAogICAgICAgICAgbGVmdDogMAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgfQoKICB9LAoKICAvLyBTZXRzIHRoZSB6LWluZGV4IGFuZCBkaXNwbGF5IHByb3BlcnR5IG9mIGEgcGFnZQogIC8vIEl0IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgdmlldwoKICBfc2V0UGFnZUxvYzogZnVuY3Rpb24ocGFnZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCksCiAgICAgIHZpZXcgPSB0aGlzLnR1cm4oJ3ZpZXcnKTsKCiAgICBpZiAocGFnZT09dmlld1swXSB8fCBwYWdlPT12aWV3WzFdKSB7CiAgICAgIAogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyh7ekluZGV4OiBkYXRhLnRvdGFsUGFnZXMsIGRpc3BsYXk6ICcnfSk7CiAgICAgIHJldHVybiAxOwoKICAgIH0gZWxzZSBpZiAoKGRhdGEuZGlzcGxheT09J3NpbmdsZScgJiYgcGFnZT09dmlld1swXSsxKSB8fAogICAgICAoZGF0YS5kaXNwbGF5PT0nZG91YmxlJyAmJiBwYWdlPT12aWV3WzBdLTIgfHwKICAgICAgcGFnZT09dmlld1sxXSsyKSkgewogICAgICAKICAgICAgZGF0YS5wYWdlV3JhcFtwYWdlXS5jc3Moe3pJbmRleDogZGF0YS50b3RhbFBhZ2VzLTEsIGRpc3BsYXk6ICcnfSk7CiAgICAgIHJldHVybiAyOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBkYXRhLnBhZ2VXcmFwW3BhZ2VdLmNzcyh7ekluZGV4OiAwLAogICAgICAgIGRpc3BsYXk6IChkYXRhLnBhZ2VPYmpzW3BhZ2VdLmhhc0NsYXNzKCdmaXhlZCcpKSA/ICcnIDogJ25vbmUnfQogICAgICApOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfSwKCiAgLy8gR2V0cyBhbmQgc2V0cyB0aGUgb3B0aW9ucwoKICBvcHRpb25zOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAKICAgIGlmIChvcHRpb25zPT09dW5kZWZpbmVkKSB7CiAgICAgIAogICAgICByZXR1cm4gdGhpcy5kYXRhKCkub3B0czsKCiAgICB9IGVsc2UgewoKICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKTsKCiAgICAgIC8vIFNldCBuZXcgdmFsdWVzCgogICAgICAkLmV4dGVuZChkYXRhLm9wdHMsIG9wdGlvbnMpOwogICAgICAKICAgICAgLy8gU2V0IHBhZ2VzCgogICAgICBpZiAob3B0aW9ucy5wYWdlcykKICAgICAgICB0aGlzLnR1cm4oJ3BhZ2VzJywgb3B0aW9ucy5wYWdlcyk7CgogICAgICAvLyBTZXQgcGFnZQoKICAgICAgaWYgKG9wdGlvbnMucGFnZSkKICAgICAgICB0aGlzLnR1cm4oJ3BhZ2UnLCBvcHRpb25zLnBhZ2UpOwoKICAgICAgLy8gU2V0IGRpc3BsYXkKCiAgICAgIGlmIChvcHRpb25zLmRpc3BsYXkpCiAgICAgICAgdGhpcy50dXJuKCdkaXNwbGF5Jywgb3B0aW9ucy5kaXNwbGF5KTsKICAgICAgCiAgICAgIC8vIFNldCBkaXJlY3Rpb24KCiAgICAgIGlmIChvcHRpb25zLmRpcmVjdGlvbikKICAgICAgICB0aGlzLnR1cm4oJ2RpcmVjdGlvbicsIG9wdGlvbnMuZGlyZWN0aW9uKTsKCiAgICAgIC8vIFNldCBzaXplCgogICAgICBpZiAob3B0aW9ucy53aWR0aCAmJiBvcHRpb25zLmhlaWdodCkKICAgICAgICB0aGlzLnR1cm4oJ3NpemUnLCBvcHRpb25zLndpZHRoLCBvcHRpb25zLmhlaWdodCk7CiAgICAgIAogICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCgogICAgICBpZiAob3B0aW9ucy53aGVuKQogICAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBvcHRpb25zLndoZW4pCiAgICAgICAgICBpZiAoaGFzKGV2ZW50TmFtZSwgb3B0aW9ucy53aGVuKSkgewogICAgICAgICAgICB0aGlzLnVuYmluZChldmVudE5hbWUpLgogICAgICAgICAgICAgIGJpbmQoZXZlbnROYW1lLCBvcHRpb25zLndoZW5bZXZlbnROYW1lXSk7CiAgICAgICAgICB9CgogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgfSwKCiAgLy8gR2V0cyB0aGUgY3VycmVudCB2ZXJzaW9uCgogIHZlcnNpb246IGZ1bmN0aW9uKCkgewoKICAgIHJldHVybiB2ZXJzaW9uOwoKICB9Cn0sCgovLyBNZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmxpcCBwYWdlIGVmZmVjdAoKZmxpcE1ldGhvZHMgPSB7CgogIC8vIENvbnN0cnVjdG9yCgogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICB0aGlzLmRhdGEoe2Y6CiAgICAgIHtlZmZlY3Q6IChvcHRzLmNvcm5lcnM9PSdyJyB8fCBvcHRzLmNvcm5lcnM9PSdsJykgPyAnaGFyZCcgOiAnc2hlZXQnfX0KICAgICk7CgogICAgdGhpcy5mbGlwKCdvcHRpb25zJywgb3B0cyk7CgogICAgZmxpcE1ldGhvZHMuX2FkZFBhZ2VXcmFwcGVyLmNhbGwodGhpcyk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgc2V0RGF0YTogZnVuY3Rpb24oZCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpOwoKICAgIGRhdGEuZiA9ICQuZXh0ZW5kKGRhdGEuZiwgZCk7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgb3B0aW9uczogZnVuY3Rpb24ob3B0cykgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKG9wdHMpIHsKICAgICAgZmxpcE1ldGhvZHMuc2V0RGF0YS5jYWxsKHRoaXMsCiAgICAgICAge29wdHM6ICQuZXh0ZW5kKHt9LCBkYXRhLm9wdHMgfHwgZmxpcE9wdGlvbnMsIG9wdHMpfSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSBlbHNlCiAgICAgIHJldHVybiBkYXRhLm9wdHM7CgogIH0sCgogIHo6IGZ1bmN0aW9uKHopIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKGRhdGEuZndyYXBwZXIpIHsKICAgICAgZGF0YS5vcHRzWyd6LWluZGV4J10gPSB6OwogICAgICBkYXRhLmZ3cmFwcGVyLmNzcygKICAgICAgICB7J3otaW5kZXgnOiB6IHx8IHBhcnNlSW50KGRhdGEucGFyZW50LmNzcygnei1pbmRleCcpLCAxMCkgfHwgMH0KICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9LAoKICBfY0FsbG93ZWQ6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICB0dXJuRGF0YSA9IGRhdGEub3B0cy50dXJuLmRhdGEoKSwKICAgIHBhZ2UgPSBkYXRhLm9wdHMucGFnZSwKICAgIG9kZCA9IHBhZ2UlMjsKCiAgICBpZiAodHVybkRhdGEuZGlzcGxheT09J3NpbmdsZScpIHsKICAgICAgaWYgKHBhZ2U9PTEpCiAgICAgICAgcmV0dXJuICh0dXJuRGF0YS5kaXJlY3Rpb249PSdsdHInKSA/CiAgICAgICAgICBjb3JuZXJzWydmb3J3YXJkJ10gOiBjb3JuZXJzWydiYWNrd2FyZCddOwogICAgICBlbHNlIGlmIChwYWdlPT10dXJuRGF0YS50b3RhbFBhZ2VzKQogICAgICAgIHJldHVybiAodHVybkRhdGEuZGlyZWN0aW9uPT0nbHRyJykgPwogICAgICAgICAgY29ybmVyc1snYmFja3dhcmQnXSA6IGNvcm5lcnNbJ2ZvcndhcmQnXTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb3JuZXJzWydhbGwnXTsKICAgIH0gZWxzZSB7CgogICAgICByZXR1cm4gKHR1cm5EYXRhLmRpcmVjdGlvbj09J2x0cicpID8KICAgICAgICBjb3JuZXJzWyhvZGQpID8gJ2ZvcndhcmQnIDogJ2JhY2t3YXJkJ10KICAgICAgICA6CiAgICAgICAgY29ybmVyc1sob2RkKSA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCddOwoKICAgIH0KCiAgfSwKCiAgX2Nvcm5lckFjdGl2YXRlZDogZnVuY3Rpb24oZSkgewogIAogIAogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBwb3MgPSBkYXRhLnBhcmVudC5vZmZzZXQoKSwKICAgICAgd2lkdGggPSB0aGlzLndpZHRoKCksCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCksCiAgICAgIGMgPSB7eDogTWF0aC5tYXgoMCwgZS5wYWdlWC1wb3MubGVmdCksIHk6IE1hdGgubWF4KDAsIGUucGFnZVktcG9zLnRvcCl9LAogICAgICBjc3ogPSBkYXRhLm9wdHMuY29ybmVyU2l6ZTsKCiAgICBpZiAoYy54PD0wIHx8IGMueTw9MCB8fCBjLng+PXdpZHRoIHx8IGMueT49aGVpZ2h0KQogICAgICByZXR1cm4gZmFsc2U7CgogICAgdmFyIGFsbG93ZWRDb3JuZXJzID0gZmxpcE1ldGhvZHMuX2NBbGxvd2VkLmNhbGwodGhpcyk7CgogICAgaWYgKGMueD53aWR0aC1jc3opCiAgICAgIGMuY29ybmVyID0gJ3InOwogICAgZWxzZSBpZiAoYy54PGNzeikKICAgICAgYy5jb3JuZXIgPSAnbCc7CiAgICBlbHNlCiAgICAgIHJldHVybiBmYWxzZTsKCgogICAgcmV0dXJuICgkLmluQXJyYXkoYy5jb3JuZXIsIGFsbG93ZWRDb3JuZXJzKT09LTEpID8gZmFsc2UgOiBjOwoKICB9LAoKICBfYzogZnVuY3Rpb24oY29ybmVyLCBvcHRzKSB7CgogICAgb3B0cyA9IG9wdHMgfHwgMDsKCiAgICBzd2l0Y2ggKGNvcm5lcikgewogICAgICBjYXNlICdsJzoKICAgICAgICByZXR1cm4gcG9pbnQyRChvcHRzLCAwKTsKICAgICAgY2FzZSAncic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQodGhpcy53aWR0aCgpLW9wdHMsIDApOwogICAgfQoKICB9LAoKICBfYzI6IGZ1bmN0aW9uKGNvcm5lcikgewoKICAgIHN3aXRjaCAoY29ybmVyKSB7CiAgICAgIGNhc2UgJ2wnOgogICAgICAgIHJldHVybiBwb2ludDJEKHRoaXMud2lkdGgoKSoyLCAwKTsKICAgICAgY2FzZSAncic6CiAgICAgICAgcmV0dXJuIHBvaW50MkQoLXRoaXMud2lkdGgoKSwgMCk7CiAgICB9CgogIH0sCgogIF9mb2xkaW5nUGFnZTogZnVuY3Rpb24oY29ybmVyKSB7CgogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGEoKS5mLAogICAgICBvcHRzID0gZGF0YS5vcHRzOwoKICAgIGlmIChkYXRhLmZvbGRpbmcpIHJldHVybiBkYXRhLmZvbGRpbmc7CiAgICBlbHNlIGlmKG9wdHMudHVybikgewoKICAgICAgZGF0YSA9IG9wdHMudHVybi5kYXRhKCk7CiAgICAgIGlmIChkYXRhLmRpc3BsYXkgPT0gJ3NpbmdsZScpCiAgICAgICAgcmV0dXJuIChkYXRhLnBhZ2VPYmpzW29wdHMubmV4dF0pID8gZGF0YS5wYWdlT2Jqc1swXSA6IG51bGw7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gZGF0YS5wYWdlT2Jqc1tvcHRzLm5leHRdOwogICAgfQoKICB9LAoKICBfYmFja0dyYWRpZW50OiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHR1cm4gPSBkYXRhLm9wdHMudHVybiwKICAgICAgZ3JhZGllbnQgPSBkYXRhLm9wdHMuZ3JhZGllbnRzICYmCiAgICAgICAgKCF0dXJuIHx8CiAgICAgICAgdHVybi5kYXRhKCkuZGlzcGxheT09J3NpbmdsZScgfHwKICAgICAgICAoZGF0YS5vcHRzLnBhZ2UhPTIgJiYgZGF0YS5vcHRzLnBhZ2UhPXR1cm4uZGF0YSgpLnRvdGFsUGFnZXMtMSkpOwoKCiAgICByZXR1cm4gZ3JhZGllbnQ7CgogIH0sCgogIHJlc2l6ZTogZnVuY3Rpb24oZnVsbCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLAogICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpOwoKCiAgICBpZiAoZnVsbCkgewogICAgICBkYXRhLndyYXBwZXIuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgIGRhdGEuZnBhZ2UuY3NzKHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICB9CgogIH0sCgogIC8vIFByZXBhcmVzIHRoZSBwYWdlIGJ5IGFkZGluZyBhIGdlbmVyYWwgd3JhcHBlciBhbmQgYW5vdGhlciBvYmplY3RzCgogIF9hZGRQYWdlV3JhcHBlcjogZnVuY3Rpb24oKSB7CgogICAgdmFyIGF0dCwKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIHBhcmVudCA9IHRoaXMucGFyZW50KCk7CgogICAgZGF0YS5wYXJlbnQgPSBwYXJlbnQ7CgogICAgaWYgKCFkYXRhLndyYXBwZXIpIHsKICAgICAgICAKICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSB7fTsKCiAgICAgIGRhdGEud3JhcHBlciA9ICQoJzxkaXYvPicsIGRpdkF0dCgwLCAwLCAyKSkuCiAgICAgICAgY3NzKGNzc1Byb3BlcnRpZXMpLgogICAgICAgIGFwcGVuZFRvKHBhcmVudCkuCiAgICAgICAgcHJlcGVuZCh0aGlzKTsKCiAgICAgIGRhdGEuZnBhZ2UgPSAkKCc8ZGl2Lz4nLCBkaXZBdHQoMCwgMCwgMSkpLgogICAgICAgIGNzcyhjc3NQcm9wZXJ0aWVzKS4KICAgICAgICBhcHBlbmRUbyhwYXJlbnQpOwoKICAgIH0KCiAgICAvLyBTZXQgc2l6ZQogICAgZmxpcE1ldGhvZHMucmVzaXplLmNhbGwodGhpcywgdHJ1ZSk7CgogIH0sCgogIC8vIFRha2VzIGEgMlAgcG9pbnQgZnJvbSB0aGUgc2NyZWVuIGFuZCBhcHBsaWVzIHRoZSB0cmFuc2Zvcm1hdGlvbgoKICBfZm9sZDogZnVuY3Rpb24ocG9pbnQpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmYsCiAgICAgIG8gPSBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsIHBvaW50LmNvcm5lciksCiAgICAgIHJlbFggPSAoby54KSA/IG8ueCAtIHBvaW50LnggOiAgcG9pbnQueCwKICAgICAgd2lkdGggPSB0aGlzLndpZHRoKCksCiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7CgogICAgICByZWxYID0gTWF0aC5taW4od2lkdGgqMiwgTWF0aC5tYXgoMCwgcmVsWCkpOwoKCiAgICAgIHN3aXRjaChwb2ludC5jb3JuZXIpIHsKICAgICAgICBjYXNlICdyJyA6CiAgICAgICAgICBkYXRhLndyYXBwZXIuY3NzKHsKICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KDAsIHdpZHRoLXJlbFgpCiAgICAgICAgICB9KTsKICAgICAgICAgIHRoaXMuY3NzKHsKICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCiAgICAgICAgICAgIGxlZnQ6IC1yZWxYCiAgICAgICAgICB9KTsKCiAgICAgICAgICBkYXRhLmZwYWdlLmNzcyh7CiAgICAgICAgICAgIGxlZnQ6IC1yZWxYICsgd2lkdGgsCiAgICAgICAgICAgIHdpZHRoOiBNYXRoLm1heCgwLCByZWxYLXdpZHRoKQogICAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbCcgOgoKICAgICAgICAgIGRhdGEud3JhcHBlci5jc3MoewogICAgICAgICAgICB3aWR0aDogd2lkdGgKICAgICAgICAgIH0pOwogICAgICAgICAgdGhpcy5jc3MoewogICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgICAgbGVmdDogcmVsWAogICAgICAgICAgfSk7CgogICAgICAgICAgZGF0YS5mcGFnZS5jc3MoewogICAgICAgICAgICBsZWZ0OiB3aWR0aCwKICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KDAsIHJlbFgtd2lkdGgpCiAgICAgICAgICB9KTsKCiAgICAgICAgICBpZiAoZGF0YS5mb2xkaW5nKQogICAgICAgICAgICBkYXRhLmZvbGRpbmcuY3NzKHsKICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgICAgICBsZWZ0OiAtd2lkdGgqMiArIHJlbFgKICAgICAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIGRhdGEucGFyZW50LmNzcyh7J292ZXJmbG93JzogJ3Zpc2libGUnfSk7CgogICAgZGF0YS5wb2ludCA9IHBvaW50OwogIAogIH0sCgogIF9tb3ZlRm9sZGluZ1BhZ2U6IGZ1bmN0aW9uKGJvb2wpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CiAgICAgIAogICAgaWYgKGJvb2wpIHsKICAgICAgCiAgICAgIHZhciBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgICAgdHVybiA9IGRhdGEub3B0cy50dXJuOwogICAgICAKICAgICAgaWYgKGZvbGRpbmcpIHsKCiAgICAgICAgaWYgKGRhdGEuZm9sZGluZykgewogICAgICAgICAgaWYgKGRhdGEuZm9sZGluZz09PWZvbGRpbmcpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAKICAgICAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywKICAgICAgICAgIHtiYWNrUGFyZW50OiBmb2xkaW5nLnBhcmVudCgpLAogICAgICAgICAgZm9sZGluZzogZm9sZGluZ30pOwoKICAgICAgICBkYXRhLmZwYWdlLnByZXBlbmQoZm9sZGluZyk7CgogICAgICB9CgogICAgICB0dXJuLnR1cm4oJ3VwZGF0ZScpOwoKICAgIH0gZWxzZSB7CiAgICAgIGlmIChkYXRhLmJhY2tQYXJlbnQpIHsKICAgICAgICBkYXRhLmJhY2tQYXJlbnQucHJlcGVuZChkYXRhLmZvbGRpbmcpOwogICAgICAgIGRlbGV0ZSBkYXRhLmJhY2tQYXJlbnQ7CiAgICAgICAgZGVsZXRlIGRhdGEuZm9sZGluZzsKICAgICAgfQogICAgfQogIH0sCgogIF9zaG93Rm9sZGVkUGFnZTogZnVuY3Rpb24oYywgYW5pbWF0ZSkgewoKICAgIHZhciBmb2xkaW5nID0gZmxpcE1ldGhvZHMuX2ZvbGRpbmdQYWdlLmNhbGwodGhpcyksCiAgICAgIGRkID0gdGhpcy5kYXRhKCksCiAgICAgIGRhdGEgPSBkZC5mLAogICAgICB2aXNpYmxlID0gZGF0YS52aXNpYmxlOwoKICAgIGlmICghdmlzaWJsZSB8fCAhZGF0YS5wb2ludCB8fCBkYXRhLnBvaW50LmNvcm5lciE9Yy5jb3JuZXIpIHsKICAgICAgCiAgICAgIHZhciBtQWN0aW9uID0gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLm1vdXNlQWN0aW9uOwoKICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgnc3RhcnQnKTsKICAgICAgdGhpcy50cmlnZ2VyKGV2ZW50LCBbZGF0YS5vcHRzLCBjLmNvcm5lcl0pOwogICAgICB2aXNpYmxlID0gZmFsc2U7CgogICAgICBpZiAoZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIH0KCiAgICBpZiAoZm9sZGluZykgewoKICAgICAgaWYgKGFuaW1hdGUpIHsKICAgICAgICAKICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBwb2ludCA9IChkYXRhLnBvaW50ICYmIGRhdGEucG9pbnQuY29ybmVyPT1jLmNvcm5lcikgPwogICAgICAgICAgZGF0YS5wb2ludCA6IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgYy5jb3JuZXIsIDEpOwogICAgICAKICAgICAgICB0aGlzLmFuaW1hdGVmKHtmcm9tOiBbcG9pbnQueCwgcG9pbnQueV0sCiAgICAgICAgICB0bzogW2MueCwgYy55XSwKICAgICAgICAgIGR1cmF0aW9uOiA1MDAsCiAgICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgICBjLnggPSBNYXRoLnJvdW5kKHZbMF0pOwogICAgICAgICAgICBjLnkgPSBNYXRoLnJvdW5kKHZbMV0pOwogICAgICAgICAgICBmbGlwTWV0aG9kcy5fZm9sZC5jYWxsKHRoYXQsIGMpOwogICAgICAgICAgfX0pOwoKICAgICAgfSBlbHNlICB7CgogICAgICAgIGZsaXBNZXRob2RzLl9mb2xkLmNhbGwodGhpcywgYyk7CiAgICAgICAgaWYgKGRkLmVmZmVjdCAmJiAhZGQuZWZmZWN0LnR1cm5pbmcpCiAgICAgICAgICB0aGlzLmFuaW1hdGVmKGZhbHNlKTsKCiAgICAgIH0KCiAgICAgIGlmICghdmlzaWJsZSkgewoKICAgICAgICBkYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgIGZsaXBNZXRob2RzLl9tb3ZlRm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgICAgICBkYXRhLmZwYWdlLnNob3coKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGhpZGU6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZiwKICAgICAgZm9sZGluZyA9IGZsaXBNZXRob2RzLl9mb2xkaW5nUGFnZS5jYWxsKHRoaXMpOwoKICAgIHRoaXMuY3NzKHsKICAgICAgcG9zaXRpb246ICcnLAogICAgICBsZWZ0OiAnYXV0bycKICAgIH0pOwoKICAgIGRhdGEud3JhcHBlci5jc3MoewogICAgICB3aWR0aDogdGhpcy53aWR0aCgpCiAgICB9KTsKCiAgICBkYXRhLmZwYWdlLmNzcyh7CiAgICAgIHdpZHRoOiB0aGlzLndpZHRoKCkKICAgIH0pOwoKICAgIGlmIChkYXRhLmZvbGRpbmcpCiAgICAgIGRhdGEuZm9sZGluZy5jc3MoewogICAgICAgIHBvc2l0aW9uOiAnJywKICAgICAgICBsZWZ0OiAnYXV0bycKICAgICAgfSk7CgogICAgZGF0YS5mcGFnZS5oaWRlKCk7CgogICAgZGF0YS52aXNpYmxlID0gZmFsc2U7CgogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgaGlkZUZvbGRlZFBhZ2U6IGZ1bmN0aW9uKGFuaW1hdGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLnBvaW50KSByZXR1cm47CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICBwMSA9IGRhdGEucG9pbnQsCiAgICAgIGhpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgICBkYXRhLnBvaW50ID0gbnVsbDsKICAgICAgICB0aGF0LmZsaXAoJ2hpZGUnKTsKICAgICAgICB0aGF0LnRyaWdnZXIoJ2VuZCcsIFtkYXRhLm9wdHMsIGZhbHNlXSk7CiAgICAgIH07CgogICAgaWYgKGFuaW1hdGUpIHsKICAgICAgdmFyIHA0ID0gZmxpcE1ldGhvZHMuX2MuY2FsbCh0aGlzLCBwMS5jb3JuZXIpLAogICAgICAgIHRvcCA9IChwMS5jb3JuZXIuc3Vic3RyKDAsMSk9PSd0JyksCiAgICAgICAgZGVsdGEgPSAodG9wKSA/IE1hdGgubWluKDAsIHAxLnktcDQueSkvMiA6IE1hdGgubWF4KDAsIHAxLnktcDQueSkvMiwKICAgICAgICBwMiA9IHBvaW50MkQocDEueCwgcDEueStkZWx0YSksCiAgICAgICAgcDMgPSBwb2ludDJEKHA0LngsIHA0LnktZGVsdGEpOwogICAgCiAgICAgIHRoaXMuYW5pbWF0ZWYoewogICAgICAgIGZyb206IDAsCiAgICAgICAgdG86IDEsCiAgICAgICAgZnJhbWU6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgIHZhciBucCA9IGJlemllcihwMSwgcDIsIHAzLCBwNCwgdik7CiAgICAgICAgICBwMS54ID0gbnAueDsKICAgICAgICAgIHAxLnkgPSBucC55OwogICAgICAgICAgZmxpcE1ldGhvZHMuX2ZvbGQuY2FsbCh0aGF0LCBwMSk7CiAgICAgICAgfSwKICAgICAgICBjb21wbGV0ZTogaGlkZSwKICAgICAgICBkdXJhdGlvbjogODAwLAogICAgICAgIGhpZGluZzogdHJ1ZQogICAgICAgIH0pOwoKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuYW5pbWF0ZWYoZmFsc2UpOwogICAgICBoaWRlKCk7CiAgICB9CiAgfSwKCiAgdHVyblBhZ2U6IGZ1bmN0aW9uKGNvcm5lcikgewoKICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgY29ybmVyID0ge2Nvcm5lcjogKGRhdGEuY29ybmVyKSA/CiAgICAgIGRhdGEuY29ybmVyLmNvcm5lciA6CiAgICAgIGNvcm5lciB8fCBmbGlwTWV0aG9kcy5fY0FsbG93ZWQuY2FsbCh0aGlzKVswXX07CgogICAgdmFyIHAxID0gZGF0YS5wb2ludCB8fAogICAgICBmbGlwTWV0aG9kcy5fYy5jYWxsKHRoaXMsCiAgICAgICAgY29ybmVyLmNvcm5lciwKICAgICAgICAoZGF0YS5vcHRzLnR1cm4pID8gZGF0YS5vcHRzLnR1cm4uZGF0YSgpLm9wdHMuZWxldmF0aW9uIDogMCksCiAgICAgIHA0ID0gZmxpcE1ldGhvZHMuX2MyLmNhbGwodGhpcywgY29ybmVyLmNvcm5lcik7CgogICAgICB0aGlzLnRyaWdnZXIoJ2ZsaXAnKS4KICAgICAgICBhbmltYXRlZih7CiAgICAgICAgICBmcm9tOiAwLAogICAgICAgICAgdG86IDEsCiAgICAgICAgICBmcmFtZTogZnVuY3Rpb24odikgewogICAgICAgICAgICB2YXIgbnAgPSBiZXppZXIocDEsIHAxLCBwNCwgcDQsIHYpOwogICAgICAgICAgICBjb3JuZXIueCA9IG5wLng7CiAgICAgICAgICAgIGNvcm5lci55ID0gbnAueTsKCiAgICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoYXQsIGNvcm5lcik7CiAgICAgICAgICB9LAogICAgICAgICAgCiAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoYXQudHJpZ2dlcignZW5kJywgW2RhdGEub3B0cywgdHJ1ZV0pOwogICAgICAgICAgfSwKICAgICAgICAgIGR1cmF0aW9uOiBkYXRhLm9wdHMuZHVyYXRpb24sCiAgICAgICAgICB0dXJuaW5nOiB0cnVlCiAgICAgICAgfSk7CgogICAgICBkYXRhLmNvcm5lciA9IG51bGw7CiAgfSwKCiAgbW92aW5nOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gJ2VmZmVjdCcgaW4gdGhpcy5kYXRhKCk7CiAgCiAgfSwKCiAgaXNUdXJuaW5nOiBmdW5jdGlvbigpIHsKCiAgICByZXR1cm4gdGhpcy5mbGlwKCdtb3ZpbmcnKSAmJiB0aGlzLmRhdGEoKS5lZmZlY3QudHVybmluZzsKICAKICB9LAoKICBfZXZlbnRTdGFydDogZnVuY3Rpb24oZSkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIXRoaXMuZmxpcCgnaXNUdXJuaW5nJykpIHsKCiAgICAgIGRhdGEuY29ybmVyID0gZmxpcE1ldGhvZHMuX2Nvcm5lckFjdGl2YXRlZC5jYWxsKHRoaXMsIGUpOwogICAgCiAgICAgIGlmIChkYXRhLmNvcm5lciAmJiBmbGlwTWV0aG9kcy5fZm9sZGluZ1BhZ2UuY2FsbCh0aGlzLCBkYXRhLmNvcm5lcikpIHsKICAgICAgCiAgICAgICAgaWYgKGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGRhdGEuY29ybmVyKSkKICAgICAgICAgIHRoaXMudHJpZ2dlcigncHJlc3NlZCcsIFtkYXRhLnBvaW50XSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIH0gZWxzZQogICAgICAgIGRhdGEuY29ybmVyID0gbnVsbDsKCiAgICB9CgogIH0sCgogIF9ldmVudE1vdmU6IGZ1bmN0aW9uKGUpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLmY7CgogICAgaWYgKCFkYXRhLmRpc2FibGVkKSB7CgogICAgICBlID0gKGlzVG91Y2gpID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgOiBbZV07CiAgICAKICAgICAgaWYgKGRhdGEuY29ybmVyKSB7CgogICAgICAgIHZhciBwb3MgPSBkYXRhLnBhcmVudC5vZmZzZXQoKTsKICAgICAgICBkYXRhLmNvcm5lci54ID0gZVswXS5wYWdlWC1wb3MubGVmdDsKICAgICAgICBkYXRhLmNvcm5lci55ID0gZVswXS5wYWdlWS1wb3MudG9wOwogICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGRhdGEuY29ybmVyKTsKCiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGF0YSgpLmVmZmVjdCAmJiB0aGlzLmlzKCc6dmlzaWJsZScpKSB7CiAgICAKCiAgICAgICAgdmFyIGNvcm5lciA9IGZsaXBNZXRob2RzLl9jb3JuZXJBY3RpdmF0ZWQuY2FsbCh0aGlzLCBlWzBdKTsKCiAgICAgICAgaWYgKGNvcm5lcikgewogICAgICAgICAgdmFyIG9yaWdpbiA9IGZsaXBNZXRob2RzLl9jLmNhbGwodGhpcywgY29ybmVyLmNvcm5lciwgZGF0YS5vcHRzLmNvcm5lclNpemUvMik7CiAgICAgICAgICBjb3JuZXIueCA9IG9yaWdpbi54OwogICAgICAgICAgY29ybmVyLnkgPSBvcmlnaW4ueTsKICAgICAgICAgIGZsaXBNZXRob2RzLl9zaG93Rm9sZGVkUGFnZS5jYWxsKHRoaXMsIGNvcm5lciwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICBmbGlwTWV0aG9kcy5oaWRlRm9sZGVkUGFnZS5jYWxsKHRoaXMsIHRydWUpOwogICAgICAgICAgICAgICAKCiAgICAgIH0KICAgIH0KICB9LAoKICBfZXZlbnRFbmQ6IGZ1bmN0aW9uKCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuZjsKCiAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgZGF0YS5wb2ludCkgewogICAgICB2YXIgZXZlbnQgPSAkLkV2ZW50KCdyZWxlYXNlZCcpOwogICAgICB0aGlzLnRyaWdnZXIoZXZlbnQsIFtkYXRhLnBvaW50XSk7CiAgICAgIGlmICghZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpCiAgICAgICAgZmxpcE1ldGhvZHMuaGlkZUZvbGRlZFBhZ2UuY2FsbCh0aGlzLCB0cnVlKTsKICAgIH0KCiAgICBkYXRhLmNvcm5lciA9IG51bGw7CgogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGRpc2FibGUpIHsKCiAgICBmbGlwTWV0aG9kcy5zZXREYXRhLmNhbGwodGhpcywgeydkaXNhYmxlZCc6IGRpc2FibGV9KTsKICAgIHJldHVybiB0aGlzOwoKICB9Cn07CgoKCi8vIFByb2Nlc3NlcyBjbGFzc2VzCgpmdW5jdGlvbiBkZWNvcmF0b3IodGhhdCwgbWV0aG9kcywgYXJncykgewoKICBpZiAoIWFyZ3NbMF0gfHwgdHlwZW9mKGFyZ3NbMF0pPT0nb2JqZWN0JykKICAgIHJldHVybiBtZXRob2RzLmluaXQuYXBwbHkodGhhdCwgYXJncyk7CgogIGVsc2UgaWYgKG1ldGhvZHNbYXJnc1swXV0pCiAgICByZXR1cm4gbWV0aG9kc1thcmdzWzBdXS5hcHBseSh0aGF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CgogIGVsc2UKICAgIHRocm93IHR1cm5FcnJvcihhcmdzWzBdICsgJyBpcyBhbiBpbnZhbGlkIHZhbHVlJyk7Cn0KCgovLyBBdHRyaWJ1dGVzIGZvciBhIGxheWVyCgpmdW5jdGlvbiBkaXZBdHQodG9wLCBsZWZ0LCB6SW5kZXgsIG92ZXJmKSB7CiAgICAKICByZXR1cm4geydjc3MnOiB7CiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgICAgdG9wOiB0b3AsCiAgICAgICAgbGVmdDogbGVmdCwKICAgICAgICAnb3ZlcmZsb3cnOiBvdmVyZiB8fCAnaGlkZGVuJywKICAgICAgICAnei1pbmRleCc6IHpJbmRleCB8fCAnYXV0bycKICAgICAgICB9CiAgICB9OwogICAgICAKfQoKLy8gR2V0cyBhIDJEIHBvaW50IGZyb20gYSBiZXppZXIgY3VydmUgb2YgZm91ciBwb2ludHMKCmZ1bmN0aW9uIGJlemllcihwMSwgcDIsIHAzLCBwNCwgdCkgewoKICB2YXIgYSA9IDEgLSB0LAogICAgYiA9IGEgKiBhICogYSwKICAgIGMgPSB0ICogdCAqIHQ7CiAgICAKICByZXR1cm4gcG9pbnQyRChNYXRoLnJvdW5kKGIqcDEueCArIDMqdCphKmEqcDIueCArIDMqdCp0KmEqcDMueCArIGMqcDQueCksCiAgICBNYXRoLnJvdW5kKGIqcDEueSArIDMqdCphKmEqcDIueSArIDMqdCp0KmEqcDMueSArIGMqcDQueSkpOwoKfQoKLy8gR2V0cyBhIDJEIHBvaW50CgpmdW5jdGlvbiBwb2ludDJEKHgsIHkpIHsKICAKICByZXR1cm4ge3g6IHgsIHk6IHl9OwoKfQoKLy8gQ2hlY2tzIGlmIGEgcHJvcGVydHkgYmVsb25ncyB0byBhbiBvYmplY3QKCmZ1bmN0aW9uIGhhcyhwcm9wZXJ0eSwgb2JqZWN0KSB7CiAgCiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsKCn0KCi8vIEdldHMgdGhlIENTUzMgdmVuZG9yIHByZWZpeAoKZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoKICB2YXIgdmVuZG9yUHJlZml4ZXMgPSBbJ01veicsJ1dlYmtpdCcsJ0todG1sJywnTycsJ21zJ10sCiAgbGVuID0gdmVuZG9yUHJlZml4ZXMubGVuZ3RoLAogIHZlbmRvciA9ICcnOwoKICB3aGlsZSAobGVuLS0pCiAgICBpZiAoKHZlbmRvclByZWZpeGVzW2xlbl0gKyAnVHJhbnNmb3JtJykgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSkKICAgICAgdmVuZG9yPSctJyt2ZW5kb3JQcmVmaXhlc1tsZW5dLnRvTG93ZXJDYXNlKCkrJy0nOwoKICByZXR1cm4gdmVuZG9yOwoKfQoKLy8gSlMgRXJyb3JzCgpmdW5jdGlvbiB0dXJuRXJyb3IobWVzc2FnZSkgewoKICBmdW5jdGlvbiBUdXJuSnNFcnJvcihtZXNzYWdlKSB7CiAgICB0aGlzLm5hbWUgPSAiVHVybkpzRXJyb3IiOwogICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICB9CgogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR1cm5Kc0Vycm9yOwoKICByZXR1cm4gbmV3IFR1cm5Kc0Vycm9yKG1lc3NhZ2UpOwp9CgovLyBGaW5kIHRoZSBvZmZzZXQgb2YgYW4gZWxlbWVudCBkaXNjYXJkaW5nIGl0cyB0cmFuc2Zvcm1hdGlvbgoKZnVuY3Rpb24gZmluZFBvcyhvYmopIHsKICB2YXIgb2Zmc2V0ID0ge3RvcDogMCwgbGVmdDogMH07CgogIGRvewogICAgb2Zmc2V0LmxlZnQgKz0gb2JqLm9mZnNldExlZnQ7CiAgICBvZmZzZXQudG9wICs9IG9iai5vZmZzZXRUb3A7CiAgfSB3aGlsZSAoKG9iaiA9IG9iai5vZmZzZXRQYXJlbnQpKTsKCiAgcmV0dXJuIG9mZnNldDsKfQoKCi8vIFJlcXVlc3QgYW4gYW5pbWF0aW9uCgp3aW5kb3cucmVxdWVzdEFuaW0gPSBmdW5jdGlvbihjYWxsYmFjaykgewogIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApOwp9CgoKZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHsKICByZXR1cm4gJyc7Cn0KCgovLyBFeHRlbmQgJC5mbgoKJC5leHRlbmQoJC5mbiwgewoKICBmbGlwOiBmdW5jdGlvbihyZXEsIG9wdHMpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGhpcywgZmxpcE1ldGhvZHMsIGFyZ3VtZW50cyk7CiAgfSwKCiAgdHVybjogZnVuY3Rpb24ocmVxKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRoaXMsIHR1cm5NZXRob2RzLCBhcmd1bWVudHMpOwogIH0sCgogIHRyYW5zZm9ybTogZnVuY3Rpb24odHJhbnNmb3JtLCBvcmlnaW4pIHsKCiAgICB2YXIgcHJvcGVydGllcyA9IHt9OwogICAgCiAgICBpZiAob3JpZ2luKQogICAgICBwcm9wZXJ0aWVzW3ZlbmRvcisndHJhbnNmb3JtLW9yaWdpbiddID0gb3JpZ2luOwogICAgCiAgICBwcm9wZXJ0aWVzW3ZlbmRvcisndHJhbnNmb3JtJ10gPSB0cmFuc2Zvcm07CiAgCiAgICByZXR1cm4gdGhpcy5jc3MocHJvcGVydGllcyk7CgogIH0sCgogIGFuaW1hdGVmOiBmdW5jdGlvbihwb2ludCkgewoKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCk7CgogICAgaWYgKGRhdGEuZWZmZWN0KQogICAgICBkYXRhLmVmZmVjdC5zdG9wKCk7CgogICAgaWYgKHBvaW50KSB7CgogICAgICBpZiAoIXBvaW50LnRvLmxlbmd0aCkgcG9pbnQudG8gPSBbcG9pbnQudG9dOwogICAgICBpZiAoIXBvaW50LmZyb20ubGVuZ3RoKSBwb2ludC5mcm9tID0gW3BvaW50LmZyb21dOwoKICAgICAgdmFyIGRpZmYgPSBbXSwKICAgICAgICBsZW4gPSBwb2ludC50by5sZW5ndGgsCiAgICAgICAgYW5pbWF0aW5nID0gdHJ1ZSwKICAgICAgICB0aGF0ID0gdGhpcywKICAgICAgICB0aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSwKICAgICAgICBmcmFtZSA9IGZ1bmN0aW9uKCkgewoKICAgICAgICAgIGlmICghZGF0YS5lZmZlY3QgfHwgIWFuaW1hdGluZykKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAgIHZhciB2ID0gW10sCiAgICAgICAgICAgIHRpbWVEaWZmID0gTWF0aC5taW4ocG9pbnQuZHVyYXRpb24sIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSB0aW1lKTsKCiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgICAgICAgICB2LnB1c2goZGF0YS5lZmZlY3QuZWFzaW5nKDEsIHRpbWVEaWZmLCBwb2ludC5mcm9tW2ldLCBkaWZmW2ldLCBwb2ludC5kdXJhdGlvbikpOwoKICAgICAgICAgIHBvaW50LmZyYW1lKChsZW49PTEpID8gdlswXSA6IHYpOwoKICAgICAgICAgIGlmICh0aW1lRGlmZj09cG9pbnQuZHVyYXRpb24pIHsKICAgICAgICAgICAgZGVsZXRlIGRhdGFbJ2VmZmVjdCddOwogICAgICAgICAgICB0aGF0LmRhdGEoZGF0YSk7CiAgICAgICAgICAgIGlmIChwb2ludC5jb21wbGV0ZSkKICAgICAgICAgICAgICBwb2ludC5jb21wbGV0ZSgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltKGZyYW1lKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykKICAgICAgICBkaWZmLnB1c2gocG9pbnQudG9baV0gLSBwb2ludC5mcm9tW2ldKTsKCiAgICAgIGRhdGEuZWZmZWN0ID0gJC5leHRlbmQoewogICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgYW5pbWF0aW5nID0gZmFsc2U7CiAgICAgICAgfSwKICAgICAgICBlYXNpbmc6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkYXRhKSB7CiAgICAgICAgICByZXR1cm4gYyAqIE1hdGguc3FydCgxIC0gKHQ9dC9kYXRhLTEpKnQpICsgYjsKICAgICAgICB9CiAgICAgIH0sIHBvaW50KTsKCiAgICAgIHRoaXMuZGF0YShkYXRhKTsKCiAgICAgIGZyYW1lKCk7CgogICAgfSBlbHNlIHsKICAgICAgCiAgICAgIGRlbGV0ZSBkYXRhWydlZmZlY3QnXTsKCiAgICB9CiAgfQp9KTsKCi8vIEV4cG9ydCBzb21lIGdsb2JhbHMKCiQuaXNUb3VjaCA9IGlzVG91Y2g7CiQubW91c2VFdmVudHMgPSBtb3VzZUV2ZW50czsKJC5jc3NQcmVmaXggPSBlbXB0eUZ1bmN0aW9uOwokLmNzc1RyYW5zaXRpb25FbmQgPSBlbXB0eUZ1bmN0aW9uOwokLmZpbmRQb3MgPSBmaW5kUG9zOwoKfSkoalF1ZXJ5KTs='></script>
<script id="fb_lib_zoom_js" src='data:/text/plain;base64,LyoqCiAqIHpvb20uanMKICogd3d3LnR1cm5qcy5jb20KICogdHVybmpzLmNvbS9saWNlbnNlLnR4dAogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgRW1tYW51ZWwgR2FyY2lhCiAqKi8KCihmdW5jdGlvbigkKSB7CgondXNlIHN0cmljdCc7Cgp2YXIgaGFzM2QsCgp6b29tT3B0aW9ucyA9IHsKICBtYXg6IDIsCiAgZmxpcGJvb2s6IG51bGwsCiAgZWFzZUZ1bmN0aW9uOiAnZWFzZS1pbi1vdXQnLAogIGR1cmF0aW9uOiA1MDAsCiAgd2hlbjoge30KfSwKCnpvb21NZXRob2RzID0gewogIGluaXQ6IGZ1bmN0aW9uKG9wdHMpIHsKCiAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICBkYXRhID0gdGhpcy5kYXRhKCksCiAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHpvb21PcHRpb25zLCBvcHRzKTsKCiAgICBpZiAoIW9wdGlvbnMuZmxpcGJvb2sgfHwgIW9wdGlvbnMuZmxpcGJvb2sudHVybignaXMnKSkgewogICAgICB0aHJvdyBlcnJvcignb3B0aW9ucy5mbGlwYm9vayBpcyByZXF1aXJlZCcpOwogICAgfQoKICAgIGhhczNkID0gJ1dlYktpdENTU01hdHJpeCcgaW4gd2luZG93IHx8ICdNb3pQZXJzcGVjdGl2ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZTsKCiAgICBpZiAodHlwZW9mKG9wdGlvbnMubWF4KSE9J2Z1bmN0aW9uJykgewogICAgICB2YXIgbWF4ID0gb3B0aW9ucy5tYXg7CiAgICAgIG9wdGlvbnMubWF4ID0gZnVuY3Rpb24oKSB7IHJldHVybiBtYXg7IH07CiAgICB9CgogICAgZGF0YS56b29tID0gewogICAgICBvcHRzOiBvcHRpb25zLAogICAgICBheGlzOiBwb2ludDJEKDAsIDApLAogICAgICBzY3JvbGxQb3M6IHBvaW50MkQoMCwgMCksCiAgICAgIGV2ZW50UXVldWU6IFtdLAogICAgICBtb3VzZXVwRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB6b29tTWV0aG9kcy5fZU1vdXNlVXAuYXBwbHkodGhhdCwgYXJndW1lbnRzKTsKICAgICAgfSwKICAgICAgZXZlbnRUb3VjaFN0YXJ0OiBiaW5kKHpvb21NZXRob2RzLl9lVG91Y2hTdGFydCwgdGhhdCksCiAgICAgIGV2ZW50VG91Y2hNb3ZlOiBiaW5kKHpvb21NZXRob2RzLl9lVG91Y2hNb3ZlLCB0aGF0KSwKICAgICAgZXZlbnRUb3VjaEVuZDogYmluZCh6b29tTWV0aG9kcy5fZVRvdWNoRW5kLCB0aGF0KSwKICAgICAgZmxpcGJvb2tFdmVudHM6IHsKICAgICAgICB6b29taW5nOiBiaW5kKHpvb21NZXRob2RzLl9lWm9vbSwgdGhhdCksCiAgICAgICAgcHJlc3NlZDogYmluZCh6b29tTWV0aG9kcy5fZVByZXNzZWQsIHRoYXQpLAogICAgICAgIHJlbGVhc2VkOiBiaW5kKHpvb21NZXRob2RzLl9lUmVsZWFzZWQsIHRoYXQpLAogICAgICAgIHN0YXJ0OiBiaW5kKHpvb21NZXRob2RzLl9lU3RhcnQsIHRoYXQpLAogICAgICAgIHR1cm5pbmc6IGJpbmQoem9vbU1ldGhvZHMuX2VUdXJuaW5nLCB0aGF0KSwKICAgICAgICB0dXJuZWQ6IGJpbmQoem9vbU1ldGhvZHMuX2VUdXJuZWQsIHRoYXQpLAogICAgICAgIGRlc3Ryb3lpbmc6IGJpbmQoem9vbU1ldGhvZHMuX2VEZXN0cm95aW5nLCB0aGF0KQogICAgICB9CiAgICB9OwoKICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBvcHRpb25zLndoZW4pIHsKICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLndoZW4sIGV2ZW50TmFtZSkpIHsKICAgICAgICB0aGlzLmJpbmQoJ3pvb20uJytldmVudE5hbWUsIG9wdGlvbnMud2hlbltldmVudE5hbWVdKTsKICAgICAgfQogICAgfQoKICAgIGZvciAoZXZlbnROYW1lIGluIGRhdGEuem9vbS5mbGlwYm9va0V2ZW50cykgewogICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuem9vbS5mbGlwYm9va0V2ZW50cywgZXZlbnROYW1lKSkgewogICAgICAgIG9wdGlvbnMuZmxpcGJvb2suYmluZChldmVudE5hbWUsIGRhdGEuem9vbS5mbGlwYm9va0V2ZW50c1tldmVudE5hbWVdKTsKICAgICAgfQogICAgfQoKICAgIHRoaXMuY3NzKHsKICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsCiAgICAgIG92ZXJmbG93IDogJ2hpZGRlbicKICAgIH0pOwoKICAgIGlmICgkLmlzVG91Y2gpIHsKCiAgICAgIG9wdGlvbnMuZmxpcGJvb2suCiAgICAgICAgYmluZCgndG91Y2hzdGFydCcsIGRhdGEuem9vbS5ldmVudFRvdWNoU3RhcnQgKS4KICAgICAgICBiaW5kKCd0b3VjaG1vdmUnLCBkYXRhLnpvb20uZXZlbnRUb3VjaE1vdmUpLgogICAgICAgIGJpbmQoJ3RvdWNoZW5kJywgZGF0YS56b29tLmV2ZW50VG91Y2hFbmQpOwoKICAgICAgdGhpcy5iaW5kKCd0b3VjaHN0YXJ0Jywgem9vbU1ldGhvZHMuX3RhcCk7CgogICAgfSBlbHNlIHsKICAgICAgdGhpcy5tb3VzZWRvd24oem9vbU1ldGhvZHMuX21vdXNlZG93bikuCiAgICAgICAgY2xpY2soem9vbU1ldGhvZHMuX3RhcCk7CiAgICB9CiAgfSwKCiAgX3RhcDogZnVuY3Rpb24oZXZlbnQpIHsKICAgIAogICAgdmFyIHRoYXQgPSAkKHRoaXMpLAogICAgICBkYXRhID0gdGhhdC5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vazsKCiAgICBpZiAoZGF0YS5kcmFnZ2luZ0Nvcm5lciB8fCBkYXRhLmRyYWdnaW5nKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNQYWdlKCQoZXZlbnQudGFyZ2V0KSwgdGhhdCkpIHsKCiAgICAgIHpvb21NZXRob2RzLl9hZGRFdmVudC5jYWxsKHRoYXQsICd0YXAnLCBldmVudCk7CiAgICAgIAogICAgICB2YXIgc2VjdWVuY2UgPSB6b29tTWV0aG9kcy5fZXZlbnRTZXEuY2FsbCh0aGF0KTsKCiAgICAgIGlmIChzZWN1ZW5jZSkKICAgICAgICB0aGF0LnRyaWdnZXIoc2VjdWVuY2UpOwoKICAgIH0KCiAgfSwKCiAgX2FkZEV2ZW50OiBmdW5jdGlvbihldmVudE5hbWUsIGV2ZW50KSB7CiAgICAKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCiAgICAgIGV2ZW50T2JqZWN0ID0ge25hbWU6IGV2ZW50TmFtZSwgdGltZXN0YW1wOiB0aW1lLCBldmVudDogZXZlbnR9OwoKICAgIGRhdGEuZXZlbnRRdWV1ZS5wdXNoKGV2ZW50T2JqZWN0KTsKCiAgICBpZiAoZGF0YS5ldmVudFF1ZXVlLmxlbmd0aD4xMCkKICAgICAgZGF0YS5ldmVudFF1ZXVlLnNwbGljZSgwLCAxKTsKCiAgfSwKCiAgX2V2ZW50U2VxOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGxpc3QgPSBkYXRhLmV2ZW50UXVldWUsCiAgICAgIGxhc3RFdmVudCA9IGxpc3QubGVuZ3RoLTE7CgogICAgaWYgKGxhc3RFdmVudD4wICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS5uYW1lPT0ndGFwJyAmJgogICAgICBsaXN0W2xhc3RFdmVudC0xXS5uYW1lPT0ndGFwJyAmJgogICAgICBsaXN0W2xhc3RFdmVudF0uZXZlbnQucGFnZVggPT0gbGlzdFtsYXN0RXZlbnQtMV0uZXZlbnQucGFnZVggJiYKICAgICAgbGlzdFtsYXN0RXZlbnRdLmV2ZW50LnBhZ2VZID09IGxpc3RbbGFzdEV2ZW50LTFdLmV2ZW50LnBhZ2VZICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS50aW1lc3RhbXAtbGlzdFtsYXN0RXZlbnQtMV0udGltZXN0YW1wIDwgMjAwICYmCiAgICAgIGxpc3RbbGFzdEV2ZW50XS50aW1lc3RhbXAtbGlzdFtsYXN0RXZlbnQtMV0udGltZXN0YW1wID4gNTApCiAgICB7CiAgCiAgICAgIHJldHVybiAkLmV4dGVuZChsaXN0W2xhc3RFdmVudF0uZXZlbnQsIHt0eXBlOiAnem9vbS5kb3VibGVUYXAnfSk7CgogICAgfSBlbHNlIGlmIChsaXN0W2xhc3RFdmVudF0ubmFtZT09J3RhcCcpIHsKICAgICAgCiAgICAgIHJldHVybiAkLmV4dGVuZChsaXN0W2xhc3RFdmVudF0uZXZlbnQsIHt0eXBlOiAnem9vbS50YXAnfSk7CgogICAgfQogICAgICAKICB9LAoKICBfcHJlcGFyZVpvb206IGZ1bmN0aW9uICgpIHsKICAgIAogICAgdmFyIGZsaXBQb3MsIG9mZnNldExlZnQgPSAwLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgaW52eiA9IDEvdGhpcy56b29tKCd2YWx1ZScpLAogICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICBkaXIgPSBmbGlwLnR1cm4oJ2RpcmVjdGlvbicpLAogICAgICBmbGlwRGF0YSA9IGZsaXAuZGF0YSgpLAogICAgICBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKSwKICAgICAgdGhpc09mZnNldCA9IHRoaXMub2Zmc2V0KCksCiAgICAgIGZsaXBTaXplID0ge2hlaWdodDogZmxpcC5oZWlnaHQoKX0sCiAgICAgIHZpZXcgPSBmbGlwLnR1cm4oJ3ZpZXcnKTsKCiAgICAgIGlmIChmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScgJiYgZmxpcC5kYXRhKCkub3B0cy5hdXRvQ2VudGVyKSB7CiAgICAgICAgaWYgKCF2aWV3WzBdKSB7CiAgICAgICAgICBmbGlwU2l6ZS53aWR0aCA9IGZsaXAud2lkdGgoKS8yOwogICAgICAgICAgb2Zmc2V0TGVmdCA9IChkaXI9PSdsdHInKSA/IGZsaXBTaXplLndpZHRoIDogMDsKICAgICAgICAgIGZsaXBQb3MgPSBwb2ludDJEKAogICAgICAgICAgICAoZGlyPT0nbHRyJykgPyBmbGlwT2Zmc2V0LmxlZnQtdGhpc09mZnNldC5sZWZ0K2ZsaXBTaXplLndpZHRoIDogZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgICAgZmxpcE9mZnNldC50b3AtdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CgogICAgICAgIH0gZWxzZSBpZiAoIXZpZXdbMV0pIHsKICAgICAgICAgIGZsaXBTaXplLndpZHRoID0gZmxpcC53aWR0aCgpLzI7CiAgICAgICAgICBvZmZzZXRMZWZ0ID0gKGRpcj09J2x0cicpID8gMCA6IGZsaXBTaXplLndpZHRoOwogICAgICAgICAgZmxpcFBvcyA9IHBvaW50MkQoCiAgICAgICAgICAgIChkaXI9PSdsdHInKSA/IGZsaXBPZmZzZXQubGVmdC10aGlzT2Zmc2V0LmxlZnQgOiBmbGlwT2Zmc2V0LmxlZnQtdGhpc09mZnNldC5sZWZ0K2ZsaXBTaXplLndpZHRoLAogICAgICAgICAgICBmbGlwT2Zmc2V0LnRvcC10aGlzT2Zmc2V0LnRvcAogICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmxpcFNpemUud2lkdGggPSBmbGlwLndpZHRoKCk7CiAgICAgICAgICBmbGlwUG9zID0gcG9pbnQyRCgKICAgICAgICAgICAgZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgICAgZmxpcE9mZnNldC50b3AtdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZsaXBTaXplLndpZHRoID0gZmxpcC53aWR0aCgpOwogICAgICAgIGZsaXBQb3MgPSBwb2ludDJEKAogICAgICAgICAgZmxpcE9mZnNldC5sZWZ0LXRoaXNPZmZzZXQubGVmdCwKICAgICAgICAgIGZsaXBPZmZzZXQudG9wLXRoaXNPZmZzZXQudG9wCiAgICAgICAgKTsKICAgICAgfQoKICAgIGlmICghZGF0YS56b29tZXIpIHsKICAgICAgZGF0YS56b29tZXIgPSAkKCc8ZGl2IC8+JywKICAgICAgICB7J2NsYXNzJzogJ3pvb21lcicsCiAgICAgICAgICBjc3M6IHsKICAgICAgICAgICAgb3ZlcmZsb3c6J2hpZGRlbicsCiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICB6SW5kZXg6ICcxMDAwMDAwJwogICAgICAgICAgfQogICAgICAgIH0pLgogICAgICBtb3VzZWRvd24oZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9KS5hcHBlbmRUbyh0aGlzKTsKICAgIH0KCgogICAgZGF0YS56b29tZXIuY3NzKHsKICAgICAgdG9wOiBmbGlwUG9zLnksCiAgICAgIGxlZnQ6IGZsaXBQb3MueCwKICAgICAgd2lkdGg6IGZsaXBTaXplLndpZHRoLAogICAgICBoZWlnaHQ6IGZsaXBTaXplLmhlaWdodAogICAgfSk7CiAgICAKICAgIHZhciB6b29tZXJWaWV3ID0gdmlldy5qb2luKCcsJyk7CgogICAgaWYgKHpvb21lclZpZXchPWRhdGEuem9vbWVyVmlldykgewoKICAgICAgZGF0YS56b29tZXJWaWV3ID0gem9vbWVyVmlldzsKICAgICAgZGF0YS56b29tZXIuZmluZCgnKicpLnJlbW92ZSgpOwoKICAgICAgZm9yICh2YXIgcCA9IDA7IHA8dmlldy5sZW5ndGg7IHArKykgewoKICAgICAgICBpZiAoIXZpZXdbcF0pCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgdmFyIHBvcyA9IGZsaXBEYXRhLnBhZ2VPYmpzW3ZpZXdbcF1dLm9mZnNldCgpLAogICAgICAgICAgcGFnZUVsZW1lbnQgPSAkKGZsaXBEYXRhLnBhZ2VPYmpzW3ZpZXdbcF1dKTsKICAgICAgICAgIAogICAgICAgIHBhZ2VFbGVtZW50LgogICAgICAgICAgY2xvbmUoKS4KICAgICAgICAgIHRyYW5zZm9ybSgnJykuCiAgICAgICAgICBjc3MoewogICAgICAgICAgICB3aWR0aDogcGFnZUVsZW1lbnQud2lkdGgoKSppbnZ6LAogICAgICAgICAgICBoZWlnaHQ6IHBhZ2VFbGVtZW50LmhlaWdodCgpKmludnosCiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICBkaXNwbGF5OiAnJywKICAgICAgICAgICAgdG9wOiAocG9zLnRvcCAtIGZsaXBPZmZzZXQudG9wKSppbnZ6LAogICAgICAgICAgICBsZWZ0OiAocG9zLmxlZnQgLSBmbGlwT2Zmc2V0LmxlZnQgLSBvZmZzZXRMZWZ0KSppbnZ6CiAgICAgICAgICB9KS4KICAgICAgICAgIGFwcGVuZFRvKGRhdGEuem9vbWVyKTsKICAgICAgfQogICAgfQogICAgCiAgICAKICAgIHJldHVybiB7cG9zOiBmbGlwUG9zLCBzaXplOiBmbGlwU2l6ZX07CgogIH0sCgogIHZhbHVlOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb207CgogICAgcmV0dXJuIGRhdGEub3B0cy5mbGlwYm9vay50dXJuKCd6b29tJyk7CiAgfSwKCiAgem9vbUluOiBmdW5jdGlvbihldmVudCkgewoKICAgIHZhciBwb3MsCiAgICAgIHRoYXQgPSB0aGlzLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vaywKICAgICAgem9vbSA9IGRhdGEub3B0cy5tYXgoKSwKICAgICAgZmxpcE9mZnNldCA9IGZsaXAub2Zmc2V0KCksCiAgICAgIHRoaXNPZmZzZXQgPSB0aGlzLm9mZnNldCgpOwoKICAgIGlmIChkYXRhLnpvb21JbikKICAgICAgcmV0dXJuIHRoaXM7CgogICAgZmxpcC50dXJuKCdzdG9wJyk7CiAgICAKICAgIHZhciBldiA9ICQuRXZlbnQoJ3pvb20uY2hhbmdlJyk7CiAgICB0aGlzLnRyaWdnZXIoZXYsIFt6b29tXSk7CgogICAgaWYgKGV2LmlzRGVmYXVsdFByZXZlbnRlZCgpKQogICAgICByZXR1cm4gdGhpczsKCiAgICB2YXIgYm91bmQgPSB6b29tTWV0aG9kcy5fcHJlcGFyZVpvb20uY2FsbCh0aGlzKSwKICAgICAgZmxpcFBvcyA9IGJvdW5kLnBvcywKICAgICAgY2VudGVyID0gcG9pbnQyRChib3VuZC5zaXplLndpZHRoLzIsIGJvdW5kLnNpemUuaGVpZ2h0LzIpLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpLAogICAgICB0cmFuc2l0aW9uRW5kID0gJC5jc3NUcmFuc2l0aW9uRW5kKCksCiAgICAgIGF1dG9DZW50ZXIgPSBmbGlwLmRhdGEoKS5vcHRzLmF1dG9DZW50ZXI7CgogICAgZGF0YS5zY2FsZSA9IHpvb207CiAgICBmbGlwLmRhdGEoKS5ub0NlbnRlciA9IHRydWU7CgogICAgaWYgKHR5cGVvZihldmVudCkhPSd1bmRlZmluZWQnKSB7CgogICAgICBpZiAoJ3gnIGluIGV2ZW50ICYmICd5JyBpbiBldmVudCkgewogICAgICAgIAogICAgICAgIHBvcyA9IHBvaW50MkQoZXZlbnQueC1mbGlwUG9zLngsIGV2ZW50LnktZmxpcFBvcy55KTsKICAgICAgCiAgICAgIH0gZWxzZSB7CgogICAgICAgIHBvcyA9ICgkLmlzVG91Y2gpID8KICAgICAgICAgIHBvaW50MkQoCiAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWC1mbGlwUG9zLngtdGhpc09mZnNldC5sZWZ0LAogICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0ucGFnZVktZmxpcFBvcy55LXRoaXNPZmZzZXQudG9wCiAgICAgICAgICApCiAgICAgICAgICA6CiAgICAgICAgICBwb2ludDJEKAogICAgICAgICAgICBldmVudC5wYWdlWC1mbGlwUG9zLngtdGhpc09mZnNldC5sZWZ0LAogICAgICAgICAgICBldmVudC5wYWdlWS1mbGlwUG9zLnktdGhpc09mZnNldC50b3AKICAgICAgICAgICk7CgogICAgICB9CgogICAgfSBlbHNlIHsKICAgICAgcG9zID0gcG9pbnQyRChjZW50ZXIueCwgY2VudGVyLnkpOwogICAgfQoKCgogICAgaWYgKHBvcy54PDAgfHwgcG9zLnk8MCB8fCBwb3MueD5ib3VuZC53aWR0aCB8fCBwb3MueT5ib3VuZC5oZWlnaHQpIHsKICAgICAgcG9zLnggPSBjZW50ZXIueDsKICAgICAgcG9zLnkgPSBjZW50ZXIueTsKICAgIH0KCgogICAgdmFyIGNvbXBvc2UgPSBwb2ludDJEKAogICAgICAgIChwb3MueC1jZW50ZXIueCkqem9vbSArIGNlbnRlci54LAogICAgICAgIChwb3MueS1jZW50ZXIueSkqem9vbSArIGNlbnRlci55CiAgICAgICksCiAgICAgIG1vdmUgPSBwb2ludDJEKAogICAgICAgIChib3VuZC5zaXplLndpZHRoKnpvb20+dGhpcy53aWR0aCgpKSA/IHBvcy54LWNvbXBvc2UueCA6IDAsCiAgICAgICAgKGJvdW5kLnNpemUuaGVpZ2h0Knpvb20+dGhpcy5oZWlnaHQoKSkgPyBwb3MueS1jb21wb3NlLnkgOiAwCiAgICAgICksCiAgICAgIG1heE1vdmUgPSBwb2ludDJEKAogICAgICAgIE1hdGguYWJzKGJvdW5kLnNpemUud2lkdGgqem9vbS10aGlzLndpZHRoKCkpLAogICAgICAgIE1hdGguYWJzKGJvdW5kLnNpemUuaGVpZ2h0Knpvb20tdGhpcy5oZWlnaHQoKSkKICAgICAgKSwKICAgICAgbWluTW92ZSA9IHBvaW50MkQoCiAgICAgICAgTWF0aC5taW4oMCwgYm91bmQuc2l6ZS53aWR0aCp6b29tLXRoaXMud2lkdGgoKSksCiAgICAgICAgTWF0aC5taW4oMCwgYm91bmQuc2l6ZS5oZWlnaHQqem9vbS10aGlzLmhlaWdodCgpKQogICAgICApLAogICAgICByZWFsUG9zID0gcG9pbnQyRCgKICAgICAgICBjZW50ZXIueCp6b29tIC0gY2VudGVyLnggLSBmbGlwUG9zLnggLSBtb3ZlLngsCiAgICAgICAgY2VudGVyLnkqem9vbSAtIGNlbnRlci55IC0gZmxpcFBvcy55IC0gbW92ZS55CiAgICAgICk7CgogICAgaWYgKHJlYWxQb3MueT5tYXhNb3ZlLnkpCiAgICAgIG1vdmUueSA9IHJlYWxQb3MueSAtIG1heE1vdmUueSArICBtb3ZlLnk7CiAgICBlbHNlIGlmIChyZWFsUG9zLnk8bWluTW92ZS55KQogICAgICBtb3ZlLnkgPSByZWFsUG9zLnkgLSBtaW5Nb3ZlLnkgKyAgbW92ZS55OwoKICAgIGlmIChyZWFsUG9zLng+bWF4TW92ZS54KQogICAgICBtb3ZlLnggPSByZWFsUG9zLnggLSBtYXhNb3ZlLnggKyAgbW92ZS54OwogICAgZWxzZSBpZiAocmVhbFBvcy54PG1pbk1vdmUueCkKICAgICAgbW92ZS54ID0gcmVhbFBvcy54IC0gbWluTW92ZS54ICsgIG1vdmUueDsKCiAgICByZWFsUG9zID0gcG9pbnQyRCgKICAgICAgY2VudGVyLngqem9vbSAtIGNlbnRlci54IC0gZmxpcFBvcy54IC0gbW92ZS54LAogICAgICBjZW50ZXIueSp6b29tIC0gY2VudGVyLnkgLSBmbGlwUG9zLnkgLSBtb3ZlLnkKICAgICk7CgogICAgdmFyIGNzcyA9IHt9OwoKICAgIGNzc1twcmVmaXgrJ3RyYW5zaXRpb24nXSA9IHByZWZpeCArCiAgICAgICd0cmFuc2Zvcm0gJyArCiAgICAgIGRhdGEub3B0cy5lYXNlRnVuY3Rpb24gKwogICAgICAnICcgKwogICAgICBkYXRhLm9wdHMuZHVyYXRpb24gKwogICAgICAnbXMnOwoKICAgIHZhciB0cmFuc2l0aW9uRW5kQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKCiAgICAgIHRoYXQudHJpZ2dlcignem9vbS56b29tSW4nKTsKCiAgICAgIGRhdGEuem9vbUluID0gdHJ1ZTsKCiAgICAgIGRhdGEuZmxpcFBvc2l0aW9uID0gcG9pbnQyRChmbGlwLmNzcygnbGVmdCcpLCBmbGlwLmNzcygndG9wJykpOwoKICAgICAgZmxpcC50dXJuKCd6b29tJywgem9vbSkuY3NzKHsKICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKICAgICAgICBtYXJnaW46ICcnLAogICAgICAgIHRvcDowLAogICAgICAgIGxlZnQ6MAogICAgICB9KTsKCiAgICAgIHZhciBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKTsKICAgICAgCiAgICAgIGRhdGEuYXhpcyA9IHBvaW50MkQoCiAgICAgICAgZmxpcE9mZnNldC5sZWZ0IC0gdGhpc09mZnNldC5sZWZ0LAogICAgICAgIGZsaXBPZmZzZXQudG9wIC0gdGhpc09mZnNldC50b3AKICAgICAgKTsKCgogICAgICBpZiAoYXV0b0NlbnRlciAmJiBmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScpCiAgICAgICAgaWYgKChmbGlwLnR1cm4oJ2RpcmVjdGlvbicpPT0nbHRyJyAmJiAhZmxpcC50dXJuKCd2aWV3JylbMF0pIHx8CiAgICAgICAgICAoZmxpcC50dXJuKCdkaXJlY3Rpb24nKT09J3J0bCcgJiYgIWZsaXAudHVybigndmlldycpWzFdKQogICAgICAgICkKICAgICAgICAgIGRhdGEuYXhpcy54ID0gZGF0YS5heGlzLnggKyBmbGlwLndpZHRoKCkvMjsKCiAgICAgIHRoYXQuem9vbSgnc2Nyb2xsJywgcmVhbFBvcyk7CiAgICAgIHRoYXQuYmluZCgkLm1vdXNlRXZlbnRzLmRvd24sIHpvb21NZXRob2RzLl9lTW91c2VEb3duKTsKICAgICAgdGhhdC5iaW5kKCQubW91c2VFdmVudHMubW92ZSwgem9vbU1ldGhvZHMuX2VNb3VzZU1vdmUpOwogICAgICAkKGRvY3VtZW50KS5iaW5kKCQubW91c2VFdmVudHMudXAsIGRhdGEubW91c2V1cEV2ZW50KTsKICAgICAgdGhhdC5iaW5kKCdtb3VzZXdoZWVsJywgem9vbU1ldGhvZHMuX2VNb3VzZVdoZWVsKTsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgZGF0YS56b29tZXIuaGlkZSgpOwogICAgICAgIGRhdGEuem9vbWVyLnJlbW92ZSgpOwogICAgICAgIGRhdGEuem9vbWVyID0gbnVsbDsKICAgICAgICBkYXRhLnpvb21lclZpZXcgPSBudWxsOwogICAgICB9LCA1MCk7CgogICAgfTsKCiAgICBkYXRhLnpvb21lci5jc3MoY3NzKS5zaG93KCk7CgogICAgaWYgKHRyYW5zaXRpb25FbmQpCiAgICAgIGRhdGEuem9vbWVyLmJpbmQodHJhbnNpdGlvbkVuZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgJCh0aGlzKS51bmJpbmQodHJhbnNpdGlvbkVuZCk7CiAgICAgICAgdHJhbnNpdGlvbkVuZENhbGxiYWNrKCk7CiAgICAgIH0pOwogICAgZWxzZQogICAgICBzZXRUaW1lb3V0KHRyYW5zaXRpb25FbmRDYWxsYmFjaywgZGF0YS5vcHRzLmR1cmF0aW9uKTsKCiAgICBkYXRhLnpvb21lci50cmFuc2Zvcm0odHJhbnNsYXRlKG1vdmUueCwgbW92ZS55LCB0cnVlKSArIHNjYWxlKHpvb20sIHRydWUpKTsKICAgIAogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgem9vbU91dDogZnVuY3Rpb24oZHVyYXRpb24pIHsKCiAgICB2YXIgcG9zLCBtb3ZlLAogICAgICB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIHpvb20gPSAxLAogICAgICBzY2FsaW5nID0gem9vbS9kYXRhLnNjYWxlLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpLAogICAgICB0cmFuc2l0aW9uRW5kID0gJC5jc3NUcmFuc2l0aW9uRW5kKCksCiAgICAgIHRoaXNPZmZzZXQgPSB0aGlzLm9mZnNldCgpOwoKICAgIGR1cmF0aW9uID0gKHR5cGVvZihkdXJhdGlvbikhPSd1bmRlZmluZWQnKSA/IGR1cmF0aW9uIDogZGF0YS5vcHRzLmR1cmF0aW9uOwoKICAgIGlmICghZGF0YS56b29tSW4pCiAgICAgIHJldHVybjsKICAgICAgCiAgICB2YXIgZXYgPSAkLkV2ZW50KCd6b29tLmNoYW5nZScpOwogICAgdGhpcy50cmlnZ2VyKGV2LCBbem9vbV0pOwoKICAgIGlmIChldi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgcmV0dXJuIHRoaXM7CgogICAgZGF0YS56b29tSW4gPSBmYWxzZTsKICAgIGRhdGEuc2NhbGUgPSB6b29tOwoKICAgIGZsaXAuZGF0YSgpLm5vQ2VudGVyID0gZmFsc2U7CgogICAgdGhhdC51bmJpbmQoJC5tb3VzZUV2ZW50cy5kb3duLCB6b29tTWV0aG9kcy5fZU1vdXNlRG93bik7CiAgICB0aGF0LnVuYmluZCgkLm1vdXNlRXZlbnRzLm1vdmUsIHpvb21NZXRob2RzLl9lTW91c2VNb3ZlKTsKICAgICQoZG9jdW1lbnQpLnVuYmluZCgkLm1vdXNlRXZlbnRzLnVwLCBkYXRhLm1vdXNldXBFdmVudCk7CiAgICB0aGF0LnVuYmluZCgnbW91c2V3aGVlbCcsIHpvb21NZXRob2RzLl9lTW91c2VXaGVlbCk7CgogICAgdmFyIGNzcyA9IHt9OwoKICAgIGNzc1twcmVmaXgrJ3RyYW5zaXRpb24nXSA9IHByZWZpeCArCiAgICAgICd0cmFuc2Zvcm0gJyArCiAgICAgIGRhdGEub3B0cy5lYXNlRnVuY3Rpb24gKwogICAgICAnICcgKwogICAgICBkdXJhdGlvbiArCiAgICAgICdtcyc7CgogICAgZmxpcC5jc3MoY3NzKTsKCiAgICB2YXIgZmxpcERlc1BvcywKICAgICAgdG1wID0gJCgnPGRpdiAvPicsIHsKICAgICAgICBjc3M6IHsKICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLAogICAgICAgICAgdG9wOiBkYXRhLmZsaXBQb3NpdGlvbi55LAogICAgICAgICAgbGVmdDogZGF0YS5mbGlwUG9zaXRpb24ueCwKICAgICAgICAgIHdpZHRoOiBmbGlwLndpZHRoKCkqc2NhbGluZywKICAgICAgICAgIGhlaWdodDogZmxpcC5oZWlnaHQoKSpzY2FsaW5nLAogICAgICAgICAgYmFja2dyb3VuZDogJ2JsdWUnCiAgICAgICAgfQogICAgICB9KS5hcHBlbmRUbyhmbGlwLnBhcmVudCgpKTsKCiAgICBmbGlwRGVzUG9zID0gcG9pbnQyRCgKICAgICAgdG1wLm9mZnNldCgpLmxlZnQtdGhpc09mZnNldC5sZWZ0LAogICAgICB0bXAub2Zmc2V0KCkudG9wLXRoaXNPZmZzZXQudG9wCiAgICApOwogICAgCgogICAgdG1wLnJlbW92ZSgpOwoKICAgIHZhciBhdXRvQ2VudGVyID0gZmxpcC5kYXRhKCkub3B0cy5hdXRvQ2VudGVyOwoKICAgIGlmIChhdXRvQ2VudGVyICYmIGZsaXAudHVybignZGlzcGxheScpPT0nZG91YmxlJykgewoKICAgICAgaWYgKCFmbGlwLnR1cm4oJ3ZpZXcnKVswXSkKICAgICAgICBmbGlwRGVzUG9zLnggPSAoZmxpcC50dXJuKCdkaXJlY3Rpb24nKT09J2x0cicpID8KICAgICAgICAgIGZsaXBEZXNQb3MueC10bXAud2lkdGgoKS80IDoKICAgICAgICAgIGZsaXBEZXNQb3MueCt0bXAud2lkdGgoKS80OwogICAgICBlbHNlIGlmICghZmxpcC50dXJuKCd2aWV3JylbMV0pCiAgICAgICAgZmxpcERlc1Bvcy54ID0gKGZsaXAudHVybignZGlyZWN0aW9uJyk9PSdsdHInKSA/CiAgICAgICAgICBmbGlwRGVzUG9zLngrdG1wLndpZHRoKCkvNCA6CiAgICAgICAgICBmbGlwRGVzUG9zLngtdG1wLndpZHRoKCkvNDsKICAgIH0KCiAgICB2YXIgZmxpcFJlYWxQb3MgPSAkLmZpbmRQb3MoZmxpcFswXSk7CiAgICAgIAogICAgbW92ZSA9IHBvaW50MkQoCiAgICAgIC1mbGlwLndpZHRoKCkvMiAtIGZsaXBSZWFsUG9zLmxlZnQgKyB0bXAud2lkdGgoKS8yICsgZmxpcERlc1Bvcy54ICsgdGhpc09mZnNldC5sZWZ0LAogICAgICAtZmxpcC5oZWlnaHQoKS8yIC0gZmxpcFJlYWxQb3MudG9wICsgdG1wLmhlaWdodCgpLzIgKyBmbGlwRGVzUG9zLnkgKyB0aGlzT2Zmc2V0LnRvcCk7CgogICAgdmFyIHRyYW5zaXRpb25FbmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgCiAgICAgIGlmIChmbGlwWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KSB7CiAgICAgICAgCiAgICAgICAgZmxpcFswXS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcmVmaXgrJ3RyYW5zaXRpb24nKTsKICAgICAgICBmbGlwLnRyYW5zZm9ybSgKICAgICAgICAgIChmbGlwLnR1cm4oJ29wdGlvbnMnKS5hY2NlbGVyYXRpb24pID8gdHJhbnNsYXRlKDAsIDAsIHRydWUpIDogJycpLnR1cm4oJ3pvb20nLCAxKTsKICAgICAgICBmbGlwWzBdLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW4nKTsKICAgICAgICBmbGlwLmNzcyh7CiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJywKICAgICAgICAgIHRvcDogZGF0YS5mbGlwUG9zaXRpb24ueSwKICAgICAgICAgIGxlZnQ6IGRhdGEuZmxpcFBvc2l0aW9uLngKICAgICAgICB9KTsKCiAgICAgIH0gZWxzZSB7CiAgICAgICAgCiAgICAgICAgZmxpcC50cmFuc2Zvcm0oJ25vbmUnKS4KICAgICAgICAgIHR1cm4oJ3pvb20nLCAxKS4KICAgICAgICAgIGNzcyh7CiAgICAgICAgICAgIG1hcmdpbjogJycsCiAgICAgICAgICAgIHRvcDogZGF0YS5mbGlwUG9zaXRpb24ueSwKICAgICAgICAgICAgbGVmdDogZGF0YS5mbGlwUG9zaXRpb24ueCwKICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScKICAgICAgICB9KTsKCiAgICAgIH0KCiAgICAgIGlmIChhdXRvQ2VudGVyKQogICAgICAgIGZsaXAudHVybignY2VudGVyJyk7CgogICAgICB0aGF0LnRyaWdnZXIoJ3pvb20uem9vbU91dCcpOwoKICAgIH07CgogICAgaWYgKGR1cmF0aW9uPT09MCkgewogIAogICAgICB0cmFuc2l0aW9uRW5kQ2FsbGJhY2soKTsKCiAgICB9IGVsc2UgaWYgKHRyYW5zaXRpb25FbmQpIHsKCiAgICAgIGZsaXAuYmluZCh0cmFuc2l0aW9uRW5kLCBmdW5jdGlvbigpIHsKCiAgICAgICAgJCh0aGlzKS51bmJpbmQodHJhbnNpdGlvbkVuZCk7CiAgICAgICAgdHJhbnNpdGlvbkVuZENhbGxiYWNrKCk7CgogICAgICB9KTsKCiAgICAgIGZsaXAudHJhbnNmb3JtKHRyYW5zbGF0ZShtb3ZlLngsIG1vdmUueSwgdHJ1ZSkgKyBzY2FsZShzY2FsaW5nLCB0cnVlKSk7CgogICAgfSBlbHNlIHsKCiAgICAgIHNldFRpbWVvdXQodHJhbnNpdGlvbkVuZENhbGxiYWNrLCBkdXJhdGlvbik7CiAgICAgIGZsaXAudHJhbnNmb3JtKHRyYW5zbGF0ZShtb3ZlLngsIG1vdmUueSwgdHJ1ZSkgKyBzY2FsZShzY2FsaW5nLCB0cnVlKSk7CgogICAgfQoKICAgIHJldHVybiB0aGlzOwogIH0sCgogIGZsaXBib29rV2lkdGg6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXBib29rID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICB2aWV3ID0gZmxpcGJvb2sudHVybigndmlldycpOwoKICAgIHJldHVybiAoZmxpcGJvb2sudHVybignZGlzcGxheScpPT0nZG91YmxlJyAmJiAoIXZpZXdbMF0gfHwgIXZpZXdbMV0pKSA/CiAgICAgIGZsaXBib29rLndpZHRoKCkvMgogICAgICA6CiAgICAgIGZsaXBib29rLndpZHRoKCk7CgogIH0sCgogIHNjcm9sbDogZnVuY3Rpb24odG8sIHVubGltaXRlZCwgYW5pbWF0ZSkgewogICAgCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIGZsaXBXaWR0aCA9IHRoaXMuem9vbSgnZmxpcGJvb2tXaWR0aCcpLAogICAgICBwcmVmaXggPSAkLmNzc1ByZWZpeCgpOwogICAgCiAgICBpZiAoaGFzM2QpIHsKCiAgICAgIHZhciBjc3MgPSB7fTsKCiAgICAgIGlmIChhbmltYXRlKSB7CiAgICAgICAgY3NzW3ByZWZpeCsndHJhbnNpdGlvbiddID0gcHJlZml4ICsgJ3RyYW5zZm9ybSAyMDBtcyc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3NzW3ByZWZpeCsndHJhbnNpdGlvbiddID0gJ25vbmUnOwogICAgICB9CgogICAgICBmbGlwLmNzcyhjc3MpOwogICAgICBmbGlwLnRyYW5zZm9ybSh0cmFuc2xhdGUoLWRhdGEuYXhpcy54IC0gdG8ueCwgLWRhdGEuYXhpcy55IC0gdG8ueSwgdHJ1ZSkpOwoKICAgIH0gZWxzZSB7CiAgICAgIAogICAgICBmbGlwLmNzcyh7dG9wOiAtZGF0YS5heGlzLnkgLSB0by55LCBsZWZ0OiAtZGF0YS5heGlzLnggLSB0by54fSk7CgogICAgfQoKICAgIGlmICghdW5saW1pdGVkKSB7CgogICAgICB2YXIgb3V0LAogICAgICAgIG1pbkJvdW5kID0gcG9pbnQyRCgKICAgICAgICAgIE1hdGgubWluKDAsIChmbGlwV2lkdGgtdGhpcy53aWR0aCgpKS8yKSwKICAgICAgICAgIE1hdGgubWluKDAsIChmbGlwLmhlaWdodCgpLXRoaXMuaGVpZ2h0KCkpLzIpKSwKICAgICAgICBtYXhCb3VuZCA9IHBvaW50MkQoCiAgICAgICAgICAoZmxpcFdpZHRoPnRoaXMud2lkdGgoKSkgPyBmbGlwV2lkdGgtdGhpcy53aWR0aCgpIDogKGZsaXBXaWR0aC10aGlzLndpZHRoKCkpLzIsCiAgICAgICAgICAoZmxpcC5oZWlnaHQoKT50aGlzLmhlaWdodCgpKSA/IGZsaXAuaGVpZ2h0KCktdGhpcy5oZWlnaHQoKSA6IChmbGlwLmhlaWdodCgpLXRoaXMuaGVpZ2h0KCkpLzIKICAgICAgICApOwoKICAgICAgaWYgKHRvLnk8bWluQm91bmQueSkgewogICAgICAgIHRvLnkgPSBtaW5Cb3VuZC55OwogICAgICAgIG91dCA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAodG8ueT5tYXhCb3VuZC55KSB7CiAgICAgICAgdG8ueSA9IG1heEJvdW5kLnk7CiAgICAgICAgb3V0ID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKHRvLng8bWluQm91bmQueCkgewogICAgICAgIHRvLnggPSBtaW5Cb3VuZC54OwogICAgICAgIG91dCA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAodG8ueD5tYXhCb3VuZC54KSB7CiAgICAgICAgdG8ueCA9IG1heEJvdW5kLng7CiAgICAgICAgb3V0ID0gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKG91dCkgewogICAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywgdG8sIHRydWUsIHRydWUpOwogICAgICB9CgogICAgfQoKICAgIGRhdGEuc2Nyb2xsUG9zID0gcG9pbnQyRCh0by54LCB0by55KTsKCiAgfSwKCiAgcmVzaXplOiBmdW5jdGlvbigpIHsKCiAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2s7CiAgICAKICAgIGlmICh0aGlzLnpvb20oJ3ZhbHVlJyk+MSkgewoKICAgICAgdmFyICBmbGlwT2Zmc2V0ID0gZmxpcC5vZmZzZXQoKSwKICAgICAgICB0aGlzT2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTsKCiAgICAgIGRhdGEuYXhpcyA9ICBwb2ludDJEKAogICAgICAgIChmbGlwT2Zmc2V0LmxlZnQgLSB0aGlzT2Zmc2V0LmxlZnQpICsgKGRhdGEuYXhpcy54ICsgZGF0YS5zY3JvbGxQb3MueCksCiAgICAgICAgKGZsaXBPZmZzZXQudG9wIC0gdGhpc09mZnNldC50b3ApICsgKGRhdGEuYXhpcy55ICsgZGF0YS5zY3JvbGxQb3MueSkKICAgICAgKTsKCiAgICAgIGlmIChmbGlwLnR1cm4oJ2Rpc3BsYXknKT09J2RvdWJsZScgJiYKICAgICAgICBmbGlwLnR1cm4oJ2RpcmVjdGlvbicpPT0nbHRyJyAmJgogICAgICAgICFmbGlwLnR1cm4oJ3ZpZXcnKVswXSkKICAgICAgICAgIGRhdGEuYXhpcy54ID0gZGF0YS5heGlzLnggKyBmbGlwLndpZHRoKCkvMjsKCiAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywgZGF0YS5zY3JvbGxQb3MpOwogICAgfQoKICB9LAoKICBfZVpvb206IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZmxpcFBvcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIHZpZXcgPSBmbGlwLnR1cm4oJ3ZpZXcnKTsKCiAgICBmb3IgKHZhciBwID0gMDsgcDx2aWV3Lmxlbmd0aDsgcCsrKSB7CiAgICAgIGlmICh2aWV3W3BdKQogICAgICAgIHRoaXMudHJpZ2dlcignem9vbS5yZXNpemUnLAogICAgICAgICAgW2RhdGEuc2NhbGUsIHZpZXdbcF0sIGZsaXAuZGF0YSgpLnBhZ2VPYmpzW3ZpZXdbcF1dXQogICAgICAgICk7CiAgICB9CiAgfSwKCiAgX2VTdGFydDogZnVuY3Rpb24oZXZlbnQsIHBhZ2VPYmopIHsKCiAgICBpZiAodGhpcy56b29tKCd2YWx1ZScpIT0xKSB7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9CgoKICB9LAoKICBfZVR1cm5pbmc6IGZ1bmN0aW9uKGV2ZW50LCBwYWdlLCB2aWV3KSB7CgogICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICB6b29tID0gdGhpcy56b29tKCd2YWx1ZScpLAogICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vazsKCiAgICBkYXRhLnBhZ2UgPSBmbGlwLnR1cm4oJ3BhZ2UnKTsKCiAgICBpZiAoem9vbSE9MSkgewogICAgICBmb3IgKHZhciBwID0gMDsgcDx2aWV3Lmxlbmd0aDsgcCsrKSB7CiAgICAgICAgaWYgKHZpZXdbcF0pCiAgICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb20ucmVzaXplJywKICAgICAgICAgICAgW3pvb20sIHZpZXdbcF0sIGZsaXAuZGF0YSgpLnBhZ2VPYmpzW3ZpZXdbcF1dXQogICAgICAgICAgKTsKICAgICAgfQoKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICB0aGF0Lnpvb20oJ3Jlc2l6ZScpOwogICAgICB9LCAwKTsKICAgIH0KCiAgfSwKCiAgX2VUdXJuZWQ6IGZ1bmN0aW9uIChldmVudCwgcGFnZSkgewogICAgCiAgICBpZiAodGhpcy56b29tKCd2YWx1ZScpIT0xKSB7CiAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICBkYXRhID0gdGhpcy5kYXRhKCkuem9vbSwKICAgICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rOwoKICAgICAgaWYgKHBhZ2U+ZGF0YS5wYWdlKQogICAgICAgIHRoaXMuem9vbSgnc2Nyb2xsJywKICAgICAgICAgIHBvaW50MkQoMCwgZGF0YS5zY3JvbGxQb3MueSksIGZhbHNlLCB0cnVlKTsKICAgICAgICAKICAgICAgZWxzZSBpZiAocGFnZTxkYXRhLnBhZ2UpCiAgICAgICAgdGhpcy56b29tKCdzY3JvbGwnLAogICAgICAgICAgcG9pbnQyRChmbGlwLndpZHRoKCksIGRhdGEuc2Nyb2xsUG9zLnkpLCBmYWxzZSwgdHJ1ZSk7CiAgICAKICAgIH0KICB9LAoKICBfZVByZXNzZWQ6IGZ1bmN0aW9uKCkgewogICAgCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CiAgICBkYXRhLmRyYWdnaW5nQ29ybmVyID0gdHJ1ZTsKCiAgfSwKCiAgX2VSZWxlYXNlZDogZnVuY3Rpb24oKSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwoKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgIGRhdGEuZHJhZ2dpbmdDb3JuZXIgPSBmYWxzZTsKICAgIH0sIDEpOwoKICB9LAoKICBfZU1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpIHsKICAgIAogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwoKICAgIGRhdGEuZHJhZ2dpbmdDdXIgPSAoJC5pc1RvdWNoKSA/CiAgICAgIHBvaW50MkQoCiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWQogICAgICApCiAgICAgIDoKICAgICAgcG9pbnQyRChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwogICAgCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgX2VNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tOwogICAgICAgIAogICAgaWYgKGRhdGEuZHJhZ2dpbmdDdXIpIHsKCiAgICAgIGRhdGEuZHJhZ2dpbmcgPSB0cnVlOwoKICAgICAgdmFyIGN1ciA9ICgkLmlzVG91Y2gpID8KICAgICAgICBwb2ludDJEKAogICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VZCiAgICAgICAgKQogICAgICAgIDoKICAgICAgICBwb2ludDJEKGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSksCiAgICAgICAgbW90aW9uID0gcG9pbnQyRCgKICAgICAgICAgIGN1ci54LSBkYXRhLmRyYWdnaW5nQ3VyLngsCiAgICAgICAgICBjdXIueS1kYXRhLmRyYWdnaW5nQ3VyLnkKICAgICAgICApOwoKICAgICAgJCh0aGlzKS56b29tKCdzY3JvbGwnLAogICAgICAgIHBvaW50MkQoCiAgICAgICAgICBkYXRhLnNjcm9sbFBvcy54LW1vdGlvbi54LAogICAgICAgICAgZGF0YS5zY3JvbGxQb3MueS1tb3Rpb24ueQogICAgICAgICksIHRydWUKICAgICAgKTsKCiAgICAgIGRhdGEuZHJhZ2dpbmdDdXIgPSBjdXI7CgogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogIH0sCgogIF9lTW91c2VVcDogZnVuY3Rpb24oZXZlbnQpIHsKCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CgogICAgaWYgKGRhdGEuZHJhZ2dpbmcpIHsKICAgICAgJCh0aGlzKS56b29tKCdzY3JvbGwnLCBkYXRhLnNjcm9sbFBvcyk7CiAgICB9CgogICAgZGF0YS5kcmFnZ2luZ0N1ciA9IG51bGw7CgogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgZGF0YS5kcmFnZ2luZyA9IGZhbHNlOwogICAgfSwgMSk7CgogIH0sCgogIF9lTW91c2VXaGVlbDogZnVuY3Rpb24oZXZlbnQsIGRlbHRhLCBkZWx0YVgsIGRlbHRhWSkgewogICAgCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb20sCiAgICAgIGN1ciA9IHBvaW50MkQoCiAgICAgICAgZGF0YS5zY3JvbGxQb3MueCArIGRlbHRhWCoxMCwKICAgICAgICBkYXRhLnNjcm9sbFBvcy55IC0gZGVsdGFZKjEwCiAgICAgICk7CiAgICAKICAgICQodGhpcykuem9vbSgnc2Nyb2xsJywgY3VyLCBmYWxzZSwgdHJ1ZSk7CiAgICAKICB9LAoKICBfZVRvdWNoU3RhcnQ6IGZ1bmN0aW9uKGV2ZW50LCBwYWdlKSB7CgogICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoKS56b29tLAogICAgICBmbGlwID0gZGF0YS5vcHRzLmZsaXBib29rLAogICAgICBmaW5nZXIgPSBwb2ludDJEKAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWCwKICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkKICAgICAgKTsKCiAgICBkYXRhLnRvdWNoID0ge307CiAgICBkYXRhLnRvdWNoLmluaXRpYWwgPSBmaW5nZXI7CiAgICBkYXRhLnRvdWNoLmxhc3QgPSBmaW5nZXI7CiAgICBkYXRhLnRvdWNoLnRpbWVzdGFtcCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICBkYXRhLnRvdWNoLnNwZWVkID0gcG9pbnQyRCgwLCAwKTsKCiAgfSwKCiAgX2VUb3VjaE1vdmU6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAKICAgIHZhciBkYXRhID0gJCh0aGlzKS5kYXRhKCkuem9vbSwKICAgICAgem9vbSA9ICQodGhpcykuem9vbSgndmFsdWUnKSwKICAgICAgZmxpcCA9IGRhdGEub3B0cy5mbGlwYm9vaywKICAgICAgdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCksCiAgICAgIGZpbmdlciA9IHBvaW50MkQoCiAgICAgICAgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5wYWdlWQogICAgICApOwogICAgCiAgICBpZiAoZGF0YS50b3VjaCAmJiB6b29tPT0xICYmICFmbGlwLmRhdGEoKS5tb3VzZUFjdGlvbikgewogICAgICBkYXRhLnRvdWNoLm1vdGlvbiA9IHBvaW50MkQoCiAgICAgICAgZmluZ2VyLngtZGF0YS50b3VjaC5sYXN0LngsCiAgICAgICAgZmluZ2VyLnktZGF0YS50b3VjaC5sYXN0LnkpOwoKICAgIAogICAgICBkYXRhLnRvdWNoLnNwZWVkLnggPSAoZGF0YS50b3VjaC5zcGVlZC54PT09MCkgPwogICAgICAgIGRhdGEudG91Y2gubW90aW9uLnggLyAodGltZS1kYXRhLnRvdWNoLnRpbWVzdGFtcCkgOgogICAgICAgIChkYXRhLnRvdWNoLnNwZWVkLnggKyAoZGF0YS50b3VjaC5tb3Rpb24ueCAvICh0aW1lLWRhdGEudG91Y2gudGltZXN0YW1wKSkpLzI7CgogICAgICBkYXRhLnRvdWNoLmxhc3QgPSBmaW5nZXI7CiAgICAgIGRhdGEudG91Y2gudGltZXN0YW1wID0gdGltZTsKICAgIH0KCiAgfSwKCiAgX2VUb3VjaEVuZDogZnVuY3Rpb24oZXZlbnQpIHsKCiAgICB2YXIgZGF0YSA9ICQodGhpcykuZGF0YSgpLnpvb207CgogICAgaWYgKGRhdGEudG91Y2ggJiYgJCh0aGlzKS56b29tKCd2YWx1ZScpPT0xKSB7CgogICAgICB2YXIgeSA9IE1hdGguYWJzKGRhdGEudG91Y2guaW5pdGlhbC55IC0gZGF0YS50b3VjaC5sYXN0LnkpOwoKICAgICAgaWYgKHk8NTAgJiYgKGRhdGEudG91Y2guc3BlZWQueDwtMSB8fCBkYXRhLnRvdWNoLmxhc3QueC1kYXRhLnRvdWNoLmluaXRpYWwueDwtMTAwKSkgewogICAgICAgIAogICAgICAgIHRoaXMudHJpZ2dlcignem9vbS5zd2lwZUxlZnQnKTsKCiAgICAgIH0gZWxzZSBpZih5PDUwICYmIChkYXRhLnRvdWNoLnNwZWVkLng+MSB8fCBkYXRhLnRvdWNoLmxhc3QueC1kYXRhLnRvdWNoLmluaXRpYWwueD4xMDApKXsKICAgICAgICAKICAgICAgICB0aGlzLnRyaWdnZXIoJ3pvb20uc3dpcGVSaWdodCcpOwoKICAgICAgfQoKICAgIH0KICB9LAoKICBfZURlc3Ryb3lpbmc6IGZ1bmN0aW9uKCkgewoKICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgZGF0YSA9IHRoaXMuZGF0YSgpLnpvb20sCiAgICAgIGZsaXAgPSBkYXRhLm9wdHMuZmxpcGJvb2ssCiAgICAgIGV2ZW50cyA9IFsKICAgICAgICAndGFwJywKICAgICAgICAnZG91YmxlVGFwJywKICAgICAgICAncmVzaXplJywKICAgICAgICAnem9vbUluJywKICAgICAgICAnem9vbU91dCcsCiAgICAgICAgJ3N3aXBlTGVmdCcsCiAgICAgICAgJ3N3aXBlUmlnaHQnCiAgICAgIF07CgogICAgdGhpcy56b29tKCd6b29tT3V0JywgMCk7CgogICAgJC5lYWNoKGV2ZW50cywgZnVuY3Rpb24oaW5kZXgsIGV2ZW50TmFtZSkgewogICAgICB0aGF0LnVuYmluZCgnem9vbS4nICsgZXZlbnROYW1lKTsKICAgIH0pOwogICAgCiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZGF0YS5mbGlwYm9va0V2ZW50cykgewogICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuZmxpcGJvb2tFdmVudHMsIGV2ZW50TmFtZSkpIHsKICAgICAgICBmbGlwLnVuYmluZChldmVudE5hbWUsIGRhdGEuZmxpcGJvb2tFdmVudHNbZXZlbnROYW1lXSk7CiAgICAgIH0KICAgIH0KCiAgICBmbGlwLnVuYmluZCgndG91Y2hzdGFydCcsIGRhdGEuZXZlbnRUb3VjaFN0YXJ0ICkuCiAgICAgIHVuYmluZCgndG91Y2htb3ZlJywgZGF0YS5ldmVudFRvdWNoTW92ZSkuCiAgICAgIHVuYmluZCgndG91Y2hlbmQnLCBkYXRhLmV2ZW50VG91Y2hFbmQpOwogICAgICAgIAogICAgdGhpcy51bmJpbmQoJ3RvdWNoc3RhcnQnLCB6b29tTWV0aG9kcy5fdGFwKS4KICAgICAgdW5iaW5kKCdjbGljaycsIHpvb21NZXRob2RzLl90YXApOwoKICAgIGRhdGEgPSBudWxsOwogICAgdGhpcy5kYXRhKCkuem9vbSA9IG51bGw7CgogIH0KfTsKCmZ1bmN0aW9uIGlzUGFnZShlbGVtZW50LCBsYXN0KSB7CgogIGlmIChlbGVtZW50WzBdPT1sYXN0WzBdKQogICAgcmV0dXJuIGZhbHNlOwoKICBpZiAoZWxlbWVudC5hdHRyKCdwYWdlJykpCiAgICByZXR1cm4gdHJ1ZTsKICAKICByZXR1cm4gKGVsZW1lbnQucGFyZW50KClbMF0pID8KICAgIGlzUGFnZShlbGVtZW50LnBhcmVudCgpLCBsYXN0KQogICAgOgogIGZhbHNlOwoKfQoKZnVuY3Rpb24gZXJyb3IobWVzc2FnZSkgewoKICBmdW5jdGlvbiBUdXJuSnNFcnJvcihtZXNzYWdlKSB7CiAgICB0aGlzLm5hbWUgPSAiVHVybkpzRXJyb3IiOwogICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICB9CgogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIFR1cm5Kc0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR1cm5Kc0Vycm9yOwogIHJldHVybiBuZXcgVHVybkpzRXJyb3IobWVzc2FnZSk7Cgp9CgpmdW5jdGlvbiB0cmFuc2xhdGUoeCwgeSwgdXNlM2QpIHsKICAKICByZXR1cm4gKGhhczNkICYmIHVzZTNkKSA/ICcgdHJhbnNsYXRlM2QoJyArIHggKyAncHgsJyArIHkgKyAncHgsIDBweCkgJwogIDogJyB0cmFuc2xhdGUoJyArIHggKyAncHgsICcgKyB5ICsgJ3B4KSAnOwoKfQoKZnVuY3Rpb24gc2NhbGUodiwgdXNlM2QpIHsKICAKICByZXR1cm4gKGhhczNkICYmIHVzZTNkKSA/ICcgc2NhbGUzZCgnICsgdiArICcsICcgKyB2ICsgJywgMSkgJwogIDogJyBzY2FsZSgnICsgdiArICcpICc7Cgp9CgpmdW5jdGlvbiBwb2ludDJEKHgsIHkpIHsKICAKICByZXR1cm4ge3g6IHgsIHk6IHl9OwoKfQoKZnVuY3Rpb24gYmluZChmdW5jLCBjb250ZXh0KSB7CgogIHJldHVybiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7CiAgfTsKCn0KCiQuZXh0ZW5kKCQuZm4sIHsKICB6b29tOiBmdW5jdGlvbigpIHsKICAgIAogICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CgogICAgaWYgKCFhcmdzWzBdIHx8IHR5cGVvZihhcmdzWzBdKT09J29iamVjdCcpCiAgICAgIHJldHVybiB6b29tTWV0aG9kcy5pbml0LmFwcGx5KCQodGhpc1swXSksIGFyZ3MpOwogICAgZWxzZSBpZiAoem9vbU1ldGhvZHNbYXJnc1swXV0pCiAgICAgIHJldHVybiB6b29tTWV0aG9kc1thcmdzWzBdXS5hcHBseSgkKHRoaXNbMF0pLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7CiAgICBlbHNlCiAgICAgIHRocm93IGVycm9yKGFyZ3NbMF0gKyAnIGlzIG5vdCBhIG1ldGhvZCcpOwoKICB9Cn0pOwoKfSkoalF1ZXJ5KTsK'></script>
<script id="fb_html_magazine_js_magazine_js" src='data:/text/plain;base64,LyohCiAqIFZ1ZS5qcyB2Mi41LjE3CiAqIChjKSAyMDE0LTIwMTggRXZhbiBZb3UKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6ZS5WdWU9dCgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB5PU9iamVjdC5mcmVlemUoe30pO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIG51bGw9PWV9ZnVuY3Rpb24gRChlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiBTKGUpe3JldHVybiEwPT09ZX1mdW5jdGlvbiBUKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mIGV8fCJib29sZWFuIj09dHlwZW9mIGV9ZnVuY3Rpb24gUChlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX12YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1yLmNhbGwoZSl9ZnVuY3Rpb24gaShlKXt2YXIgdD1wYXJzZUZsb2F0KFN0cmluZyhlKSk7cmV0dXJuIDA8PXQmJk1hdGguZmxvb3IodCk9PT10JiZpc0Zpbml0ZShlKX1mdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIEYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk/ZTp0fWZ1bmN0aW9uIHMoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19dmFyIGM9cygic2xvdCxjb21wb25lbnQiLCEwKSx1PXMoImtleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzIik7ZnVuY3Rpb24gZihlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYoLTE8bilyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBwKGUsdCl7cmV0dXJuIG4uY2FsbChlLHQpfWZ1bmN0aW9uIGUodCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV18fChuW2VdPXQoZSkpfX12YXIgbz0vLShcdykvZyxnPWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dC50b1VwcGVyQ2FzZSgpOiIifSl9KSxkPWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLGE9L1xCKFtBLVpdKS9nLF89ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGEsIi0kMSIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgdj1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gZShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiB0PzE8dD9uLmFwcGx5KHIsYXJndW1lbnRzKTpuLmNhbGwocixlKTpuLmNhbGwocil9cmV0dXJuIGUuX2xlbmd0aD1uLmxlbmd0aCxlfTtmdW5jdGlvbiBoKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gbShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBiKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmbSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uICQoZSx0LG4pe312YXIgTz1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIEModCxuKXtpZih0PT09bilyZXR1cm4hMDt2YXIgZT1QKHQpLHI9UChuKTtpZighZXx8IXIpcmV0dXJuIWUmJiFyJiZTdHJpbmcodCk9PT1TdHJpbmcobik7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkodCksbz1BcnJheS5pc0FycmF5KG4pO2lmKGkmJm8pcmV0dXJuIHQubGVuZ3RoPT09bi5sZW5ndGgmJnQuZXZlcnkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gQyhlLG5bdF0pfSk7aWYoaXx8bylyZXR1cm4hMTt2YXIgYT1PYmplY3Qua2V5cyh0KSxzPU9iamVjdC5rZXlzKG4pO3JldHVybiBhLmxlbmd0aD09PXMubGVuZ3RoJiZhLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBDKHRbZV0sbltlXSl9KX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24geChlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKEMoZVtuXSx0KSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBSKGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19dmFyIEU9ImRhdGEtc2VydmVyLXJlbmRlcmVkIixrPVsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sQT1bImJlZm9yZUNyZWF0ZSIsImNyZWF0ZWQiLCJiZWZvcmVNb3VudCIsIm1vdW50ZWQiLCJiZWZvcmVVcGRhdGUiLCJ1cGRhdGVkIiwiYmVmb3JlRGVzdHJveSIsImRlc3Ryb3llZCIsImFjdGl2YXRlZCIsImRlYWN0aXZhdGVkIiwiZXJyb3JDYXB0dXJlZCJdLGo9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpPLGlzUmVzZXJ2ZWRBdHRyOk8saXNVbmtub3duRWxlbWVudDpPLGdldFRhZ05hbWVzcGFjZTokLHBhcnNlUGxhdGZvcm1UYWdOYW1lOncsbXVzdFVzZVByb3A6TyxfbGlmZWN5Y2xlSG9va3M6QX07ZnVuY3Rpb24gTihlLHQsbixyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ISFyLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfXZhciBMPS9bXlx3LiRdLzt2YXIgSSxIPSJfX3Byb3RvX18iaW57fSxCPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LFU9InVuZGVmaW5lZCIhPXR5cGVvZiBXWEVudmlyb25tZW50JiYhIVdYRW52aXJvbm1lbnQucGxhdGZvcm0sVj1VJiZXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCksej1CJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLEs9eiYmL21zaWV8dHJpZGVudC8udGVzdCh6KSxKPXomJjA8ei5pbmRleE9mKCJtc2llIDkuMCIpLHE9eiYmMDx6LmluZGV4T2YoImVkZ2UvIiksVz0oeiYmei5pbmRleE9mKCJhbmRyb2lkIikseiYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KHopfHwiaW9zIj09PVYpLEc9KHomJi9jaHJvbWVcL1xkKy8udGVzdCh6KSx7fS53YXRjaCksWj0hMTtpZihCKXRyeXt2YXIgWD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoWCwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1o9ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QtcGFzc2l2ZSIsbnVsbCxYKX1jYXRjaChlKXt9dmFyIFk9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09SSYmKEk9IUImJiFVJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmInNlcnZlciI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOViksSX0sUT1CJiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztmdW5jdGlvbiBlZShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmL25hdGl2ZSBjb2RlLy50ZXN0KGUudG9TdHJpbmcoKSl9dmFyIHRlLG5lPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZlZShTeW1ib2wpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJmVlKFJlZmxlY3Qub3duS2V5cyk7dGU9InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQmJmVlKFNldCk/U2V0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4hMD09PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09ITB9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX0sZX0oKTt2YXIgcmU9JCxpZT0wLG9lPWZ1bmN0aW9uKCl7dGhpcy5pZD1pZSsrLHRoaXMuc3Vicz1bXX07b2UucHJvdG90eXBlLmFkZFN1Yj1mdW5jdGlvbihlKXt0aGlzLnN1YnMucHVzaChlKX0sb2UucHJvdG90eXBlLnJlbW92ZVN1Yj1mdW5jdGlvbihlKXtmKHRoaXMuc3VicyxlKX0sb2UucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe29lLnRhcmdldCYmb2UudGFyZ2V0LmFkZERlcCh0aGlzKX0sb2UucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN1YnMuc2xpY2UoKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWVbdF0udXBkYXRlKCl9LG9lLnRhcmdldD1udWxsO3ZhciBhZT1bXTtmdW5jdGlvbiBzZShlKXtvZS50YXJnZXQmJmFlLnB1c2gob2UudGFyZ2V0KSxvZS50YXJnZXQ9ZX1mdW5jdGlvbiBjZSgpe29lLnRhcmdldD1hZS5wb3AoKX12YXIgbGU9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9dm9pZCAwLHRoaXMuY29udGV4dD1vLHRoaXMuZm5Db250ZXh0PXZvaWQgMCx0aGlzLmZuT3B0aW9ucz12b2lkIDAsdGhpcy5mblNjb3BlSWQ9dm9pZCAwLHRoaXMua2V5PXQmJnQua2V5LHRoaXMuY29tcG9uZW50T3B0aW9ucz1hLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9dm9pZCAwLHRoaXMucGFyZW50PXZvaWQgMCx0aGlzLnJhdz0hMSx0aGlzLmlzU3RhdGljPSExLHRoaXMuaXNSb290SW5zZXJ0PSEwLHRoaXMuaXNDb21tZW50PSExLHRoaXMuaXNDbG9uZWQ9ITEsdGhpcy5pc09uY2U9ITEsdGhpcy5hc3luY0ZhY3Rvcnk9cyx0aGlzLmFzeW5jTWV0YT12b2lkIDAsdGhpcy5pc0FzeW5jUGxhY2Vob2xkZXI9ITF9LHVlPXtjaGlsZDp7Y29uZmlndXJhYmxlOiEwfX07dWUuY2hpbGQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2V9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxlLnByb3RvdHlwZSx1ZSk7dmFyIGZlPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSIiKTt2YXIgdD1uZXcgbGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIHBlKGUpe3JldHVybiBuZXcgbGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBkZShlKXt2YXIgdD1uZXcgbGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4sZS50ZXh0LGUuZWxtLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMsZS5hc3luY0ZhY3RvcnkpO3JldHVybiB0Lm5zPWUubnMsdC5pc1N0YXRpYz1lLmlzU3RhdGljLHQua2V5PWUua2V5LHQuaXNDb21tZW50PWUuaXNDb21tZW50LHQuZm5Db250ZXh0PWUuZm5Db250ZXh0LHQuZm5PcHRpb25zPWUuZm5PcHRpb25zLHQuZm5TY29wZUlkPWUuZm5TY29wZUlkLHQuaXNDbG9uZWQ9ITAsdH12YXIgdmU9QXJyYXkucHJvdG90eXBlLGhlPU9iamVjdC5jcmVhdGUodmUpO1sicHVzaCIsInBvcCIsInNoaWZ0IiwidW5zaGlmdCIsInNwbGljZSIsInNvcnQiLCJyZXZlcnNlIl0uZm9yRWFjaChmdW5jdGlvbihvKXt2YXIgYT12ZVtvXTtOKGhlLG8sZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD1hcmd1bWVudHMubGVuZ3RoO3QtLTspZVt0XT1hcmd1bWVudHNbdF07dmFyIG4scj1hLmFwcGx5KHRoaXMsZSksaT10aGlzLl9fb2JfXztzd2l0Y2gobyl7Y2FzZSJwdXNoIjpjYXNlInVuc2hpZnQiOm49ZTticmVhaztjYXNlInNwbGljZSI6bj1lLnNsaWNlKDIpfXJldHVybiBuJiZpLm9ic2VydmVBcnJheShuKSxpLmRlcC5ub3RpZnkoKSxyfSl9KTt2YXIgbWU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGUpLHllPSEwO2Z1bmN0aW9uIGdlKGUpe3llPWV9dmFyIF9lPWZ1bmN0aW9uKGUpeyh0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IG9lLHRoaXMudm1Db3VudD0wLE4oZSwiX19vYl9fIix0aGlzKSxBcnJheS5pc0FycmF5KGUpKT8oKEg/YmU6JGUpKGUsaGUsbWUpLHRoaXMub2JzZXJ2ZUFycmF5KGUpKTp0aGlzLndhbGsoZSl9O2Z1bmN0aW9uIGJlKGUsdCxuKXtlLl9fcHJvdG9fXz10fWZ1bmN0aW9uICRlKGUsdCxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07TihlLG8sdFtvXSl9fWZ1bmN0aW9uIHdlKGUsdCl7dmFyIG47aWYoUChlKSYmIShlIGluc3RhbmNlb2YgbGUpKXJldHVybiBwKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0YW5jZW9mIF9lP249ZS5fX29iX186eWUmJiFZKCkmJihBcnJheS5pc0FycmF5KGUpfHxsKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgX2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24gQ2UobixlLHIsdCxpKXt2YXIgbz1uZXcgb2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0O3N8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwocj1uW2VdKTt2YXIgYz1hJiZhLnNldCxsPSFpJiZ3ZShyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1zP3MuY2FsbChuKTpyO3JldHVybiBvZS50YXJnZXQmJihvLmRlcGVuZCgpLGwmJihsLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KGUpJiZmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj12b2lkIDAscj0wLGk9dC5sZW5ndGg7cjxpO3IrKykobj10W3JdKSYmbi5fX29iX18mJm4uX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KG4pJiZlKG4pfShlKSkpLGV9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1zP3MuY2FsbChuKTpyO2U9PT10fHxlIT1lJiZ0IT10fHwoYz9jLmNhbGwobixlKTpyPWUsbD0haSYmd2UoZSksby5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uIHhlKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpJiZpKHQpKXJldHVybiBlLmxlbmd0aD1NYXRoLm1heChlLmxlbmd0aCx0KSxlLnNwbGljZSh0LDEsbiksbjtpZih0IGluIGUmJiEodCBpbiBPYmplY3QucHJvdG90eXBlKSlyZXR1cm4gZVt0XT1uO3ZhciByPWUuX19vYl9fO3JldHVybiBlLl9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oQ2Uoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOmVbdF09bn1mdW5jdGlvbiBrZShlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkmJmkodCkpZS5zcGxpY2UodCwxKTtlbHNle3ZhciBuPWUuX19vYl9fO2UuX2lzVnVlfHxuJiZuLnZtQ291bnR8fHAoZSx0KSYmKGRlbGV0ZSBlW3RdLG4mJm4uZGVwLm5vdGlmeSgpKX19X2UucHJvdG90eXBlLndhbGs9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49MDtuPHQubGVuZ3RoO24rKylDZShlLHRbbl0pfSxfZS5wcm90b3R5cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl3ZShlW3RdKX07dmFyIEFlPWoub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO2Z1bmN0aW9uIE9lKGUsdCl7aWYoIXQpcmV0dXJuIGU7Zm9yKHZhciBuLHIsaSxvPU9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKylyPWVbbj1vW2FdXSxpPXRbbl0scChlLG4pP2wocikmJmwoaSkmJk9lKHIsaSk6eGUoZSxuLGkpO3JldHVybiBlfWZ1bmN0aW9uIFNlKG4scixpKXtyZXR1cm4gaT9mdW5jdGlvbigpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbChpLGkpOnIsdD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmNhbGwoaSxpKTpuO3JldHVybiBlP09lKGUsdCk6dH06cj9uP2Z1bmN0aW9uKCl7cmV0dXJuIE9lKCJmdW5jdGlvbiI9PXR5cGVvZiByP3IuY2FsbCh0aGlzLHRoaXMpOnIsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5jYWxsKHRoaXMsdGhpcyk6bil9OnI6bn1mdW5jdGlvbiBUZShlLHQpe3JldHVybiB0P2U/ZS5jb25jYXQodCk6QXJyYXkuaXNBcnJheSh0KT90Olt0XTplfWZ1bmN0aW9uIEVlKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ/bShpLHQpOml9QWUuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/U2UoZSx0LG4pOnQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6U2UoZSx0KX0sQS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FlW2VdPVRlfSksay5mb3JFYWNoKGZ1bmN0aW9uKGUpe0FlW2UrInMiXT1FZX0pLEFlLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1HJiYoZT12b2lkIDApLHQ9PT1HJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBtKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk/czpbc119cmV0dXJuIGl9LEFlLnByb3BzPUFlLm1ldGhvZHM9QWUuaW5qZWN0PUFlLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIG0oaSxlKSx0JiZtKGksdCksaX0sQWUucHJvdmlkZT1TZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIE5lKG4scixpKXsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHI9ci5vcHRpb25zKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUucHJvcHM7aWYobil7dmFyIHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHI9bi5sZW5ndGg7ci0tOykic3RyaW5nIj09dHlwZW9mKGk9bltyXSkmJihvW2coaSldPXt0eXBlOm51bGx9KTtlbHNlIGlmKGwobikpZm9yKHZhciBhIGluIG4paT1uW2FdLG9bZyhhKV09bChpKT9pOnt0eXBlOml9O2UucHJvcHM9b319KHIpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmplY3Q7aWYobil7dmFyIHI9ZS5pbmplY3Q9e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylyW25baV1dPXtmcm9tOm5baV19O2Vsc2UgaWYobChuKSlmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtyW29dPWwoYSk/bSh7ZnJvbTpvfSxhKTp7ZnJvbTphfX19fShyKSxmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0ocik7dmFyIGU9ci5leHRlbmRzO2lmKGUmJihuPU5lKG4sZSxpKSksci5taXhpbnMpZm9yKHZhciB0PTAsbz1yLm1peGlucy5sZW5ndGg7dDxvO3QrKyluPU5lKG4sci5taXhpbnNbdF0saSk7dmFyIGEscz17fTtmb3IoYSBpbiBuKWMoYSk7Zm9yKGEgaW4gcilwKG4sYSl8fGMoYSk7ZnVuY3Rpb24gYyhlKXt2YXIgdD1BZVtlXXx8amU7c1tlXT10KG5bZV0scltlXSxpLGUpfXJldHVybiBzfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XTtpZihwKGksbikpcmV0dXJuIGlbbl07dmFyIG89ZyhuKTtpZihwKGksbykpcmV0dXJuIGlbb107dmFyIGE9ZChvKTtyZXR1cm4gcChpLGEpP2lbYV06aVtuXXx8aVtvXXx8aVthXX19ZnVuY3Rpb24gSWUoZSx0LG4scil7dmFyIGk9dFtlXSxvPSFwKG4sZSksYT1uW2VdLHM9UGUoQm9vbGVhbixpLnR5cGUpO2lmKC0xPHMpaWYobyYmIXAoaSwiZGVmYXVsdCIpKWE9ITE7ZWxzZSBpZigiIj09PWF8fGE9PT1fKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXAodCwiZGVmYXVsdCIpKXJldHVybjt2YXIgcj10LmRlZmF1bHQ7aWYoZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lLl9wcm9wc1tuXSlyZXR1cm4gZS5fcHJvcHNbbl07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJiJGdW5jdGlvbiIhPT1NZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIGw9eWU7Z2UoITApLHdlKGEpLGdlKGwpfXJldHVybiBhfWZ1bmN0aW9uIE1lKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIHQ/dFsxXToiIn1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBNZShlKT09PU1lKHQpfWZ1bmN0aW9uIFBlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIERlKHQsZSk/MDotMTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspaWYoRGUodFtuXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBGZShlLHQsbil7aWYodClmb3IodmFyIHI9dDtyPXIuJHBhcmVudDspe3ZhciBpPXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXRyeXtpZighMT09PWlbb10uY2FsbChyLGUsdCxuKSlyZXR1cm59Y2F0Y2goZSl7UmUoZSxyLCJlcnJvckNhcHR1cmVkIGhvb2siKX19UmUoZSx0LG4pfWZ1bmN0aW9uIFJlKGUsdCxuKXtpZihqLmVycm9ySGFuZGxlcil0cnl7cmV0dXJuIGouZXJyb3JIYW5kbGVyLmNhbGwobnVsbCxlLHQsbil9Y2F0Y2goZSl7SGUoZSxudWxsLCJjb25maWcuZXJyb3JIYW5kbGVyIil9SGUoZSx0LG4pfWZ1bmN0aW9uIEhlKGUsdCxuKXtpZighQiYmIVV8fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIEJlLFVlLFZlPVtdLHplPSExO2Z1bmN0aW9uIEtlKCl7emU9ITE7Zm9yKHZhciBlPVZlLnNsaWNlKDApLHQ9VmUubGVuZ3RoPTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfXZhciBKZT0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNldEltbWVkaWF0ZSYmZWUoc2V0SW1tZWRpYXRlKSlVZT1mdW5jdGlvbigpe3NldEltbWVkaWF0ZShLZSl9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbHx8IWVlKE1lc3NhZ2VDaGFubmVsKSYmIltvYmplY3QgTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcl0iIT09TWVzc2FnZUNoYW5uZWwudG9TdHJpbmcoKSlVZT1mdW5jdGlvbigpe3NldFRpbWVvdXQoS2UsMCl9O2Vsc2V7dmFyIHFlPW5ldyBNZXNzYWdlQ2hhbm5lbCxXZT1xZS5wb3J0MjtxZS5wb3J0MS5vbm1lc3NhZ2U9S2UsVWU9ZnVuY3Rpb24oKXtXZS5wb3N0TWVzc2FnZSgxKX19aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZlZShQcm9taXNlKSl7dmFyIEdlPVByb21pc2UucmVzb2x2ZSgpO0JlPWZ1bmN0aW9uKCl7R2UudGhlbihLZSksVyYmc2V0VGltZW91dCgkKX19ZWxzZSBCZT1VZTtmdW5jdGlvbiBaZShlLHQpe3ZhciBuO2lmKFZlLnB1c2goZnVuY3Rpb24oKXtpZihlKXRyeXtlLmNhbGwodCl9Y2F0Y2goZSl7RmUoZSx0LCJuZXh0VGljayIpfWVsc2UgbiYmbih0KX0pLHplfHwoemU9ITAsSmU/VWUoKTpCZSgpKSwhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgWGU9bmV3IHRlO2Z1bmN0aW9uIFllKGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgbz1BcnJheS5pc0FycmF5KHQpO2lmKCFvJiYhUCh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgbGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgYT10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMoYSkpcmV0dXJuO24uYWRkKGEpfWlmKG8pZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFhlKSxYZS5jbGVhcigpfXZhciBRZSxldD1lKGZ1bmN0aW9uKGUpe3ZhciB0PSImIj09PWUuY2hhckF0KDApLG49In4iPT09KGU9dD9lLnNsaWNlKDEpOmUpLmNoYXJBdCgwKSxyPSIhIj09PShlPW4/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiB0dChlKXtmdW5jdGlvbiBpKCl7dmFyIGU9YXJndW1lbnRzLHQ9aS5mbnM7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuYXBwbHkobnVsbCxhcmd1bWVudHMpO2Zvcih2YXIgbj10LnNsaWNlKCkscj0wO3I8bi5sZW5ndGg7cisrKW5bcl0uYXBwbHkobnVsbCxlKX1yZXR1cm4gaS5mbnM9ZSxpfWZ1bmN0aW9uIG50KGUsdCxuLHIsaSl7dmFyIG8sYSxzLGM7Zm9yKG8gaW4gZSlhPWVbb10scz10W29dLGM9ZXQobyksTShhKXx8KE0ocyk/KE0oYS5mbnMpJiYoYT1lW29dPXR0KGEpKSxuKGMubmFtZSxhLGMub25jZSxjLmNhcHR1cmUsYy5wYXNzaXZlLGMucGFyYW1zKSk6YSE9PXMmJihzLmZucz1hLGVbb109cykpO2ZvcihvIGluIHQpTShlW29dKSYmcigoYz1ldChvKSkubmFtZSx0W29dLGMuY2FwdHVyZSl9ZnVuY3Rpb24gcnQoZSx0LG4pe3ZhciByO2UgaW5zdGFuY2VvZiBsZSYmKGU9ZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSkpO3ZhciBpPWVbdF07ZnVuY3Rpb24gbygpe24uYXBwbHkodGhpcyxhcmd1bWVudHMpLGYoci5mbnMsbyl9TShpKT9yPXR0KFtvXSk6RChpLmZucykmJlMoaS5tZXJnZWQpPyhyPWkpLmZucy5wdXNoKG8pOnI9dHQoW2ksb10pLHIubWVyZ2VkPSEwLGVbdF09cn1mdW5jdGlvbiBpdChlLHQsbixyLGkpe2lmKEQodCkpe2lmKHAodCxuKSlyZXR1cm4gZVtuXT10W25dLGl8fGRlbGV0ZSB0W25dLCEwO2lmKHAodCxyKSlyZXR1cm4gZVtuXT10W3JdLGl8fGRlbGV0ZSB0W3JdLCEwfXJldHVybiExfWZ1bmN0aW9uIG90KGUpe3JldHVybiBUKGUpP1twZShlKV06QXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbiBlKHQsbil7dmFyIHI9W107dmFyIGksbyxhLHM7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylNKG89dFtpXSl8fCJib29sZWFuIj09dHlwZW9mIG98fChhPXIubGVuZ3RoLTEscz1yW2FdLEFycmF5LmlzQXJyYXkobyk/MDxvLmxlbmd0aCYmKGF0KChvPWUobywobnx8IiIpKyJfIitpKSlbMF0pJiZhdChzKSYmKHJbYV09cGUocy50ZXh0K29bMF0udGV4dCksby5zaGlmdCgpKSxyLnB1c2guYXBwbHkocixvKSk6VChvKT9hdChzKT9yW2FdPXBlKHMudGV4dCtvKToiIiE9PW8mJnIucHVzaChwZShvKSk6YXQobykmJmF0KHMpP3JbYV09cGUocy50ZXh0K28udGV4dCk6KFModC5faXNWTGlzdCkmJkQoby50YWcpJiZNKG8ua2V5KSYmRChuKSYmKG8ua2V5PSJfX3ZsaXN0IituKyJfIitpKyJfXyIpLHIucHVzaChvKSkpO3JldHVybiByfShlKTp2b2lkIDB9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIEQoZSkmJkQoZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBzdChlLHQpe3JldHVybihlLl9fZXNNb2R1bGV8fG5lJiYiTW9kdWxlIj09PWVbU3ltYm9sLnRvU3RyaW5nVGFnXSkmJihlPWUuZGVmYXVsdCksUChlKT90LmV4dGVuZChlKTplfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlLmlzQ29tbWVudCYmZS5hc3luY0ZhY3Rvcnl9ZnVuY3Rpb24gbHQoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTtpZihEKG4pJiYoRChuLmNvbXBvbmVudE9wdGlvbnMpfHxjdChuKSkpcmV0dXJuIG59fWZ1bmN0aW9uIHV0KGUsdCxuKXtuP1FlLiRvbmNlKGUsdCk6UWUuJG9uKGUsdCl9ZnVuY3Rpb24gZnQoZSx0KXtRZS4kb2ZmKGUsdCl9ZnVuY3Rpb24gcHQoZSx0LG4pe1FlPWUsbnQodCxufHx7fSx1dCxmdCksUWU9dm9pZCAwfWZ1bmN0aW9uIGR0KGUsdCl7dmFyIG49e307aWYoIWUpcmV0dXJuIG47Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PW8udGFnP2MucHVzaC5hcHBseShjLG8uY2hpbGRyZW58fFtdKTpjLnB1c2gobyl9fWZvcih2YXIgbCBpbiBuKW5bbF0uZXZlcnkodnQpJiZkZWxldGUgbltsXTtyZXR1cm4gbn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJiFlLmFzeW5jRmFjdG9yeXx8IiAiPT09ZS50ZXh0fWZ1bmN0aW9uIGh0KGUsdCl7dD10fHx7fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylBcnJheS5pc0FycmF5KGVbbl0pP2h0KGVbbl0sdCk6dFtlW25dLmtleV09ZVtuXS5mbjtyZXR1cm4gdH12YXIgbXQ9bnVsbDtmdW5jdGlvbiB5dChlKXtmb3IoO2UmJihlPWUuJHBhcmVudCk7KWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGd0KGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEseXQoZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylndChlLiRjaGlsZHJlbltuXSk7X3QoZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIF90KHQsbil7c2UoKTt2YXIgZT10LiRvcHRpb25zW25dO2lmKGUpZm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRyeXtlW3JdLmNhbGwodCl9Y2F0Y2goZSl7RmUoZSx0LG4rIiBob29rIil9dC5faGFzSG9va0V2ZW50JiZ0LiRlbWl0KCJob29rOiIrbiksY2UoKX12YXIgYnQ9W10sJHQ9W10sd3Q9e30sQ3Q9ITEseHQ9ITEsa3Q9MDtmdW5jdGlvbiBBdCgpe3ZhciBlLHQ7Zm9yKHh0PSEwLGJ0LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksa3Q9MDtrdDxidC5sZW5ndGg7a3QrKyl0PShlPWJ0W2t0XSkuaWQsd3RbdF09bnVsbCxlLnJ1bigpO3ZhciBuPSR0LnNsaWNlKCkscj1idC5zbGljZSgpO2t0PWJ0Lmxlbmd0aD0kdC5sZW5ndGg9MCx3dD17fSxDdD14dD0hMSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLl9pbmFjdGl2ZT0hMCxndChlW3RdLCEwKX0obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXt2YXIgbj1lW3RdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiZfdChyLCJ1cGRhdGVkIil9fShyKSxRJiZqLmRldnRvb2xzJiZRLmVtaXQoImZsdXNoIil9dmFyIE90PTAsU3Q9ZnVuY3Rpb24oZSx0LG4scixpKXt0aGlzLnZtPWUsaSYmKGUuX3dhdGNoZXI9dGhpcyksZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4sdGhpcy5pZD0rK090LHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IHRlLHRoaXMubmV3RGVwSWRzPW5ldyB0ZSx0aGlzLmV4cHJlc3Npb249IiIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5nZXR0ZXI9dDoodGhpcy5nZXR0ZXI9ZnVuY3Rpb24oZSl7aWYoIUwudGVzdChlKSl7dmFyIG49ZS5zcGxpdCgiLiIpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl7aWYoIWUpcmV0dXJuO2U9ZVtuW3RdXX1yZXR1cm4gZX19fSh0KSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKCl7fSkpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtTdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7c2UodGhpcyk7dmFyIHQ9dGhpcy52bTt0cnl7ZT10aGlzLmdldHRlci5jYWxsKHQsdCl9Y2F0Y2goZSl7aWYoIXRoaXMudXNlcil0aHJvdyBlO0ZlKGUsdCwnZ2V0dGVyIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZZZShlKSxjZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sU3QucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sU3QucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxTdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT13dFt0XSl7aWYod3RbdF09ITAseHQpe2Zvcih2YXIgbj1idC5sZW5ndGgtMTtrdDxuJiZidFtuXS5pZD5lLmlkOyluLS07YnQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgYnQucHVzaChlKTtDdHx8KEN0PSEwLFplKEF0KSl9fSh0aGlzKX0sU3QucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxQKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtGZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWVsc2UgdGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX19fSxTdC5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eT0hMX0sU3QucHJvdG90eXBlLmRlcGVuZD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLmRlcGVuZCgpfSxTdC5wcm90b3R5cGUudGVhcmRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dGhpcy52bS5faXNCZWluZ0Rlc3Ryb3llZHx8Zih0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXRoaXMuZGVwc1tlXS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgVHQ9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDokLHNldDokfTtmdW5jdGlvbiBFdChlLHQsbil7VHQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF1bbl19LFR0LnNldD1mdW5jdGlvbihlKXt0aGlzW3RdW25dPWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sVHQpfWZ1bmN0aW9uIGp0KGUpe2UuX3dhdGNoZXJzPVtdO3ZhciB0PWUuJG9wdGlvbnM7dC5wcm9wcyYmZnVuY3Rpb24obixyKXt2YXIgaT1uLiRvcHRpb25zLnByb3BzRGF0YXx8e30sbz1uLl9wcm9wcz17fSxhPW4uJG9wdGlvbnMuX3Byb3BLZXlzPVtdO24uJHBhcmVudCYmZ2UoITEpO3ZhciBlPWZ1bmN0aW9uKGUpe2EucHVzaChlKTt2YXIgdD1JZShlLHIsaSxuKTtDZShvLGUsdCksZSBpbiBufHxFdChuLCJfcHJvcHMiLGUpfTtmb3IodmFyIHQgaW4gcillKHQpO2dlKCEwKX0oZSx0LnByb3BzKSx0Lm1ldGhvZHMmJmZ1bmN0aW9uKGUsdCl7ZS4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdCllW25dPW51bGw9PXRbbl0/JDp2KHRbbl0sZSl9KGUsdC5tZXRob2RzKSx0LmRhdGE/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO2wodD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7c2UoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBGZShlLHQsImRhdGEoKSIpLHt9fWZpbmFsbHl7Y2UoKX19KHQsZSk6dHx8e30pfHwodD17fSk7dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9KGUuJG9wdGlvbnMubWV0aG9kcyxuLmxlbmd0aCk7Zm9yKDtpLS07KXt2YXIgbz1uW2ldO3ImJnAocixvKXx8KHZvaWQgMCwzNiE9PShhPShvKyIiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZFdChlLCJfZGF0YSIsbykpfXZhciBhO3dlKHQsITApfShlKTp3ZShlLl9kYXRhPXt9LCEwKSx0LmNvbXB1dGVkJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuX2NvbXB1dGVkV2F0Y2hlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPVkoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBvP286by5nZXQ7cnx8KG5baV09bmV3IFN0KGUsYXx8JCwkLE50KSksaSBpbiBlfHxMdChlLGksbyl9fShlLHQuY29tcHV0ZWQpLHQud2F0Y2gmJnQud2F0Y2ghPT1HJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspTXQoZSxuLHJbaV0pO2Vsc2UgTXQoZSxuLHIpfX0oZSx0LndhdGNoKX12YXIgTnQ9e2xhenk6ITB9O2Z1bmN0aW9uIEx0KGUsdCxuKXt2YXIgcj0hWSgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuPyhUdC5nZXQ9cj9JdCh0KTpuLFR0LnNldD0kKTooVHQuZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT9JdCh0KTpuLmdldDokLFR0LnNldD1uLnNldD9uLnNldDokKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LFR0KX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb21wdXRlZFdhdGNoZXJzJiZ0aGlzLl9jb21wdXRlZFdhdGNoZXJzW3RdO2lmKGUpcmV0dXJuIGUuZGlydHkmJmUuZXZhbHVhdGUoKSxvZS50YXJnZXQmJmUuZGVwZW5kKCksZS52YWx1ZX19ZnVuY3Rpb24gTXQoZSx0LG4scil7cmV0dXJuIGwobikmJihuPShyPW4pLmhhbmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfWZ1bmN0aW9uIER0KHQsZSl7aWYodCl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1uZT9SZWZsZWN0Lm93bktleXModCkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pOk9iamVjdC5rZXlzKHQpLGk9MDtpPHIubGVuZ3RoO2krKyl7Zm9yKHZhciBvPXJbaV0sYT10W29dLmZyb20scz1lO3M7KXtpZihzLl9wcm92aWRlZCYmcChzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcyYmImRlZmF1bHQiaW4gdFtvXSl7dmFyIGM9dFtvXS5kZWZhdWx0O25bb109ImZ1bmN0aW9uIj09dHlwZW9mIGM/Yy5jYWxsKGUpOmN9fXJldHVybiBufX1mdW5jdGlvbiBQdChlLHQpe3ZhciBuLHIsaSxvLGE7aWYoQXJyYXkuaXNBcnJheShlKXx8InN0cmluZyI9PXR5cGVvZiBlKWZvcihuPW5ldyBBcnJheShlLmxlbmd0aCkscj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluW3JdPXQoZVtyXSxyKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKFAoZSkpZm9yKG89T2JqZWN0LmtleXMoZSksbj1uZXcgQXJyYXkoby5sZW5ndGgpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspYT1vW3JdLG5bcl09dChlW2FdLGEscik7cmV0dXJuIEQobikmJihuLl9pc1ZMaXN0PSEwKSxufWZ1bmN0aW9uIEZ0KGUsdCxuLHIpe3ZhciBpLG89dGhpcy4kc2NvcGVkU2xvdHNbZV07aWYobyluPW58fHt9LHImJihuPW0obSh7fSxyKSxuKSksaT1vKG4pfHx0O2Vsc2V7dmFyIGE9dGhpcy4kc2xvdHNbZV07YSYmKGEuX3JlbmRlcmVkPSEwKSxpPWF8fHR9dmFyIHM9biYmbi5zbG90O3JldHVybiBzP3RoaXMuJGNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIix7c2xvdDpzfSxpKTppfWZ1bmN0aW9uIFJ0KGUpe3JldHVybiBMZSh0aGlzLiRvcHRpb25zLCJmaWx0ZXJzIixlKXx8d31mdW5jdGlvbiBIdChlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPy0xPT09ZS5pbmRleE9mKHQpOmUhPT10fWZ1bmN0aW9uIEJ0KGUsdCxuLHIsaSl7dmFyIG89ai5rZXlDb2Rlc1t0XXx8bjtyZXR1cm4gaSYmciYmIWoua2V5Q29kZXNbdF0/SHQoaSxyKTpvP0h0KG8sZSk6cj9fKHIpIT09dDp2b2lkIDB9ZnVuY3Rpb24gVXQobixyLGksbyxhKXtpZihpKWlmKFAoaSkpe3ZhciBzO0FycmF5LmlzQXJyYXkoaSkmJihpPWIoaSkpO3ZhciBlPWZ1bmN0aW9uKHQpe2lmKCJjbGFzcyI9PT10fHwic3R5bGUiPT09dHx8dSh0KSlzPW47ZWxzZXt2YXIgZT1uLmF0dHJzJiZuLmF0dHJzLnR5cGU7cz1vfHxqLm11c3RVc2VQcm9wKHIsZSx0KT9uLmRvbVByb3BzfHwobi5kb21Qcm9wcz17fSk6bi5hdHRyc3x8KG4uYXR0cnM9e30pfXQgaW4gc3x8KHNbdF09aVt0XSxhJiYoKG4ub258fChuLm9uPXt9KSlbInVwZGF0ZToiK3RdPWZ1bmN0aW9uKGUpe2lbdF09ZX0pKX07Zm9yKHZhciB0IGluIGkpZSh0KX1lbHNlO3JldHVybiBufWZ1bmN0aW9uIFZ0KGUsdCl7dmFyIG49dGhpcy5fc3RhdGljVHJlZXN8fCh0aGlzLl9zdGF0aWNUcmVlcz1bXSkscj1uW2VdO3JldHVybiByJiYhdHx8S3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSwiX19zdGF0aWNfXyIrZSwhMSkscn1mdW5jdGlvbiB6dChlLHQsbil7cmV0dXJuIEt0KGUsIl9fb25jZV9fIit0KyhuPyJfIituOiIiKSwhMCksZX1mdW5jdGlvbiBLdChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYic3RyaW5nIiE9dHlwZW9mIGVbcl0mJkp0KGVbcl0sdCsiXyIrcixuKTtlbHNlIEp0KGUsdCxuKX1mdW5jdGlvbiBKdChlLHQsbil7ZS5pc1N0YXRpYz0hMCxlLmtleT10LGUuaXNPbmNlPW59ZnVuY3Rpb24gcXQoZSx0KXtpZih0KWlmKGwodCkpe3ZhciBuPWUub249ZS5vbj9tKHt9LGUub24pOnt9O2Zvcih2YXIgciBpbiB0KXt2YXIgaT1uW3JdLG89dFtyXTtuW3JdPWk/W10uY29uY2F0KGksbyk6b319ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBXdChlKXtlLl9vPXp0LGUuX249RixlLl9zPXQsZS5fbD1QdCxlLl90PUZ0LGUuX3E9QyxlLl9pPXgsZS5fbT1WdCxlLl9mPVJ0LGUuX2s9QnQsZS5fYj1VdCxlLl92PXBlLGUuX2U9ZmUsZS5fdT1odCxlLl9nPXF0fWZ1bmN0aW9uIEd0KGUsdCxuLG8scil7dmFyIGEscz1yLm9wdGlvbnM7cChvLCJfdWlkIik/KGE9T2JqZWN0LmNyZWF0ZShvKSkuX29yaWdpbmFsPW86bz0oYT1vKS5fb3JpZ2luYWw7dmFyIGk9UyhzLl9jb21waWxlZCksYz0haTt0aGlzLmRhdGE9ZSx0aGlzLnByb3BzPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMucGFyZW50PW8sdGhpcy5saXN0ZW5lcnM9ZS5vbnx8eSx0aGlzLmluamVjdGlvbnM9RHQocy5pbmplY3QsbyksdGhpcy5zbG90cz1mdW5jdGlvbigpe3JldHVybiBkdChuLG8pfSxpJiYodGhpcy4kb3B0aW9ucz1zLHRoaXMuJHNsb3RzPXRoaXMuc2xvdHMoKSx0aGlzLiRzY29wZWRTbG90cz1lLnNjb3BlZFNsb3RzfHx5KSxzLl9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9cm4oYSxlLHQsbixyLGMpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXMuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcm4oYSxlLHQsbixyLGMpfX1mdW5jdGlvbiBadChlLHQsbixyKXt2YXIgaT1kZShlKTtyZXR1cm4gaS5mbkNvbnRleHQ9bixpLmZuT3B0aW9ucz1yLHQuc2xvdCYmKChpLmRhdGF8fChpLmRhdGE9e30pKS5zbG90PXQuc2xvdCksaX1mdW5jdGlvbiBYdChlLHQpe2Zvcih2YXIgbiBpbiB0KWVbZyhuKV09dFtuXX1XdChHdC5wcm90b3R5cGUpO3ZhciBZdD17aW5pdDpmdW5jdGlvbihlLHQsbixyKXtpZihlLmNvbXBvbmVudEluc3RhbmNlJiYhZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQmJmUuZGF0YS5rZWVwQWxpdmUpe3ZhciBpPWU7WXQucHJlcGF0Y2goaSxpKX1lbHNleyhlLmNvbXBvbmVudEluc3RhbmNlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtfaXNDb21wb25lbnQ6ITAscGFyZW50OnQsX3BhcmVudFZub2RlOmUsX3BhcmVudEVsbTpufHxudWxsLF9yZWZFbG06cnx8bnVsbH0sbz1lLmRhdGEuaW5saW5lVGVtcGxhdGU7RChvKSYmKGkucmVuZGVyPW8ucmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zKTtyZXR1cm4gbmV3IGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKGkpfShlLG10LG4scikpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPSEhKGl8fGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHxyLmRhdGEuc2NvcGVkU2xvdHN8fGUuJHNjb3BlZFNsb3RzIT09eSk7aWYoZS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU9cixlLiR2bm9kZT1yLGUuX3Zub2RlJiYoZS5fdm5vZGUucGFyZW50PXIpLGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuPWksZS4kYXR0cnM9ci5kYXRhLmF0dHJzfHx5LGUuJGxpc3RlbmVycz1ufHx5LHQmJmUuJG9wdGlvbnMucHJvcHMpe2dlKCExKTtmb3IodmFyIGE9ZS5fcHJvcHMscz1lLiRvcHRpb25zLl9wcm9wS2V5c3x8W10sYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgbD1zW2NdLHU9ZS4kb3B0aW9ucy5wcm9wczthW2xdPUllKGwsdSx0LGUpfWdlKCEwKSxlLiRvcHRpb25zLnByb3BzRGF0YT10fW49bnx8eTt2YXIgZj1lLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzPW4scHQoZSxuLGYpLG8mJihlLiRzbG90cz1kdChpLHIuY29udGV4dCksZS4kZm9yY2VVcGRhdGUoKSl9KHQuY29tcG9uZW50SW5zdGFuY2U9ZS5jb21wb25lbnRJbnN0YW5jZSxuLnByb3BzRGF0YSxuLmxpc3RlbmVycyx0LG4uY2hpbGRyZW4pfSxpbnNlcnQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNvbnRleHQscj1lLmNvbXBvbmVudEluc3RhbmNlO3IuX2lzTW91bnRlZHx8KHIuX2lzTW91bnRlZD0hMCxfdChyLCJtb3VudGVkIikpLGUuZGF0YS5rZWVwQWxpdmUmJihuLl9pc01vdW50ZWQ/KCh0PXIpLl9pbmFjdGl2ZT0hMSwkdC5wdXNoKHQpKTpndChyLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21wb25lbnRJbnN0YW5jZTt0Ll9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/ZnVuY3Rpb24gZSh0LG4pe2lmKCEobiYmKHQuX2RpcmVjdEluYWN0aXZlPSEwLHl0KHQpKXx8dC5faW5hY3RpdmUpKXt0Ll9pbmFjdGl2ZT0hMDtmb3IodmFyIHI9MDtyPHQuJGNoaWxkcmVuLmxlbmd0aDtyKyspZSh0LiRjaGlsZHJlbltyXSk7X3QodCwiZGVhY3RpdmF0ZWQiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxRdD1PYmplY3Qua2V5cyhZdCk7ZnVuY3Rpb24gZW4oZSx0LG4scixpKXtpZighTShlKSl7dmFyIG89bi4kb3B0aW9ucy5fYmFzZTtpZihQKGUpJiYoZT1vLmV4dGVuZChlKSksImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBhLHMsYyxsLHUsZixwO2lmKE0oZS5jaWQpJiZ2b2lkIDA9PT0oZT1mdW5jdGlvbih0LG4sZSl7aWYoUyh0LmVycm9yKSYmRCh0LmVycm9yQ29tcCkpcmV0dXJuIHQuZXJyb3JDb21wO2lmKEQodC5yZXNvbHZlZCkpcmV0dXJuIHQucmVzb2x2ZWQ7aWYoUyh0LmxvYWRpbmcpJiZEKHQubG9hZGluZ0NvbXApKXJldHVybiB0LmxvYWRpbmdDb21wO2lmKCFEKHQuY29udGV4dHMpKXt2YXIgcj10LmNvbnRleHRzPVtlXSxpPSEwLG89ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXS4kZm9yY2VVcGRhdGUoKX0sYT1SKGZ1bmN0aW9uKGUpe3QucmVzb2x2ZWQ9c3QoZSxuKSxpfHxvKCl9KSxzPVIoZnVuY3Rpb24oZSl7RCh0LmVycm9yQ29tcCkmJih0LmVycm9yPSEwLG8oKSl9KSxjPXQoYSxzKTtyZXR1cm4gUChjKSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBjLnRoZW4/TSh0LnJlc29sdmVkKSYmYy50aGVuKGEscyk6RChjLmNvbXBvbmVudCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBjLmNvbXBvbmVudC50aGVuJiYoYy5jb21wb25lbnQudGhlbihhLHMpLEQoYy5lcnJvcikmJih0LmVycm9yQ29tcD1zdChjLmVycm9yLG4pKSxEKGMubG9hZGluZykmJih0LmxvYWRpbmdDb21wPXN0KGMubG9hZGluZyxuKSwwPT09Yy5kZWxheT90LmxvYWRpbmc9ITA6c2V0VGltZW91dChmdW5jdGlvbigpe00odC5yZXNvbHZlZCkmJk0odC5lcnJvcikmJih0LmxvYWRpbmc9ITAsbygpKX0sYy5kZWxheXx8MjAwKSksRChjLnRpbWVvdXQpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TSh0LnJlc29sdmVkKSYmcyhudWxsKX0sYy50aW1lb3V0KSkpLGk9ITEsdC5sb2FkaW5nP3QubG9hZGluZ0NvbXA6dC5yZXNvbHZlZH10LmNvbnRleHRzLnB1c2goZSl9KGE9ZSxvLG4pKSlyZXR1cm4gcz1hLGM9dCxsPW4sdT1yLGY9aSwocD1mZSgpKS5hc3luY0ZhY3Rvcnk9cyxwLmFzeW5jTWV0YT17ZGF0YTpjLGNvbnRleHQ6bCxjaGlsZHJlbjp1LHRhZzpmfSxwO3Q9dHx8e30sZG4oZSksRCh0Lm1vZGVsKSYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1vZGVsJiZlLm1vZGVsLnByb3B8fCJ2YWx1ZSIscj1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHwiaW5wdXQiOyh0LnByb3BzfHwodC5wcm9wcz17fSkpW25dPXQubW9kZWwudmFsdWU7dmFyIGk9dC5vbnx8KHQub249e30pO0QoaVtyXSk/aVtyXT1bdC5tb2RlbC5jYWxsYmFja10uY29uY2F0KGlbcl0pOmlbcl09dC5tb2RlbC5jYWxsYmFja30oZS5vcHRpb25zLHQpO3ZhciBkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10Lm9wdGlvbnMucHJvcHM7aWYoIU0ocikpe3ZhciBpPXt9LG89ZS5hdHRycyxhPWUucHJvcHM7aWYoRChvKXx8RChhKSlmb3IodmFyIHMgaW4gcil7dmFyIGM9XyhzKTtpdChpLGEscyxjLCEwKXx8aXQoaSxvLHMsYywhMSl9cmV0dXJuIGl9fSh0LGUpO2lmKFMoZS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPWUub3B0aW9ucyxhPXt9LHM9by5wcm9wcztpZihEKHMpKWZvcih2YXIgYyBpbiBzKWFbY109SWUoYyxzLHR8fHkpO2Vsc2UgRChuLmF0dHJzKSYmWHQoYSxuLmF0dHJzKSxEKG4ucHJvcHMpJiZYdChhLG4ucHJvcHMpO3ZhciBsPW5ldyBHdChuLGEsaSxyLGUpLHU9by5yZW5kZXIuY2FsbChudWxsLGwuX2MsbCk7aWYodSBpbnN0YW5jZW9mIGxlKXJldHVybiBadCh1LG4sbC5wYXJlbnQsbyk7aWYoQXJyYXkuaXNBcnJheSh1KSl7Zm9yKHZhciBmPW90KHUpfHxbXSxwPW5ldyBBcnJheShmLmxlbmd0aCksZD0wO2Q8Zi5sZW5ndGg7ZCsrKXBbZF09WnQoZltkXSxuLGwucGFyZW50LG8pO3JldHVybiBwfX0oZSxkLHQsbixyKTt2YXIgdj10Lm9uO2lmKHQub249dC5uYXRpdmVPbixTKGUub3B0aW9ucy5hYnN0cmFjdCkpe3ZhciBoPXQuc2xvdDt0PXt9LGgmJih0LnNsb3Q9aCl9IWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPFF0Lmxlbmd0aDtuKyspe3ZhciByPVF0W25dO3Rbcl09WXRbcl19fSh0KTt2YXIgbT1lLm9wdGlvbnMubmFtZXx8aTtyZXR1cm4gbmV3IGxlKCJ2dWUtY29tcG9uZW50LSIrZS5jaWQrKG0/Ii0iK206IiIpLHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbix7Q3RvcjplLHByb3BzRGF0YTpkLGxpc3RlbmVyczp2LHRhZzppLGNoaWxkcmVuOnJ9LGEpfX19dmFyIHRuPTEsbm49MjtmdW5jdGlvbiBybihlLHQsbixyLGksbyl7cmV0dXJuKEFycmF5LmlzQXJyYXkobil8fFQobikpJiYoaT1yLHI9bixuPXZvaWQgMCksUyhvKSYmKGk9bm4pLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoRChuKSYmRChuLl9fb2JfXykpcmV0dXJuIGZlKCk7RChuKSYmRChuLmlzKSYmKHQ9bi5pcyk7aWYoIXQpcmV0dXJuIGZlKCk7QXJyYXkuaXNBcnJheShyKSYmImZ1bmN0aW9uIj09dHlwZW9mIHJbMF0mJigobj1ufHx7fSkuc2NvcGVkU2xvdHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCk7aT09PW5uP3I9b3Qocik6aT09PXRuJiYocj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihBcnJheS5pc0FycmF5KGVbdF0pKXJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpO3JldHVybiBlfShyKSk7dmFyIG8sYTtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBzO2E9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxqLmdldFRhZ05hbWVzcGFjZSh0KSxvPWouaXNSZXNlcnZlZFRhZyh0KT9uZXcgbGUoai5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0KSxuLHIsdm9pZCAwLHZvaWQgMCxlKTpEKHM9TGUoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsdCkpP2VuKHMsbixlLHIsdCk6bmV3IGxlKHQsbixyLHZvaWQgMCx2b2lkIDAsZSl9ZWxzZSBvPWVuKHQsbixlLHIpO3JldHVybiBBcnJheS5pc0FycmF5KG8pP286RChvKT8oRChhKSYmZnVuY3Rpb24gZSh0LG4scil7dC5ucz1uOyJmb3JlaWduT2JqZWN0Ij09PXQudGFnJiYobj12b2lkIDAscj0hMCk7aWYoRCh0LmNoaWxkcmVuKSlmb3IodmFyIGk9MCxvPXQuY2hpbGRyZW4ubGVuZ3RoO2k8bztpKyspe3ZhciBhPXQuY2hpbGRyZW5baV07RChhLnRhZykmJihNKGEubnMpfHxTKHIpJiYic3ZnIiE9PWEudGFnKSYmZShhLG4scil9fShvLGEpLEQobikmJmZ1bmN0aW9uKGUpe1AoZS5zdHlsZSkmJlllKGUuc3R5bGUpO1AoZS5jbGFzcykmJlllKGUuY2xhc3MpfShuKSxvKTpmZSgpfShlLHQsbixyLGkpfXZhciBvbixhbixzbixjbixsbix1bixmbixwbj0wO2Z1bmN0aW9uIGRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj1kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLmV4dGVuZE9wdGlvbnMsaT1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBvIGluIG4pbltvXSE9PWlbb10mJih0fHwodD17fSksdFtvXT12bihuW29dLHJbb10saVtvXSkpO3JldHVybiB0fShlKTtyJiZtKGUuZXh0ZW5kT3B0aW9ucyxyKSwodD1lLm9wdGlvbnM9TmUobixlLmV4dGVuZE9wdGlvbnMpKS5uYW1lJiYodC5jb21wb25lbnRzW3QubmFtZV09ZSl9fXJldHVybiB0fWZ1bmN0aW9uIHZuKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgcj1bXTtuPUFycmF5LmlzQXJyYXkobik/bjpbbl0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKSgwPD10LmluZGV4T2YoZVtpXSl8fG4uaW5kZXhPZihlW2ldKTwwKSYmci5wdXNoKGVbaV0pO3JldHVybiByfXJldHVybiBlfWZ1bmN0aW9uIGhuKGUpe3RoaXMuX2luaXQoZSl9ZnVuY3Rpb24gbW4oZSl7ZS5jaWQ9MDt2YXIgYT0xO2UuZXh0ZW5kPWZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIHQ9dGhpcyxuPXQuY2lkLHI9ZS5fQ3Rvcnx8KGUuX0N0b3I9e30pO2lmKHJbbl0pcmV0dXJuIHJbbl07dmFyIGk9ZS5uYW1lfHx0Lm9wdGlvbnMubmFtZSxvPWZ1bmN0aW9uKGUpe3RoaXMuX2luaXQoZSl9O3JldHVybigoby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPW8pLmNpZD1hKyssby5vcHRpb25zPU5lKHQub3B0aW9ucyxlKSxvLnN1cGVyPXQsby5vcHRpb25zLnByb3BzJiZmdW5jdGlvbihlKXt2YXIgdD1lLm9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIHQpRXQoZS5wcm90b3R5cGUsIl9wcm9wcyIsbil9KG8pLG8ub3B0aW9ucy5jb21wdXRlZCYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiB0KUx0KGUucHJvdG90eXBlLG4sdFtuXSl9KG8pLG8uZXh0ZW5kPXQuZXh0ZW5kLG8ubWl4aW49dC5taXhpbixvLnVzZT10LnVzZSxrLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT10W2VdfSksaSYmKG8ub3B0aW9ucy5jb21wb25lbnRzW2ldPW8pLG8uc3VwZXJPcHRpb25zPXQub3B0aW9ucyxvLmV4dGVuZE9wdGlvbnM9ZSxvLnNlYWxlZE9wdGlvbnM9bSh7fSxvLm9wdGlvbnMpLHJbbl09b319ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUmJihlLkN0b3Iub3B0aW9ucy5uYW1lfHxlLnRhZyl9ZnVuY3Rpb24gZ24oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8tMTxlLmluZGV4T2YodCk6InN0cmluZyI9PXR5cGVvZiBlPy0xPGUuc3BsaXQoIiwiKS5pbmRleE9mKHQpOihuPWUsIltvYmplY3QgUmVnRXhwXSI9PT1yLmNhbGwobikmJmUudGVzdCh0KSk7dmFyIG59ZnVuY3Rpb24gX24oZSx0KXt2YXIgbj1lLmNhY2hlLHI9ZS5rZXlzLGk9ZS5fdm5vZGU7Zm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107aWYoYSl7dmFyIHM9eW4oYS5jb21wb25lbnRPcHRpb25zKTtzJiYhdChzKSYmYm4obixvLHIsaSl9fX1mdW5jdGlvbiBibihlLHQsbixyKXt2YXIgaT1lW3RdOyFpfHxyJiZpLnRhZz09PXIudGFnfHxpLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCksZVt0XT1udWxsLGYobix0KX1obi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbz10aGlzO28uX3VpZD1wbisrLG8uX2lzVnVlPSEwLGUmJmUuX2lzQ29tcG9uZW50P2Z1bmN0aW9uKGUsdCl7dmFyIG49ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9ucykscj10Ll9wYXJlbnRWbm9kZTtuLnBhcmVudD10LnBhcmVudCxuLl9wYXJlbnRWbm9kZT1yLG4uX3BhcmVudEVsbT10Ll9wYXJlbnRFbG0sbi5fcmVmRWxtPXQuX3JlZkVsbTt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfShvLGUpOm8uJG9wdGlvbnM9TmUoZG4oby5jb25zdHJ1Y3RvciksZXx8e30sbyksZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudDspbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0aXZlPW51bGwsZS5fZGlyZWN0SW5hY3RpdmU9ITEsZS5faXNNb3VudGVkPSExLGUuX2lzRGVzdHJveWVkPSExLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITF9KChvLl9yZW5kZXJQcm94eT1vKS5fc2VsZj1vKSxmdW5jdGlvbihlKXtlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxlLl9oYXNIb29rRXZlbnQ9ITE7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QmJnB0KGUsdCl9KG8pLGZ1bmN0aW9uKGkpe2kuX3Zub2RlPW51bGwsaS5fc3RhdGljVHJlZXM9bnVsbDt2YXIgZT1pLiRvcHRpb25zLHQ9aS4kdm5vZGU9ZS5fcGFyZW50Vm5vZGUsbj10JiZ0LmNvbnRleHQ7aS4kc2xvdHM9ZHQoZS5fcmVuZGVyQ2hpbGRyZW4sbiksaS4kc2NvcGVkU2xvdHM9eSxpLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBybihpLGUsdCxuLHIsITEpfSxpLiRjcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBybihpLGUsdCxuLHIsITApfTt2YXIgcj10JiZ0LmRhdGE7Q2UoaSwiJGF0dHJzIixyJiZyLmF0dHJzfHx5LG51bGwsITApLENlKGksIiRsaXN0ZW5lcnMiLGUuX3BhcmVudExpc3RlbmVyc3x8eSxudWxsLCEwKX0obyksX3QobywiYmVmb3JlQ3JlYXRlIiksKG49RHQoKHQ9bykuJG9wdGlvbnMuaW5qZWN0LHQpKSYmKGdlKCExKSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0NlKHQsZSxuW2VdKX0pLGdlKCEwKSksanQobyksKGk9KHI9bykuJG9wdGlvbnMucHJvdmlkZSkmJihyLl9wcm92aWRlZD0iZnVuY3Rpb24iPT10eXBlb2YgaT9pLmNhbGwocik6aSksX3QobywiY3JlYXRlZCIpLG8uJG9wdGlvbnMuZWwmJm8uJG1vdW50KG8uJG9wdGlvbnMuZWwpfSxvbj1obixhbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxzbj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BzfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG9uLnByb3RvdHlwZSwiJGRhdGEiLGFuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkob24ucHJvdG90eXBlLCIkcHJvcHMiLHNuKSxvbi5wcm90b3R5cGUuJHNldD14ZSxvbi5wcm90b3R5cGUuJGRlbGV0ZT1rZSxvbi5wcm90b3R5cGUuJHdhdGNoPWZ1bmN0aW9uKGUsdCxuKXtpZihsKHQpKXJldHVybiBNdCh0aGlzLGUsdCxuKTsobj1ufHx7fSkudXNlcj0hMDt2YXIgcj1uZXcgU3QodGhpcyxlLHQsbik7cmV0dXJuIG4uaW1tZWRpYXRlJiZ0LmNhbGwodGhpcyxyLnZhbHVlKSxmdW5jdGlvbigpe3IudGVhcmRvd24oKX19LGxuPS9eaG9vazovLChjbj1obikucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRoaXMuJG9uKGVbbl0sdCk7ZWxzZSh0aGlzLl9ldmVudHNbZV18fCh0aGlzLl9ldmVudHNbZV09W10pKS5wdXNoKHQpLGxuLnRlc3QoZSkmJih0aGlzLl9oYXNIb29rRXZlbnQ9ITApO3JldHVybiB0aGlzfSxjbi5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sY24ucHJvdG90eXBlLiRvZmY9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSxuO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl0aGlzLiRvZmYoZVtyXSx0KTtyZXR1cm4gbn12YXIgbz1uLl9ldmVudHNbZV07aWYoIW8pcmV0dXJuIG47aWYoIXQpcmV0dXJuIG4uX2V2ZW50c1tlXT1udWxsLG47aWYodClmb3IodmFyIGEscz1vLmxlbmd0aDtzLS07KWlmKChhPW9bc10pPT09dHx8YS5mbj09PXQpe28uc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGNuLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLGU9bi5fZXZlbnRzW3RdO2lmKGUpe2U9MTxlLmxlbmd0aD9oKGUpOmU7Zm9yKHZhciByPWgoYXJndW1lbnRzLDEpLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspdHJ5e2VbaV0uYXBwbHkobixyKX1jYXRjaChlKXtGZShlLG4sJ2V2ZW50IGhhbmRsZXIgZm9yICInK3QrJyInKX19cmV0dXJuIG59LCh1bj1obikucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uX2lzTW91bnRlZCYmX3QobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWwsaT1uLl92bm9kZSxvPW10OyhtdD1uKS5fdm5vZGU9ZSxpP24uJGVsPW4uX19wYXRjaF9fKGksZSk6KG4uJGVsPW4uX19wYXRjaF9fKG4uJGVsLGUsdCwhMSxuLiRvcHRpb25zLl9wYXJlbnRFbG0sbi4kb3B0aW9ucy5fcmVmRWxtKSxuLiRvcHRpb25zLl9wYXJlbnRFbG09bi4kb3B0aW9ucy5fcmVmRWxtPW51bGwpLG10PW8sciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4kcGFyZW50LiRlbD1uLiRlbCl9LHVuLnByb3RvdHlwZS4kZm9yY2VVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl93YXRjaGVyJiZ0aGlzLl93YXRjaGVyLnVwZGF0ZSgpfSx1bi5wcm90b3R5cGUuJGRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFlLl9pc0JlaW5nRGVzdHJveWVkKXtfdChlLCJiZWZvcmVEZXN0cm95IiksZS5faXNCZWluZ0Rlc3Ryb3llZD0hMDt2YXIgdD1lLiRwYXJlbnQ7IXR8fHQuX2lzQmVpbmdEZXN0cm95ZWR8fGUuJG9wdGlvbnMuYWJzdHJhY3R8fGYodC4kY2hpbGRyZW4sZSksZS5fd2F0Y2hlciYmZS5fd2F0Y2hlci50ZWFyZG93bigpO2Zvcih2YXIgbj1lLl93YXRjaGVycy5sZW5ndGg7bi0tOyllLl93YXRjaGVyc1tuXS50ZWFyZG93bigpO2UuX2RhdGEuX19vYl9fJiZlLl9kYXRhLl9fb2JfXy52bUNvdW50LS0sZS5faXNEZXN0cm95ZWQ9ITAsZS5fX3BhdGNoX18oZS5fdm5vZGUsbnVsbCksX3QoZSwiZGVzdHJveWVkIiksZS4kb2ZmKCksZS4kZWwmJihlLiRlbC5fX3Z1ZV9fPW51bGwpLGUuJHZub2RlJiYoZS4kdm5vZGUucGFyZW50PW51bGwpfX0sV3QoKGZuPWhuKS5wcm90b3R5cGUpLGZuLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIFplKGUsdGhpcyl9LGZuLnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLGU9bi4kb3B0aW9ucyxyPWUucmVuZGVyLGk9ZS5fcGFyZW50Vm5vZGU7aSYmKG4uJHNjb3BlZFNsb3RzPWkuZGF0YS5zY29wZWRTbG90c3x8eSksbi4kdm5vZGU9aTt0cnl7dD1yLmNhbGwobi5fcmVuZGVyUHJveHksbi4kY3JlYXRlRWxlbWVudCl9Y2F0Y2goZSl7RmUoZSxuLCJyZW5kZXIiKSx0PW4uX3Zub2RlfXJldHVybiB0IGluc3RhbmNlb2YgbGV8fCh0PWZlKCkpLHQucGFyZW50PWksdH07dmFyICRuLHduLENuLHhuPVtTdHJpbmcsUmVnRXhwLEFycmF5XSxrbj17S2VlcEFsaXZlOntuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTp4bixleGNsdWRlOnhuLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5jYWNoZSlibih0aGlzLmNhY2hlLGUsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLGZ1bmN0aW9uKHQpe19uKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGduKHQsZSl9KX0pLHRoaXMuJHdhdGNoKCJleGNsdWRlIixmdW5jdGlvbih0KXtfbihlLGZ1bmN0aW9uKGUpe3JldHVybiFnbih0LGUpfSl9KX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2xvdHMuZGVmYXVsdCx0PWx0KGUpLG49dCYmdC5jb21wb25lbnRPcHRpb25zO2lmKG4pe3ZhciByPXluKG4pLGk9dGhpcy5pbmNsdWRlLG89dGhpcy5leGNsdWRlO2lmKGkmJighcnx8IWduKGkscikpfHxvJiZyJiZnbihvLHIpKXJldHVybiB0O3ZhciBhPXRoaXMuY2FjaGUscz10aGlzLmtleXMsYz1udWxsPT10LmtleT9uLkN0b3IuY2lkKyhuLnRhZz8iOjoiK24udGFnOiIiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsZihzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmYm4oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyRuPWhuLENuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gan19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkbiwiY29uZmlnIixDbiksJG4udXRpbD17d2FybjpyZSxleHRlbmQ6bSxtZXJnZU9wdGlvbnM6TmUsZGVmaW5lUmVhY3RpdmU6Q2V9LCRuLnNldD14ZSwkbi5kZWxldGU9a2UsJG4ubmV4dFRpY2s9WmUsJG4ub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLGsuZm9yRWFjaChmdW5jdGlvbihlKXskbi5vcHRpb25zW2UrInMiXT1PYmplY3QuY3JlYXRlKG51bGwpfSksbSgoJG4ub3B0aW9ucy5fYmFzZT0kbikub3B0aW9ucy5jb21wb25lbnRzLGtuKSwkbi51c2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW5zdGFsbGVkUGx1Z2luc3x8KHRoaXMuX2luc3RhbGxlZFBsdWdpbnM9W10pO2lmKC0xPHQuaW5kZXhPZihlKSlyZXR1cm4gdGhpczt2YXIgbj1oKGFyZ3VtZW50cywxKTtyZXR1cm4gbi51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmluc3RhbGw/ZS5pbnN0YWxsLmFwcGx5KGUsbik6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuYXBwbHkobnVsbCxuKSx0LnB1c2goZSksdGhpc30sJG4ubWl4aW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucz1OZSh0aGlzLm9wdGlvbnMsZSksdGhpc30sbW4oJG4pLHduPSRuLGsuZm9yRWFjaChmdW5jdGlvbihuKXt3bltuXT1mdW5jdGlvbihlLHQpe3JldHVybiB0PygiY29tcG9uZW50Ij09PW4mJmwodCkmJih0Lm5hbWU9dC5uYW1lfHxlLHQ9dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZCh0KSksImRpcmVjdGl2ZSI9PT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9e2JpbmQ6dCx1cGRhdGU6dH0pLHRoaXMub3B0aW9uc1tuKyJzIl1bZV09dCk6dGhpcy5vcHRpb25zW24rInMiXVtlXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaG4ucHJvdG90eXBlLCIkaXNTZXJ2ZXIiLHtnZXQ6WX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShobi5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShobiwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpHdH0pLGhuLnZlcnNpb249IjIuNS4xNyI7dmFyIEFuPXMoInN0eWxlLGNsYXNzIiksT249cygiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLFNuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmT24oZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0sVG49cygiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksRW49cygiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLGpuPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixObj1mdW5jdGlvbihlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sTG49ZnVuY3Rpb24oZSl7cmV0dXJuIE5uKGUpP2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LEluPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV9O2Z1bmN0aW9uIE1uKGUpe2Zvcih2YXIgdD1lLmRhdGEsbj1lLHI9ZTtEKHIuY29tcG9uZW50SW5zdGFuY2UpOykocj1yLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJnIuZGF0YSYmKHQ9RG4oci5kYXRhLHQpKTtmb3IoO0Qobj1uLnBhcmVudCk7KW4mJm4uZGF0YSYmKHQ9RG4odCxuLmRhdGEpKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihEKGUpfHxEKHQpKXJldHVybiBQbihlLEZuKHQpKTtyZXR1cm4iIn0odC5zdGF0aWNDbGFzcyx0LmNsYXNzKX1mdW5jdGlvbiBEbihlLHQpe3JldHVybntzdGF0aWNDbGFzczpQbihlLnN0YXRpY0NsYXNzLHQuc3RhdGljQ2xhc3MpLGNsYXNzOkQoZS5jbGFzcyk/W2UuY2xhc3MsdC5jbGFzc106dC5jbGFzc319ZnVuY3Rpb24gUG4oZSx0KXtyZXR1cm4gZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBGbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbihlKXtmb3IodmFyIHQsbj0iIixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKUQodD1GbihlW3JdKSkmJiIiIT09dCYmKG4mJihuKz0iICIpLG4rPXQpO3JldHVybiBufShlKTpQKGUpP2Z1bmN0aW9uKGUpe3ZhciB0PSIiO2Zvcih2YXIgbiBpbiBlKWVbbl0mJih0JiYodCs9IiAiKSx0Kz1uKTtyZXR1cm4gdH0oZSk6InN0cmluZyI9PXR5cGVvZiBlP2U6IiJ9dmFyIFJuPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIn0sSG49cygiaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLGEsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSxzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbyxlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucyxjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0cixidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLG91dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsZGV0YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LGNvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QiKSxCbj1zKCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldyIsITApLFVuPWZ1bmN0aW9uKGUpe3JldHVybiBIbihlKXx8Qm4oZSl9O2Z1bmN0aW9uIFZuKGUpe3JldHVybiBCbihlKT8ic3ZnIjoibWF0aCI9PT1lPyJtYXRoIjp2b2lkIDB9dmFyIHpuPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIEtuPXMoInRleHQsbnVtYmVyLHBhc3N3b3JkLHNlYXJjaCxlbWFpbCx0ZWwsdXJsIik7ZnVuY3Rpb24gSm4oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO3JldHVybiB0fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX1yZXR1cm4gZX12YXIgcW49T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxlbWVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuInNlbGVjdCIhPT1lfHx0LmRhdGEmJnQuZGF0YS5hdHRycyYmdm9pZCAwIT09dC5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLG59LGNyZWF0ZUVsZW1lbnROUzpmdW5jdGlvbihlLHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoUm5bZV0sdCl9LGNyZWF0ZVRleHROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKX0sY3JlYXRlQ29tbWVudDpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudChlKX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQ2hpbGQodCl9LGFwcGVuZENoaWxkOmZ1bmN0aW9uKGUsdCl7ZS5hcHBlbmRDaGlsZCh0KX0scGFyZW50Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlfSxuZXh0U2libGluZzpmdW5jdGlvbihlKXtyZXR1cm4gZS5uZXh0U2libGluZ30sdGFnTmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gZS50YWdOYW1lfSxzZXRUZXh0Q29udGVudDpmdW5jdGlvbihlLHQpe2UudGV4dENvbnRlbnQ9dH0sc2V0U3R5bGVTY29wZTpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmlidXRlKHQsIiIpfX0pLFduPXtjcmVhdGU6ZnVuY3Rpb24oZSx0KXtHbih0KX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnJlZiE9PXQuZGF0YS5yZWYmJihHbihlLCEwKSxHbih0KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7R24oZSwhMCl9fTtmdW5jdGlvbiBHbihlLHQpe3ZhciBuPWUuZGF0YS5yZWY7aWYoRChuKSl7dmFyIHI9ZS5jb250ZXh0LGk9ZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5lbG0sbz1yLiRyZWZzO3Q/QXJyYXkuaXNBcnJheShvW25dKT9mKG9bbl0saSk6b1tuXT09PWkmJihvW25dPXZvaWQgMCk6ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkob1tuXSk/b1tuXS5pbmRleE9mKGkpPDAmJm9bbl0ucHVzaChpKTpvW25dPVtpXTpvW25dPWl9fXZhciBabj1uZXcgbGUoIiIse30sW10pLFhuPVsiY3JlYXRlIiwiYWN0aXZhdGUiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il07ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gZS5rZXk9PT10LmtleSYmKGUudGFnPT09dC50YWcmJmUuaXNDb21tZW50PT09dC5pc0NvbW1lbnQmJkQoZS5kYXRhKT09PUQodC5kYXRhKSYmZnVuY3Rpb24oZSx0KXtpZigiaW5wdXQiIT09ZS50YWcpcmV0dXJuITA7dmFyIG4scj1EKG49ZS5kYXRhKSYmRChuPW4uYXR0cnMpJiZuLnR5cGUsaT1EKG49dC5kYXRhKSYmRChuPW4uYXR0cnMpJiZuLnR5cGU7cmV0dXJuIHI9PT1pfHxLbihyKSYmS24oaSl9KGUsdCl8fFMoZS5pc0FzeW5jUGxhY2Vob2xkZXIpJiZlLmFzeW5jRmFjdG9yeT09PXQuYXN5bmNGYWN0b3J5JiZNKHQuYXN5bmNGYWN0b3J5LmVycm9yKSl9ZnVuY3Rpb24gUW4oZSx0LG4pe3ZhciByLGksbz17fTtmb3Iocj10O3I8PW47KytyKUQoaT1lW3JdLmtleSkmJihvW2ldPXIpO3JldHVybiBvfXZhciBlcj17Y3JlYXRlOnRyLHVwZGF0ZTp0cixkZXN0cm95OmZ1bmN0aW9uKGUpe3RyKGUsWm4pfX07ZnVuY3Rpb24gdHIoZSx0KXsoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVzKSYmZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbz10PT09Wm4sYT1uPT09Wm4scz1ycih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9cnIobi5kYXRhLmRpcmVjdGl2ZXMsbi5jb250ZXh0KSxsPVtdLHU9W107Zm9yKGUgaW4gYylyPXNbZV0saT1jW2VdLHI/KGkub2xkVmFsdWU9ci52YWx1ZSxpcihpLCJ1cGRhdGUiLG4sdCksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJnUucHVzaChpKSk6KGlyKGksImJpbmQiLG4sdCksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZsLnB1c2goaSkpO2lmKGwubGVuZ3RoKXt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bC5sZW5ndGg7ZSsrKWlyKGxbZV0sImluc2VydGVkIixuLHQpfTtvP3J0KG4sImluc2VydCIsZik6ZigpfXUubGVuZ3RoJiZydChuLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspaXIodVtlXSwiY29tcG9uZW50VXBkYXRlZCIsbix0KX0pO2lmKCFvKWZvcihlIGluIHMpY1tlXXx8aXIoc1tlXSwidW5iaW5kIix0LHQsYSl9KGUsdCl9dmFyIG5yPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gcnIoZSx0KXt2YXIgbixyLGksbz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBvO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspKHI9ZVtuXSkubW9kaWZpZXJzfHwoci5tb2RpZmllcnM9bnIpLChvWyhpPXIsaS5yYXdOYW1lfHxpLm5hbWUrIi4iK09iamVjdC5rZXlzKGkubW9kaWZpZXJzfHx7fSkuam9pbigiLiIpKV09cikuZGVmPUxlKHQuJG9wdGlvbnMsImRpcmVjdGl2ZXMiLHIubmFtZSk7cmV0dXJuIG99ZnVuY3Rpb24gaXIodCxuLHIsZSxpKXt2YXIgbz10LmRlZiYmdC5kZWZbbl07aWYobyl0cnl7byhyLmVsbSx0LHIsZSxpKX1jYXRjaChlKXtGZShlLHIuY29udGV4dCwiZGlyZWN0aXZlICIrdC5uYW1lKyIgIituKyIgaG9vayIpfX12YXIgb3I9W1duLGVyXTtmdW5jdGlvbiBhcihlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucztpZighKEQobikmJiExPT09bi5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHxNKGUuZGF0YS5hdHRycykmJk0odC5kYXRhLmF0dHJzKSkpe3ZhciByLGksbz10LmVsbSxhPWUuZGF0YS5hdHRyc3x8e30scz10LmRhdGEuYXR0cnN8fHt9O2ZvcihyIGluIEQocy5fX29iX18pJiYocz10LmRhdGEuYXR0cnM9bSh7fSxzKSkscylpPXNbcl0sYVtyXSE9PWkmJnNyKG8scixpKTtmb3IociBpbihLfHxxKSYmcy52YWx1ZSE9PWEudmFsdWUmJnNyKG8sInZhbHVlIixzLnZhbHVlKSxhKU0oc1tyXSkmJihObihyKT9vLnJlbW92ZUF0dHJpYnV0ZU5TKGpuLExuKHIpKTpUbihyKXx8by5yZW1vdmVBdHRyaWJ1dGUocikpfX1mdW5jdGlvbiBzcihlLHQsbil7LTE8ZS50YWdOYW1lLmluZGV4T2YoIi0iKT9jcihlLHQsbik6RW4odCk/SW4obik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG49ImFsbG93ZnVsbHNjcmVlbiI9PT10JiYiRU1CRUQiPT09ZS50YWdOYW1lPyJ0cnVlIjp0LGUuc2V0QXR0cmlidXRlKHQsbikpOlRuKHQpP2Uuc2V0QXR0cmlidXRlKHQsSW4obil8fCJmYWxzZSI9PT1uPyJmYWxzZSI6InRydWUiKTpObih0KT9JbihuKT9lLnJlbW92ZUF0dHJpYnV0ZU5TKGpuLExuKHQpKTplLnNldEF0dHJpYnV0ZU5TKGpuLHQsbik6Y3IoZSx0LG4pfWZ1bmN0aW9uIGNyKHQsZSxuKXtpZihJbihuKSl0LnJlbW92ZUF0dHJpYnV0ZShlKTtlbHNle2lmKEsmJiFKJiYiVEVYVEFSRUEiPT09dC50YWdOYW1lJiYicGxhY2Vob2xkZXIiPT09ZSYmIXQuX19pZXBoKXt2YXIgcj1mdW5jdGlvbihlKXtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHIpfTt0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKSx0Ll9faWVwaD0hMH10LnNldEF0dHJpYnV0ZShlLG4pfX12YXIgbHI9e2NyZWF0ZTphcix1cGRhdGU6YXJ9O2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG49dC5lbG0scj10LmRhdGEsaT1lLmRhdGE7aWYoIShNKHIuc3RhdGljQ2xhc3MpJiZNKHIuY2xhc3MpJiYoTShpKXx8TShpLnN0YXRpY0NsYXNzKSYmTShpLmNsYXNzKSkpKXt2YXIgbz1Nbih0KSxhPW4uX3RyYW5zaXRpb25DbGFzc2VzO0QoYSkmJihvPVBuKG8sRm4oYSkpKSxvIT09bi5fcHJldkNsYXNzJiYobi5zZXRBdHRyaWJ1dGUoImNsYXNzIixvKSxuLl9wcmV2Q2xhc3M9byl9fXZhciBmcixwcixkcix2cixocixtcix5cj17Y3JlYXRlOnVyLHVwZGF0ZTp1cn0sZ3I9L1tcdykuK1wtXyRcXV0vO2Z1bmN0aW9uIF9yKGUpe3ZhciB0LG4scixpLG8sYT0hMSxzPSExLGM9ITEsbD0hMSx1PTAsZj0wLHA9MCxkPTA7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpZihuPXQsdD1lLmNoYXJDb2RlQXQociksYSkzOT09PXQmJjkyIT09biYmKGE9ITEpO2Vsc2UgaWYocykzND09PXQmJjkyIT09biYmKHM9ITEpO2Vsc2UgaWYoYyk5Nj09PXQmJjkyIT09biYmKGM9ITEpO2Vsc2UgaWYobCk0Nz09PXQmJjkyIT09biYmKGw9ITEpO2Vsc2UgaWYoMTI0IT09dHx8MTI0PT09ZS5jaGFyQ29kZUF0KHIrMSl8fDEyND09PWUuY2hhckNvZGVBdChyLTEpfHx1fHxmfHxwKXtzd2l0Y2godCl7Y2FzZSAzNDpzPSEwO2JyZWFrO2Nhc2UgMzk6YT0hMDticmVhaztjYXNlIDk2OmM9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07YnJlYWs7Y2FzZSA5MTpmKys7YnJlYWs7Y2FzZSA5MzpmLS07YnJlYWs7Y2FzZSAxMjM6dSsrO2JyZWFrO2Nhc2UgMTI1OnUtLX1pZig0Nz09PXQpe2Zvcih2YXIgdj1yLTEsaD12b2lkIDA7MDw9diYmIiAiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYmZ3IudGVzdChoKXx8KGw9ITApfX1lbHNlIHZvaWQgMD09PWk/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9YnIoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBicihlLHQpe3ZhciBuPXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytlKyIpIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIpKCcrZSsoIikiIT09aT8iLCIraTppKX1mdW5jdGlvbiAkcihlKXtjb25zb2xlLmVycm9yKCJbVnVlIGNvbXBpbGVyXTogIitlKX1mdW5jdGlvbiB3cihlLHQpe3JldHVybiBlP2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk6W119ZnVuY3Rpb24gQ3IoZSx0LG4peyhlLnByb3BzfHwoZS5wcm9wcz1bXSkpLnB1c2goe25hbWU6dCx2YWx1ZTpufSksZS5wbGFpbj0hMX1mdW5jdGlvbiB4cihlLHQsbil7KGUuYXR0cnN8fChlLmF0dHJzPVtdKSkucHVzaCh7bmFtZTp0LHZhbHVlOm59KSxlLnBsYWluPSExfWZ1bmN0aW9uIGtyKGUsdCxuKXtlLmF0dHJzTWFwW3RdPW4sZS5hdHRyc0xpc3QucHVzaCh7bmFtZTp0LHZhbHVlOm59KX1mdW5jdGlvbiBBcihlLHQsbixyLGksbyl7dmFyIGE7KHI9cnx8eSkuY2FwdHVyZSYmKGRlbGV0ZSByLmNhcHR1cmUsdD0iISIrdCksci5vbmNlJiYoZGVsZXRlIHIub25jZSx0PSJ+Iit0KSxyLnBhc3NpdmUmJihkZWxldGUgci5wYXNzaXZlLHQ9IiYiK3QpLCJjbGljayI9PT10JiYoci5yaWdodD8odD0iY29udGV4dG1lbnUiLGRlbGV0ZSByLnJpZ2h0KTpyLm1pZGRsZSYmKHQ9Im1vdXNldXAiKSksci5uYXRpdmU/KGRlbGV0ZSByLm5hdGl2ZSxhPWUubmF0aXZlRXZlbnRzfHwoZS5uYXRpdmVFdmVudHM9e30pKTphPWUuZXZlbnRzfHwoZS5ldmVudHM9e30pO3ZhciBzPXt2YWx1ZTpuLnRyaW0oKX07ciE9PXkmJihzLm1vZGlmaWVycz1yKTt2YXIgYz1hW3RdO0FycmF5LmlzQXJyYXkoYyk/aT9jLnVuc2hpZnQocyk6Yy5wdXNoKHMpOmFbdF09Yz9pP1tzLGNdOltjLHNdOnMsZS5wbGFpbj0hMX1mdW5jdGlvbiBPcihlLHQsbil7dmFyIHI9U3IoZSwiOiIrdCl8fFNyKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIF9yKHIpO2lmKCExIT09bil7dmFyIGk9U3IoZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24gU3IoZSx0LG4pe3ZhciByO2lmKG51bGwhPShyPWUuYXR0cnNNYXBbdF0pKWZvcih2YXIgaT1lLmF0dHJzTGlzdCxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKGlbb10ubmFtZT09PXQpe2kuc3BsaWNlKG8sMSk7YnJlYWt9cmV0dXJuIG4mJmRlbGV0ZSBlLmF0dHJzTWFwW3RdLHJ9ZnVuY3Rpb24gVHIoZSx0LG4pe3ZhciByPW58fHt9LGk9ci5udW1iZXIsbz0iJCR2IixhPW87ci50cmltJiYoYT0iKHR5cGVvZiAkJHYgPT09ICdzdHJpbmcnPyAkJHYudHJpbSgpOiAkJHYpIiksaSYmKGE9Il9uKCIrYSsiKSIpO3ZhciBzPUVyKHQsYSk7ZS5tb2RlbD17dmFsdWU6IigiK3QrIikiLGV4cHJlc3Npb246JyInK3QrJyInLGNhbGxiYWNrOiJmdW5jdGlvbiAoJCR2KSB7IitzKyJ9In19ZnVuY3Rpb24gRXIoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtpZihlPWUudHJpbSgpLGZyPWUubGVuZ3RoLGUuaW5kZXhPZigiWyIpPDB8fGUubGFzdEluZGV4T2YoIl0iKTxmci0xKXJldHVybi0xPCh2cj1lLmxhc3RJbmRleE9mKCIuIikpP3tleHA6ZS5zbGljZSgwLHZyKSxrZXk6JyInK2Uuc2xpY2UodnIrMSkrJyInfTp7ZXhwOmUsa2V5Om51bGx9O3ByPWUsdnI9aHI9bXI9MDtmb3IoOyFOcigpOylMcihkcj1qcigpKT9Ncihkcik6OTE9PT1kciYmSXIoZHIpO3JldHVybntleHA6ZS5zbGljZSgwLGhyKSxrZXk6ZS5zbGljZShocisxLG1yKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk/ZSsiPSIrdDoiJHNldCgiK24uZXhwKyIsICIrbi5rZXkrIiwgIit0KyIpIn1mdW5jdGlvbiBqcigpe3JldHVybiBwci5jaGFyQ29kZUF0KCsrdnIpfWZ1bmN0aW9uIE5yKCl7cmV0dXJuIGZyPD12cn1mdW5jdGlvbiBMcihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gSXIoZSl7dmFyIHQ9MTtmb3IoaHI9dnI7IU5yKCk7KWlmKExyKGU9anIoKSkpTXIoZSk7ZWxzZSBpZig5MT09PWUmJnQrKyw5Mz09PWUmJnQtLSwwPT09dCl7bXI9dnI7YnJlYWt9fWZ1bmN0aW9uIE1yKGUpe2Zvcih2YXIgdD1lOyFOcigpJiYoZT1qcigpKSE9PXQ7KTt9dmFyIERyLFByPSJfX3IiLEZyPSJfX2MiO2Z1bmN0aW9uIFJyKGUsdCxuLHIsaSl7dmFyIG8sYSxzLGMsbDt0PShvPXQpLl93aXRoVGFza3x8KG8uX3dpdGhUYXNrPWZ1bmN0aW9uKCl7SmU9ITA7dmFyIGU9by5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIEplPSExLGV9KSxuJiYoYT10LHM9ZSxjPXIsbD1Ecix0PWZ1bmN0aW9uIGUoKXtudWxsIT09YS5hcHBseShudWxsLGFyZ3VtZW50cykmJkhyKHMsZSxjLGwpfSksRHIuYWRkRXZlbnRMaXN0ZW5lcihlLHQsWj97Y2FwdHVyZTpyLHBhc3NpdmU6aX06cil9ZnVuY3Rpb24gSHIoZSx0LG4scil7KHJ8fERyKS5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5fd2l0aFRhc2t8fHQsbil9ZnVuY3Rpb24gQnIoZSx0KXtpZighTShlLmRhdGEub24pfHwhTSh0LmRhdGEub24pKXt2YXIgbj10LmRhdGEub258fHt9LHI9ZS5kYXRhLm9ufHx7fTtEcj10LmVsbSxmdW5jdGlvbihlKXtpZihEKGVbUHJdKSl7dmFyIHQ9Sz8iY2hhbmdlIjoiaW5wdXQiO2VbdF09W10uY29uY2F0KGVbUHJdLGVbdF18fFtdKSxkZWxldGUgZVtQcl19RChlW0ZyXSkmJihlLmNoYW5nZT1bXS5jb25jYXQoZVtGcl0sZS5jaGFuZ2V8fFtdKSxkZWxldGUgZVtGcl0pfShuKSxudChuLHIsUnIsSHIsdC5jb250ZXh0KSxEcj12b2lkIDB9fXZhciBVcj17Y3JlYXRlOkJyLHVwZGF0ZTpCcn07ZnVuY3Rpb24gVnIoZSx0KXtpZighTShlLmRhdGEuZG9tUHJvcHMpfHwhTSh0LmRhdGEuZG9tUHJvcHMpKXt2YXIgbixyLGksbyxhPXQuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXQuZGF0YS5kb21Qcm9wc3x8e307Zm9yKG4gaW4gRChjLl9fb2JfXykmJihjPXQuZGF0YS5kb21Qcm9wcz1tKHt9LGMpKSxzKU0oY1tuXSkmJihhW25dPSIiKTtmb3IobiBpbiBjKXtpZihyPWNbbl0sInRleHRDb250ZW50Ij09PW58fCJpbm5lckhUTUwiPT09bil7aWYodC5jaGlsZHJlbiYmKHQuY2hpbGRyZW4ubGVuZ3RoPTApLHI9PT1zW25dKWNvbnRpbnVlOzE9PT1hLmNoaWxkTm9kZXMubGVuZ3RoJiZhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1swXSl9aWYoInZhbHVlIj09PW4pe3ZhciBsPU0oYS5fdmFsdWU9cik/IiI6U3RyaW5nKHIpO289bCwoaT1hKS5jb21wb3Npbmd8fCJPUFRJT04iIT09aS50YWdOYW1lJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDt0cnl7bj1kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZX1jYXRjaChlKXt9cmV0dXJuIG4mJmUudmFsdWUhPT10fShpLG8pJiYhZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnZhbHVlLHI9ZS5fdk1vZGlmaWVycztpZihEKHIpKXtpZihyLmxhenkpcmV0dXJuITE7aWYoci5udW1iZXIpcmV0dXJuIEYobikhPT1GKHQpO2lmKHIudHJpbSlyZXR1cm4gbi50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gbiE9PXR9KGksbyl8fChhLnZhbHVlPWwpfWVsc2UgYVtuXT1yfX19dmFyIHpyPXtjcmVhdGU6VnIsdXBkYXRlOlZyfSxLcj1lKGZ1bmN0aW9uKGUpe3ZhciBuPXt9LHI9LzooLispLztyZXR1cm4gZS5zcGxpdCgvOyg/IVteKF0qXCkpL2cpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9ZS5zcGxpdChyKTsxPHQubGVuZ3RoJiYoblt0WzBdLnRyaW0oKV09dFsxXS50cmltKCkpfX0pLG59KTtmdW5jdGlvbiBKcihlKXt2YXIgdD1xcihlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9tKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlvbiBxcihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9iKGUpOiJzdHJpbmciPT10eXBlb2YgZT9LcihlKTplfXZhciBXcixHcj0vXi0tLyxacj0vXHMqIWltcG9ydGFudCQvLFhyPWZ1bmN0aW9uKGUsdCxuKXtpZihHci50ZXN0KHQpKWUuc3R5bGUuc2V0UHJvcGVydHkodCxuKTtlbHNlIGlmKFpyLnRlc3QobikpZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4ucmVwbGFjZShaciwiIiksImltcG9ydGFudCIpO2Vsc2V7dmFyIHI9UXIodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sWXI9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFFyPWUoZnVuY3Rpb24oZSl7aWYoV3I9V3J8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJmaWx0ZXIiIT09KGU9ZyhlKSkmJmUgaW4gV3IpcmV0dXJuIGU7Zm9yKHZhciB0PWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPTA7bjxZci5sZW5ndGg7bisrKXt2YXIgcj1ZcltuXSt0O2lmKHIgaW4gV3IpcmV0dXJuIHJ9fSk7ZnVuY3Rpb24gZWkoZSx0KXt2YXIgbj10LmRhdGEscj1lLmRhdGE7aWYoIShNKG4uc3RhdGljU3R5bGUpJiZNKG4uc3R5bGUpJiZNKHIuc3RhdGljU3R5bGUpJiZNKHIuc3R5bGUpKSl7dmFyIGksbyxhPXQuZWxtLHM9ci5zdGF0aWNTdHlsZSxjPXIubm9ybWFsaXplZFN0eWxlfHxyLnN0eWxlfHx7fSxsPXN8fGMsdT1xcih0LmRhdGEuc3R5bGUpfHx7fTt0LmRhdGEubm9ybWFsaXplZFN0eWxlPUQodS5fX29iX18pP20oe30sdSk6dTt2YXIgZj1mdW5jdGlvbihlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNvbXBvbmVudEluc3RhbmNlOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKG49SnIoaS5kYXRhKSkmJm0ocixuKTsobj1KcihlLmRhdGEpKSYmbShyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49SnIoby5kYXRhKSkmJm0ocixuKTtyZXR1cm4gcn0odCwhMCk7Zm9yKG8gaW4gbClNKGZbb10pJiZYcihhLG8sIiIpO2ZvcihvIGluIGYpKGk9ZltvXSkhPT1sW29dJiZYcihhLG8sbnVsbD09aT8iIjppKX19dmFyIHRpPXtjcmVhdGU6ZWksdXBkYXRlOmVpfTtmdW5jdGlvbiBuaSh0LGUpe2lmKGUmJihlPWUudHJpbSgpKSlpZih0LmNsYXNzTGlzdCktMTxlLmluZGV4T2YoIiAiKT9lLnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNsYXNzTGlzdC5hZGQoZSl9KTp0LmNsYXNzTGlzdC5hZGQoZSk7ZWxzZXt2YXIgbj0iICIrKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5kZXhPZigiICIrZSsiICIpPDAmJnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rZSkudHJpbSgpKX19ZnVuY3Rpb24gcmkodCxlKXtpZihlJiYoZT1lLnRyaW0oKSkpaWYodC5jbGFzc0xpc3QpLTE8ZS5pbmRleE9mKCIgIik/ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdC5jbGFzc0xpc3QucmVtb3ZlKGUpfSk6dC5jbGFzc0xpc3QucmVtb3ZlKGUpLHQuY2xhc3NMaXN0Lmxlbmd0aHx8dC5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIitlKyIgIjswPD1uLmluZGV4T2Yocik7KW49bi5yZXBsYWNlKHIsIiAiKTsobj1uLnRyaW0oKSk/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKTp0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gaWkoZSl7aWYoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdD17fTtyZXR1cm4hMSE9PWUuY3NzJiZtKHQsb2koZS5uYW1lfHwidiIpKSxtKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/b2koZSk6dm9pZCAwfX12YXIgb2k9ZShmdW5jdGlvbihlKXtyZXR1cm57ZW50ZXJDbGFzczplKyItZW50ZXIiLGVudGVyVG9DbGFzczplKyItZW50ZXItdG8iLGVudGVyQWN0aXZlQ2xhc3M6ZSsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczplKyItbGVhdmUiLGxlYXZlVG9DbGFzczplKyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6ZSsiLWxlYXZlLWFjdGl2ZSJ9fSksYWk9QiYmIUosc2k9InRyYW5zaXRpb24iLGNpPSJhbmltYXRpb24iLGxpPSJ0cmFuc2l0aW9uIix1aT0idHJhbnNpdGlvbmVuZCIsZmk9ImFuaW1hdGlvbiIscGk9ImFuaW1hdGlvbmVuZCI7YWkmJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYobGk9IldlYmtpdFRyYW5zaXRpb24iLHVpPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihmaT0iV2Via2l0QW5pbWF0aW9uIixwaT0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBkaT1CP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiB2aShlKXtkaShmdW5jdGlvbigpe2RpKGUpfSl9ZnVuY3Rpb24gaGkoZSx0KXt2YXIgbj1lLl90cmFuc2l0aW9uQ2xhc3Nlc3x8KGUuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2YodCk8MCYmKG4ucHVzaCh0KSxuaShlLHQpKX1mdW5jdGlvbiBtaShlLHQpe2UuX3RyYW5zaXRpb25DbGFzc2VzJiZmKGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLHJpKGUsdCl9ZnVuY3Rpb24geWkodCxlLG4pe3ZhciByPV9pKHQsZSksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1zaT91aTpwaSxjPTAsbD1mdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLHUpLG4oKX0sdT1mdW5jdGlvbihlKXtlLnRhcmdldD09PXQmJisrYz49YSYmbCgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZsKCl9LG8rMSksdC5hZGRFdmVudExpc3RlbmVyKHMsdSl9dmFyIGdpPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQpLztmdW5jdGlvbiBfaShlLHQpe3ZhciBuLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksaT1yW2xpKyJEZWxheSJdLnNwbGl0KCIsICIpLG89cltsaSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxhPWJpKGksbykscz1yW2ZpKyJEZWxheSJdLnNwbGl0KCIsICIpLGM9cltmaSsiRHVyYXRpb24iXS5zcGxpdCgiLCAiKSxsPWJpKHMsYyksdT0wLGY9MDtyZXR1cm4gdD09PXNpPzA8YSYmKG49c2ksdT1hLGY9by5sZW5ndGgpOnQ9PT1jaT8wPGwmJihuPWNpLHU9bCxmPWMubGVuZ3RoKTpmPShuPTA8KHU9TWF0aC5tYXgoYSxsKSk/bDxhP3NpOmNpOm51bGwpP249PT1zaT9vLmxlbmd0aDpjLmxlbmd0aDowLHt0eXBlOm4sdGltZW91dDp1LHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpuPT09c2kmJmdpLnRlc3QocltsaSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIGJpKG4sZSl7Zm9yKDtuLmxlbmd0aDxlLmxlbmd0aDspbj1uLmNvbmNhdChuKTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCxlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiAkaShlKSskaShuW3RdKX0pKX1mdW5jdGlvbiAkaShlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpKX1mdW5jdGlvbiB3aShuLGUpe3ZhciByPW4uZWxtO0Qoci5fbGVhdmVDYikmJihyLl9sZWF2ZUNiLmNhbmNlbGxlZD0hMCxyLl9sZWF2ZUNiKCkpO3ZhciB0PWlpKG4uZGF0YS50cmFuc2l0aW9uKTtpZighTSh0KSYmIUQoci5fZW50ZXJDYikmJjE9PT1yLm5vZGVUeXBlKXtmb3IodmFyIGk9dC5jc3Msbz10LnR5cGUsYT10LmVudGVyQ2xhc3Mscz10LmVudGVyVG9DbGFzcyxjPXQuZW50ZXJBY3RpdmVDbGFzcyxsPXQuYXBwZWFyQ2xhc3MsdT10LmFwcGVhclRvQ2xhc3MsZj10LmFwcGVhckFjdGl2ZUNsYXNzLHA9dC5iZWZvcmVFbnRlcixkPXQuZW50ZXIsdj10LmFmdGVyRW50ZXIsaD10LmVudGVyQ2FuY2VsbGVkLG09dC5iZWZvcmVBcHBlYXIseT10LmFwcGVhcixnPXQuYWZ0ZXJBcHBlYXIsXz10LmFwcGVhckNhbmNlbGxlZCxiPXQuZHVyYXRpb24sJD1tdCx3PW10LiR2bm9kZTt3JiZ3LnBhcmVudDspJD0odz13LnBhcmVudCkuY29udGV4dDt2YXIgQz0hJC5faXNNb3VudGVkfHwhbi5pc1Jvb3RJbnNlcnQ7aWYoIUN8fHl8fCIiPT09eSl7dmFyIHg9QyYmbD9sOmEsaz1DJiZmP2Y6YyxBPUMmJnU/dTpzLE89QyYmbXx8cCxTPUMmJiJmdW5jdGlvbiI9PXR5cGVvZiB5P3k6ZCxUPUMmJmd8fHYsRT1DJiZffHxoLGo9RihQKGIpP2IuZW50ZXI6YiksTj0hMSE9PWkmJiFKLEw9a2koUyksST1yLl9lbnRlckNiPVIoZnVuY3Rpb24oKXtOJiYobWkocixBKSxtaShyLGspKSxJLmNhbmNlbGxlZD8oTiYmbWkocix4KSxFJiZFKHIpKTpUJiZUKHIpLHIuX2VudGVyQ2I9bnVsbH0pO24uZGF0YS5zaG93fHxydChuLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIGU9ci5wYXJlbnROb2RlLHQ9ZSYmZS5fcGVuZGluZyYmZS5fcGVuZGluZ1tuLmtleV07dCYmdC50YWc9PT1uLnRhZyYmdC5lbG0uX2xlYXZlQ2ImJnQuZWxtLl9sZWF2ZUNiKCksUyYmUyhyLEkpfSksTyYmTyhyKSxOJiYoaGkocix4KSxoaShyLGspLHZpKGZ1bmN0aW9uKCl7bWkocix4KSxJLmNhbmNlbGxlZHx8KGhpKHIsQSksTHx8KHhpKGopP3NldFRpbWVvdXQoSSxqKTp5aShyLG8sSSkpKX0pKSxuLmRhdGEuc2hvdyYmKGUmJmUoKSxTJiZTKHIsSSkpLE58fEx8fEkoKX19fWZ1bmN0aW9uIENpKGUsdCl7dmFyIG49ZS5lbG07RChuLl9lbnRlckNiKSYmKG4uX2VudGVyQ2IuY2FuY2VsbGVkPSEwLG4uX2VudGVyQ2IoKSk7dmFyIHI9aWkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKE0ocil8fDEhPT1uLm5vZGVUeXBlKXJldHVybiB0KCk7aWYoIUQobi5fbGVhdmVDYikpe3ZhciBpPXIuY3NzLG89ci50eXBlLGE9ci5sZWF2ZUNsYXNzLHM9ci5sZWF2ZVRvQ2xhc3MsYz1yLmxlYXZlQWN0aXZlQ2xhc3MsbD1yLmJlZm9yZUxlYXZlLHU9ci5sZWF2ZSxmPXIuYWZ0ZXJMZWF2ZSxwPXIubGVhdmVDYW5jZWxsZWQsZD1yLmRlbGF5TGVhdmUsdj1yLmR1cmF0aW9uLGg9ITEhPT1pJiYhSixtPWtpKHUpLHk9RihQKHYpP3YubGVhdmU6diksZz1uLl9sZWF2ZUNiPVIoZnVuY3Rpb24oKXtuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5fcGVuZGluZyYmKG4ucGFyZW50Tm9kZS5fcGVuZGluZ1tlLmtleV09bnVsbCksaCYmKG1pKG4scyksbWkobixjKSksZy5jYW5jZWxsZWQ/KGgmJm1pKG4sYSkscCYmcChuKSk6KHQoKSxmJiZmKG4pKSxuLl9sZWF2ZUNiPW51bGx9KTtkP2QoXyk6XygpfWZ1bmN0aW9uIF8oKXtnLmNhbmNlbGxlZHx8KGUuZGF0YS5zaG93fHwoKG4ucGFyZW50Tm9kZS5fcGVuZGluZ3x8KG4ucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxsJiZsKG4pLGgmJihoaShuLGEpLGhpKG4sYyksdmkoZnVuY3Rpb24oKXttaShuLGEpLGcuY2FuY2VsbGVkfHwoaGkobixzKSxtfHwoeGkoeSk/c2V0VGltZW91dChnLHkpOnlpKG4sbyxnKSkpfSkpLHUmJnUobixnKSxofHxtfHxnKCkpfX1mdW5jdGlvbiB4aShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBraShlKXtpZihNKGUpKXJldHVybiExO3ZhciB0PWUuZm5zO3JldHVybiBEKHQpP2tpKEFycmF5LmlzQXJyYXkodCk/dFswXTp0KToxPChlLl9sZW5ndGh8fGUubGVuZ3RoKX1mdW5jdGlvbiBBaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJndpKHQpfXZhciBPaT1mdW5jdGlvbihlKXt2YXIgcix0LGc9e30sbj1lLm1vZHVsZXMsXz1lLm5vZGVPcHM7Zm9yKHI9MDtyPFhuLmxlbmd0aDsrK3IpZm9yKGdbWG5bcl1dPVtdLHQ9MDt0PG4ubGVuZ3RoOysrdClEKG5bdF1bWG5bcl1dKSYmZ1tYbltyXV0ucHVzaChuW3RdW1huW3JdXSk7ZnVuY3Rpb24gbyhlKXt2YXIgdD1fLnBhcmVudE5vZGUoZSk7RCh0KSYmXy5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGIoZSx0LG4scixpLG8sYSl7aWYoRChlLmVsbSkmJkQobykmJihlPW9bYV09ZGUoZSkpLGUuaXNSb290SW5zZXJ0PSFpLCFmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLmRhdGE7aWYoRChpKSl7dmFyIG89RChlLmNvbXBvbmVudEluc3RhbmNlKSYmaS5rZWVwQWxpdmU7aWYoRChpPWkuaG9vaykmJkQoaT1pLmluaXQpJiZpKGUsITEsbixyKSxEKGUuY29tcG9uZW50SW5zdGFuY2UpKXJldHVybiBkKGUsdCksUyhvKSYmZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBpLG89ZTtvLmNvbXBvbmVudEluc3RhbmNlOylpZihvPW8uY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLEQoaT1vLmRhdGEpJiZEKGk9aS50cmFuc2l0aW9uKSl7Zm9yKGk9MDtpPGcuYWN0aXZhdGUubGVuZ3RoOysraSlnLmFjdGl2YXRlW2ldKFpuLG8pO3QucHVzaChvKTticmVha311KG4sZS5lbG0scil9KGUsdCxuLHIpLCEwfX0oZSx0LG4scikpe3ZhciBzPWUuZGF0YSxjPWUuY2hpbGRyZW4sbD1lLnRhZztEKGwpPyhlLmVsbT1lLm5zP18uY3JlYXRlRWxlbWVudE5TKGUubnMsbCk6Xy5jcmVhdGVFbGVtZW50KGwsZSksZihlKSx2KGUsYyx0KSxEKHMpJiZoKGUsdCkpOlMoZS5pc0NvbW1lbnQpP2UuZWxtPV8uY3JlYXRlQ29tbWVudChlLnRleHQpOmUuZWxtPV8uY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSx1KG4sZS5lbG0scil9fWZ1bmN0aW9uIGQoZSx0KXtEKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCwkKGUpPyhoKGUsdCksZihlKSk6KEduKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdShlLHQsbil7RChlKSYmKEQobik/bi5wYXJlbnROb2RlPT09ZSYmXy5pbnNlcnRCZWZvcmUoZSx0LG4pOl8uYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gdihlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrciliKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBUKGUudGV4dCkmJl8uYXBwZW5kQ2hpbGQoZS5lbG0sXy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uICQoZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBEKGUudGFnKX1mdW5jdGlvbiBoKGUsdCl7Zm9yKHZhciBuPTA7bjxnLmNyZWF0ZS5sZW5ndGg7KytuKWcuY3JlYXRlW25dKFpuLGUpO0Qocj1lLmRhdGEuaG9vaykmJihEKHIuY3JlYXRlKSYmci5jcmVhdGUoWm4sZSksRChyLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZihlKXt2YXIgdDtpZihEKHQ9ZS5mblNjb3BlSWQpKV8uc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgbj1lO247KUQodD1uLmNvbnRleHQpJiZEKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJl8uc2V0U3R5bGVTY29wZShlLmVsbSx0KSxuPW4ucGFyZW50O0QodD1tdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmRCh0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZfLnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24geShlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrciliKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiB3KGUpe3ZhciB0LG4scj1lLmRhdGE7aWYoRChyKSlmb3IoRCh0PXIuaG9vaykmJkQodD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PGcuZGVzdHJveS5sZW5ndGg7Kyt0KWcuZGVzdHJveVt0XShlKTtpZihEKHQ9ZS5jaGlsZHJlbikpZm9yKG49MDtuPGUuY2hpbGRyZW4ubGVuZ3RoOysrbil3KGUuY2hpbGRyZW5bbl0pfWZ1bmN0aW9uIEMoZSx0LG4scil7Zm9yKDtuPD1yOysrbil7dmFyIGk9dFtuXTtEKGkpJiYoRChpLnRhZyk/KGEoaSksdyhpKSk6byhpLmVsbSkpfX1mdW5jdGlvbiBhKGUsdCl7aWYoRCh0KXx8RChlLmRhdGEpKXt2YXIgbixyPWcucmVtb3ZlLmxlbmd0aCsxO2ZvcihEKHQpP3QubGlzdGVuZXJzKz1yOnQ9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmbyhlKX1yZXR1cm4gbi5saXN0ZW5lcnM9dCxufShlLmVsbSxyKSxEKG49ZS5jb21wb25lbnRJbnN0YW5jZSkmJkQobj1uLl92bm9kZSkmJkQobi5kYXRhKSYmYShuLHQpLG49MDtuPGcucmVtb3ZlLmxlbmd0aDsrK24pZy5yZW1vdmVbbl0oZSx0KTtEKG49ZS5kYXRhLmhvb2spJiZEKG49bi5yZW1vdmUpP24oZSx0KTp0KCl9ZWxzZSBvKGUuZWxtKX1mdW5jdGlvbiB4KGUsdCxuLHIpe2Zvcih2YXIgaT1uO2k8cjtpKyspe3ZhciBvPXRbaV07aWYoRChvKSYmWW4oZSxvKSlyZXR1cm4gaX19ZnVuY3Rpb24gayhlLHQsbixyKXtpZihlIT09dCl7dmFyIGk9dC5lbG09ZS5lbG07aWYoUyhlLmlzQXN5bmNQbGFjZWhvbGRlcikpRCh0LmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk/TyhlLmVsbSx0LG4pOnQuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYoUyh0LmlzU3RhdGljKSYmUyhlLmlzU3RhdGljKSYmdC5rZXk9PT1lLmtleSYmKFModC5pc0Nsb25lZCl8fFModC5pc09uY2UpKSl0LmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgbyxhPXQuZGF0YTtEKGEpJiZEKG89YS5ob29rKSYmRChvPW8ucHJlcGF0Y2gpJiZvKGUsdCk7dmFyIHM9ZS5jaGlsZHJlbixjPXQuY2hpbGRyZW47aWYoRChhKSYmJCh0KSl7Zm9yKG89MDtvPGcudXBkYXRlLmxlbmd0aDsrK28pZy51cGRhdGVbb10oZSx0KTtEKG89YS5ob29rKSYmRChvPW8udXBkYXRlKSYmbyhlLHQpfU0odC50ZXh0KT9EKHMpJiZEKGMpP3MhPT1jJiZmdW5jdGlvbihlLHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsYz0wLGw9MCx1PXQubGVuZ3RoLTEsZj10WzBdLHA9dFt1XSxkPW4ubGVuZ3RoLTEsdj1uWzBdLGg9bltkXSxtPSFpO2M8PXUmJmw8PWQ7KU0oZik/Zj10WysrY106TShwKT9wPXRbLS11XTpZbihmLHYpPyhrKGYsdixyKSxmPXRbKytjXSx2PW5bKytsXSk6WW4ocCxoKT8oayhwLGgscikscD10Wy0tdV0saD1uWy0tZF0pOlluKGYsaCk/KGsoZixoLHIpLG0mJl8uaW5zZXJ0QmVmb3JlKGUsZi5lbG0sXy5uZXh0U2libGluZyhwLmVsbSkpLGY9dFsrK2NdLGg9blstLWRdKTooWW4ocCx2KT8oayhwLHYsciksbSYmXy5pbnNlcnRCZWZvcmUoZSxwLmVsbSxmLmVsbSkscD10Wy0tdV0pOihNKG8pJiYobz1Rbih0LGMsdSkpLE0oYT1EKHYua2V5KT9vW3Yua2V5XTp4KHYsdCxjLHUpKT9iKHYscixlLGYuZWxtLCExLG4sbCk6WW4ocz10W2FdLHYpPyhrKHMsdixyKSx0W2FdPXZvaWQgMCxtJiZfLmluc2VydEJlZm9yZShlLHMuZWxtLGYuZWxtKSk6Yih2LHIsZSxmLmVsbSwhMSxuLGwpKSx2PW5bKytsXSk7dTxjP3koZSxNKG5bZCsxXSk/bnVsbDpuW2QrMV0uZWxtLG4sbCxkLHIpOmQ8bCYmQygwLHQsYyx1KX0oaSxzLGMsbixyKTpEKGMpPyhEKGUudGV4dCkmJl8uc2V0VGV4dENvbnRlbnQoaSwiIikseShpLG51bGwsYywwLGMubGVuZ3RoLTEsbikpOkQocyk/QygwLHMsMCxzLmxlbmd0aC0xKTpEKGUudGV4dCkmJl8uc2V0VGV4dENvbnRlbnQoaSwiIik6ZS50ZXh0IT09dC50ZXh0JiZfLnNldFRleHRDb250ZW50KGksdC50ZXh0KSxEKGEpJiZEKG89YS5ob29rKSYmRChvPW8ucG9zdHBhdGNoKSYmbyhlLHQpfX19ZnVuY3Rpb24gQShlLHQsbil7aWYoUyhuKSYmRChlLnBhcmVudCkpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLmRhdGEuaG9vay5pbnNlcnQodFtyXSl9dmFyIG09cygiYXR0cnMsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Iik7ZnVuY3Rpb24gTyhlLHQsbixyKXt2YXIgaSxvPXQudGFnLGE9dC5kYXRhLHM9dC5jaGlsZHJlbjtpZihyPXJ8fGEmJmEucHJlLHQuZWxtPWUsUyh0LmlzQ29tbWVudCkmJkQodC5hc3luY0ZhY3RvcnkpKXJldHVybiB0LmlzQXN5bmNQbGFjZWhvbGRlcj0hMDtpZihEKGEpJiYoRChpPWEuaG9vaykmJkQoaT1pLmluaXQpJiZpKHQsITApLEQoaT10LmNvbXBvbmVudEluc3RhbmNlKSkpcmV0dXJuIGQodCxuKSwhMDtpZihEKG8pKXtpZihEKHMpKWlmKGUuaGFzQ2hpbGROb2RlcygpKWlmKEQoaT1hKSYmRChpPWkuZG9tUHJvcHMpJiZEKGk9aS5pbm5lckhUTUwpKXtpZihpIT09ZS5pbm5lckhUTUwpcmV0dXJuITF9ZWxzZXtmb3IodmFyIGM9ITAsbD1lLmZpcnN0Q2hpbGQsdT0wO3U8cy5sZW5ndGg7dSsrKXtpZighbHx8IU8obCxzW3VdLG4scikpe2M9ITE7YnJlYWt9bD1sLm5leHRTaWJsaW5nfWlmKCFjfHxsKXJldHVybiExfWVsc2Ugdih0LHMsbik7aWYoRChhKSl7dmFyIGY9ITE7Zm9yKHZhciBwIGluIGEpaWYoIW0ocCkpe2Y9ITAsaCh0LG4pO2JyZWFrfSFmJiZhLmNsYXNzJiZZZShhLmNsYXNzKX19ZWxzZSBlLmRhdGEhPT10LnRleHQmJihlLmRhdGE9dC50ZXh0KTtyZXR1cm4hMH1yZXR1cm4gZnVuY3Rpb24oZSx0LG4scixpLG8pe2lmKCFNKHQpKXt2YXIgYSxzPSExLGM9W107aWYoTShlKSlzPSEwLGIodCxjLGksbyk7ZWxzZXt2YXIgbD1EKGUubm9kZVR5cGUpO2lmKCFsJiZZbihlLHQpKWsoZSx0LGMscik7ZWxzZXtpZihsKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoRSkmJihlLnJlbW92ZUF0dHJpYnV0ZShFKSxuPSEwKSxTKG4pJiZPKGUsdCxjKSlyZXR1cm4gQSh0LGMsITApLGU7YT1lLGU9bmV3IGxlKF8udGFnTmFtZShhKS50b0xvd2VyQ2FzZSgpLHt9LFtdLHZvaWQgMCxhKX12YXIgdT1lLmVsbSxmPV8ucGFyZW50Tm9kZSh1KTtpZihiKHQsYyx1Ll9sZWF2ZUNiP251bGw6ZixfLm5leHRTaWJsaW5nKHUpKSxEKHQucGFyZW50KSlmb3IodmFyIHA9dC5wYXJlbnQsZD0kKHQpO3A7KXtmb3IodmFyIHY9MDt2PGcuZGVzdHJveS5sZW5ndGg7Kyt2KWcuZGVzdHJveVt2XShwKTtpZihwLmVsbT10LmVsbSxkKXtmb3IodmFyIGg9MDtoPGcuY3JlYXRlLmxlbmd0aDsrK2gpZy5jcmVhdGVbaF0oWm4scCk7dmFyIG09cC5kYXRhLmhvb2suaW5zZXJ0O2lmKG0ubWVyZ2VkKWZvcih2YXIgeT0xO3k8bS5mbnMubGVuZ3RoO3krKyltLmZuc1t5XSgpfWVsc2UgR24ocCk7cD1wLnBhcmVudH1EKGYpP0MoMCxbZV0sMCwwKTpEKGUudGFnKSYmdyhlKX19cmV0dXJuIEEodCxjLHMpLHQuZWxtfUQoZSkmJncoZSl9fSh7bm9kZU9wczpxbixtb2R1bGVzOltscix5cixVcix6cix0aSxCP3tjcmVhdGU6QWksYWN0aXZhdGU6QWkscmVtb3ZlOmZ1bmN0aW9uKGUsdCl7ITAhPT1lLmRhdGEuc2hvdz9DaShlLHQpOnQoKX19Ont9XS5jb25jYXQob3IpfSk7SiYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZSYmZS52bW9kZWwmJk1pKGUsImlucHV0Iil9KTt2YXIgU2k9e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuLHIpeyJzZWxlY3QiPT09bi50YWc/KHIuZWxtJiYhci5lbG0uX3ZPcHRpb25zP3J0KG4sInBvc3RwYXRjaCIsZnVuY3Rpb24oKXtTaS5jb21wb25lbnRVcGRhdGVkKGUsdCxuKX0pOlRpKGUsdCxuLmNvbnRleHQpLGUuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKGUub3B0aW9ucyxOaSkpOigidGV4dGFyZWEiPT09bi50YWd8fEtuKGUudHlwZSkpJiYoZS5fdk1vZGlmaWVycz10Lm1vZGlmaWVycyx0Lm1vZGlmaWVycy5sYXp5fHwoZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbnN0YXJ0IixMaSksZS5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsSWkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixJaSksSiYmKGUudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXtUaShlLHQsbi5jb250ZXh0KTt2YXIgcj1lLl92T3B0aW9ucyxpPWUuX3ZPcHRpb25zPVtdLm1hcC5jYWxsKGUub3B0aW9ucyxOaSk7aWYoaS5zb21lKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIUMoZSxyW3RdKX0pKShlLm11bHRpcGxlP3QudmFsdWUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gamkoZSxpKX0pOnQudmFsdWUhPT10Lm9sZFZhbHVlJiZqaSh0LnZhbHVlLGkpKSYmTWkoZSwiY2hhbmdlIil9fX07ZnVuY3Rpb24gVGkoZSx0LG4pe0VpKGUsdCxuKSwoS3x8cSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtFaShlLHQsbil9LDApfWZ1bmN0aW9uIEVpKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9ZS5tdWx0aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBvLGEscz0wLGM9ZS5vcHRpb25zLmxlbmd0aDtzPGM7cysrKWlmKGE9ZS5vcHRpb25zW3NdLGkpbz0tMTx4KHIsTmkoYSkpLGEuc2VsZWN0ZWQhPT1vJiYoYS5zZWxlY3RlZD1vKTtlbHNlIGlmKEMoTmkoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3RlZEluZGV4IT09cyYmKGUuc2VsZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIGppKHQsZSl7cmV0dXJuIGUuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIUMoZSx0KX0pfWZ1bmN0aW9uIE5pKGUpe3JldHVybiJfdmFsdWUiaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIExpKGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBJaShlKXtlLnRhcmdldC5jb21wb3NpbmcmJihlLnRhcmdldC5jb21wb3Npbmc9ITEsTWkoZS50YXJnZXQsImlucHV0IikpfWZ1bmN0aW9uIE1pKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtuLmluaXRFdmVudCh0LCEwLCEwKSxlLmRpc3BhdGNoRXZlbnQobil9ZnVuY3Rpb24gRGkoZSl7cmV0dXJuIWUuY29tcG9uZW50SW5zdGFuY2V8fGUuZGF0YSYmZS5kYXRhLnRyYW5zaXRpb24/ZTpEaShlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSl9dmFyIFBpPXttb2RlbDpTaSxzaG93OntiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9KG49RGkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uLG89ZS5fX3ZPcmlnaW5hbERpc3BsYXk9Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheTtyJiZpPyhuLmRhdGEuc2hvdz0hMCx3aShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PW99KSk6ZS5zdHlsZS5kaXNwbGF5PXI/bzoibm9uZSJ9LHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZTshciE9IXQub2xkVmFsdWUmJigobj1EaShuKSkuZGF0YSYmbi5kYXRhLnRyYW5zaXRpb24/KG4uZGF0YS5zaG93PSEwLHI/d2kobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheX0pOkNpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9Im5vbmUifSkpOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5OiJub25lIil9LHVuYmluZDpmdW5jdGlvbihlLHQsbixyLGkpe2l8fChlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXkpfX19LEZpPXtuYW1lOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixjc3M6Qm9vbGVhbixtb2RlOlN0cmluZyx0eXBlOlN0cmluZyxlbnRlckNsYXNzOlN0cmluZyxsZWF2ZUNsYXNzOlN0cmluZyxlbnRlclRvQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxkdXJhdGlvbjpbTnVtYmVyLFN0cmluZyxPYmplY3RdfTtmdW5jdGlvbiBSaShlKXt2YXIgdD1lJiZlLmNvbXBvbmVudE9wdGlvbnM7cmV0dXJuIHQmJnQuQ3Rvci5vcHRpb25zLmFic3RyYWN0P1JpKGx0KHQuY2hpbGRyZW4pKTplfWZ1bmN0aW9uIEhpKGUpe3ZhciB0PXt9LG49ZS4kb3B0aW9ucztmb3IodmFyIHIgaW4gbi5wcm9wc0RhdGEpdFtyXT1lW3JdO3ZhciBpPW4uX3BhcmVudExpc3RlbmVycztmb3IodmFyIG8gaW4gaSl0W2cobyldPWlbb107cmV0dXJuIHR9ZnVuY3Rpb24gQmkoZSx0KXtpZigvXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpKXJldHVybiBlKCJrZWVwLWFsaXZlIix7cHJvcHM6dC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YX0pfXZhciBVaT17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6RmksYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8Y3QoZSl9KSkubGVuZ3RoKXt2YXIgcj10aGlzLm1vZGUsaT1uWzBdO2lmKGZ1bmN0aW9uKGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9KHRoaXMuJHZub2RlKSlyZXR1cm4gaTt2YXIgbz1SaShpKTtpZighbylyZXR1cm4gaTtpZih0aGlzLl9sZWF2aW5nKXJldHVybiBCaShlLGkpO3ZhciBhPSJfX3RyYW5zaXRpb24tIit0aGlzLl91aWQrIi0iO28ua2V5PW51bGw9PW8ua2V5P28uaXNDb21tZW50P2ErImNvbW1lbnQiOmErby50YWc6VChvLmtleSk/MD09PVN0cmluZyhvLmtleSkuaW5kZXhPZihhKT9vLmtleTphK28ua2V5Om8ua2V5O3ZhciBzLGMsbD0oby5kYXRhfHwoby5kYXRhPXt9KSkudHJhbnNpdGlvbj1IaSh0aGlzKSx1PXRoaXMuX3Zub2RlLGY9UmkodSk7aWYoby5kYXRhLmRpcmVjdGl2ZXMmJm8uZGF0YS5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuInNob3ciPT09ZS5uYW1lfSkmJihvLmRhdGEuc2hvdz0hMCksZiYmZi5kYXRhJiYocz1vLChjPWYpLmtleSE9PXMua2V5fHxjLnRhZyE9PXMudGFnKSYmIWN0KGYpJiYoIWYuY29tcG9uZW50SW5zdGFuY2V8fCFmLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZS5pc0NvbW1lbnQpKXt2YXIgcD1mLmRhdGEudHJhbnNpdGlvbj1tKHt9LGwpO2lmKCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxydChwLCJhZnRlckxlYXZlIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLEJpKGUsaSk7aWYoImluLW91dCI9PT1yKXtpZihjdChvKSlyZXR1cm4gdTt2YXIgZCx2PWZ1bmN0aW9uKCl7ZCgpfTtydChsLCJhZnRlckVudGVyIix2KSxydChsLCJlbnRlckNhbmNlbGxlZCIsdikscnQocCwiZGVsYXlMZWF2ZSIsZnVuY3Rpb24oZSl7ZD1lfSl9fXJldHVybiBpfX19LFZpPW0oe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sRmkpO2Z1bmN0aW9uIHppKGUpe2UuZWxtLl9tb3ZlQ2ImJmUuZWxtLl9tb3ZlQ2IoKSxlLmVsbS5fZW50ZXJDYiYmZS5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiBLaShlKXtlLmRhdGEubmV3UG9zPWUuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIEppKGUpe3ZhciB0PWUuZGF0YS5wb3Msbj1lLmRhdGEubmV3UG9zLHI9dC5sZWZ0LW4ubGVmdCxpPXQudG9wLW4udG9wO2lmKHJ8fGkpe2UuZGF0YS5tb3ZlZD0hMDt2YXIgbz1lLmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fWRlbGV0ZSBWaS5tb2RlO3ZhciBxaT17VHJhbnNpdGlvbjpVaSxUcmFuc2l0aW9uR3JvdXA6e3Byb3BzOlZpLHJlbmRlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50YWd8fHRoaXMuJHZub2RlLmRhdGEudGFnfHwic3BhbiIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPUhpKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSYmKG8ucHVzaChjKSwoKG5bYy5rZXldPWMpLmRhdGF8fChjLmRhdGE9e30pKS50cmFuc2l0aW9uPWEpfWlmKHIpe2Zvcih2YXIgbD1bXSx1PVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0/bC5wdXNoKHApOnUucHVzaChwKX10aGlzLmtlcHQ9ZSh0LG51bGwsbCksdGhpcy5yZW1vdmVkPXV9cmV0dXJuIGUodCxudWxsLG8pfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9fcGF0Y2hfXyh0aGlzLl92bm9kZSx0aGlzLmtlcHQsITEsITApLHRoaXMuX3Zub2RlPXRoaXMua2VwdH0sdXBkYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJldkNoaWxkcmVuLHI9dGhpcy5tb3ZlQ2xhc3N8fCh0aGlzLm5hbWV8fCJ2IikrIi1tb3ZlIjtlLmxlbmd0aCYmdGhpcy5oYXNNb3ZlKGVbMF0uZWxtLHIpJiYoZS5mb3JFYWNoKHppKSxlLmZvckVhY2goS2kpLGUuZm9yRWFjaChKaSksdGhpcy5fcmVmbG93PWRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LGUuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHQ9bi5zdHlsZTtoaShuLHIpLHQudHJhbnNmb3JtPXQuV2Via2l0VHJhbnNmb3JtPXQudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcih1aSxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZSh0KXt0JiYhL3RyYW5zZm9ybSQvLnRlc3QodC5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKHVpLGUpLG4uX21vdmVDYj1udWxsLG1pKG4scikpfSl9fSkpfSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoIWFpKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49ZS5jbG9uZU5vZGUoKTtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmZS5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihlKXtyaShuLGUpfSksbmkobix0KSxuLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuJGVsLmFwcGVuZENoaWxkKG4pO3ZhciByPV9pKG4pO3JldHVybiB0aGlzLiRlbC5yZW1vdmVDaGlsZChuKSx0aGlzLl9oYXNNb3ZlPXIuaGFzVHJhbnNmb3JtfX19fTtobi5jb25maWcubXVzdFVzZVByb3A9U24saG4uY29uZmlnLmlzUmVzZXJ2ZWRUYWc9VW4saG4uY29uZmlnLmlzUmVzZXJ2ZWRBdHRyPUFuLGhuLmNvbmZpZy5nZXRUYWdOYW1lc3BhY2U9Vm4saG4uY29uZmlnLmlzVW5rbm93bkVsZW1lbnQ9ZnVuY3Rpb24oZSl7aWYoIUIpcmV0dXJuITA7aWYoVW4oZSkpcmV0dXJuITE7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbCE9em5bZV0pcmV0dXJuIHpuW2VdO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuLTE8ZS5pbmRleE9mKCItIik/em5bZV09dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MVW5rbm93bkVsZW1lbnR8fHQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTEVsZW1lbnQ6em5bZV09L0hUTUxVbmtub3duRWxlbWVudC8udGVzdCh0LnRvU3RyaW5nKCkpfSxtKGhuLm9wdGlvbnMuZGlyZWN0aXZlcyxQaSksbShobi5vcHRpb25zLmNvbXBvbmVudHMscWkpLGhuLnByb3RvdHlwZS5fX3BhdGNoX189Qj9PaTokLGhuLnByb3RvdHlwZS4kbW91bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lJiZCP0puKGUpOnZvaWQgMCxyPWUsaT10LChuPXRoaXMpLiRlbD1yLG4uJG9wdGlvbnMucmVuZGVyfHwobi4kb3B0aW9ucy5yZW5kZXI9ZmUpLF90KG4sImJlZm9yZU1vdW50IiksbmV3IFN0KG4sZnVuY3Rpb24oKXtuLl91cGRhdGUobi5fcmVuZGVyKCksaSl9LCQsbnVsbCwhMCksaT0hMSxudWxsPT1uLiR2bm9kZSYmKG4uX2lzTW91bnRlZD0hMCxfdChuLCJtb3VudGVkIikpLG47dmFyIG4scixpfSxCJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ai5kZXZ0b29scyYmUSYmUS5lbWl0KCJpbml0Iixobil9LDApO3ZhciBXaT0vXHtceygoPzoufFxuKSs/KVx9XH0vZyxHaT0vWy0uKis/XiR7fSgpfFtcXVwvXFxdL2csWmk9ZShmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnJlcGxhY2UoR2ksIlxcJCYiKSxuPWVbMV0ucmVwbGFjZShHaSwiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKHQrIigoPzoufFxcbikrPykiK24sImciKX0pO3ZhciBYaT17c3RhdGljS2V5czpbInN0YXRpY0NsYXNzIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1TcihlLCJjbGFzcyIpO24mJihlLnN0YXRpY0NsYXNzPUpTT04uc3RyaW5naWZ5KG4pKTt2YXIgcj1PcihlLCJjbGFzcyIsITEpO3ImJihlLmNsYXNzQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPSJzdGF0aWNDbGFzczoiK2Uuc3RhdGljQ2xhc3MrIiwiKSxlLmNsYXNzQmluZGluZyYmKHQrPSJjbGFzczoiK2UuY2xhc3NCaW5kaW5nKyIsIiksdH19O3ZhciBZaSxRaT17c3RhdGljS2V5czpbInN0YXRpY1N0eWxlIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1TcihlLCJzdHlsZSIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KEtyKG4pKSk7dmFyIHI9T3IoZSwic3R5bGUiLCExKTtyJiYoZS5zdHlsZUJpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljU3R5bGUmJih0Kz0ic3RhdGljU3R5bGU6IitlLnN0YXRpY1N0eWxlKyIsIiksZS5zdHlsZUJpbmRpbmcmJih0Kz0ic3R5bGU6KCIrZS5zdHlsZUJpbmRpbmcrIiksIiksdH19LGVvPWZ1bmN0aW9uKGUpe3JldHVybihZaT1ZaXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lLFlpLnRleHRDb250ZW50fSx0bz1zKCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiciIpLG5vPXMoImNvbGdyb3VwLGRkLGR0LGxpLG9wdGlvbnMscCx0ZCx0Zm9vdCx0aCx0aGVhZCx0cixzb3VyY2UiKSxybz1zKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsZGV0YWlscyxkaWFsb2csZGl2LGRsLGR0LGZpZWxkc2V0LGZpZ2NhcHRpb24sZmlndXJlLGZvb3Rlcixmb3JtLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWQsaGVhZGVyLGhncm91cCxocixodG1sLGxlZ2VuZCxsaSxtZW51aXRlbSxtZXRhLG9wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0aXRsZSx0cix0cmFjayIpLGlvPS9eXHMqKFteXHMiJzw+XC89XSspKD86XHMqKD0pXHMqKD86IihbXiJdKikiK3wnKFteJ10qKScrfChbXlxzIic9PD5gXSspKSk/Lyxvbz0iW2EtekEtWl9dW1xcd1xcLVxcLl0qIixhbz0iKCg/OiIrb28rIlxcOik/IitvbysiKSIsc289bmV3IFJlZ0V4cCgiXjwiK2FvKSxjbz0vXlxzKihcLz8pPi8sbG89bmV3IFJlZ0V4cCgiXjxcXC8iK2FvKyJbXj5dKj4iKSx1bz0vXjwhRE9DVFlQRSBbXj5dKz4vaSxmbz0vXjwhXC0tLyxwbz0vXjwhXFsvLHZvPSExOyJ4Ii5yZXBsYWNlKC94KC4pPy9nLGZ1bmN0aW9uKGUsdCl7dm89IiI9PT10fSk7dmFyIGhvPXMoInNjcmlwdCxzdHlsZSx0ZXh0YXJlYSIsITApLG1vPXt9LHlvPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImYW1wOyI6IiYiLCImIzEwOyI6IlxuIiwiJiM5OyI6Ilx0In0sZ289LyYoPzpsdHxndHxxdW90fGFtcCk7L2csX289LyYoPzpsdHxndHxxdW90fGFtcHwjMTB8IzkpOy9nLGJvPXMoInByZSx0ZXh0YXJlYSIsITApLCRvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmJvKGUpJiYiXG4iPT09dFswXX07dmFyIHdvLENvLHhvLGtvLEFvLE9vLFNvLFRvLEVvPS9eQHxedi1vbjovLGpvPS9edi18XkB8XjovLE5vPS8oW15dKj8pXHMrKD86aW58b2YpXHMrKFteXSopLyxMbz0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyxJbz0vXlwofFwpJC9nLE1vPS86KC4qKSQvLERvPS9eOnxedi1iaW5kOi8sUG89L1wuW14uXSsvZyxGbz1lKGVvKTtmdW5jdGlvbiBSbyhlLHQsbil7cmV0dXJue3R5cGU6MSx0YWc6ZSxhdHRyc0xpc3Q6dCxhdHRyc01hcDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W2Vbbl0ubmFtZV09ZVtuXS52YWx1ZTtyZXR1cm4gdH0odCkscGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIEhvKGUscCl7d289cC53YXJufHwkcixPbz1wLmlzUHJlVGFnfHxPLFNvPXAubXVzdFVzZVByb3B8fE8sVG89cC5nZXRUYWdOYW1lc3BhY2V8fE8seG89d3IocC5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksa289d3IocC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksQW89d3IocC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLENvPXAuZGVsaW1pdGVyczt2YXIgZCx2LGg9W10saT0hMSE9PXAucHJlc2VydmVXaGl0ZXNwYWNlLG09ITEseT0hMTtmdW5jdGlvbiBnKGUpe2UucHJlJiYobT0hMSksT28oZS50YWcpJiYoeT0hMSk7Zm9yKHZhciB0PTA7dDxBby5sZW5ndGg7dCsrKUFvW3RdKGUscCl9cmV0dXJuIGZ1bmN0aW9uKGksZCl7Zm9yKHZhciBlLHYsaD1bXSxtPWQuZXhwZWN0SFRNTCx5PWQuaXNVbmFyeVRhZ3x8TyxnPWQuY2FuQmVMZWZ0T3BlblRhZ3x8TyxhPTA7aTspe2lmKGU9aSx2JiZobyh2KSl7dmFyIHI9MCxvPXYudG9Mb3dlckNhc2UoKSx0PW1vW29dfHwobW9bb109bmV3IFJlZ0V4cCgiKFtcXHNcXFNdKj8pKDwvIitvKyJbXj5dKj4pIiwiaSIpKSxuPWkucmVwbGFjZSh0LGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcj1uLmxlbmd0aCxobyhvKXx8Im5vc2NyaXB0Ij09PW98fCh0PXQucmVwbGFjZSgvPCFcLS0oW1xzXFNdKj8pLS0+L2csIiQxIikucmVwbGFjZSgvPCFcW0NEQVRBXFsoW1xzXFNdKj8pXV0+L2csIiQxIikpLCRvKG8sdCkmJih0PXQuc2xpY2UoMSkpLGQuY2hhcnMmJmQuY2hhcnModCksIiJ9KTthKz1pLmxlbmd0aC1uLmxlbmd0aCxpPW4sQShvLGEtcixhKX1lbHNle3ZhciBzPWkuaW5kZXhPZigiPCIpO2lmKDA9PT1zKXtpZihmby50ZXN0KGkpKXt2YXIgYz1pLmluZGV4T2YoIi0tXHgzZSIpO2lmKDA8PWMpe2Quc2hvdWxkS2VlcENvbW1lbnQmJmQuY29tbWVudChpLnN1YnN0cmluZyg0LGMpKSxDKGMrMyk7Y29udGludWV9fWlmKHBvLnRlc3QoaSkpe3ZhciBsPWkuaW5kZXhPZigiXT4iKTtpZigwPD1sKXtDKGwrMik7Y29udGludWV9fXZhciB1PWkubWF0Y2godW8pO2lmKHUpe0ModVswXS5sZW5ndGgpO2NvbnRpbnVlfXZhciBmPWkubWF0Y2gobG8pO2lmKGYpe3ZhciBwPWE7QyhmWzBdLmxlbmd0aCksQShmWzFdLHAsYSk7Y29udGludWV9dmFyIF89eCgpO2lmKF8pe2soXyksJG8odixpKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKDA8PXMpe2ZvcigkPWkuc2xpY2Uocyk7IShsby50ZXN0KCQpfHxzby50ZXN0KCQpfHxmby50ZXN0KCQpfHxwby50ZXN0KCQpfHwodz0kLmluZGV4T2YoIjwiLDEpKTwwKTspcys9dywkPWkuc2xpY2Uocyk7Yj1pLnN1YnN0cmluZygwLHMpLEMocyl9czwwJiYoYj1pLGk9IiIpLGQuY2hhcnMmJmImJmQuY2hhcnMoYil9aWYoaT09PWUpe2QuY2hhcnMmJmQuY2hhcnMoaSk7YnJlYWt9fWZ1bmN0aW9uIEMoZSl7YSs9ZSxpPWkuc3Vic3RyaW5nKGUpfWZ1bmN0aW9uIHgoKXt2YXIgZT1pLm1hdGNoKHNvKTtpZihlKXt2YXIgdCxuLHI9e3RhZ05hbWU6ZVsxXSxhdHRyczpbXSxzdGFydDphfTtmb3IoQyhlWzBdLmxlbmd0aCk7ISh0PWkubWF0Y2goY28pKSYmKG49aS5tYXRjaChpbykpOylDKG5bMF0ubGVuZ3RoKSxyLmF0dHJzLnB1c2gobik7aWYodClyZXR1cm4gci51bmFyeVNsYXNoPXRbMV0sQyh0WzBdLmxlbmd0aCksci5lbmQ9YSxyfX1mdW5jdGlvbiBrKGUpe3ZhciB0PWUudGFnTmFtZSxuPWUudW5hcnlTbGFzaDttJiYoInAiPT09diYmcm8odCkmJkEodiksZyh0KSYmdj09PXQmJkEodCkpO2Zvcih2YXIgcixpLG8sYT15KHQpfHwhIW4scz1lLmF0dHJzLmxlbmd0aCxjPW5ldyBBcnJheShzKSxsPTA7bDxzO2wrKyl7dmFyIHU9ZS5hdHRyc1tsXTt2byYmLTE9PT11WzBdLmluZGV4T2YoJyIiJykmJigiIj09PXVbM10mJmRlbGV0ZSB1WzNdLCIiPT09dVs0XSYmZGVsZXRlIHVbNF0sIiI9PT11WzVdJiZkZWxldGUgdVs1XSk7dmFyIGY9dVszXXx8dVs0XXx8dVs1XXx8IiIscD0iYSI9PT10JiYiaHJlZiI9PT11WzFdP2Quc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmQuc2hvdWxkRGVjb2RlTmV3bGluZXM7Y1tsXT17bmFtZTp1WzFdLHZhbHVlOihyPWYsaT1wLG89aT9fbzpnbyxyLnJlcGxhY2UobyxmdW5jdGlvbihlKXtyZXR1cm4geW9bZV19KSl9fWF8fChoLnB1c2goe3RhZzp0LGxvd2VyQ2FzZWRUYWc6dC50b0xvd2VyQ2FzZSgpLGF0dHJzOmN9KSx2PXQpLGQuc3RhcnQmJmQuc3RhcnQodCxjLGEsZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gQShlLHQsbil7dmFyIHIsaTtpZihudWxsPT10JiYodD1hKSxudWxsPT1uJiYobj1hKSxlJiYoaT1lLnRvTG93ZXJDYXNlKCkpLGUpZm9yKHI9aC5sZW5ndGgtMTswPD1yJiZoW3JdLmxvd2VyQ2FzZWRUYWchPT1pO3ItLSk7ZWxzZSByPTA7aWYoMDw9cil7Zm9yKHZhciBvPWgubGVuZ3RoLTE7cjw9bztvLS0pZC5lbmQmJmQuZW5kKGhbb10udGFnLHQsbik7aC5sZW5ndGg9cix2PXImJmhbci0xXS50YWd9ZWxzZSJiciI9PT1pP2Quc3RhcnQmJmQuc3RhcnQoZSxbXSwhMCx0LG4pOiJwIj09PWkmJihkLnN0YXJ0JiZkLnN0YXJ0KGUsW10sITEsdCxuKSxkLmVuZCYmZC5lbmQoZSx0LG4pKX1BKCl9KGUse3dhcm46d28sZXhwZWN0SFRNTDpwLmV4cGVjdEhUTUwsaXNVbmFyeVRhZzpwLmlzVW5hcnlUYWcsY2FuQmVMZWZ0T3BlblRhZzpwLmNhbkJlTGVmdE9wZW5UYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6cC5zaG91bGREZWNvZGVOZXdsaW5lcyxzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWY6cC5zaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYsc2hvdWxkS2VlcENvbW1lbnQ6cC5jb21tZW50cyxzdGFydDpmdW5jdGlvbihlLHQsbil7dmFyIHI9diYmdi5uc3x8VG8oZSk7SyYmInN2ZyI9PT1yJiYodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO0tvLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShKbywiIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0odCkpO3ZhciBpLG8sYSxzLGMsbD1SbyhlLHQsdik7ciYmKGwubnM9ciksInN0eWxlIiE9PShpPWwpLnRhZyYmKCJzY3JpcHQiIT09aS50YWd8fGkuYXR0cnNNYXAudHlwZSYmInRleHQvamF2YXNjcmlwdCIhPT1pLmF0dHJzTWFwLnR5cGUpfHxZKCl8fChsLmZvcmJpZGRlbj0hMCk7Zm9yKHZhciB1PTA7dTxrby5sZW5ndGg7dSsrKWw9a29bdV0obCxwKXx8bDtpZihtfHwobnVsbCE9U3Iobz1sLCJ2LXByZSIpJiYoby5wcmU9ITApLGwucHJlJiYobT0hMCkpLE9vKGwudGFnKSYmKHk9ITApLG0/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hdHRyc0xpc3QubGVuZ3RoO2lmKHQpZm9yKHZhciBuPWUuYXR0cnM9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09e25hbWU6ZS5hdHRyc0xpc3Rbcl0ubmFtZSx2YWx1ZTpKU09OLnN0cmluZ2lmeShlLmF0dHJzTGlzdFtyXS52YWx1ZSl9O2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0obCk6bC5wcm9jZXNzZWR8fChVbyhsKSxmdW5jdGlvbihlKXt2YXIgdD1TcihlLCJ2LWlmIik7aWYodCllLmlmPXQsVm8oZSx7ZXhwOnQsYmxvY2s6ZX0pO2Vsc2V7bnVsbCE9U3IoZSwidi1lbHNlIikmJihlLmVsc2U9ITApO3ZhciBuPVNyKGUsInYtZWxzZS1pZiIpO24mJihlLmVsc2VpZj1uKX19KGwpLG51bGwhPVNyKGE9bCwidi1vbmNlIikmJihhLm9uY2U9ITApLEJvKGwscCkpLGQ/aC5sZW5ndGh8fGQuaWYmJihsLmVsc2VpZnx8bC5lbHNlKSYmVm8oZCx7ZXhwOmwuZWxzZWlmLGJsb2NrOmx9KTpkPWwsdiYmIWwuZm9yYmlkZGVuKWlmKGwuZWxzZWlmfHxsLmVsc2Upcz1sLChjPWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7aWYoMT09PWVbdF0udHlwZSlyZXR1cm4gZVt0XTtlLnBvcCgpfX0odi5jaGlsZHJlbikpJiZjLmlmJiZWbyhjLHtleHA6cy5lbHNlaWYsYmxvY2s6c30pO2Vsc2UgaWYobC5zbG90U2NvcGUpe3YucGxhaW49ITE7dmFyIGY9bC5zbG90VGFyZ2V0fHwnImRlZmF1bHQiJzsodi5zY29wZWRTbG90c3x8KHYuc2NvcGVkU2xvdHM9e30pKVtmXT1sfWVsc2Ugdi5jaGlsZHJlbi5wdXNoKGwpLGwucGFyZW50PXY7bj9nKGwpOih2PWwsaC5wdXNoKGwpKX0sZW5kOmZ1bmN0aW9uKCl7dmFyIGU9aFtoLmxlbmd0aC0xXSx0PWUuY2hpbGRyZW5bZS5jaGlsZHJlbi5sZW5ndGgtMV07dCYmMz09PXQudHlwZSYmIiAiPT09dC50ZXh0JiYheSYmZS5jaGlsZHJlbi5wb3AoKSxoLmxlbmd0aC09MSx2PWhbaC5sZW5ndGgtMV0sZyhlKX0sY2hhcnM6ZnVuY3Rpb24oZSl7aWYodiYmKCFLfHwidGV4dGFyZWEiIT09di50YWd8fHYuYXR0cnNNYXAucGxhY2Vob2xkZXIhPT1lKSl7dmFyIHQsbixyPXYuY2hpbGRyZW47aWYoZT15fHxlLnRyaW0oKT8ic2NyaXB0Ij09PSh0PXYpLnRhZ3x8InN0eWxlIj09PXQudGFnP2U6Rm8oZSk6aSYmci5sZW5ndGg/IiAiOiIiKSFtJiYiICIhPT1lJiYobj1mdW5jdGlvbihlLHQpe3ZhciBuPXQ/WmkodCk6V2k7aWYobi50ZXN0KGUpKXtmb3IodmFyIHIsaSxvLGE9W10scz1bXSxjPW4ubGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXtjPChpPXIuaW5kZXgpJiYocy5wdXNoKG89ZS5zbGljZShjLGkpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKTt2YXIgbD1fcihyWzFdLnRyaW0oKSk7YS5wdXNoKCJfcygiK2wrIikiKSxzLnB1c2goeyJAYmluZGluZyI6bH0pLGM9aStyWzBdLmxlbmd0aH1yZXR1cm4gYzxlLmxlbmd0aCYmKHMucHVzaChvPWUuc2xpY2UoYykpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpLHtleHByZXNzaW9uOmEuam9pbigiKyIpLHRva2VuczpzfX19KGUsQ28pKT9yLnB1c2goe3R5cGU6MixleHByZXNzaW9uOm4uZXhwcmVzc2lvbix0b2tlbnM6bi50b2tlbnMsdGV4dDplfSk6IiAiPT09ZSYmci5sZW5ndGgmJiIgIj09PXJbci5sZW5ndGgtMV0udGV4dHx8ci5wdXNoKHt0eXBlOjMsdGV4dDplfSl9fSxjb21tZW50OmZ1bmN0aW9uKGUpe3YuY2hpbGRyZW4ucHVzaCh7dHlwZTozLHRleHQ6ZSxpc0NvbW1lbnQ6ITB9KX19KSxkfWZ1bmN0aW9uIEJvKGUsdCl7dmFyIG4scixpLG87KHI9T3Iobj1lLCJrZXkiKSkmJihuLmtleT1yKSxlLnBsYWluPSFlLmtleSYmIWUuYXR0cnNMaXN0Lmxlbmd0aCwobz1PcihpPWUsInJlZiIpKSYmKGkucmVmPW8saS5yZWZJbkZvcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZTt0Oyl7aWYodm9pZCAwIT09dC5mb3IpcmV0dXJuITA7dD10LnBhcmVudH1yZXR1cm4hMX0oaSkpLGZ1bmN0aW9uKGUpe2lmKCJzbG90Ij09PWUudGFnKWUuc2xvdE5hbWU9T3IoZSwibmFtZSIpO2Vsc2V7dmFyIHQ7InRlbXBsYXRlIj09PWUudGFnPyh0PVNyKGUsInNjb3BlIiksZS5zbG90U2NvcGU9dHx8U3IoZSwic2xvdC1zY29wZSIpKToodD1TcihlLCJzbG90LXNjb3BlIikpJiYoZS5zbG90U2NvcGU9dCk7dmFyIG49T3IoZSwic2xvdCIpO24mJihlLnNsb3RUYXJnZXQ9JyIiJz09PW4/JyJkZWZhdWx0Iic6biwidGVtcGxhdGUiPT09ZS50YWd8fGUuc2xvdFNjb3BlfHx4cihlLCJzbG90IixuKSl9fShlKSxmdW5jdGlvbihlKXt2YXIgdDsodD1PcihlLCJpcyIpKSYmKGUuY29tcG9uZW50PXQpO251bGwhPVNyKGUsImlubGluZS10ZW1wbGF0ZSIpJiYoZS5pbmxpbmVUZW1wbGF0ZT0hMCl9KGUpO2Zvcih2YXIgYT0wO2E8eG8ubGVuZ3RoO2ErKyllPXhvW2FdKGUsdCl8fGU7IWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzLGM9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPWMubGVuZ3RoO3Q8bjt0KyspaWYocj1pPWNbdF0ubmFtZSxvPWNbdF0udmFsdWUsam8udGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLChhPXpvKHIpKSYmKHI9ci5yZXBsYWNlKFBvLCIiKSksRG8udGVzdChyKSlyPXIucmVwbGFjZShEbywiIiksbz1fcihvKSxzPSExLGEmJihhLnByb3AmJihzPSEwLCJpbm5lckh0bWwiPT09KHI9ZyhyKSkmJihyPSJpbm5lckhUTUwiKSksYS5jYW1lbCYmKHI9ZyhyKSksYS5zeW5jJiZBcihlLCJ1cGRhdGU6IitnKHIpLEVyKG8sIiRldmVudCIpKSksc3x8IWUuY29tcG9uZW50JiZTbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscik/Q3IoZSxyLG8pOnhyKGUscixvKTtlbHNlIGlmKEVvLnRlc3Qocikpcj1yLnJlcGxhY2UoRW8sIiIpLEFyKGUscixvLGEsITEpO2Vsc2V7dmFyIGw9KHI9ci5yZXBsYWNlKGpvLCIiKSkubWF0Y2goTW8pLHU9bCYmbFsxXTt1JiYocj1yLnNsaWNlKDAsLSh1Lmxlbmd0aCsxKSkpLHA9cixkPWksdj1vLGg9dSxtPWEsKChmPWUpLmRpcmVjdGl2ZXN8fChmLmRpcmVjdGl2ZXM9W10pKS5wdXNoKHtuYW1lOnAscmF3TmFtZTpkLHZhbHVlOnYsYXJnOmgsbW9kaWZpZXJzOm19KSxmLnBsYWluPSExfWVsc2UgeHIoZSxyLEpTT04uc3RyaW5naWZ5KG8pKSwhZS5jb21wb25lbnQmJiJtdXRlZCI9PT1yJiZTbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkNyKGUsciwidHJ1ZSIpO3ZhciBmLHAsZCx2LGgsbX0oZSl9ZnVuY3Rpb24gVW8oZSl7dmFyIHQ7aWYodD1TcihlLCJ2LWZvciIpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKE5vKTtpZighdClyZXR1cm47dmFyIG49e307bi5mb3I9dFsyXS50cmltKCk7dmFyIHI9dFsxXS50cmltKCkucmVwbGFjZShJbywiIiksaT1yLm1hdGNoKExvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShMbywiIiksbi5pdGVyYXRvcjE9aVsxXS50cmltKCksaVsyXSYmKG4uaXRlcmF0b3IyPWlbMl0udHJpbSgpKSk6bi5hbGlhcz1yO3JldHVybiBufSh0KTtuJiZtKGUsbil9fWZ1bmN0aW9uIFZvKGUsdCl7ZS5pZkNvbmRpdGlvbnN8fChlLmlmQ29uZGl0aW9ucz1bXSksZS5pZkNvbmRpdGlvbnMucHVzaCh0KX1mdW5jdGlvbiB6byhlKXt2YXIgdD1lLm1hdGNoKFBvKTtpZih0KXt2YXIgbj17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09ITB9KSxufX12YXIgS289L154bWxuczpOU1xkKy8sSm89L15OU1xkKzovO2Z1bmN0aW9uIHFvKGUpe3JldHVybiBSbyhlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgV289W1hpLFFpLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0Ij09PWUudGFnKXt2YXIgbixyPWUuYXR0cnNNYXA7aWYoIXJbInYtbW9kZWwiXSlyZXR1cm47aWYoKHJbIjp0eXBlIl18fHJbInYtYmluZDp0eXBlIl0pJiYobj1PcihlLCJ0eXBlIikpLHIudHlwZXx8bnx8IXJbInYtYmluZCJdfHwobj0iKCIrclsidi1iaW5kIl0rIikudHlwZSIpLG4pe3ZhciBpPVNyKGUsInYtaWYiLCEwKSxvPWk/IiYmKCIraSsiKSI6IiIsYT1udWxsIT1TcihlLCJ2LWVsc2UiLCEwKSxzPVNyKGUsInYtZWxzZS1pZiIsITApLGM9cW8oZSk7VW8oYyksa3IoYywidHlwZSIsImNoZWNrYm94IiksQm8oYyx0KSxjLnByb2Nlc3NlZD0hMCxjLmlmPSIoIituKyIpPT09J2NoZWNrYm94JyIrbyxWbyhjLHtleHA6Yy5pZixibG9jazpjfSk7dmFyIGw9cW8oZSk7U3IobCwidi1mb3IiLCEwKSxrcihsLCJ0eXBlIiwicmFkaW8iKSxCbyhsLHQpLFZvKGMse2V4cDoiKCIrbisiKT09PSdyYWRpbyciK28sYmxvY2s6bH0pO3ZhciB1PXFvKGUpO3JldHVybiBTcih1LCJ2LWZvciIsITApLGtyKHUsIjp0eXBlIixuKSxCbyh1LHQpLFZvKGMse2V4cDppLGJsb2NrOnV9KSxhP2MuZWxzZT0hMDpzJiYoYy5lbHNlaWY9cyksY319fX1dO3ZhciBHbyxabyxYbyxZbz17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOldvLGRpcmVjdGl2ZXM6e21vZGVsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLGMsbCx1LGYscCxkLHYsaCxtLHksZyxfPXQudmFsdWUsYj10Lm1vZGlmaWVycywkPWUudGFnLHc9ZS5hdHRyc01hcC50eXBlO2lmKGUuY29tcG9uZW50KXJldHVybiBUcihlLF8sYiksITE7aWYoInNlbGVjdCI9PT0kKWg9ZSxtPV8sZz0oZz0ndmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSAiX3ZhbHVlIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlO3JldHVybiAnKygoeT1iKSYmeS5udW1iZXI/Il9uKHZhbCkiOiJ2YWwiKSsifSk7IikrIiAiK0VyKG0sIiRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSIpLEFyKGgsImNoYW5nZSIsZyxudWxsLCEwKTtlbHNlIGlmKCJpbnB1dCI9PT0kJiYiY2hlY2tib3giPT09dyljPWUsbD1fLGY9KHU9YikmJnUubnVtYmVyLHA9T3IoYywidmFsdWUiKXx8Im51bGwiLGQ9T3IoYywidHJ1ZS12YWx1ZSIpfHwidHJ1ZSIsdj1PcihjLCJmYWxzZS12YWx1ZSIpfHwiZmFsc2UiLENyKGMsImNoZWNrZWQiLCJBcnJheS5pc0FycmF5KCIrbCsiKT9faSgiK2wrIiwiK3ArIik+LTEiKygidHJ1ZSI9PT1kPyI6KCIrbCsiKSI6IjpfcSgiK2wrIiwiK2QrIikiKSksQXIoYywiY2hhbmdlIiwidmFyICQkYT0iK2wrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oIitkKyIpOigiK3YrIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIrKGY/Il9uKCIrcCsiKSI6cCkrIiwkJGk9X2koJCRhLCQkdik7aWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKCIrRXIobCwiJCRhLmNvbmNhdChbJCR2XSkiKSsiKX1lbHNleyQkaT4tMSYmKCIrRXIobCwiJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkiKSsiKX19ZWxzZXsiK0VyKGwsIiQkYyIpKyJ9IixudWxsLCEwKTtlbHNlIGlmKCJpbnB1dCI9PT0kJiYicmFkaW8iPT09dylyPWUsaT1fLGE9KG89YikmJm8ubnVtYmVyLHM9T3IociwidmFsdWUiKXx8Im51bGwiLENyKHIsImNoZWNrZWQiLCJfcSgiK2krIiwiKyhzPWE/Il9uKCIrcysiKSI6cykrIikiKSxBcihyLCJjaGFuZ2UiLEVyKGkscyksbnVsbCwhMCk7ZWxzZSBpZigiaW5wdXQiPT09JHx8InRleHRhcmVhIj09PSQpIWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50cmltLGM9IW8mJiJyYW5nZSIhPT1yLGw9bz8iY2hhbmdlIjoicmFuZ2UiPT09cj9QcjoiaW5wdXQiLHU9IiRldmVudC50YXJnZXQudmFsdWUiO3MmJih1PSIkZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSIpLGEmJih1PSJfbigiK3UrIikiKTt2YXIgZj1Fcih0LHUpO2MmJihmPSJpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47IitmKSxDcihlLCJ2YWx1ZSIsIigiK3QrIikiKSxBcihlLGwsZixudWxsLCEwKSwoc3x8YSkmJkFyKGUsImJsdXIiLCIkZm9yY2VVcGRhdGUoKSIpfShlLF8sYik7ZWxzZSBpZighai5pc1Jlc2VydmVkVGFnKCQpKXJldHVybiBUcihlLF8sYiksITE7cmV0dXJuITB9LHRleHQ6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZDcihlLCJ0ZXh0Q29udGVudCIsIl9zKCIrdC52YWx1ZSsiKSIpfSxodG1sOmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmQ3IoZSwiaW5uZXJIVE1MIiwiX3MoIit0LnZhbHVlKyIpIil9fSxpc1ByZVRhZzpmdW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LGlzVW5hcnlUYWc6dG8sbXVzdFVzZVByb3A6U24sY2FuQmVMZWZ0T3BlblRhZzpubyxpc1Jlc2VydmVkVGFnOlVuLGdldFRhZ05hbWVzcGFjZTpWbixzdGF0aWNLZXlzOihHbz1XbyxHby5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQodC5zdGF0aWNLZXlzfHxbXSl9LFtdKS5qb2luKCIsIikpfSxRbz1lKGZ1bmN0aW9uKGUpe3JldHVybiBzKCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzIisoZT8iLCIrZToiIikpfSk7ZnVuY3Rpb24gZWEoZSx0KXtlJiYoWm89UW8odC5zdGF0aWNLZXlzfHwiIiksWG89dC5pc1Jlc2VydmVkVGFnfHxPLGZ1bmN0aW9uIGUodCl7dC5zdGF0aWM9ZnVuY3Rpb24oZSl7aWYoMj09PWUudHlwZSlyZXR1cm4hMTtpZigzPT09ZS50eXBlKXJldHVybiEwO3JldHVybiEoIWUucHJlJiYoZS5oYXNCaW5kaW5nc3x8ZS5pZnx8ZS5mb3J8fGMoZS50YWcpfHwhWG8oZS50YWcpfHxmdW5jdGlvbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoInRlbXBsYXRlIiE9PShlPWUucGFyZW50KS50YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9KGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoWm8pKSl9KHQpO2lmKDE9PT10LnR5cGUpe2lmKCFYbyh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXt2YXIgaT10LmNoaWxkcmVuW25dO2UoaSksaS5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyl7dmFyIHM9dC5pZkNvbmRpdGlvbnNbb10uYmxvY2s7ZShzKSxzLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fShlKSxmdW5jdGlvbiBlKHQsbil7aWYoMT09PXQudHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJbkZvcj1uKSx0LnN0YXRpYyYmdC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5ndGh8fDMhPT10LmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7aWYodC5zdGF0aWNSb290PSExLHQuY2hpbGRyZW4pZm9yKHZhciByPTAsaT10LmNoaWxkcmVuLmxlbmd0aDtyPGk7cisrKWUodC5jaGlsZHJlbltyXSxufHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKWUodC5pZkNvbmRpdGlvbnNbb10uYmxvY2ssbil9fShlLCExKSl9dmFyIHRhPS9eKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVuY3Rpb25ccypcKC8sbmE9L15bQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0qfFxbJ1teJ10qPyddfFxbIlteIl0qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSokLyxyYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxpYT17ZXNjOiJFc2NhcGUiLHRhYjoiVGFiIixlbnRlcjoiRW50ZXIiLHNwYWNlOiIgIix1cDpbIlVwIiwiQXJyb3dVcCJdLGxlZnQ6WyJMZWZ0IiwiQXJyb3dMZWZ0Il0scmlnaHQ6WyJSaWdodCIsIkFycm93UmlnaHQiXSxkb3duOlsiRG93biIsIkFycm93RG93biJdLGRlbGV0ZTpbIkJhY2tzcGFjZSIsIkRlbGV0ZSJdfSxvYT1mdW5jdGlvbihlKXtyZXR1cm4iaWYoIitlKyIpcmV0dXJuIG51bGw7In0sYWE9e3N0b3A6IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyIsc2VsZjpvYSgiJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQiKSxjdHJsOm9hKCIhJGV2ZW50LmN0cmxLZXkiKSxzaGlmdDpvYSgiISRldmVudC5zaGlmdEtleSIpLGFsdDpvYSgiISRldmVudC5hbHRLZXkiKSxtZXRhOm9hKCIhJGV2ZW50Lm1ldGFLZXkiKSxsZWZ0Om9hKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMCIpLG1pZGRsZTpvYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDEiKSxyaWdodDpvYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDIiKX07ZnVuY3Rpb24gc2EoZSx0LG4pe3ZhciByPXQ/Im5hdGl2ZU9uOnsiOiJvbjp7Ijtmb3IodmFyIGkgaW4gZSlyKz0nIicraSsnIjonK2NhKGksZVtpXSkrIiwiO3JldHVybiByLnNsaWNlKDAsLTEpKyJ9In1mdW5jdGlvbiBjYSh0LGUpe2lmKCFlKXJldHVybiJmdW5jdGlvbigpe30iO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIlsiK2UubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjYSh0LGUpfSkuam9pbigiLCIpKyJdIjt2YXIgbj1uYS50ZXN0KGUudmFsdWUpLHI9dGEudGVzdChlLnZhbHVlKTtpZihlLm1vZGlmaWVycyl7dmFyIGk9IiIsbz0iIixhPVtdO2Zvcih2YXIgcyBpbiBlLm1vZGlmaWVycylpZihhYVtzXSlvKz1hYVtzXSxyYVtzXSYmYS5wdXNoKHMpO2Vsc2UgaWYoImV4YWN0Ij09PXMpe3ZhciBjPWUubW9kaWZpZXJzO28rPW9hKFsiY3RybCIsInNoaWZ0IiwiYWx0IiwibWV0YSJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iJGV2ZW50LiIrZSsiS2V5In0pLmpvaW4oInx8IikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPSJpZighKCdidXR0b24nIGluICRldmVudCkmJiIrYS5tYXAobGEpLmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsiKSxvJiYoaSs9byksImZ1bmN0aW9uKCRldmVudCl7IitpKyhuPyJyZXR1cm4gIitlLnZhbHVlKyIoJGV2ZW50KSI6cj8icmV0dXJuICgiK2UudmFsdWUrIikoJGV2ZW50KSI6ZS52YWx1ZSkrIn0ifXJldHVybiBufHxyP2UudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7IitlLnZhbHVlKyJ9In1mdW5jdGlvbiBsYShlKXt2YXIgdD1wYXJzZUludChlLDEwKTtpZih0KXJldHVybiIkZXZlbnQua2V5Q29kZSE9PSIrdDt2YXIgbj1yYVtlXSxyPWlhW2VdO3JldHVybiJfaygkZXZlbnQua2V5Q29kZSwiK0pTT04uc3RyaW5naWZ5KGUpKyIsIitKU09OLnN0cmluZ2lmeShuKSsiLCRldmVudC5rZXksIitKU09OLnN0cmluZ2lmeShyKSsiKSJ9dmFyIHVhPXtvbjpmdW5jdGlvbihlLHQpe2Uud3JhcExpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4iX2coIitlKyIsIit0LnZhbHVlKyIpIn19LGJpbmQ6ZnVuY3Rpb24odCxuKXt0LndyYXBEYXRhPWZ1bmN0aW9uKGUpe3JldHVybiJfYigiK2UrIiwnIit0LnRhZysiJywiK24udmFsdWUrIiwiKyhuLm1vZGlmaWVycyYmbi5tb2RpZmllcnMucHJvcD8idHJ1ZSI6ImZhbHNlIikrKG4ubW9kaWZpZXJzJiZuLm1vZGlmaWVycy5zeW5jPyIsdHJ1ZSI6IiIpKyIpIn19LGNsb2FrOiR9LGZhPWZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMud2Fybj1lLndhcm58fCRyLHRoaXMudHJhbnNmb3Jtcz13cihlLm1vZHVsZXMsInRyYW5zZm9ybUNvZGUiKSx0aGlzLmRhdGFHZW5GbnM9d3IoZS5tb2R1bGVzLCJnZW5EYXRhIiksdGhpcy5kaXJlY3RpdmVzPW0obSh7fSx1YSksZS5kaXJlY3RpdmVzKTt2YXIgdD1lLmlzUmVzZXJ2ZWRUYWd8fE87dGhpcy5tYXliZUNvbXBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4hdChlLnRhZyl9LHRoaXMub25jZUlkPTAsdGhpcy5zdGF0aWNSZW5kZXJGbnM9W119O2Z1bmN0aW9uIHBhKGUsdCl7dmFyIG49bmV3IGZhKHQpO3JldHVybntyZW5kZXI6IndpdGgodGhpcyl7cmV0dXJuICIrKGU/ZGEoZSxuKTonX2MoImRpdiIpJykrIn0iLHN0YXRpY1JlbmRlckZuczpuLnN0YXRpY1JlbmRlckZuc319ZnVuY3Rpb24gZGEoZSx0KXtpZihlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gdmEoZSx0KTtpZihlLm9uY2UmJiFlLm9uY2VQcm9jZXNzZWQpcmV0dXJuIGhhKGUsdCk7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gZj10LHY9KHU9ZSkuZm9yLGg9dS5hbGlhcyxtPXUuaXRlcmF0b3IxPyIsIit1Lml0ZXJhdG9yMToiIix5PXUuaXRlcmF0b3IyPyIsIit1Lml0ZXJhdG9yMjoiIix1LmZvclByb2Nlc3NlZD0hMCwoZHx8Il9sIikrIigoIit2KyIpLGZ1bmN0aW9uKCIraCttK3krIil7cmV0dXJuICIrKHB8fGRhKSh1LGYpKyJ9KSI7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIG1hKGUsdCk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLHI9X2EoZSx0KSxpPSJfdCgiK24rKHI/IiwiK3I6IiIpLG89ZS5hdHRycyYmInsiK2UuYXR0cnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnKGUubmFtZSkrIjoiK2UudmFsdWV9KS5qb2luKCIsIikrIn0iLGE9ZS5hdHRyc01hcFsidi1iaW5kIl07IW8mJiFhfHxyfHwoaSs9IixudWxsIik7byYmKGkrPSIsIitvKTthJiYoaSs9KG8/IiI6IixudWxsIikrIiwiK2EpO3JldHVybiBpKyIpIn0oZSx0KTt2YXIgbjtpZihlLmNvbXBvbmVudClhPWUuY29tcG9uZW50LGM9dCxsPShzPWUpLmlubGluZVRlbXBsYXRlP251bGw6X2EocyxjLCEwKSxuPSJfYygiK2ErIiwiK3lhKHMsYykrKGw/IiwiK2w6IiIpKyIpIjtlbHNle3ZhciByPWUucGxhaW4/dm9pZCAwOnlhKGUsdCksaT1lLmlubGluZVRlbXBsYXRlP251bGw6X2EoZSx0LCEwKTtuPSJfYygnIitlLnRhZysiJyIrKHI/IiwiK3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBfYShlLHQpfHwidm9pZCAwIjt2YXIgYSxzLGMsbCx1LGYscCxkLHYsaCxtLHl9ZnVuY3Rpb24gdmEoZSx0KXtyZXR1cm4gZS5zdGF0aWNQcm9jZXNzZWQ9ITAsdC5zdGF0aWNSZW5kZXJGbnMucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitkYShlLHQpKyJ9IiksIl9tKCIrKHQuc3RhdGljUmVuZGVyRm5zLmxlbmd0aC0xKSsoZS5zdGF0aWNJbkZvcj8iLHRydWUiOiIiKSsiKSJ9ZnVuY3Rpb24gaGEoZSx0KXtpZihlLm9uY2VQcm9jZXNzZWQ9ITAsZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIG1hKGUsdCk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciBuPSIiLHI9ZS5wYXJlbnQ7cjspe2lmKHIuZm9yKXtuPXIua2V5O2JyZWFrfXI9ci5wYXJlbnR9cmV0dXJuIG4/Il9vKCIrZGEoZSx0KSsiLCIrdC5vbmNlSWQrKysiLCIrbisiKSI6ZGEoZSx0KX1yZXR1cm4gdmEoZSx0KX1mdW5jdGlvbiBtYShlLHQsbixyKXtyZXR1cm4gZS5pZlByb2Nlc3NlZD0hMCxmdW5jdGlvbiBlKHQsbixyLGkpe2lmKCF0Lmxlbmd0aClyZXR1cm4gaXx8Il9lKCkiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/IigiK28uZXhwKyIpPyIrYShvLmJsb2NrKSsiOiIrZSh0LG4scixpKToiIithKG8uYmxvY2spO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIHI/cihlLG4pOmUub25jZT9oYShlLG4pOmRhKGUsbil9fShlLmlmQ29uZGl0aW9ucy5zbGljZSgpLHQsbixyKX1mdW5jdGlvbiB5YShlLHQpe3ZhciBuLHIsaT0ieyIsbz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgbD10LmRpcmVjdGl2ZXNbby5uYW1lXTtsJiYoYT0hIWwoZSxvLHQud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFtZToiJytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8nLGFyZzoiJytvLmFyZysnIic6IiIpKyhvLm1vZGlmaWVycz8iLG1vZGlmaWVyczoiK0pTT04uc3RyaW5naWZ5KG8ubW9kaWZpZXJzKToiIikrIn0sIil9aWYoYylyZXR1cm4gcy5zbGljZSgwLC0xKSsiXSJ9KGUsdCk7byYmKGkrPW8rIiwiKSxlLmtleSYmKGkrPSJrZXk6IitlLmtleSsiLCIpLGUucmVmJiYoaSs9InJlZjoiK2UucmVmKyIsIiksZS5yZWZJbkZvciYmKGkrPSJyZWZJbkZvcjp0cnVlLCIpLGUucHJlJiYoaSs9InByZTp0cnVlLCIpLGUuY29tcG9uZW50JiYoaSs9J3RhZzoiJytlLnRhZysnIiwnKTtmb3IodmFyIGE9MDthPHQuZGF0YUdlbkZucy5sZW5ndGg7YSsrKWkrPXQuZGF0YUdlbkZuc1thXShlKTtpZihlLmF0dHJzJiYoaSs9ImF0dHJzOnsiK3dhKGUuYXR0cnMpKyJ9LCIpLGUucHJvcHMmJihpKz0iZG9tUHJvcHM6eyIrd2EoZS5wcm9wcykrIn0sIiksZS5ldmVudHMmJihpKz1zYShlLmV2ZW50cywhMSx0Lndhcm4pKyIsIiksZS5uYXRpdmVFdmVudHMmJihpKz1zYShlLm5hdGl2ZUV2ZW50cywhMCx0Lndhcm4pKyIsIiksZS5zbG90VGFyZ2V0JiYhZS5zbG90U2NvcGUmJihpKz0ic2xvdDoiK2Uuc2xvdFRhcmdldCsiLCIpLGUuc2NvcGVkU2xvdHMmJihpKz0obj1lLnNjb3BlZFNsb3RzLHI9dCwic2NvcGVkU2xvdHM6X3UoWyIrT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnYShlLG5bZV0scil9KS5qb2luKCIsIikrIl0pLCIpKSxlLm1vZGVsJiYoaSs9Im1vZGVsOnt2YWx1ZToiK2UubW9kZWwudmFsdWUrIixjYWxsYmFjazoiK2UubW9kZWwuY2FsbGJhY2srIixleHByZXNzaW9uOiIrZS5tb2RlbC5leHByZXNzaW9uKyJ9LCIpLGUuaW5saW5lVGVtcGxhdGUpe3ZhciBzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlblswXTtpZigxPT09bi50eXBlKXt2YXIgcj1wYShuLHQub3B0aW9ucyk7cmV0dXJuImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXsiK3IucmVuZGVyKyJ9LHN0YXRpY1JlbmRlckZuczpbIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uKCl7IitlKyJ9In0pLmpvaW4oIiwiKSsiXX0ifX0oZSx0KTtzJiYoaSs9cysiLCIpfXJldHVybiBpPWkucmVwbGFjZSgvLCQvLCIiKSsifSIsZS53cmFwRGF0YSYmKGk9ZS53cmFwRGF0YShpKSksZS53cmFwTGlzdGVuZXJzJiYoaT1lLndyYXBMaXN0ZW5lcnMoaSkpLGl9ZnVuY3Rpb24gZ2EoZSx0LG4pe3JldHVybiB0LmZvciYmIXQuZm9yUHJvY2Vzc2VkPyhyPWUsbz1uLGE9KGk9dCkuZm9yLHM9aS5hbGlhcyxjPWkuaXRlcmF0b3IxPyIsIitpLml0ZXJhdG9yMToiIixsPWkuaXRlcmF0b3IyPyIsIitpLml0ZXJhdG9yMjoiIixpLmZvclByb2Nlc3NlZD0hMCwiX2woKCIrYSsiKSxmdW5jdGlvbigiK3MrYytsKyIpe3JldHVybiAiK2dhKHIsaSxvKSsifSkiKToie2tleToiK2UrIixmbjoiKygiZnVuY3Rpb24oIitTdHJpbmcodC5zbG90U2NvcGUpKyIpe3JldHVybiAiKygidGVtcGxhdGUiPT09dC50YWc/dC5pZj90LmlmKyI/IisoX2EodCxuKXx8InVuZGVmaW5lZCIpKyI6dW5kZWZpbmVkIjpfYSh0LG4pfHwidW5kZWZpbmVkIjpkYSh0LG4pKSsifSIpKyJ9Ijt2YXIgcixpLG8sYSxzLGMsbH1mdW5jdGlvbiBfYShlLHQsbixyLGkpe3ZhciBvPWUuY2hpbGRyZW47aWYoby5sZW5ndGgpe3ZhciBhPW9bMF07aWYoMT09PW8ubGVuZ3RoJiZhLmZvciYmInRlbXBsYXRlIiE9PWEudGFnJiYic2xvdCIhPT1hLnRhZylyZXR1cm4ocnx8ZGEpKGEsdCk7dmFyIHM9bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpZigxPT09aS50eXBlKXtpZihiYShpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGJhKGUuYmxvY2spfSkpe249MjticmVha30odChpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5ibG9jayl9KSkmJihuPTEpfX1yZXR1cm4gbn0obyx0Lm1heWJlQ29tcG9uZW50KTowLGM9aXx8JGE7cmV0dXJuIlsiK28ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjKGUsdCl9KS5qb2luKCIsIikrIl0iKyhzPyIsIitzOiIiKX19ZnVuY3Rpb24gYmEoZSl7cmV0dXJuIHZvaWQgMCE9PWUuZm9yfHwidGVtcGxhdGUiPT09ZS50YWd8fCJzbG90Ij09PWUudGFnfWZ1bmN0aW9uICRhKGUsdCl7cmV0dXJuIDE9PT1lLnR5cGU/ZGEoZSx0KTozPT09ZS50eXBlJiZlLmlzQ29tbWVudD8ocj1lLCJfZSgiK0pTT04uc3RyaW5naWZ5KHIudGV4dCkrIikiKToiX3YoIisoMj09PShuPWUpLnR5cGU/bi5leHByZXNzaW9uOkNhKEpTT04uc3RyaW5naWZ5KG4udGV4dCkpKSsiKSI7dmFyIG4scn1mdW5jdGlvbiB3YShlKXtmb3IodmFyIHQ9IiIsbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3QrPSciJytyLm5hbWUrJyI6JytDYShyLnZhbHVlKSsiLCJ9cmV0dXJuIHQuc2xpY2UoMCwtMSl9ZnVuY3Rpb24gQ2EoZSl7cmV0dXJuIGUucmVwbGFjZSgvXHUyMDI4L2csIlxcdTIwMjgiKS5yZXBsYWNlKC9cdTIwMjkvZywiXFx1MjAyOSIpfW5ldyBSZWdFeHAoIlxcYiIrImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMiLnNwbGl0KCIsIikuam9pbigiXFxifFxcYiIpKyJcXGIiKSxuZXcgUmVnRXhwKCJcXGIiKyJkZWxldGUsdHlwZW9mLHZvaWQiLnNwbGl0KCIsIikuam9pbigiXFxzKlxcKFteXFwpXSpcXCl8XFxiIikrIlxccypcXChbXlxcKV0qXFwpIik7ZnVuY3Rpb24geGEodCxuKXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbih0KX1jYXRjaChlKXtyZXR1cm4gbi5wdXNoKHtlcnI6ZSxjb2RlOnR9KSwkfX12YXIga2EsQWEsT2E9KGthPWZ1bmN0aW9uKGUsdCl7dmFyIG49SG8oZS50cmltKCksdCk7ITEhPT10Lm9wdGltaXplJiZlYShuLHQpO3ZhciByPXBhKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJlbmRlcixzdGF0aWNSZW5kZXJGbnM6ci5zdGF0aWNSZW5kZXJGbnN9fSxmdW5jdGlvbihzKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShzKSxyPVtdLGk9W107aWYobi53YXJuPWZ1bmN0aW9uKGUsdCl7KHQ/aTpyKS5wdXNoKGUpfSx0KWZvcih2YXIgbyBpbiB0Lm1vZHVsZXMmJihuLm1vZHVsZXM9KHMubW9kdWxlc3x8W10pLmNvbmNhdCh0Lm1vZHVsZXMpKSx0LmRpcmVjdGl2ZXMmJihuLmRpcmVjdGl2ZXM9bShPYmplY3QuY3JlYXRlKHMuZGlyZWN0aXZlc3x8bnVsbCksdC5kaXJlY3RpdmVzKSksdCkibW9kdWxlcyIhPT1vJiYiZGlyZWN0aXZlcyIhPT1vJiYobltvXT10W29dKTt2YXIgYT1rYShlLG4pO3JldHVybiBhLmVycm9ycz1yLGEudGlwcz1pLGF9cmV0dXJue2NvbXBpbGU6ZSxjb21waWxlVG9GdW5jdGlvbnM6KGM9ZSxsPU9iamVjdC5jcmVhdGUobnVsbCksZnVuY3Rpb24oZSx0LG4peyh0PW0oe30sdCkpLndhcm4sZGVsZXRlIHQud2Fybjt2YXIgcj10LmRlbGltaXRlcnM/U3RyaW5nKHQuZGVsaW1pdGVycykrZTplO2lmKGxbcl0pcmV0dXJuIGxbcl07dmFyIGk9YyhlLHQpLG89e30sYT1bXTtyZXR1cm4gby5yZW5kZXI9eGEoaS5yZW5kZXIsYSksby5zdGF0aWNSZW5kZXJGbnM9aS5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB4YShlLGEpfSksbFtyXT1vfSl9O3ZhciBjLGx9KShZbykuY29tcGlsZVRvRnVuY3Rpb25zO2Z1bmN0aW9uIFNhKGUpe3JldHVybihBYT1BYXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lPyc8YSBocmVmPSJcbiIvPic6JzxkaXYgYT0iXG4iLz4nLDA8QWEuaW5uZXJIVE1MLmluZGV4T2YoIiYjMTA7Iil9dmFyIFRhPSEhQiYmU2EoITEpLEVhPSEhQiYmU2EoITApLGphPWUoZnVuY3Rpb24oZSl7dmFyIHQ9Sm4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksTmE9aG4ucHJvdG90eXBlLiRtb3VudDtyZXR1cm4gaG4ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKChlPWUmJkpuKGUpKT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPWphKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXt7aWYoZS5vdXRlckhUTUwpcmV0dXJuIGUub3V0ZXJIVE1MO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmFwcGVuZENoaWxkKGUuY2xvbmVOb2RlKCEwKSksdC5pbm5lckhUTUx9fShlKSk7aWYocil7dmFyIGk9T2Eocix7c2hvdWxkRGVjb2RlTmV3bGluZXM6VGEsc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOkVhLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBOYS5jYWxsKHRoaXMsZSx0KX0saG4uY29tcGlsZT1PYSxobn0pOw=='></script>
<style id='style_magazine_css'>
body{
overflow:hidden;
// background-color:#fcfcfc;
// background-color:darkslategray;
background-color:wheat;
background-color:#FFFDDA;
margin:0;
padding:0;
}
.magazine-viewport .container{
position:absolute;
top:50%;
left:50%;
width:922px;
height:600px;
margin:auto;
}
.magazine-viewport .magazine{
width:922px;
height:600px;
left:-461px;
top:-300px;
}
.magazine-viewport .page{
width:461px;
height:600px;
background-color:white;
background-repeat:no-repeat;
background-size:100% 100%;
}
.magazine-viewport .zoomer .region{
display:none;
}
.magazine .region{
position:absolute;
overflow:hidden;
background:#0066FF;
opacity:0.2;
-webkit-border-radius:10px;
-moz-border-radius:10px;
-ms-border-radius:10px;
-o-border-radius:10px;
border-radius:10px;
cursor:pointer;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
filter: alpha(opacity=20);
}
.magazine .region:hover{
opacity:0.5;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
}
.magazine .region.zoom{
opacity:0.01;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
filter: alpha(opacity=1);
}
.magazine .region.zoom:hover{
opacity:0.2;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
filter: alpha(opacity=20);
}
.magazine .page{
-webkit-box-shadow:0 0 20px rgba(0,0,0,0.2);
-moz-box-shadow:0 0 20px rgba(0,0,0,0.2);
-ms-box-shadow:0 0 20px rgba(0,0,0,0.2);
-o-box-shadow:0 0 20px rgba(0,0,0,0.2);
box-shadow:0 0 20px rgba(0,0,0,0.2);
}
.magazine-viewport .page img{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
margin:0;
}
.magazine .even .gradient{
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:-webkit-gradient(linear, left top, right top, color-stop(0.95, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.2)));
background-image:-webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
background-image:-moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
background-image:-ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
background-image:-o-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
background-image:linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.2) 100%);
}
.magazine .odd .gradient{
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:-webkit-gradient(linear, right top, left top, color-stop(0.95, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.15)));
background-image:-webkit-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
background-image:-moz-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
background-image:-ms-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
background-image:-o-linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
background-image:linear-gradient(right, rgba(0,0,0,0) 95%, rgba(0,0,0,0.15) 100%);
}
.magazine-viewport .zoom-in .even .gradient,
.magazine-viewport .zoom-in .odd .gradient{
display:none;
}
.magazine-viewport .loader{
background-image:url(../pics/loader.gif);
width:22px;
height:22px;
position:absolute;
top:280px;
left:219px;
}
.magazine-viewport .shadow{
-webkit-transition: -webkit-box-shadow 0.5s;
-moz-transition: -moz-box-shadow 0.5s;
-o-transition: -webkit-box-shadow 0.5s;
-ms-transition: -ms-box-shadow 0.5s;
-webkit-box-shadow:0 0 20px #ccc;
-moz-box-shadow:0 0 20px #ccc;
-o-box-shadow:0 0 20px #ccc;
-ms-box-shadow:0 0 20px #ccc;
box-shadow:0 0 20px #ccc;
}
.magazine-viewport .next-button,
.magazine-viewport .previous-button{
width:22px;
height:600px;
position:absolute;
top:0;
}
.magazine-viewport .next-button{
right:-22px;
-webkit-border-radius:0 15px 15px 0;
-moz-border-radius:0 15px 15px 0;
-ms-border-radius:0 15px 15px 0;
-o-border-radius:0 15px 15px 0;
border-radius:0 15px 15px 0;
}
.magazine-viewport .previous-button{
left:-22px;
-webkit-border-radius:15px 0 0 15px;
-moz-border-radius:15px 0 0 15px;
-ms-border-radius:15px 0 0 15px;
-o-border-radius:15px 0 0 15px;
border-radius:15px 0 0 15px;
}
.magazine-viewport .previous-button-hover,
.magazine-viewport .next-button-hover{
background-color:rgba(0,0,0, 0.2);
}
.magazine-viewport .previous-button-hover,
.magazine-viewport .previous-button-down{
background-image:url(../pics/arrows.png);
background-position:-4px 284px;
background-repeat:no-repeat;
}
.magazine-viewport .previous-button-down,
.magazine-viewport .next-button-down{
background-color:rgba(0,0,0, 0.4);
}
.magazine-viewport .next-button-hover,
.magazine-viewport .next-button-down{
background-image:url(../pics/arrows.png);
background-position:-38px 284px;
background-repeat:no-repeat;
}
.magazine-viewport .zoom-in .next-button,
.magazine-viewport .zoom-in .previous-button{
display:none;
}
.animated{
-webkit-transition:margin-left 0.5s;
-moz-transition:margin-left 0.5s;
-ms-transition:margin-left 0.5s;
-o-transition:margin-left 0.5s;
transition:margin-left 0.5s;
}
.thumbnails{
// position:absolute;
bottom:0;
left:0;
width:100%;
height:140px;
z-index:1;
}
.thumbnails > div{
width:1050px;
height:100px;
margin:20px auto;
}
.thumbnails ul{
margin:0;
padding:0;
text-align:center;
-webkit-transform:scale3d(0.5, 0.5, 1);
-moz-transform:scale3d(0.5, 0.5, 1);
-o-transform:scale3d(0.5, 0.5, 1);
-ms-transform:scale3d(0.5, 0.5, 1);
transform:scale3d(0.5, 0.5, 1);
-webkit-transition:-webkit-transform ease-in-out 100ms;
-moz-transition:-moz-transform ease-in-out 100ms;
-ms-transition:-ms-transform ease-in-out 100ms;
-o-transition:-o-transform ease-in-out 100ms;
transition:transform ease-in-out 100ms;
}
.thumbanils-touch ul{
-webkit-transform:none;
-moz-transform:none;
-o-transform:none;
-ms-transform:none;
transform:none;
}
.thumbnails-hover ul{
-webkit-transform:scale3d(0.6, 0.6, 1);
-moz-transform:scale3d(0.6, 0.6, 1);
-o-transform:scale3d(0.6, 0.6, 1);
-ms-transform:scale3d(0.6, 0.6, 1);
transform:scale3d(0.6, 0.6, 1);
}
.thumbnails li{
list-style:none;
display:inline-block;
margin:0 5px;
-webkit-box-shadow:0 0 10px #ccc;
-moz-box-shadow:0 0 10px #ccc;
-ms-box-shadow:0 0 10px #ccc;
-o-box-shadow:0 0 10px #ccc;
box-shadow:0 0 10px #ccc;
-webkit-transition:-webkit-transform 60ms;
-moz-transition:-webkit-transform 60ms;
-o-transition:-webkit-transform 60ms;
-ms-transition:-webkit-transform 60ms;
transition:-webkit-transform 60ms;
}
.thumbnails li span{
display:none;
}
.thumbnails .current{
-webkit-box-shadow:0 0 10px red;
-moz-box-shadow:0 0 10px red;
-ms-box-shadow:0 0 10px red;
-o-box-shadow:0 0 10px red;
box-shadow:0 0 10px red;
}
.thumbnails .thumb-hover{
-webkit-transform:scale3d(1.3, 1.3, 1);
-moz-transform:scale3d(1.3, 1.3, 1);
-o-transform:scale3d(1.3, 1.3, 1);
-ms-transform:scale3d(1.3, 1.3, 1);
transform:scale3d(1.3, 1.3, 1);
-webkit-box-shadow:0 0 10px #666;
-moz-box-shadow:0 0 10px #666;
-ms-box-shadow:0 0 10px #666;
-o-box-shadow:0 0 10px #666;
box-shadow:0 0 10px #666;
}
.thumbanils-touch .thumb-hover{
-webkit-transform:none;
-moz-transform:none;
-o-transform:none;
-ms-transform:none;
transform:none;
}
.thumbnails .thumb-hover span{
position:absolute;
bottom:-30px;
left:0;
z-index:2;
width:100%;
height:30px;
font:bold 15px arial;
line-height:30px;
color:#666;
display:block;
cursor:default;
}
.thumbnails img{
float:left;
}
.exit-message{
position: absolute;
top:10px;
left:0;
width:100%;
height:40px;
z-index:10000;
}
.exit-message > div{
width:140px;
height:30px;
margin:auto;
background:rgba(0,0,0,0.5);
text-align:center;
font:12px arial;
line-height:30px;
color:white;
-webkit-border-radius:10px;
-moz-border-radius:10px;
-ms-border-radius:10px;
-o-border-radius:10px;
border-radius:10px;
}
.zoom-icon{
position:absolute;
z-index:1000;
width:22px;
height:22px;
top:10px;
right:10px;
// background-image:url(../pics/zoom-icons.png);
background-image:url(fb/html/magazine/pics/zoom-icons.png);
background-size:88px 22px;
}
.zoom-icon-in{
background-position:0 0;
cursor: pointer;
}
.zoom-icon-in.zoom-icon-in-hover{
background-position:-22px 0;
cursor: pointer;
}
.zoom-icon-out{
background-position:-44px 0;
}
.zoom-icon-out.zoom-icon-out-hover{
background-position:-66px 0;
cursor: pointer;
}
.bottom{
position:absolute;
left:0;
bottom:0;
width:100%;
}
</style>
<script id="fb_magazine_js">
/*
* Magazine sample
*/
function addPage(page, book) {
var id, pages = book.turn('pages');
// Create a new element for this page
var element = $('<div />', {});
// Add the page to the flipbook
// Add the initial HTML
// It will contain a loader indicator and a gradient
if (book.turn('addPage', element, page)) {
element.html('<div class="gradient"></div><div class="loader"></div>');
// Load the page
loadPage(page, element);
}
}
// Create an image element
function loadPage(page, pageElement) {
var img = $('<img />');
img.mousedown(function(e) {
e.preventDefault();
});
img.load(function() {
// Set the size
// Add the image to the page after loaded
// Remove the loader indicator
$(this).css({width: '100%', height: '100%'});
$(this).appendTo(pageElement);
pageElement.find('.loader').remove();
});
// Load the page
var pagelist = new Array();
var pagelist_len = 0;
var src = "";
var ajaks = "";
pagelist = load_pagelist();
pagelist_len = pagelist.length;
var htmout = "";
// alert( "BUGS_470 pageslist="+pageslist+" page="+page+" pages_len="+pages_len );
var splitlim = pagelist[page].split("|").length;
src = pagelist[page].split("|")[splitlim-1];
// src = pagelist[page].split("|")[12];
// alert( "BUGS_490 page="+page+" pages_len="+pages_len+" src="+src );
// img.attr('src', 'pages/' + page + '.jpg');
// var src_default = '/imgs/gif/spacers/giphy_spacers_01.gif';
// var src_default = '/imgs/gif/spacers/giphy_jkwii_head.gif';
// var src_default = '/imgs/gif/spacers/giphy_spacer10.gif';
// var src_default = '/imgs/gif/spacers/giphy_spacer13.gif';
// var src_default = '/imgs/gif/spacers/giphy_spacer15.gif';
// var src_notfound = '/imgs/gif/spacers/giphy_spacer19.gif';
// var src_notfound = '/imgs/gif/gif_bugs/giphy_anthead.gif';
// var src_notfound = '/imgs/gif/gif_bugs/giphy_bugs_alien_bodyscan.gif';
var src_notfound = '/imgs/gif/gif_bugs/giphy_bugs_alien_digits.gif';
var src_notfound = '/imgs/gif/notfound.gif';
if( filecheck(src)) {
// alert("BUGS_5001 ___found src="+src );
img.attr('src', src);
}
else {
// alert("BUGS_5002 NOTFOUND src_notfound="+src_notfound );
img.attr('src', src_notfound );
}
var pagelim=pagelist.length;
htmout += '<div id="div_fblink" >';
htmout += ' <h1>page='+page+' of '+pagelim+' src='+src+'</h1>';
htmout += '<img src="'+src+'" ';
htmout += ' onclick="window.open(\''+src+'\');return false;"';
htmout += ' alt="'+src+'" ';
htmout += ' height=50 border=0 draggable="true" >';
htmout += ' </div>';
if( document.getElementById('div_fblink')) {
document.getElementById('div_fblink').innerHTML=htmout;
}
loadRegions(page, pageElement);
}
// Zoom in / Zoom out
function zoomTo(event) {
setTimeout(function() {
if ($('.magazine-viewport').data().regionClicked) {
$('.magazine-viewport').data().regionClicked = false;
} else {
if ($('.magazine-viewport').zoom('value')==1) {
$('.magazine-viewport').zoom('zoomIn', event);
} else {
$('.magazine-viewport').zoom('zoomOut');
}
}
}, 1);
}
// Load regions
function loadRegions(page, element) {
var fp_js = "pages/js/"+page+"-regions.json";
// $.getJSON('pages/'+page+'-regions.json').
// $.getJSON('pages/js/'+page+'-regions.json').
$.getJSON(fp_js).
done(function(data) {
$.each(data, function(key, region) {
addRegion(region, element);
});
});
}
// Add region
function addRegion(region, pageElement) {
var reg = $('<div />', {'class': 'region ' + region['class']}),
options = $('.magazine').turn('options'),
pageWidth = options.width/2,
pageHeight = options.height;
reg.css({
top: Math.round(region.y/pageHeight*100)+'%',
left: Math.round(region.x/pageWidth*100)+'%',
width: Math.round(region.width/pageWidth*100)+'%',
height: Math.round(region.height/pageHeight*100)+'%'
}).attr('region-data', $.param(region.data||''));
reg.appendTo(pageElement);
}
// Process click on a region
function regionClick(event) {
var region = $(event.target);
if (region.hasClass('region')) {
$('.magazine-viewport').data().regionClicked = true;
setTimeout(function() {
$('.magazine-viewport').data().regionClicked = false;
}, 100);
var regionType = $.trim(region.attr('class').replace('region', ''));
return processRegion(region, regionType);
}
}
// Process the data of every region
function processRegion(region, regionType) {
data = decodeParams(region.attr('region-data'));
switch (regionType) {
case 'link' :
window.open(data.url);
break;
case 'zoom' :
var regionOffset = region.offset(),
viewportOffset = $('.magazine-viewport').offset(),
pos = {
x: regionOffset.left-viewportOffset.left,
y: regionOffset.top-viewportOffset.top
};
$('.magazine-viewport').zoom('zoomIn', pos);
break;
case 'to-page' :
$('.magazine').turn('page', data.page);
break;
}
}
// Load large page
function loadLargePage(page, pageElement) {
var img = $('<img />');
img.load(function() {
var prevImg = pageElement.find('img');
$(this).css({width: '100%', height: '100%'});
$(this).appendTo(pageElement);
prevImg.remove();
});
// Loadnew page
var pagelist = new Array();
var pagelist_len = pagelist.length;
var j=0;
var src = "";
// alert("BUGS_610 loadSmallPage page="+page+" pagelist="+pagelist );
pagelist = load_pagelist();
pagelist_len = pagelist.length;
// src = "pages/"+page+".jpg";
var splitlim=pagelist[page].split("|").length;
// src = pagelist[page].split( "|" )[12];
src = pagelist[page].split( "|" )[splitlim-1];
var zn_src_path = execTest(src);
var zn_src_file = splitTest(src);
var zn_src = zn_src_path.replace( zn_src_file, "zn/zn_"+zn_src_file );
var tn_src = zn_src_path.replace( zn_src_file, "tn/tn_"+zn_src_file ).replace(".jpg",".png");
// var zn_src = zn_src_path + "zn/zn_"+zn_src_file;
// alert( "BUGS_685 src="+src );
// alert( "BUGS_687 zn_src="+zn_src );
// alert( "BUGS_688 tn_src="+tn_src );
// alert("BUGS_620 loadLargePage page="+page+" pages_len="+pages_len+" src="+src );
// alert("BUGS_621 loadLargePage pages="+pages+" pages_len="+pages_len );
// alert("BUGS_622 loadLargePage window.pages="+window.pages+" pages_len="+pages_len );
// img.attr('src', 'pages/' + page + '.jpg');
// img.attr('src', 'pages/' + page + '-large.jpg');
// img.attr('src', 'pages/zn/zn_' + page + '.jpg');
img.attr('src', zn_src );
}
// Load small page
function loadSmallPage(page, pageElement) {
var img = pageElement.find('img');
img.css({width: '100%', height: '100%'});
img.unbind('load');
// Loadnew page
var pagelist = new Array();
var pagelist_len = pagelist.length;
var j=0;
var src = "";
// alert("BUGS_610 loadSmallPage page="+page+" pagelist="+pagelist );
pagelist = load_pagelist();
pagelist_len = pagelist.length;
var splitlim=pagelist[page].split("|").length;
src = "pages/"+page+".jpg";
src = pagelist[page].split( "|" )[splitlim-1];
// src = pagelist[page].split( "|" )[12];
// alert("BUGS_650 loadSmallPage page="+page+" pages_len="+pages_len+" src="+src );
// alert("BUGS_651 loadSmallPage pages="+pages+" pages_len="+pages_len );
// alert("BUGS_652 loadSmallPage window.pages="+window.pages+" pages_len="+pages_len );
// img.attr('src', 'pages/' + page + '.jpg');
img.attr('src', src );
}
// http://code.google.com/p/chromium/issues/detail?id=128488
function isChrome() {
return navigator.userAgent.indexOf('Chrome')!=-1;
}
function disableControls(page) {
if (page==1)
$('.previous-button').hide();
else
$('.previous-button').show();
if (page==$('.magazine').turn('pages'))
$('.next-button').hide();
else
$('.next-button').show();
}
// Set the width and height for the viewport
function resizeViewport() {
var width = $(window).width(),
height = $(window).height(),
options = $('.magazine').turn('options');
$('.magazine').removeClass('animated');
$('.magazine-viewport').css({
width: width,
height: height
}).
zoom('resize');
if ($('.magazine').turn('zoom')==1) {
var bound = calculateBound({
width: options.width,
height: options.height,
boundWidth: Math.min(options.width, width),
boundHeight: Math.min(options.height, height)
});
if (bound.width%2!==0)
bound.width-=1;
if (bound.width!=$('.magazine').width() || bound.height!=$('.magazine').height()) {
$('.magazine').turn('size', bound.width, bound.height);
if ($('.magazine').turn('page')==1)
$('.magazine').turn('peel', 'br');
$('.next-button').css({height: bound.height, backgroundPosition: '-38px '+(bound.height/2-32/2)+'px'});
$('.previous-button').css({height: bound.height, backgroundPosition: '-4px '+(bound.height/2-32/2)+'px'});
}
$('.magazine').css({top: -bound.height/2, left: -bound.width/2});
}
var magazineOffset = $('.magazine').offset(),
boundH = height - magazineOffset.top - $('.magazine').height(),
marginTop = (boundH - $('.thumbnails > div').height()) / 2;
if (marginTop<0) {
$('.thumbnails').css({height:1});
} else {
$('.thumbnails').css({height: boundH});
$('.thumbnails > div').css({marginTop: marginTop});
}
if (magazineOffset.top<$('.made').height())
$('.made').hide();
else
$('.made').show();
$('.magazine').addClass('animated');
}
// Number of views in a flipbook
function numberOfViews(book) {
return book.turn('pages') / 2 + 1;
}
// Current view in a flipbook
function getViewNumber(book, page) {
return parseInt((page || book.turn('page'))/2 + 1, 10);
}
function moveBar(yes) {
if (Modernizr && Modernizr.csstransforms) {
$('#slider .ui-slider-handle').css({zIndex: yes ? -1 : 10000});
}
}
function setPreview(view) {
var previewWidth = 112,
previewHeight = 73,
// previewSrc = 'pages/preview.jpg',
previewSrc = 'imgs/preview.jpg',
preview = $(_thumbPreview.children(':first')),
numPages = (view==1 || view==$('#slider').slider('option', 'max')) ? 1 : 2,
width = (numPages==1) ? previewWidth/2 : previewWidth;
_thumbPreview.
addClass('no-transition').
css({width: width + 15,
height: previewHeight + 15,
top: -previewHeight - 30,
left: ($($('#slider').children(':first')).width() - width - 15)/2
});
preview.css({
width: width,
height: previewHeight
});
if (preview.css('background-image')==='' ||
preview.css('background-image')=='none') {
preview.css({backgroundImage: 'url(' + previewSrc + ')'});
setTimeout(function(){
_thumbPreview.removeClass('no-transition');
}, 0);
}
preview.css({backgroundPosition:
'0px -'+((view-1)*previewHeight)+'px'
});
}
// Width of the flipbook when zoomed in
function largeMagazineWidth() {
return 2214;
}
// decode URL Parameters
function decodeParams(data) {
var parts = data.split('&'), d, obj = {};
for (var i =0; i<parts.length; i++) {
d = parts[i].split('=');
obj[decodeURIComponent(d[0])] = decodeURIComponent(d[1]);
}
return obj;
}
// Calculate the width and height of a square within another square
function calculateBound(d) {
var bound = {width: d.width, height: d.height};
if (bound.width>d.boundWidth || bound.height>d.boundHeight) {
var rel = bound.width/bound.height;
if (d.boundWidth/rel>d.boundHeight && d.boundHeight*rel<=d.boundWidth) {
bound.width = Math.round(d.boundHeight*rel);
bound.height = d.boundHeight;
} else {
bound.width = d.boundWidth;
bound.height = Math.round(d.boundWidth/rel);
}
}
return bound;
}
</script>
<script id="script_load_pagelist_head" >
function load_pagelist_head() {
var pagelist_head_jtfdcr=
`||||||||/fb/jtfdcr/pages/1.jpg
||||||||/fb/jtfdcr/pages/2.jpg
||||||||/fb/jtfdcr/pages/3.jpg
||||||||/fb/jtfdcr/pages/4.jpg
||||||||/fb/jtfdcr/pages/5.jpg
||||||||/fb/jtfdcr/pages/6.jpg
||||||||/fb/jtfdcr/pages/7.jpg
||||||||/fb/jtfdcr/pages/8.jpg
||||||||/fb/jtfdcr/pages/9.jpg
||||||||/fb/jtfdcr/pages/10.jpg
||||||||/fb/jtfdcr/pages/11.jpg
||||||||/fb/jtfdcr/pages/12.jpg
||||||||/fb/jtfdcr/pages/13.jpg
||||||||/fb/jtfdcr/pages/14.jpg`;
var pagelist_head_pages=``;
var pagelist_head=
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
pages/10.jpg
pages/11.jpg
pages/12.jpg
pages/13.jpg
pages/14.jpg
pages/15.jpg
pages/16.jpg
pages/17.jpg
pages/18.jpg
pages/19.jpg
pages/20.jpg
pages/21.jpg
pages/22.jpg
pages/23.jpg
pages/24.jpg
pages/25.jpg
pages/26.jpg
pages/27.jpg
pages/28.jpg
pages/29.jpg
pages/30.jpg
pages/31.jpg
pages/32.jpg
pages/33.jpg
pages/34.jpg
pages/35.jpg
pages/36.jpg
pages/37.jpg
pages/38.jpg
pages/39.jpg
pages/40.jpg
pages/41.jpg
pages/42.jpg
pages/43.jpg
pages/44.jpg
pages/45.jpg
pages/46.jpg
pages/47.jpg
pages/48.jpg
pages/49.jpg
pages/50.jpg
pages/51.jpg
pages/52.jpg
pages/53.jpg
pages/54.jpg
pages/55.jpg
pages/56.jpg
pages/57.jpg
pages/58.jpg
pages/59.jpg
pages/60.jpg
pages/61.jpg
pages/62.jpg
pages/63.jpg
pages/64.jpg`;
return( pagelist_head.split("\n"));
}
</script>
<script id="script_load_pagelist_pages" >
function load_pagelist_pages() {
var pagelist_pages =
`pages/0.jpg
pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
pages/10.jpg
pages/11.jpg
pages/12.jpg
pages/13.jpg
pages/14.jpg
pages/15.jpg
pages/16.jpg
pages/17.jpg
pages/18.jpg
pages/19.jpg
pages/20.jpg
pages/21.jpg
pages/22.jpg
pages/23.jpg
pages/24.jpg
pages/25.jpg
pages/26.jpg
pages/27.jpg
pages/28.jpg
pages/29.jpg
pages/30.jpg
pages/31.jpg
pages/32.jpg
pages/33.jpg
pages/34.jpg
pages/35.jpg
pages/36.jpg
pages/notfound.jpg
pages/37.jpg
pages/38.jpg
pages/39.jpg
pages/40.jpg
pages/41.jpg
pages/42.jpg
pages/43.jpg
pages/44.jpg
pages/45.jpg
pages/46.jpg
pages/47.jpg
pages/48.jpg
pages/49.jpg
pages/50.jpg
pages/51.jpg
pages/52.jpg
pages/53.jpg
pages/54.jpg
pages/55.jpg
pages/56.jpg
pages/57.jpg
pages/58.jpg
pages/59.jpg
pages/60.jpg
pages/61.jpg
pages/62.jpg
pages/63.jpg
pages/64.jpg
pages/65.jpg
pages/66.jpg
pages/67.jpg
pages/68.jpg
pages/69.jpg
pages/70.jpg
pages/71.jpg
/fb/cards/pages/med_eyepatch_lele_IMG_0257.jpg
/fb/cards/pages/med_eyepatch_lele_IMG_0258.jpg
/fb/cards/pages/med_eyepatchedge_lele_IMG_0259.jpg
/fb/cards/pages/med_eyepatchedge_lele_IMG_0260.jpg
/fb/cards/pages/med_sunglasses_lele_IMG_0261.jpg
/fb/cards/pages/med_sunglasses_lele_IMG_0262.jpg
/fb/cards/pages/med_tape_lele_IMG_0265.jpg
`;
return(pagelist_pages.split("\n"));
}
function load_pagelist_chap1() {
// alert( "BUGS_1000 load_pagelist_chap1" );
var pagelist_chap1 =
`pages/chap1/1.jpg
pages/chap1/2.jpg
pages/chap1/3.jpg
pages/chap1/4.jpg
pages/chap1/5.jpg
pages/chap1/6.jpg
pages/chap1/7.jpg
pages/chap1/8.jpg
pages/chap1/9.jpg
pages/chap1/10.jpg
pages/chap1/11.jpg
pages/chap1/12.jpg
pages/chap1/13.jpg
pages/chap1/14.jpg
pages/chap1/15.jpg
pages/chap1/16.jpg`;
return( pagelist_chap1.split("\n") );
}
function load_pagelist_chap2() {
// alert( "BUGS_1000 load_pagelist_chap2" );
var pagelist_chap2 =
`pages/chap2/1.jpg
pages/chap2/2.jpg
pages/chap2/3.jpg
pages/chap2/4.jpg
pages/chap2/5.jpg
pages/chap2/6.jpg
pages/chap2/7.jpg
pages/chap2/8.jpg
pages/chap2/9.jpg
pages/chap2/10.jpg
pages/chap2/11.jpg
pages/chap2/12.jpg
pages/chap2/13.jpg
pages/chap2/14.jpg
pages/chap2/16.jpg`;
return( pagelist_chap2.split("\n") );
}
function load_pagelist_chap3() {
// alert( "BUGS_1000 load_pagelist_chap3" );
var pagelist_chap3 =
`pages/chap3/1.jpg
pages/chap3/2.jpg
pages/chap3/3.jpg
pages/chap3/4.jpg
pages/chap3/5.jpg
pages/chap3/6.jpg
pages/chap3/7.jpg
pages/chap3/8.jpg
pages/chap3/9.jpg
pages/chap3/10.jpg
pages/chap3/11.jpg
pages/chap3/12.jpg
pages/chap3/13.jpg
pages/chap3/14.jpg
pages/chap3/16.jpg`;
return( pagelist_chap3.split("\n") );
}
function load_pagelist_shoebox() {
// alert( "BUGS_1000 load_shoebox" );
var pagelist_shoebox=
`shoebox/1.jpg
shoebox/2.jpg
shoebox/3.jpg
shoebox/4.jpg
shoebox/5.jpg
shoebox/6.jpg
shoebox/7.jpg
shoebox/8.jpg
shoebox/9.jpg
shoebox/10.jpg
shoebox/11.jpg
shoebox/12.jpg
shoebox/13.jpg
shoebox/14.jpg
/fb/jtfdcr/shoebox/10.jpg
/fb/jtfdcr/shoebox/2.jpg
/fb/jtfdcr/shoebox/20020322_090201_1414191.jpg
/fb/jtfdcr/shoebox/20020322_090301_1414194.jpg
/fb/jtfdcr/shoebox/20020323_182401_1424206.jpg
/fb/jtfdcr/shoebox/20020527_095501_1070715.jpg
/fb/jtfdcr/shoebox/20020527_095601_1070717.jpg
/fb/jtfdcr/shoebox/wood_posters.jpg
/fb/jtfdcr/shoebox/woodcarver_blackforest.jpg
/fb/jtfdcr/shoebox/woodcarvershop_blackforest.jpg `;
return(pagelist_shoebox.split("\n"));
}
function load_pagelist_imgs() {
// alert( "BUGS_1000 load_page_list_jtfdcr_imgs" );
var pagelist_imgs=
`imgs/1.jpg
imgs/2.jpg
imgs/3.jpg
imgs/4.jpg
imgs/5.jpg
imgs/6.jpg
imgs/7.jpg
imgs/8.jpg
imgs/9.jpg
imgs/10.jpg
imgs/11.jpg
imgs/12.jpg
imgs/13.jpg
imgs/14.jpg
imgs/15.jpg
imgs/16.jpg `;
return(pagelist_imgs.split("\n"));
}
</script>
<script id="script load_pagelist_i" >
function load_pagelist_i() {
var pagelist_i = `
i/1.jpg
i/2.jpg
i/3.jpg
i/4.jpg
i/5.jpg
i/6.jpg
i/7.jpg
i/8.jpg
i/9.jpg
i/10.jpg
i/11.jpg
i/12.jpg
i/13.jpg
i/14.jpg
i/15.jpg
i/16.jpg`;
return(pagelist_i.split("\n"));
}
</script>
<script id="script_load_pagelist_ajaks" >
function load_pagelist_ajaks(ajaks) {
alert( "BUGS_1212 load_pagelist_ajaks ajaks="+ajaks );
ajaks="fb.txt";
if(! linkcheck(ajaks)) { return(""); }
alert( "BUGS_1213 load_pagelist_ajaks ajaks="+ajaks );
var pages = new Array();
var pages_len=0;
var j=0;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var ajaxtext=this.responseText;
var j=0;
var htmout = "";
var pagelist = new Array();
pagelist = ajaxtext.split("\n");
alert( "BUGS_1710 load_ajaks() ajaks="+ajaks+" pagelist="+pagelist);
var pagelist_len = pagelist.length;
// document.getElementById("div_load_ajaks").innerHTML = this.responseText;
document.getElementById("div_load_ajaks").innerHTML = ajaxtext;
// document.getElementById("div_load_ajaks").innerHTML = pagelist;
// document.getElementById("div_load_ajaks").innerHTML = htmout+ajaxtext;
// loadApp();
// fbload();
alert( "BUGS_1580 ajaxlines="+ajaxlines pagelist_len="+pagelist_len );
return( ajaxlines );
}
};
xhttp.open("GET", ajaks, true);
xhttp.send();
}
</script>
<script id="script_load_pagelist_default">
function load_pagelist_default() {
var pages = new Array();
var pages_len=0;
var j=0;
// alert( "BUGS_1250 load_pages_default pages_len="+pages_len+" href="+href );
var pagelist_default =`
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/0.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/1.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/2.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/3.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages_default/4.jpg
pages_default/5.jpg
pages_default/6.jpg
pages_default/7.jpg
pages_default/8.jpg
pages_default/9.jpg
pages_default/10.jpg
pages_default/11.jpg
pages_default/12.jpg
pages_default/13.jpg
pages_default/14.jpg
pages_default/15.jpg
pages_default/16.jpg`;
`;
return( pagelist_default.split("\n"));
}
</script>
<script id="script_load_pagelist" >
function load_pagelist() {
var pages = new Array();
var pages_len=0;
var j=0; var k=0;
var pages_default = new Array();
var pages_go = new Array();
var pages_jtfdcr_pages = new Array();
var pages_jtfdcr_imgs = new Array();
// var ajaks = "fb_imgs.txt";
// pages = load_pagelist_ajaks(ajaks);
// pages = load_pagelist_default();
// pages= load_pagelist_head();
// pages= load_pagelist_pages();
// pages= load_pagelist_imgs();
// pages= load_pagelist_i();
// pages= load_pagelist_go();
// pages= load_pagelist_tail();
pagelist_head = load_pagelist_head();
pagelist_pages = load_pagelist_pages();
pagelist_chap1 = load_pagelist_chap1();
pagelist_chap2 = load_pagelist_chap2();
pagelist_chap3 = load_pagelist_chap3();
pagelist_shoebox = load_pagelist_shoebox();
// pagelist_imgs = load_pagelist_imgs();
pagelist_i = load_pagelist_i();
pagelist_go = load_pagelist_go();
pagelist_tail = load_pagelist_tail();
// var ajaks="fb.txt";
// var pagelist_ajaks = load_pagelist_ajaks(ajaks);
// pages = pagelist_head.concat(pagelist_pages, pagelist_chap1, pagelist_chap2, pagelist_chap3, pagelist_imgs, pagelist_i, pagelist_go,pagelist_tail );
// pages = pagelist_head.concat(pagelist_pages, pagelist_chap1, pagelist_chap2, pagelist_chap3, pagelist_go,pagelist_tail );
pages = pagelist_pages.concat(pagelist_chap1, pagelist_chap2, pagelist_chap3, pagelist_go,pagelist_tail );
pages_len=pages.length;
pages_len=pages.length;
// alert( "BUGS_1290 pages_len="+pages_len+" pages="+pages );
// alert( "BUGS_1180 load_pagelist_default len="+pages_len+" pages="+pages )
// alert( "BUGS_1180 load_pagelist_go len="+pages_len+" pages="+pages )
// alert( "BUGS_1180 load_pagelist_pages len="+pages_len+" pages="+pages )
// alert( "BUGS_1180 load_pagelist_default len="+pages_len+" pages="+pages )
// var htmout="";
// for( j=0;j<pages_len;j++) {
// htmout += "bugs_1100 j="+j+" len="+pages_len+" page="+pages[j]+"<br>\n";
// }
// document.write(htmout);
// alert( "BUGS_1200 ="+htmout );
// alert( "BUGS_1200 load_pagelist pages_len="+pages_len+" pages="+pages );
return( pages );
}
</script>
<script id="script_load_pagelist_go" >
function load_pagelist_go(args) {
var j=0;
// var href = window.location.href;
// alert( "BUGS_825 load_pages pages_len="+pages_len+" href="+href );
var pagelist_go = `
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/0.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/1.jpg
-rw-r--r--||1|konet||staff||376756|Jul|28||2013|pages/2.jpg
-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg
-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg
-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg`;
// pagelist_go_len=pagelist_go.length;
// alert( "BUGS_830 load_pages pagelist_go_len="+pageslist_go_len+" pagelist_go="+pagelist_go );
// window.pages=pages;
// alert( "BUGS_840 load_pages pages_len="+pages_len+" window.pages1="+window.pages[1] );
return( pagelist_go.split("\n") );
}
</script>
<script id="script_load_pagelist_tail">
function load_pagelist_tail() {
var pagelist_tail =
`pages/tail/1.jpg
pages/tail/2.jpg
pages/tail/3.jpg
pages/tail/4.jpg
pages/tail/5.jpg
pages/tail/6.jpg
pages/tail/7.jpg
pages/tail/8.jpg
pages/tail/9.jpg
pages/tail/10.jpg
pages/tail/11.jpg
pages/tail/12.jpg
pages/tail/13.jpg
pages/tail/14.jpg
pages/tail/15.jpg
pages/tail/16.jpg`;
return( pagelist_tail.split("\n"));
}
</script>
<script id="script_load_pages_bugs" >
var pages = new Array();
var window.pages = new Array();
var pages_len = 0;
var j=0;
function load_pages_bugs() {
// alert( "BUGS_850 load_pages_bugs" );
alert( "BUGS_850 load_pages_bugs pages="+pages );
var pages = new Array();
var pages_len=0;
var j=0;
pages[j++] = "-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img357.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img358.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img359.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img360.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img361.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img362.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img363.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img364.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img365.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img366.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img367.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img368.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img369.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img370.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img371.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img372.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img373.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img374.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img375.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img376.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img377.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img378.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img379.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img380.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img381.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img382.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img383.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img384.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img385.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img386.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img387.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img388.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img389.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img390.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/img391.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img392.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img393.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img394.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img395.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img396.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img397.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img398.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img399.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img400.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img401.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img402.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img403.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img404.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img405.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img406.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img407.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img408.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img409.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img410.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img411.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img412.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img413.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img414.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img415.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img416.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img417.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img418.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img419.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img420.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img421.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img422.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img423.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/img424.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/index.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||376756|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img357.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||306856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img358.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||199193|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img359.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||443996|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img360.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||629176|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img361.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||544038|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img362.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||941797|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img363.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||850031|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img364.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||876319|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img365.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||880519|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img366.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||896620|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img367.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||730786|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img368.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||801242|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img369.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||883588|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img370.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845856|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img371.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||784457|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img372.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||843127|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img373.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||906461|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img374.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||752928|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img375.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||791260|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img376.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||964508|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img377.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||828964|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img378.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||873941|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img379.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||915688|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img380.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||761790|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img381.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845370|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img382.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||856490|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img383.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||671068|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img384.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||743307|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img385.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||792125|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img386.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||851995|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img387.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||817621|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img388.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||899107|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img389.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||945623|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img390.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||956754|Jul|28||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img391.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||995889|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img392.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||924368|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img393.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||824827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img394.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862378|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img395.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||883043|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img396.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||834414|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img397.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||772918|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img398.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||699001|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img399.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862577|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img400.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||859470|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img401.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||898820|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img402.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||911795|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img403.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||682827|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img404.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||748989|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img405.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756089|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img406.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||947742|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img407.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||876865|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img408.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||939929|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img409.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||857484|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img410.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||856924|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img411.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||869657|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img412.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||890809|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img413.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||881101|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img414.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||860242|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img415.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||867133|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img416.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||831861|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img417.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||825595|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img418.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||679496|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img419.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||810751|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img420.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||790732|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img421.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845998|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img422.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||745726|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img423.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||794258|Jul|29||2013|/kb/books/go/go_attack_defense/pages/tn/tn_img424.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_attack_defense/pages/tn/tn_index.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/img023.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/img024.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/img025.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/img026.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/img027.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/img028.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/img029.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/img030.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/img031.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/img032.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/img033.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/img034.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/img035.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/img036.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/img037.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/img038.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/img039.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/img040.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/img041.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/img042.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/img043.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/img044.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/img045.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/img046.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/img047.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/img048.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/img049.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1006441|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img023.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1047128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img024.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053967|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img025.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1014446|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img026.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1026767|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img027.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||791176|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img028.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||813175|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img029.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||924714|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img030.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||905403|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img031.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||888119|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img032.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1055638|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img033.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||915998|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img034.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||837152|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img035.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||837128|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img036.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1089939|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img037.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||784389|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img038.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||889289|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img039.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||969966|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img040.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||919829|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img041.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1002672|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img042.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||717797|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img043.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||768692|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img044.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||952072|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img045.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||696825|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img046.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||332310|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img047.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||445300|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img048.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||620484|Jul|26||2013|/kb/books/go/go_basics/pages/tn/tn_img049.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/img050.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/img051.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/img052.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/img053.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/img054.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/img055.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/img056.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/img057.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/img058.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/img061.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/img062.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/img063.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/img064.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/img065.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/img066.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/img067.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/img068.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||358516|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img050.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||516648|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img051.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||791156|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img052.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||486725|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img053.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||948089|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img054.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1033406|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img055.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||687569|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img056.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1065658|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img057.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||857686|Jul|26||2013|/kb/books/go/go_equipment/pages/tn/tn_img058.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||603590|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img061.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1374190|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img062.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||976954|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img063.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||592214|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img064.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||390273|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img065.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1340886|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img066.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||807810|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img067.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||537637|Apr|14||2013|/kb/books/go/go_equipment/pages/tn/tn_img068.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/img070.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/img071.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/img072.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/img073.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/img074.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/img075.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/img076.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/img077.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/img078.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/img079.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/img080.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/img081.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/img082.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/img083.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/img084.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/img085.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/img086.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/img087.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/img088.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/img089.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/img090.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/img091.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/img092.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/img093.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/img094.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/img095.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/img096.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/img097.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/img098.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/img099.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/img100.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/img101.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/img102.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/img103.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/img104.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/img105.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/img106.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/img107.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/img108.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/img109.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/img110.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/img111.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/img112.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/img113.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/img114.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/img115.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/img116.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/img117.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/img118.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/img119.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/img120.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/img121.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/img122.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/img123.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/img124.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/img125.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/img126.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/img127.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/img128.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/img129.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/img130.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/img131.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/img132.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/img133.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/img134.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/img135.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/img136.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/img137.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/img138.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/img139.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/img140.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/img141.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/img142.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/img143.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||964295|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img070.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||951817|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img071.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||854354|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img072.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||904237|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img073.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||808049|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img074.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||899297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img075.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||907623|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img076.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||759807|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img077.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1058618|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img078.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1097406|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img079.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1071509|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img080.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1222293|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img081.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||809594|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img082.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||976407|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img083.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1107226|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img084.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1026899|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img085.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1024022|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img086.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1029782|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img087.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1051070|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img088.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||956297|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img089.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1037967|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img090.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1019427|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img091.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1106972|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img092.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1110897|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img093.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1073256|Jul|26||2013|/kb/books/go/go_joseki/pages/tn/tn_img094.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||867457|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img095.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1093950|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img096.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1215177|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img097.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1126591|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img098.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1146058|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img099.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||998658|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img100.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||950064|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img101.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1113709|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img102.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1073193|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img103.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||965100|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img104.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||967947|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img105.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053408|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img106.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1108979|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img107.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||993497|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img108.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||970885|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img109.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053854|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img110.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||984744|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img111.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053819|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img112.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1187421|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img113.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||964581|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img114.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||978287|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img115.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||917482|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img116.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||991987|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img117.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||898921|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img118.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1012220|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img119.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1072925|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img120.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||872746|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img121.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||866500|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img122.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1009773|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img123.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||968391|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img124.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||703303|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img125.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||950503|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img126.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||998706|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img127.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||873116|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img128.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||821432|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img129.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||825088|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img130.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||896338|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img131.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||963585|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img132.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||983883|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img133.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||873892|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img134.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||769739|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img135.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||713637|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img136.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||584476|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img137.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||909033|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img138.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1022877|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img139.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||744019|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img140.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||166301|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img141.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||404802|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img142.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||536562|Jul|27||2013|/kb/books/go/go_joseki/pages/tn/tn_img143.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/img183.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/img184.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/img185.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/img186.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/img187.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/img188.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/img189.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/img190.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/img213.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/img214.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/img215.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/img216.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/img217.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/img218.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/img219.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/img220.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/img221.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/img222.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/img223.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/img224.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/img225.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/img226.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/img227.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/img228.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/img229.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/img230.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/img231.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/img232.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/img233.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/img234.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/img235.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/img236.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/img237.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/img238.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/img239.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/img240.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/img241.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/img242.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/img243.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/img244.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/img245.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/img246.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img247.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/img248.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/img249.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/img250.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/img251.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/img252.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/img253.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/img254.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/img255.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/img256.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/img257.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/img258.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/img259.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/img260.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/img261.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/img262.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/img263.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/img264.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/img265.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/img266.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/img267.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/img268.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/img269.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/img270.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/img271.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/img272.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/img273.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/img274.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/img275.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/img276.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/img277.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/img278.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/img279.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/img280.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/img281.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/img282.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/img283.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/img284.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||437291|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img183.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||525694|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img184.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||653806|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img185.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||841874|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img186.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||783850|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img187.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||759335|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img188.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||777431|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img189.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||621857|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img190.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||621065|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img213.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||660424|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img214.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||640766|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img215.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||701699|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img216.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||684817|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img217.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||693628|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img218.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||652074|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img219.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||665520|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img220.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||664979|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img221.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||420880|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img222.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||653179|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img223.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||631018|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img224.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||614888|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img225.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||635578|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img226.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||664987|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img227.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||494882|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img228.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||755517|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img229.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||746024|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img230.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||740563|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img231.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||720673|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img232.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||641901|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img233.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||681172|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img234.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||681621|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img235.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||699626|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img236.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||692405|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img237.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||675217|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img238.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||637166|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img239.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||638038|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img240.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||746258|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img241.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||697934|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img242.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||680670|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img243.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||666127|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img244.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||703644|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img245.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||674102|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img246.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||684526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img247.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||648526|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img248.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||728614|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img249.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||663415|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img250.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||694657|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img251.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||673729|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img252.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||663575|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img253.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||464991|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img254.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756849|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img255.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||761547|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img256.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||801070|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img257.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||739075|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img258.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||787189|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img259.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||729433|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img260.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||793385|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img261.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756141|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img262.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||779572|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img263.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||759079|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img264.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||738282|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img265.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||814029|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img266.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||833386|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img267.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||188285|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img268.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||369506|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img269.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||384764|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img270.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||547382|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img271.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||647343|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img272.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1070171|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img273.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1188408|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img274.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||315266|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img275.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||299360|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img276.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||707195|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img277.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||872457|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img278.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||959051|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img279.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||920879|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img280.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||926630|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img281.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1034689|Jul|28||2013|/kb/books/go/go_middlegame/pages/tn/tn_img282.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||341434|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img283.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1211055|Jul|25||2013|/kb/books/go/go_middlegame/pages/tn/tn_img284.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/img285.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/img286.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/img287.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/img288.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/img289.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/img290.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/img291.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/img292.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/img293.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/img294.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/img295.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/img296.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/img297.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/img298.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/img299.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/img300.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/img301.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/img302.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/img303.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/img304.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/img305.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/img306.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/img307.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/img308.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/img309.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/img310.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/img311.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/img312.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/img313.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/img314.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/img315.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/img316.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/img317.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/img318.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/img319.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/img319_rot.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/img320.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/img321.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/img322.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/img323.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/img324.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/img325.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/img326.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/img327.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/img328.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/img329.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/img330.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/img331.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/img332.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/img333.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/img334.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/img335.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/img336.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/img337.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/img338.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/img339.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/img340.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/img341.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/img342.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/img343.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/img344.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/img345.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/img346.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/img347.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/img348.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/img349.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/img350.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/img351.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/img352.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/img353.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/img354.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/img355.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/img356.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1053658|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img285.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||336909|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img286.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||354099|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img287.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||409400|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img288.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||417952|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img289.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||690620|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img290.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845711|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img291.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1028081|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img292.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1126342|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img293.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1106874|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img294.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1054403|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img295.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1120631|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img296.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||756489|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img297.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1084236|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img298.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1067948|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img299.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||979594|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img300.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1045182|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img301.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||901610|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img302.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||918985|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img303.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862420|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img304.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||886557|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img305.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||787507|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img306.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||911463|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img307.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||965161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img308.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||973577|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img309.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||888001|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img310.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||786913|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img311.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||963093|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img312.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1189822|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img313.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||877732|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img314.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||849270|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img315.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||963161|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img316.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||507750|Jul|25||2013|/kb/books/go/go_strategy/pages/tn/tn_img317.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||930132|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img318.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||862631|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||2584516|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img319_rot.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||907770|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img320.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1074018|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img321.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||985358|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img322.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||955316|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img323.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1048619|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img324.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1013385|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img325.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1091971|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img326.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||801231|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img327.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||845582|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img328.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||931676|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img329.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1068374|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img330.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||836404|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img331.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1002956|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img332.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||858923|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img333.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||904910|Jul|26||2013|/kb/books/go/go_strategy/pages/tn/tn_img334.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||905806|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img335.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1032145|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img336.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||927378|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img337.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1021816|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img338.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1007963|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img339.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1087169|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img340.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||907719|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img341.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1017200|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img342.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1008372|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img343.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||904314|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img344.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||865407|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img345.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||936444|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img346.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1098851|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img347.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1136515|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img348.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||1181254|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img349.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||826651|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img350.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||605881|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img351.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||695558|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img352.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||166542|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img353.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||147900|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img354.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||216814|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img355.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||224027|Jul|28||2013|/kb/books/go/go_strategy/pages/tn/tn_img356.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/img144.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/img145.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/img146.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/img147.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/img148.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/img149.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/img150.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/img151.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/img152.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/img153.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/img154.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/img155.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/img156.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/img157.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/img158.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/img159.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/img160.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/img161.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/img162.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/img163.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/img164.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/img165.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/img166.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/img167.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/img168.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/img169.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/img170.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/img171.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/img172.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/img173.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/img174.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/img175.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/img176.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/img177.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/img178.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/img179.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/img180.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/img181.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/img182.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||313740|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img144.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||534933|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img145.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||637566|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img146.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||883337|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img147.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||910842|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img148.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||547960|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img149.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||511374|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img150.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||309376|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img151.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||712605|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img152.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||610951|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img153.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||579887|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img154.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||205822|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img155.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||506775|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img156.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||554846|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img157.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||267323|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img158.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||328954|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img159.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||378242|Apr|15||2013|/kb/books/go/go_tesuji/pages/tn/tn_img160.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||726846|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img161.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||725448|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img162.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||687696|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img163.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||717765|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img164.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||527036|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img165.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||706619|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img166.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||742105|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img167.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||797265|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img168.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||760087|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img169.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||657636|Jul|27||2013|/kb/books/go/go_tesuji/pages/tn/tn_img170.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||755147|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img171.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||645677|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img172.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||696265|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img173.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||712791|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img174.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||717123|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img175.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||652155|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img176.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||813062|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img177.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||685220|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img178.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||599655|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img179.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||621916|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img180.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||511956|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img181.jpg";
pages[j++] = "-rw-r--r--||1|konet||staff||510349|Jul|28||2013|/kb/books/go/go_tesuji/pages/tn/tn_img182.jpg";
pages_len = pages.length;
alert( "BUGS_1611 lslat_kb_books_go.js pages="+pages+" pages_len="+pages_len );
// alert( "BUGS_1612 lslat_kb_books_go.js window.pages="+window.pages );
return( pages );
}
</script>
<script id="script_thumbnails">
function load_thumbnails(pages) {
alert( "BUGS_2500 load_thumbnails" );
// var pages = new Array();
var pages_len = 0;
var j = 0; var k=0;
var htmout = "";
// pages = load_pages();
pages_len = pages.length;
j=1;
htmout += '<ul>';
htmout += '<li class="i">';
htmout += ' <img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-1">';
htmout += ' <span>1</span>';
htmout += ' </li>';
for( j = 2; j<pages_len; j=j+2 ) {
k=j+1;
htmout += '<li class="d">';
htmout += '<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-2">';
htmout += '<img src="pages/tn/tn_'+k+'.png" width="76" height="100" class="page-3">';
htmout += '<span>'+j+"-"+k+'</span>';
htmout += '</li>';
}
htmout += '<li class="i">';
htmout += ' <img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-'+j+'">';
htmout += ' <span>'+j+'</span>';
htmout += ' </li>';
htmout += '<ul>';
alert( "BUGS_2432 htmout="+htmout );
var div_thumbnails = document.getElementById('div_thumbnails');
div_thumbnails.innerHTML = htmout;
return(htmout);
}
</script>
<script id="script_random_int" >
function random_int(max,min) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// random_kolink()
</script>
<script id="script_random_imglnk">
function random_imglink(){
var myimgs=new Array()
//specify random imgs below. You can have as many as you wish
myimgs[1]="/imgs/bg/bg_frax_ribbon.jpg"
myimgs[2]="/imgs/bg/bg_frax_thorn.jpg"
myimgs[3]="/imgs/bg/bg_newton05b.jpg"
myimgs[4]="/imgs/bg/bg_frax_thorn.jpg"
myimgs[5]="/imgs/bg/bg_frax_thorn.jpg"
myimgs[6]="/imgs/bg/bg_newton04bw.gif"
myimgs[7]="/imgs/bg/bg_newton05b.png"
myimgs[8]="/imgs/bg/bg_newton05b.png"
myimgs[9]="/imgs/bg/bg_newton05b.png"
var ry=Math.floor(Math.random()*myimgs.length)
if (ry==0) ry=1
document.write('<img src="'+myimgs[ry]+'" border=0 height=200>')
}
// random_imglink()
// random_imglink()
// random_imglink()
</script>'
<script id="script_startup">
function startup1(args) {
// var href=window.location.href;
// alert( "BUGS_2580 script_startup href="+href );
// var host=window.location.host;
// var pathname=window.location.pathname;
// var search=window.location.search;
// url_default="fb.json";
// alert( "BUGS_2591 url_default="+url_default );
// var replaced = pathname.replace(/(^\.+|\.+$)/mg, '');
// if( pathname.endsWith(".htm")) {
// url_default=pathname.replace(".html",".json" );
// alert( "BUGS_2595 url_default="+url_default );
}
else {
url_default=pathname.replace(".html",".php" );
// alert( "BUGS_2596 url_default="+url_default );
}
url=url_default;
// bugs if( search.search("?")) {
// bugs url=search.replace("?","");
// bugs }
// alert( "BUGS_2600 href="+href+" url="+url );
}
</script>
<script id="script_startup_fb" >
var pagelist = new Array();
var pagelist_len = 0;
var ajaks = "";
var j = 0;
var pagelist_default = new Array();
var pagelist_head = new Array();
var pagelist_pages = new Array();
var pagelist_imgs = new Array();
var pagelist_i = new Array();
var pagelist_go = new Array();
var pagelist_tail = new Array();
var pagelist_ajax = new Array();
var pagelist_default_len = pagelist_default.length;
var pagelist_head_len = pagelist_head.length;
var pagelist_pages_len = pagelist_pages.length;
var pagelist_imgs_len = pagelist_imgs.length;
var pagelist_i_len = pagelist_i.length;
var pagelist_go_len = pagelist_go.length;
var pagelist_tail_len = pagelist_tail.length;
var pagelist_ajax_len = pagelist_ajax.length;
// alert( "BUGS_3001 pagelist_default_len="+pagelist_default_len+" pagelist_default="+pagelist_default );
// alert( "BUGS_3002 pagelist_head_len="+pagelist_head_len+" pagelist_head="+pagelist_head );
// alert( "BUGS_3003 pagelist_pages_len="+pagelist_pages_len+" pagelist_pages="+pagelist_pages );
// alert( "BUGS_3004 pagelist_imgs_len="+pagelist_imgs_len+" pagelist_imgs="+pagelist_imgs );
// alert( "BUGS_3005 pagelist_i_len="+pagelist_i_len+" pagelist_i="+pagelist_i );
// alert( "BUGS_3006 pagelist_go_len="+pagelist_go_len+" pagelist_go="+pagelist_go );
// alert( "BUGS_3007 pagelist_tail_len="+pagelist_tail_len+" pagelist_tail="+pagelist_tail );
// alert( "BUGS_3008 pagelist_ajaks_len="+pagelist_ajaks_len+" pagelist_ajaks="+pagelist_ajaks );
function startup_fb(args) {
jaxurl=args;
alert( "BUGS_6800 startup1 args="+args );
var jaxurl_default="fb.txt";
if(linkcheck(jaxurl)) {
alert( "BUGS_6811 ___FOUND jaxurl="+jaxurl );
else {
alert( "BUGS_6811 NOTFOUND jaxurl="+jaxurl );
}
// var href = window.location.href;
// alert( "BUGS_2620 startup href="+href );
// var pagelist = new Array();
// var pagelist_len=0;
// var ajaks = "";
var j = 0;
var htmout = "";
pagelist = load_pagelist();
pagelist_len=pagelist.length;
// alert( "BUGS_3100 pagelist_len="+pagelist_len+" pagelist="+pagelist);
pagelist_head = load_pagelist_head();
pagelist_head_len = pagelist_head.length;
// alert( "BUGS_3101 pagelist_head_len="+pagelist_head_len+" pagelist_head="+pagelist_head );
pagelist_pages = load_pagelist_pages();
pagelist_pages_len = pagelist_pages.length;
// alert( "BUGS_3102 pagelist_pages_len="+pagelist_pages_len+" pagelist_pages="+pagelist_pages );
pagelist_imgs = load_pagelist_imgs();
pagelist_imgs_len = pagelist_imgs.length;
// alert( "BUGS_3103 pagelist_imgs_len="+pagelist_imgs_len+" pagelist_imgs="+pagelist_imgs );
pagelist_i = load_pagelist_i();
pagelist_i_len = pagelist_i.length;
// alert( "BUGS_3104 pagelist_i_len="+pagelist_i_len+" pagelist_i="+pagelist_i );
pagelist_go = load_pagelist_go();
pagelist_go_len = pagelist_go.length;
// alert( "BUGS_3105 pagelist_go_len="+pagelist_go_len+" pagelist_go="+pagelist_go );
pagelist_tail = load_pagelist_tail();
pagelist_tail_len = pagelist_tail.length;
// alert( "BUGS_3106 pagelist_tail_len="+pagelist_tail_len+" pagelist_tail="+pagelist_tail );
var pagelist_ajaks = new Array();
var pagelist_ajaks_len = 0;
var ajaks="fb.txt";
// alert( "BUGS_3107a ajaks="+ajaks );
// pagelist_ajaks = load_pagelist_ajaks(ajaks);
// alert( "BUGS_3107b ajaks="+ajaks );
// pagelist_ajaks_len = pagelist_ajaks.length;
// alert( "BUGS_3107c pagelist_ajaks_len="+pagelist_ajaks_len+" pagelist_ajaks="+pagelist_ajaks );
// pagelist = pagelist.concat( pagelist_head );
// pagelist = pagelist.concat( pagelist_pages );
// pagelist = pagelist.concat( pagelist_imgs );
// pagelist = pagelist.concat( pagelist_i );
// pagelist = pagelist.concat( pagelist_go );
// pagelist = pagelist.concat( pagelist_tail );
// pagelist = pagelist.concat( pagelist_ajaks );
// pagelist = pagelist_head.concat(pagelist_go, pagelist_pages,pagelist_imgs,pagelist_i,pagelist_go,pagelist_tail );
pagelist = pagelist_go;
pagelist = pagelist_pages;
pagelist = pagelist_imgs;
pagelist_len=pagelist.length;
// alert( "BUGS_3200 pagelist_len="+pagelist_len+" pagelist="+pagelist);
// alert( "BUGS_2577 startup pages_len="+pages_len );
// load_thumbnails(pages);
// html_tn(pages);
// alert( "BUGS_2588 startup htmout="+htmout );
// alert( "BUGS_2581 startup pages_len="+pages_len+" pages="+pages );
// window.pages = pages;
// alert( "BUGS_1650 startup pages_len="+pages_len+" window.pages="+window.pages );
return("");
</script>
<script id="script_html_tn" >
function html_tn(pagelist) {
var pagelist_len = 0;
var j = 0; var k=0;
var htmout = "";
// pagelist = load_pagelist();
pagelist_len = pagelist.length;
j=1;
htmout += '<ul>';
htmout += '<li class="i">';
htmout += ' <img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-1">';
htmout += ' <span>1</span>';
htmout += ' </li>';
// for( j = 2; j<pagelist_len; j=j+2 ) {
for( j = 2; j<600; j=j+2 ) {
k=j+1;
htmout += '<li class="d">';
htmout += '<img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-2">';
htmout += '<img src="pages/tn/tn_'+k+'.png" width="76" height="100" class="page-3">';
htmout += '<span>'+j+"-"+k+'</span>';
htmout += '</li>';
}
htmout += '<li class="i">';
htmout += ' <img src="pages/tn/tn_'+j+'.png" width="76" height="100" class="page-'+j+'">';
htmout += ' <span>'+j+'</span>';
htmout += ' </li>';
htmout += '<ul>';
// alert( "BUGS_2432 htmout="+htmout );
// var div_tn = document.getElementById('div_tn');
// div_tn.innerHTML = htmout;
// alert( "BUGS_2600 html_tn pages_len="+pages_len+" htmout="+htmout );
// var div_tn = document.getElementbyID("div_tn");
// document.getElementById('div_tn').insertAdjacentHTML("beforebegin", htmout )
// div_tn.insertAdjacentHTML('beforeend', htmout);
// document.write(htmout);
return(htmout);
}
</script>
<script id="script_utils">
var execTest = function (str) {
return /([^\\]+)$/.exec(str)[1];
}
var splitTest = function (str) {
return str.split('\\').pop().split('/').pop();
}
</script>
<style id="style_body_scroll">
body{ overflow-y:scroll; }
</style>
<script id="script_filecheck" >
function filecheck(url) {
if(url) {
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.send();
return req.status==200;
}
else {
return false;
}
}
</script>
<script id="script_imgcheck" >
function imgcheck(url) {
var img = new Image();
img.src = url;
return img.height != 0;
}
</script>
<script id="script_linkcheck" >
function linkcheck(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
</script>
<script id="script_urlexists" >
function UrlExists(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
</script>
<script id="script_jax1" >
function jax1(url) {
alert( "MSG_11970 jax1 url="+url );
return("jax1\njax2\njax3" );
}
</script>
<script id="script_jax2" >
// function jax2(jaxurl) {
// alert( "BUGS_12360 jax jaxurl="+jaxurl );
// $.ajax({
// url: jaxurl,
// context: document.body,
// success: function(responseText) {
// alert( "BUGS_12661 jax len="+responseText.split("\n").length+" responseText="+responseText );
//// kolists['jax'] = responseText;
// alert( "BUGS_12667 jax kolists_jtfdcr="+kolists['jtfdcr'] );
// }
// });
// }
</script>
<script id="script_kolists" type="text/javascript">
var kolists = new Array();
var divids = "";
// ` kolists[''] = '';
divids = 'alloff toggle allon <br> hl av bb dd fb fs pn sl <br> tl tm us yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail <br> pdfs media cards oklahoma turbulence us2 edu hoa law tclaw zpid fb_law postturtle_monkeytrap soul_lewis';
// divids = 'alloff toggle allon <br> hl av bb dd fb fs pn sl <br> tl tm us yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail';
kolists['divids'] = divids;
// kolists['divids'] = 'alloff toggle allon <br> hl av bb dd fb fs pn sl tl tm yt zm <br> jtfdcr jtfdc jtfinc <br> head body memes kov tail';
kolists['default'] = 'pages/1.jpg\npages/2.jpg\npages/3.jpg';
kolists['jax'] = 'jax/pages/1.jpg\njax/pages/2.jpg\njax/pages/3.jpg';
// kolists['jax'] = kolists['default'];
kolists['fb'] = '/fb/pages/1.jpg\n/fb/pages/2.jpg\n/fb/pages/3.jpg';
kolists['av'] = '/fb/pages/2.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['pn'] = '/fb/pages/3.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['sl'] = '/fb/pages/4.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['tl'] = '/fb/pages/5.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['us'] = 'us|link\nus0|uslink0\nus1|uslink1\nus2|uslink2\nus3|uslink3';
kolists['yt'] = '/fb/pages/6.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
// kolists['zm'] = '/fb/pages/7.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['konet'] = '/fb/konet/pages/1.jpg\n/fb/konet/pages/2.jpg\n/fb/konet/pages/3.jpg';
kolists['iperms'] = '/fb/iperms/pages/1.jpg\n/fb/iperms/pages/2.jpg\n/fb/iperms/pages/3.jpg';
kolists['jtfdcr'] = '/fb/jtfdcr/pages/1.jpg\n/fb/jtfdcr/pages/2.jpg\n/fb/jtfdcr/pages/3.jpg';
kolists['imgs_jukebox'] =
`/imgs/imgs_jukebox/giphy_us_20.gif
/imgs/imgs_jukebox/jukebox_00.jpg
/imgs/imgs_jukebox/jukebox_01.jpg
/imgs/imgs_jukebox/jukebox_02.jpg
/imgs/imgs_jukebox/jukebox_03.jpg
/imgs/imgs_jukebox/jukebox_05.jpg
/imgs/imgs_jukebox/jukebox_06.jpg
/imgs/imgs_jukebox/jukebox_07.jpg
/imgs/imgs_jukebox/jukebox_08.jpg
/imgs/imgs_jukebox/jukebox_10.jpg
/imgs/imgs_jukebox/jukebox_12.jpg
/imgs/imgs_jukebox/jukebox_14.jpg
/imgs/imgs_jukebox/jukebox_20.gif
/imgs/imgs_jukebox/jukebox_shuttle.gif
/imgs/imgs_jukebox/jukebox_vintage.gif
/imgs/imgs_jukebox/radio02.jpg
/imgs/imgs_jukebox/radio03.jpg
/imgs/imgs_jukebox/radio04.jpg
/imgs/imgs_jukebox/radio06.jpg
/imgs/imgs_jukebox/radio08.jpg
/imgs/imgs_jukebox/radio09.jpg
/imgs/imgs_jukebox/radio10.jpg
/imgs/imgs_jukebox/radio_wave.gif
/imgs/imgs_jukebox/radiowave2.gif
/imgs/imgs_jukebox/record_01.gif
/imgs/imgs_jukebox/record_02.gif
/imgs/imgs_jukebox/record_03.gif
/imgs/imgs_jukebox/record_04.gif
/imgs/imgs_jukebox/record_05.gif
/imgs/imgs_jukebox/record_06.gif
/imgs/imgs_jukebox/record_08.gif
/imgs/imgs_jukebox/record_089gif.gif
/imgs/imgs_jukebox/records_bins.gif
`;
kolists['blob_img_default'] = `/fb/jtfdc/imgs/tn_jtfdc_sawhorse`;
kolists['blobs'] =
`ka12|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
ka21|yellow|orange|pink|25|/yt/imgs/yt_polly.png
ko0|pink|yellow|red|1|/yt/imgs/yt_paityn.png
ko1|brown|tan|black|2|/yt/imgs/yt_black.png
ko2|tan|brown|white|3|/yt/imgs/yt_carter.png
paityn|#ff2c55|#a0ddff|#ff70a6|10|/yt/imgs/yt_quinn.png|#3bc14a
carter|#8eedf7|#a1cdf1|#9d695a|05|/yt/imgs/yt_quinn.png|orange
jenna|#f05363|#6ef9f5|#8f3985|05|/yt/imgs/yt_quinn.png|#efd9ce
blake|#61a0af|#7dce82|#ff8360|05|/yt/imgs/yt_quinn.png|#daffef
josh|#ef626c|#61e786|#990033|10|/yt/imgs/yt_quinn.png|#edffec
stacey|#63ccca|#ff86c8|#23c0f9|10|/yt/imgs/yt_quinn.png|45f0df
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
iperms|wheat|burlywood|brown|50|/yt/imgs/yt_quinn.png
konet|linen|darkslategray|gray|50|/imgs/btn/btn_501law.png
law|linen|darkslategray|gray|10|/imgs/btn/btn_501law.png
law_sl|linen|darkslategray|gray|20|/imgs/btn/btn_law_sl.png
law_tc|linen|darkslategray|gray|20|/imgs/btn/btn_law_tc.png
law_tc_kk|linen|darkslategray|gray|50|/imgs/btn/btn_law_tc_kk.png
law_tc_db|linen|darkslategray|gray|50|/imgs/btn/btn_law_tc_db.png
med_kaytel|linen|darkslategray|gray|50|/imgs/btn/btn_med_kaytel.png
med_lele|linen|darkslategray|gray|50|/imgs/btn/btn_med_lele.png
# /imgs/btn/btn_501law.png
# /imgs/btn/btn_dolleylaw.png
# /imgs/btn/btn_paityn.png
# /imgs/btn/btn_carter.png
# /imgs/btn/btn_blake.png
jkwii|blue|red|black|5|/imgs/btn/btn_jkwii.png
skwii|blue|red|black|5|/imgs/btn/btn_skwii.png
jak1|blue|red|black|5|/imgs/btn/btn_jak1.png
jak2|blue|red|black|5|/imgs/btn/btn_jak2.png
jak3|blue|red|black|5|/imgs/btn/btn_jak3.png
`;
kolists['blobs_orig'] = ` `;
kolists['sounds'] =
`/gm/sounds/bubbles.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/explosion.wav
/gm/sounds/shoot.wav
/gm/sounds/space_explosion.wav
/gm/sounds/space_shoot.wav
/gm/sounds/giggle_explosion.wav
/gm/sounds/giggle_shoot.mp3
/gm/sounds/giggle_shoot.wav
/gm/sounds/explosion.mp3
/gm/sounds/shoot.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/giggle_explosion.mp3
/gm/sounds/alarm.mp3
/gm/sounds/apprehensive.mp3
/gm/sounds/aww.mp3
/gm/sounds/ballbounce-172648817.mp3
/gm/sounds/bat_taps.mp3
/gm/sounds/beach_talking_teens.mp3
/gm/sounds/beep.mp3
/gm/sounds/bells.mp3
/gm/sounds/bird_in_Rain.mp3
/gm/sounds/birds_after_rain.mp3
/gm/sounds/bleep.mp3
/gm/sounds/bluejay.mp3
/gm/sounds/bluejay_call2.mp3
/gm/sounds/bounce.mp3
/gm/sounds/breathing.mp3
/gm/sounds/bubbles.mp3
/gm/sounds/bump_large.mp3
/gm/sounds/busy.mp3
/gm/sounds/canadian_geese.mp3
/gm/sounds/cashregister.mp3
/gm/sounds/catch.mp3
/gm/sounds/chain_fence_jump.mp3
/gm/sounds/chains_spooky.mp3
/gm/sounds/charge.mp3
/gm/sounds/charge_2.mp3
/gm/sounds/cheer.mp3
/gm/sounds/chord.mp3
/gm/sounds/clap_stomp.mp3
/gm/sounds/click2.mp3
/gm/sounds/computer_error.mp3
/gm/sounds/cork.mp3
/gm/sounds/countdown.mp3
/gm/sounds/crow.mp3
/gm/sounds/crowd.mp3
/gm/sounds/crumpling.mp3
/gm/sounds/cymbal.mp3
/gm/sounds/day_sunny.mp3
/gm/sounds/demon_girls_mockingbird_hi.mp3
/gm/sounds/digging_in.mp3
/gm/sounds/dooropen.mp3
/gm/sounds/doorslam.mp3
/gm/sounds/drop_fork.mp3
/gm/sounds/dropped_bat.mp3
/gm/sounds/duck_mallard.mp3
/gm/sounds/duck_mallard_quack.mp3
/gm/sounds/duck_pissed.mp3
/gm/sounds/earthquake.mp3
/gm/sounds/exclamation.mp3
/gm/sounds/exhale.mp3
/gm/sounds/explosion.mp3
/gm/sounds/falcon.mp3
/gm/sounds/fall.mp3
/gm/sounds/farm.mp3
/gm/sounds/field.mp3
/gm/sounds/flipflop.mp3
/gm/sounds/frog.mp3
/gm/sounds/fryingpan_hit.mp3
/gm/sounds/fryingpan_impact.mp3
/gm/sounds/giggle.mp3
/gm/sounds/giggle_funny_kid.mp3
/gm/sounds/giggle_kid.mp3
/gm/sounds/gong.mp3
/gm/sounds/hit.mp3
/gm/sounds/horned_owl.mp3
/gm/sounds/laugh_goofy.mp3
/gm/sounds/laugh_monster.mp3
/gm/sounds/laughing_kookaburra_birds.mp3
/gm/sounds/lets_go.mp3
/gm/sounds/mars_attacks.mp3
/gm/sounds/meadowlark.mp3
/gm/sounds/meoutake.mp3
/gm/sounds/merlin.mp3
/gm/sounds/moan.mp3
/gm/sounds/panica.mp3
/gm/sounds/parots_talking.mp3
/gm/sounds/phaser.mp3
/gm/sounds/phone.mp3
/gm/sounds/ping.mp3
/gm/sounds/pterodactyl_screech.mp3
/gm/sounds/rainstorm_april_45m.mp3
/gm/sounds/rooster_crow.mp3
/gm/sounds/sewing_machine.mp3
/gm/sounds/shampoo_hair.mp3
/gm/sounds/shoot.mp3
/gm/sounds/sigh.mp3
/gm/sounds/sigh_female.mp3
/gm/sounds/sigh_heavy.mp3
/gm/sounds/sigh_little_girl.mp3
/gm/sounds/siren_tornado.mp3
/gm/sounds/skipping_cd.mp3
/gm/sounds/slide.mp3
/gm/sounds/slip.mp3
/gm/sounds/slip_bananapeel.mp3
/gm/sounds/slip_strange.mp3
/gm/sounds/sonar.mp3
/gm/sounds/sonar_ping.mp3
/gm/sounds/space_explosion.mp3
/gm/sounds/space_shoot.mp3
/gm/sounds/spli_funny.mp3
/gm/sounds/starting_pistol.mp3
/gm/sounds/suspense_climactic.mp3
/gm/sounds/termites_and_ants.mp3
/gm/sounds/tree_fall_small.mp3
/gm/sounds/walking_snow.mp3
/gm/sounds/warbling_vireo.mp3
/gm/sounds/whoosh.mp3
/gm/sounds/whoosh_pitch.mp3
/gm/sounds/yahoo.mp3
/gm/sounds/bounce.wav
/gm/sounds/explosion.wav
/gm/sounds/shoot.wav
/gm/sounds/space_explosion.wav
/gm/sounds/space_shoot.wav
/gm/sounds/giggle_shoot.mp3
`;
kolists['mp3_bavaria'] =
`/kb/mp3/bavaria/bavaria04a.mp3
/kb/mp3/bavaria/bavaria04b.mp3
/kb/mp3/bavaria/bavaria06a.mp3
/kb/mp3/bavaria/bavaria_01_b02.mp3
/kb/mp3/bavaria/bavaria_03_b12.mp3
/kb/mp3/bavaria/bavaria_04_b13.mp3
/kb/mp3/bavaria/bavaria_a15.mp3
/kb/mp3/bavaria/bavaria_a17.mp3
/kb/mp3/bavaria/bavaria_b01.mp3
/kb/mp3/bavaria/bavaria_b05.mp3
/kb/mp3/bavaria/bavaria_b09.mp3
/kb/mp3/bavaria/bavaria_b10.mp3
/kb/mp3/bavaria/bavaria_b18.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-fargess_mich_nit.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-ja_mein_liebe_tochter.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-papirossen.mp3
/kb/mp3/dj_ethnic/dj_ethnic_barry_sisters-tum_balalaika.mp3
/kb/mp3/dj_ethnic/dj_ethnic_eli_eli.mp3
/kb/mp3/dj_ethnic/dj_ethnic_kibbutz_wedding.mp3
/kb/mp3/dj_ethnic/dj_ethnic_meshuggeneh-rumania.mp3
/kb/mp3/dj_ethnic/dj_ethnic_russian_gypsy_balalaika.mp3
/kb/mp3/dj_ethnic/dj_ethnic_tumalalaika-herschel_bernardi.mp3
/kb/mp3/doris_day/danny_kaye-inchworm.mp3
/kb/mp3/doris_day/danny_kaye-thumbelina.mp3
/kb/mp3/doris_day/debbie_reynolds-tammy.mp3
/kb/mp3/doris_day/doris_day-buttons_and_bows.mp3
/kb/mp3/doris_day/doris_day-que_sera_sera.mp3
/kb/mp3/doris_day/doris_day-secret_love.mp3
/kb/mp3/doris_day/doris_day-you_are_my_sunshine.mp3
/kb/mp3/eva_casidy/eva_cassidy-aint_no_sunshine.mp3
/kb/mp3/eva_casidy/eva_cassidy-kathys_song.mp3
/kb/mp3/eva_casidy/eva_cassidy-track_10.mp3
/kb/mp3/eva_casidy/eva_cassidy-track__1.mp3
/kb/mp3/eva_casidy/eva_cassidy-track__3.mp3
/kb/mp3/eva_casidy/eva_cassidy-what_a_wonderful_world.mp3
/kb/mp3/eva_casidy/eva_cassidy_-fever.mp3
/kb/mp3/favs/oscar_brand-bless_em_all.mp3
/kb/mp3/inkspots/ink_spots-i_dont_want_to_set_the_world_on_fire_1941.mp3
/kb/mp3/inkspots/ink_spots-if_i_didnt_care.mp3
/kb/mp3/inkspots/ink_spots-ill_never_smile_again.mp3
/kb/mp3/kids/disney-electric_light_parade.mp3
/kb/mp3/kids/disney-its_a_small_world_after_all.mp3
/kb/mp3/notfound.mp3
/kb/mp3/richie_havens/richie_havens-03-my_fathers_shoes.mp3
/kb/mp3/richie_havens/richie_havens-05-the_hawk.mp3
/kb/mp3/richie_havens/richie_havens-07-the_times_they_are_a-changin.mp3
/kb/mp3/richie_havens/richie_havens-10-how_the_nights_can_fly.mp3
/kb/mp3/richie_havens/richie_havens-13-at_a_glance.mp3
/kb/mp3/rupert_hine/rupert_hine-01-landscape.mp3
/kb/mp3/rupert_hine/rupert_hine-02-ass_all.mp3
/kb/mp3/rupert_hine/rupert_hine-03-me_you_mine.mp3
/kb/mp3/rupert_hine/rupert_hine-04-scarecrow.mp3
/kb/mp3/rupert_hine/rupert_hine-05-kerosene.mp3
/kb/mp3/rupert_hine/rupert_hine-06-running_away.mp3
/kb/mp3/rupert_hine/rupert_hine-07-medicine_munday.mp3
/kb/mp3/rupert_hine/rupert_hine-08-more_than_one_less_then_five.mp3
/kb/mp3/rupert_hine/rupert_hine-09-boo_boos_faux_pas.mp3
/kb/mp3/rupert_hine/rupert_hine-10-pick_up_a_bone.mp3
/kb/mp3/rupert_hine/rupert_hine-11-instant_muse.mp3
/kb/mp3/start_today_again/01-if_i_could_start_today_again.mp3
/kb/mp3/start_today_again/01-lonely_girls.mp3
/kb/mp3/start_today_again/02-change_your_mind.mp3
/kb/mp3/start_today_again/02-steal_your_love.mp3
/kb/mp3/start_today_again/03-i_envy_the_wind.mp3
/kb/mp3/start_today_again/03-midnight_rain.mp3
/kb/mp3/start_today_again/04-blue.mp3
/kb/mp3/start_today_again/04-i_close_my_eyes_and_think_of_you.mp3
/kb/mp3/start_today_again/05-out_of_touch.mp3
/kb/mp3/start_today_again/05-somewhere_in_the_city.mp3
/kb/mp3/start_today_again/06-are_you_down.mp3
/kb/mp3/start_today_again/06-just_about_to_break.mp3
/kb/mp3/start_today_again/07-essence.mp3
/kb/mp3/start_today_again/07-love_is_the_law.mp3
/kb/mp3/start_today_again/08-reason_to_cry.mp3
/kb/mp3/start_today_again/08-the_pretty_place.mp3
/kb/mp3/start_today_again/09-get_right_with_god.mp3
/kb/mp3/start_today_again/09-i_wasted_time.mp3
/kb/mp3/start_today_again/10-bus_to_baton_rouge.mp3
/kb/mp3/start_today_again/10-would_you_be_my_friend.mp3
/kb/mp3/start_today_again/11-broken_butterflies.mp3
/kb/mp3/start_today_again/11-smoke_under_the_bridge.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-catch_the_wind.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-i_wont_cry_-s.mp3
/kb/mp3/sweethearts_rodeo/sweethearts_of_the_rodeo-the_inn_at_innisfre.mp3
`;
kolists['mp3_jkwii'] =
`/kb/mp3/jkwii/30_FredEstaire_PuttinOnTheRitz.mp3
/kb/mp3/jkwii/39_KateSmith_GodBlessAmerica.mp3
/kb/mp3/jkwii/39_KayKyser_ThreeLittleFishies.mp3
/kb/mp3/jkwii/39_LouisArmstrongDannyKaye_WhenTheSaintsGoMarchingIn.mp3
/kb/mp3/jkwii/40_PaulRobeson_BalladForAmericans.mp3
/kb/mp3/jkwii/44_AndrewSisters_ShooShooBaby.mp3
/kb/mp3/jkwii/45_BingCrosby_AndrewsSisters-DontFenceMeIn.mp3
/kb/mp3/jkwii/46_BettyHutton_PaulWeston-doctor_lawyer_indianchief.mp3
/kb/mp3/jkwii/47_AlJolson_AnniversarySong.mp3
/kb/mp3/jkwii/49_DinahShore_ButtonsAndBows.mp3
/kb/mp3/jkwii/51_DebbieReynolds_AbbaDabbaHoneymoon.mp3
/kb/mp3/jkwii/51_RosemaryClooney_ComeOnAMyHouse.mp3
/kb/mp3/jkwii/AccentuateThePositive.mp3
/kb/mp3/jkwii/Auctioneer.mp3
/kb/mp3/jkwii/BalladOfDavyCrockett.mp3
/kb/mp3/jkwii/Battle_New_Orleans.mp3
/kb/mp3/jkwii/beatles+i_want_to_hold_your_hand.mp3
/kb/mp3/jkwii/beatles-i_wanna_hold_your_hand.mp3
/kb/mp3/jkwii/beatles-youve_got_to_hide_your_love_away.mp3
/kb/mp3/jkwii/beatles_i_want_to_hold_your_hand.mp3
/kb/mp3/jkwii/beatles_let_it_be.mp3
/kb/mp3/jkwii/beatles_morwegian_wood.mp3
/kb/mp3/jkwii/beethovens-fifth_symphony.mp3
/kb/mp3/jkwii/Bellamy_Brothers-let_your_Love_Flow.mp3
/kb/mp3/jkwii/benny_boodman-swingtime_inthe_rockies.mp3
/kb/mp3/jkwii/bett_midler-bless_the_beasts_and_children.mp3
/kb/mp3/jkwii/bing_crosby_n_andrews_sisters-accentuate_the_positive.mp3
/kb/mp3/jkwii/brenda_lee-if_you_love_me.mp3
/kb/mp3/jkwii/buddy_holly-great_balls_of_fire.mp3
/kb/mp3/jkwii/buddy_holly-true_love_ways.mp3
/kb/mp3/jkwii/catch_a_falling_star.mp3
/kb/mp3/jkwii/chordettes-lollipop.mp3
/kb/mp3/jkwii/clarinet_polka.mp3
/kb/mp3/jkwii/danny_kaye-inchworm.mp3
/kb/mp3/jkwii/danny_kaye-thumbelina.mp3
/kb/mp3/jkwii/dayo.mp3
/kb/mp3/jkwii/dean_martin-memories_are_made_of_this.mp3
/kb/mp3/jkwii/disney-electric_light_parade.mp3
/kb/mp3/jkwii/donovan-catch_the_wind_original_single_with_strings.mp3
/kb/mp3/jkwii/doris_day-que_sera_sera.mp3
/kb/mp3/jkwii/dusty_springfield-windmills_of_your_mind.mp3
/kb/mp3/jkwii/eddie_cantor-makin_whoopee.mp3
/kb/mp3/jkwii/emmylou_harris-like_an_old_fashioned_waltz.mp3
/kb/mp3/jkwii/emmylou_harris-my_baby_needs_a_shepherd.mp3
/kb/mp3/jkwii/emmylou_harris-pledging_my_love.mp3
/kb/mp3/jkwii/emmylou_harris_n_john_denver-wild_montana_skies.mp3
/kb/mp3/jkwii/eva_cassidy-aint_no_sunshine.mp3
/kb/mp3/jkwii/eva_cassidy-kathys_song.mp3
/kb/mp3/jkwii/forrest_gump_theme.mp3
/kb/mp3/jkwii/frankie_lane-mule_train.mp3
/kb/mp3/jkwii/Freddie_n_the_dreamers-im_telling_you_now.mp3
/kb/mp3/jkwii/gail_garnet-well_sing_in_the_sunshine.mp3
/kb/mp3/jkwii/girls_just_want_to_have_fun.mp3
/kb/mp3/jkwii/glaube_mir.mp3
/kb/mp3/jkwii/glaube_mir3.mp3
/kb/mp3/jkwii/goodygoody.mp3
/kb/mp3/jkwii/grateful_dead-ripple.mp3
/kb/mp3/jkwii/great_balls_of_fire.mp3
/kb/mp3/jkwii/hand_jive.mp3
/kb/mp3/jkwii/hes_got_the_whole_world_in_his_hands.mp3
/kb/mp3/jkwii/honeycomb.mp3
/kb/mp3/jkwii/im_all_shook_up.mp3
/kb/mp3/jkwii/im_beginning_to_see_the_light.mp3
/kb/mp3/jkwii/in_the_good_old_summertime.mp3
/kb/mp3/jkwii/ink_spots-i_dont_want_to_set_the_world_on_fire_1941.mp3
/kb/mp3/jkwii/iris_dement-sweet_is_the_melody_incomplete.mp3
/kb/mp3/jkwii/killing_me_softly_with_his_song.mp3
/kb/mp3/jkwii/king_of_the_road.mp3
/kb/mp3/jkwii/kingsmen-louie_louie.mp3
/kb/mp3/jkwii/little_brown_jug.mp3
/kb/mp3/jkwii/little_grass_shack.mp3
/kb/mp3/jkwii/little_sir_echo-horace_heidt.mp3
/kb/mp3/jkwii/loony_tunes_bugs_bunny-the_rabbit_of_seville.mp3
/kb/mp3/jkwii/louie_armstrong-what_a_wonderful_world.mp3
/kb/mp3/jkwii/louis_armstrong-ive_got_a_pocket_full_of_dreams.mp3
/kb/mp3/jkwii/louis_prima_n_keely_smith-that_old_black.mp3
/kb/mp3/jkwii/lullaby_of_birdland.mp3
/kb/mp3/jkwii/LullabyOfBirdland.mp3
/kb/mp3/jkwii/macarena.mp3
/kb/mp3/jkwii/marlene_dietrich-lili_marlene.mp3
/kb/mp3/jkwii/marvin_gaye-lets_get_it_on.mp3
/kb/mp3/jkwii/maurice_chevalier_n_hermione_gingold-i_remember_it_well_gigi.mp3
/kb/mp3/jkwii/mills_brothers-glowworm.mp3
/kb/mp3/jkwii/millsBrothers-glowworm.mp3
/kb/mp3/jkwii/mitch_miller-battle_Hymn_Of_The_republic.mp3
/kb/mp3/jkwii/mitch_miller-camptown_races_oh_susanna.mp3
/kb/mp3/jkwii/mitch_miller-you_are_my_sunshine.mp3
/kb/mp3/jkwii/mona_lisa.mp3
/kb/mp3/jkwii/monkeys-daydream_believer.mp3
/kb/mp3/jkwii/nancy_sinartra-these_boots_are_made_for_walkin.mp3
/kb/mp3/jkwii/on_the_street_where_you_live.mp3
/kb/mp3/jkwii/open_the_door_richard.mp3
/kb/mp3/jkwii/oscar_brand-bless_em_all.mp3
/kb/mp3/jkwii/patsy_cline-back_in_babys_arms.mp3
/kb/mp3/jkwii/patti_page-mocking_bird_hill.mp3
/kb/mp3/jkwii/pattie_page-how_much_is_that_doggie_in_the_window.mp3
/kb/mp3/jkwii/peggy_Lee_n_benny_goodman-on_the_sunny_side_of_the_street.mp3
/kb/mp3/jkwii/people.mp3
/kb/mp3/jkwii/perry_como-round_and_round.mp3
/kb/mp3/jkwii/raindrops_keep_falling_on_my_head_1969.mp3
/kb/mp3/jkwii/ray_charles-georgia_on_my_mind.mp3
/kb/mp3/jkwii/simon_garfunkle-mrs_robinson.mp3
/kb/mp3/jkwii/sons_of_the_pioneers-cool_water.mp3
/kb/mp3/jkwii/supremes_you_cant_hurry_love.mp3
/kb/mp3/jkwii/texas_tornados-rueda_de_fuego_ring_of_fire.mp3
/kb/mp3/jkwii/tiny_bubbles_n_Pparly_shells.mp3
/kb/mp3/jkwii/tom_rush-the_circle_game.mp3
/kb/mp3/jkwii/tommy_dorsey-smoke_gets_in_your_eyes.mp3
/kb/mp3/jkwii/two_cigarettes_in_the_dark.mp3
/kb/mp3/jkwii/van_morrison-have_i_told_you_lately.mp3
/kb/mp3/jkwii/village_people-ymca.mp3
/kb/mp3/jkwii/Volare.mp3
/kb/mp3/jkwii/willy_nelson-on_the_road_again.mp3
/kb/mp3/jkwii/winchester_cathedral_petula_clark.mp3
/kb/mp3/jkwii/windy.mp3
/kb/mp3/jkwii/Yesterday.mp3`;
kolists['gifwave'] =
`/imgs/sound/ringworm_1.gif
/imgs/sound/ringworm_2.gif
/imgs/sound/ringworm_5.gif
/imgs/sound/ringworm_10.gif
/imgs/sound/ringworm_20.gif
/imgs/gif/alien_tek/wave.gif
/imgs/gif/crazy/giphy_fingerwave.gif
/imgs/gif/ducks/gif/alien_tek/wave.gif
/imgs/gif/ducks/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/ducks/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/gif_202004/giphy_orbwave.gif
/imgs/gif/gif_202004/giphy_wave00.gif
/imgs/gif/gif_202004/giphy_wave02.gif
/imgs/sound/giphy_wave03t.gif
/imgs/gif/gif_202004/giphy_wave03.gif
/imgs/gif/gif_202004/giphy_wave04.gif
/imgs/gif/gif_202004/giphy_wave07.gif
/imgs/gif/gif_202004/giphy_wave08.gif
/imgs/gif/gif_202004/giphy_wave_cbs.gif
/imgs/gif/gif_bugs/giphy_dogewaves.gif
/imgs/gif/gif_bugs/giphy_orb_wave.gif
/imgs/gif/gif_spinners/giphy_go_gridwaves.gif
/imgs/gif/gif_spinners/giphy_waveup.gif
/imgs/gif/giphy_dollars/giphygowave'.gif
/imgs/gif/giphy_us_news_focus/giph_tinkerbell_wavey.gif
/imgs/gif/giphy_us_news_focus/giphy_mouth_wavy.gif
/imgs/gif/giphy_us_news_focus/giphy_us_girlwave.gif
/imgs/gif/giphy_us_news_focus/giphy_us_polewave.gif
/imgs/gif/iperms/giphy_armywave.gif
/imgs/gif/iperms/giphy_armywave_barrel.gif
/imgs/gif/kt/giphy_headwaves.gif
/imgs/gif/notes/waves_blue.gif
/imgs/gif/notes/waves_circle.gif
/imgs/gif/notes/waves_interfere.gif
/imgs/gif/notes/waves_linedrop.gif
/imgs/gif/notes/waves_undulate.gif
/imgs/gif/notes/waves_water.gif
/imgs/gif/us/giphy_jkwii_headwave2.gif
/imgs/gif/us/giphy_orb_wave.gif
/imgs/gif/us/giphy_us_headwave.gif
/imgs/gif/us/tn/tn_giphy_jkwii_headwave2.gif
/imgs/gif/us/tn/tn_giphy_orb_wave.gif
/imgs/gif/us/tn/tn_giphy_us_headwave.gif
/imgs/gif/us_big/giphy_jkwii_headwaves2.gif
/imgs/gif/us_big/giphy_keyboard_wavepanel.gif
`;
kolists['ka1_mp3'] =
`/fl/ko_builder/alarm.mp3
/fl/ko_builder/bat_taps.mp3
/fl/ko_builder/bells.mp3
/fl/ko_builder/bubbles.mp3
/fl/ko_builder/busy.mp3
/kb/aud/mp3/abba-andante_andante.mp3
/kb/aud/mp3/abba-fernando.mp3
/kb/aud/mp3/Beatles - You've Got To Hide Your Love Away.mp3
/kb/aud/mp3/caberet-money,_money.mp3
/kb/aud/mp3/caberet-wilkommen.mp3
/kb/aud/mp3/Can't Help Falling In Love.mp3
/kb/aud/mp3/cold-stupid_girl.mp3
/kb/aud/mp3/crystal-stevie_nicks_1.mp3
/kb/aud/mp3/danny_kaye-inchworm.mp3
/kb/aud/mp3/david_bowie-changes.mp3
/kb/aud/mp3/david_bowie-golden_years.mp3
/kb/aud/mp3/dietrich-lili_marleen-german.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_bei_mir_bistu_shain.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_ich_hob_dich_zifeel_lieb.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_main_glick.mp3
/kb/aud/mp3/dj_ethnic_barry_sisters_-_my_yiddishe_mama.mp3
/kb/aud/mp3/dj_opera_carreras_domingo_pavarotti_-_nessun_dorma.mp3
/kb/aud/mp3/dj_opera_rodgers_&_hammerstein_-_the_sound_of_music_-_edelweiss.mp3
/kb/aud/mp3/dori_caymmi-o_bem_do_mar.mp3
/kb/aud/mp3/doris_day-que_sera_sera.mp3
/kb/aud/mp3/doris_day-secret_love.mp3
/kb/aud/mp3/doris_day-you_are_my_sunshine.mp3
/kb/aud/mp3/elton_jhon-nikita.mp3
/kb/aud/mp3/emmylou_harris-here,_there_and_everywhere.mp3
/kb/aud/mp3/emmylou_harris-like_an_old_fashioned_waltz.mp3
/kb/aud/mp3/emmylou_harris_john_denver-wild_montana_skies.mp3
/kb/aud/mp3/Eva Cassidy - Ain't No Sunshine.mp3
/kb/aud/mp3/eva_cassidy-fever.mp3
/kb/aud/mp3/fuck.mp3
/kb/aud/mp3/glad_all_over.mp3
/kb/aud/mp3/glen_campbell-gentle_on_my_mind_1968.mp3
/kb/aud/mp3/grantorino_full.mp3
/kb/aud/mp3/i_want_to_hold_your_hand.mp3
/kb/aud/mp3/incomplete_eva_cassidy-nightbird.mp3
/kb/aud/mp3/Iris Dement - Easy's Getting Harder Every Day.mp3
/kb/aud/mp3/jesse_colin_young-songbird.mp3
/kb/aud/mp3/jesse_colin_young_sunlight-1976.mp3
/kb/aud/mp3/jimi_hendrix-national_anthem.mp3
/kb/aud/mp3/john_denver_placido_doming-perhaps_love.mp3
/kb/aud/mp3/ka2.mp3
/kb/aud/mp3/king_of_the_road.mp3
/kb/aud/mp3/kingston_town-harry_belafonte.mp3
/kb/aud/mp3/Lady Antebellum - American Honey.mp3
/kb/aud/mp3/lady_antebellum-need_you_now_hq_[lyrics].mp3
/kb/aud/mp3/louie_armstrong-what_a_wonderful_world.mp3
/kb/aud/mp3/love_me_tender.mp3
/kb/aud/mp3/Marlene Dietrich - Muss i' denn.mp3
/kb/aud/mp3/marlene_dietrich_falling_in_love_again_english.mp3
/kb/aud/mp3/mitch_miller-you_are_my_sunshine.mp3
/kb/aud/mp3/mockin_bird_hill_patti_page.mp3
/kb/aud/mp3/mona_lisa.mp3
/kb/aud/mp3/music_13119_benny_benassi_satisfaction.mp3
/kb/aud/mp3/music_141639_pure_beauty.mp3
/kb/aud/mp3/music_145075_bas_couture.mp3
/kb/aud/mp3/music_922401610_beauty_on_fire.mp3
/kb/aud/mp3/music_you_dont_own_me_235310380.mp3
/kb/aud/mp3/never_alone-lady_antebellum..mp3
/kb/aud/mp3/patsy_cline-the_wayward_wind.mp3
/kb/aud/mp3/pattie_page-how_much_is_that_doggie_in_the_window.mp3
/kb/aud/mp3/procol_harem-a_whiter_shade_of_pale.mp3
/kb/aud/mp3/quando,_quando,_quando-engelberthumperdinck.mp3
/kb/aud/mp3/Richie_Havens_-_03_-_My_Father's_Shoes.mp3
/kb/aud/mp3/Richie_Havens_-_05_-_The_Hawk.mp3
/kb/aud/mp3/Richie_Havens_-_07_-_The_Times_They_Are_a-Changin'.mp3
/kb/aud/mp3/Richie_Havens_-_10_-_How_the_Nights_Can_Fly.mp3
/kb/aud/mp3/Richie_Havens_-_13_-_At_a_Glance.mp3
/kb/aud/mp3/righteous_brothers-soul_and_inspiration.mp3
/kb/aud/mp3/scatterbrain-freddy_martin_orch.mp3
/kb/aud/mp3/smokey_robinson-ooh_baby_baby.mp3
/kb/aud/mp3/sound.mp3
/kb/aud/mp3/supermassive_black_hole_lyrics_and_twilight_videos.mp3
/kb/aud/mp3/the_platters_the_great_pretender.mp3
/kb/aud/mp3/third_eye_blind-_never_let_you_go.mp3
/kb/aud/mp3/trick_daddy-take_it_to_the_house.mp3
/kb/aud/mp3/Trio_-_Bum_Bum_1983_NDW.mp3
/kb/aud/mp3/Trio_-_Da_Da_Da_clipe_.mp3
/kb/aud/mp3/TRIO_-_Girl_Girl_Girl.mp3
/kb/aud/mp3/Trio_-_Herz_ist_Trumpf_-_1983.mp3
/kb/aud/mp3/Trio_-_Sabine.mp3
/kb/aud/mp3/Trio_-_Turaluraluralu.mp3
/kb/aud/mp3/Trio_-_Tutti-Frutti_-_NDW_-_1984.mp3
/kb/aud/mp3/trio_Vogel_der_Nacht.mp3
/kb/aud/mp3/twilight_soundtrack.mp3
/kb/aud/mp3/Volare.mp3
/kb/aud/mp3/waits-cemetery_polka-full.mp3
/kb/aud/mp3/waits-come_on_up_to_the_house.mp3
/kb/aud/mp3/waits-house_where_nobody_lives.mp3
/kb/aud/mp3/waits-long_way_home.mp3
/kb/aud/mp3/waits-lullaby-1.mp3
/kb/aud/mp3/waits-time.mp3
/kb/aud/mp3/weihnachtslieder-nicole-still_still_still.mp3
/kb/aud/mp3/wenn_die_soldaten-marlene_dietrich.mp3
/kb/aud/mp3/What's new pussycat.mp3
/kb/aud/mp3/Why_Dont_You_Do_Right_.mp3
/kb/aud/mp3/wish_we_were_back_in_missouri_em.mp3
/kb/aud/mp3/yellow_bird.mp3
/kb/aud/mp3/You Can't Hurry Love.mp3
/kb/aud/mp3/young_love.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm2.mp3
/ko/h5/lib/av/aud/effects/beeps/alarm3.mp3
/ko/h5/lib/av/aud/effects/beeps/buzz.mp3
/ko/h5/lib/av/aud/effects/beeps/compute_ack.mp3
/ko/h5/lib/av/aud/effects/beeps/compute_ack_long.mp3
/ko/h5/lib/av/aud/effects/beeps/ping.mp3
/ko/h5/lib/av/aud/effects/beeps/ping2.mp3
/ko/h5/lib/av/aud/effects/beeps/retro_beep1.mp3
/ko/h5/lib/av/aud/effects/beeps/retro_beep2.mp3
/ko/h5/lib/av/aud/effects/beeps/super_ping.mp3
/ko/h5/lib/av/aud/effects/comm/alien_comm.mp3
/ko/h5/lib/av/aud/effects/comm/alien_comm2.mp3
/ko/h5/lib/av/aud/effects/comm/radio_noise.mp3
/ko/h5/lib/av/aud/effects/comm/radio_signal.mp3
/ko/h5/lib/av/aud/effects/comm/radio_tune.mp3
/ko/h5/lib/av/aud/effects/environmental/cloaking_device.mp3
/ko/h5/lib/av/aud/effects/environmental/computing.mp3
/ko/h5/lib/av/aud/effects/environmental/drop_item.mp3
/ko/h5/lib/av/aud/effects/environmental/engine.mp3
/ko/h5/lib/av/aud/effects/environmental/lightning1.mp3
/ko/h5/lib/av/aud/effects/environmental/lost_in_time.mp3
/ko/h5/lib/av/aud/effects/environmental/low_bass_note.mp3
/ko/h5/lib/av/aud/effects/environmental/low_flange_rez.mp3
/ko/h5/lib/av/aud/effects/environmental/low_hum.mp3
/ko/h5/lib/av/aud/effects/environmental/onimous_echo.mp3
/ko/h5/lib/av/aud/effects/environmental/quasar.mp3
/ko/h5/lib/av/aud/effects/environmental/scanner.mp3
/ko/h5/lib/av/aud/effects/environmental/war_drum.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion2.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion3.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion4.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion5.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion6.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion7.mp3
/ko/h5/lib/av/aud/effects/explosions/explosion8.mp3
/ko/h5/lib/av/aud/effects/explosions/low_explosion.mp3
/ko/h5/lib/av/aud/effects/misc/boss_transform.mp3
/ko/h5/lib/av/aud/effects/misc/boup.mp3
/ko/h5/lib/av/aud/effects/misc/brain_fry.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_mine.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_radio.mp3
/ko/h5/lib/av/aud/effects/misc/deploy_web.mp3
/ko/h5/lib/av/aud/effects/misc/electric_drop.mp3
/ko/h5/lib/av/aud/effects/misc/final_boss_die.mp3
/ko/h5/lib/av/aud/effects/misc/get_item.mp3
/ko/h5/lib/av/aud/effects/misc/get_item2.mp3
/ko/h5/lib/av/aud/effects/misc/item_appear.mp3
/ko/h5/lib/av/aud/effects/misc/item_appear2.mp3
/ko/h5/lib/av/aud/effects/misc/lock_on.mp3
/ko/h5/lib/av/aud/effects/misc/materialize.mp3
/ko/h5/lib/av/aud/effects/misc/power_up.mp3
/ko/h5/lib/av/aud/effects/misc/robot_error.mp3
/ko/h5/lib/av/aud/effects/misc/robot_no.mp3
/ko/h5/lib/av/aud/effects/misc/whiplash.mp3
/ko/h5/lib/av/aud/effects/misc/wobble.mp3
/ko/h5/lib/av/aud/effects/misc/wobble2.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot1.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot2.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot3.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot4.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot5.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot6.mp3
/ko/h5/lib/av/aud/effects/projectiles/alien_shot7.mp3
/ko/h5/lib/av/aud/effects/projectiles/clash_ricochet.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit2.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit3.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit4.mp3
/ko/h5/lib/av/aud/effects/projectiles/hit5.mp3
/ko/h5/lib/av/aud/effects/projectiles/ion_cannon.mp3
/ko/h5/lib/av/aud/effects/projectiles/ion_cannon_light.mp3
/ko/h5/lib/av/aud/effects/projectiles/laser.mp3
/ko/h5/lib/av/aud/effects/projectiles/missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/pea_shooter.mp3
/ko/h5/lib/av/aud/effects/projectiles/photon.mp3
/ko/h5/lib/av/aud/effects/projectiles/quantum_missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet2.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet3.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet4.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet5.mp3
/ko/h5/lib/av/aud/effects/projectiles/ricochet6.mp3
/ko/h5/lib/av/aud/effects/projectiles/scatter_shot.mp3
/ko/h5/lib/av/aud/effects/projectiles/scatter_shot2.mp3
/ko/h5/lib/av/aud/effects/projectiles/super_missile.mp3
/ko/h5/lib/av/aud/effects/projectiles/super_missile2.mp3
/ko/h5/lib/av/aud/effects/space/black_hole.mp3
/ko/h5/lib/av/aud/effects/space/cosmic_string.mp3
/ko/h5/lib/av/aud/effects/space/enemy_launch_warmup.mp3
/ko/h5/lib/av/aud/effects/space/enemy_swoop_down.mp3
/ko/h5/lib/av/aud/effects/space/enemy_wake_up.mp3
/ko/h5/lib/av/aud/effects/space/engine_damage.mp3
/ko/h5/lib/av/aud/effects/space/engine_warmup.mp3
/ko/h5/lib/av/aud/effects/space/flush_garbage.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_abort.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_abort2.mp3
/ko/h5/lib/av/aud/effects/space/hyperdrive_warmup.mp3
/ko/h5/lib/av/aud/effects/space/pressurize_airlock.mp3
/ko/h5/lib/av/aud/effects/space/shield_activate.mp3
/ko/h5/lib/av/aud/effects/space/shields_recharged.mp3
/ko/h5/lib/av/aud/effects/space/shields_recharged2.mp3
/ko/h5/lib/av/aud/effects/space/ship_dock.mp3
/ko/h5/lib/av/aud/effects/space/ships_collide.mp3
/ko/h5/lib/av/aud/effects/space/space_bug_scream.mp3
/ko/h5/lib/av/aud/effects/space/space_clank.mp3
/ko/h5/lib/av/aud/effects/space/space_dog_bark.mp3
/ko/h5/lib/av/aud/effects/space/space_drip.mp3
/ko/h5/lib/av/aud/effects/space/space_glug.mp3
/ko/h5/lib/av/aud/effects/space/space_ribbit.mp3
/ko/h5/lib/av/aud/effects/space/space_vacuum.mp3
/ko/h5/lib/av/aud/effects/space/space_wind.mp3
/ko/h5/lib/av/aud/effects/space/super_web_active.mp3
/ko/h5/lib/av/aud/effects/switches/switch.mp3
/ko/h5/lib/av/aud/effects/switches/switch2.mp3
/ko/h5/lib/av/aud/effects/switches/switch3.mp3
/ko/h5/lib/av/aud/effects/switches/switch4.mp3
/ko/h5/lib/av/aud/effects/switches/switch5.mp3
/ko/h5/lib/av/aud/effects/ui/blurn.mp3
/ko/h5/lib/av/aud/effects/ui/blurn_shhh.mp3
/ko/h5/lib/av/aud/effects/ui/notify.mp3
/ko/h5/lib/av/aud/effects/ui/select.mp3
/ko/h5/lib/av/aud/effects/ui/select2.mp3
/ko/h5/lib/av/aud/effects/ui/select3.mp3
/ko/h5/lib/av/aud/effects/ui/select4.mp3
/ko/h5/lib/av/aud/effects/ui/select5.mp3
/ko/h5/lib/av/aud/effects/ui/shunt.mp3
/ko/srv/blab/aud_blab7/sound_001.mp3
/ko/srv/blab/aud_blab7/sound_002.mp3
/ko/srv/blab/aud_blab7/sound_003.mp3
/ko/srv/blab/aud_blab7/sound_004.mp3
/ko/srv/blab/aud_blab7/sound_005.mp3
/ko/srv/blab/aud_blab7/sound_006.mp3
/ko/srv/blab/aud_blab7/sound_007.mp3
/ko/srv/blab/aud_blab7/sound_008.mp3
/ko/srv/blab/aud_blab7/sound_009.mp3
/ko/srv/blab/aud_blab7/sound_010.mp3
/ko/srv/blab/aud_blab7/sound_011.mp3
/ko/srv/blab/aud_blab7/sound_012.mp3
/ko/srv/blab/aud_blab7/sound_013.mp3
/ko/srv/blab/aud_blab7/sound_014.mp3
/ko/srv/blab/aud_blab7/sound_015.mp3
/ko/srv/blab/aud_blab7/sound_016.mp3
/ko/srv/blab/aud_blab7/sound_017.mp3
/ko/srv/blab/aud_blab7/sound_018.mp3
/ko/srv/blab/aud_blab7/sound_019.mp3
/ko/srv/blab/aud_blab7/sound_020.mp3
/ko/srv/blab/aud_blab7/sound_021.mp3
/ko/srv/blab/aud_blab7/sound_022.mp3
/ko/srv/blab/aud_blab7/sound_023.mp3
/ko/srv/blab/aud_blab7/sound_024.mp3
/ko/srv/blab/aud_blab7/sound_025.mp3
/ko/srv/blab/aud_blab7/sound_026.mp3
/ko/srv/blab/aud_blab7/sound_027.mp3
/ko/srv/blab/aud_blab7/sound_028.mp3
/ko/srv/blab/aud_blab7/sound_029.mp3
/ko/srv/blab/aud_blab7/sound_030.mp3
/ko/srv/blab/aud_blab7/sound_031.mp3
/ko/srv/blab/aud_blab7/sound_032.mp3
/ko/srv/blab/aud_blab7/sound_033.mp3
/ko/srv/blab/aud_blab7/sound_034.mp3
/ko/srv/blab/aud_blab7/sound_035.mp3
/ko/srv/blab/aud_blab7/sound_036.mp3
/ko/srv/blab/aud_blab7/sound_037.mp3
/ko/srv/blab/aud_blab7/sound_038.mp3
/ko/srv/blab/aud_blab7/sound_039.mp3
/ko/srv/blab/aud_blab7/sound_040.mp3
/ko/srv/blab/aud_blab7/sound_041.mp3
/ko/srv/blab/aud_blab7/sound_042.mp3
/ko/srv/blab/aud_blab7/sound_043.mp3
/ko/srv/blab/aud_blab7/sound_044.mp3
/ko/srv/blab/aud_blab7/sound_045.mp3
/ko/srv/blab/aud_blab7/sound_046.mp3
/ko/srv/blab/aud_blab7/sound_047.mp3
/ko/srv/blab/aud_blab7/sound_048.mp3
/ko/srv/blab/aud_blab7/sound_049.mp3
/ko/srv/blab/aud_blab7/sound_050.mp3
/ko/srv/blab/aud_blab7/sound_051.mp3
/ko/srv/blab/aud_blab7/sound_052.mp3
/ko/srv/blab/aud_blab7/sound_053.mp3
/ko/srv/blab/aud_blab7/sound_054.mp3
/ko/srv/blab/aud_blab7/sound_055.mp3
/ko/srv/blab/aud_blab7/sound_056.mp3
/ko/srv/blab/aud_blab7/sound_057.mp3
/ko/srv/blab/aud_blab7/sound_058.mp3
/ko/srv/blab/aud_blab7/sound_059.mp3
/ko/srv/blab/aud_blab7/sound_060.mp3
/ko/srv/blab/aud_blab7/sound_061.mp3
/ko/srv/blab/aud_blab7/sound_062.mp3
/ko/srv/blab/aud_blab7/sound_063.mp3
/ko/srv/blab/aud_blab7/sound_064.mp3
/ko/srv/blab/aud_blab7/sound_065.mp3
/ko/srv/blab/aud_blab7/sound_066.mp3
/ko/srv/blab/aud_blab7/sound_067.mp3
/ko/srv/blab/aud_blab7/sound_068.mp3
/ko/srv/blab/aud_blab7/sound_069.mp3
/ko/srv/blab/aud_blab7/sound_070.mp3
/ko/srv/blab/aud_blab7/sound_071.mp3
/ko/srv/blab/aud_blab7/sound_072.mp3
/ko/srv/blab/aud_blab7/sound_073.mp3
/ko/srv/blab/aud_blab7/sound_074.mp3
/ko/srv/blab/aud_blab7/sound_075.mp3
/ko/srv/blab/aud_blab7/sound_076.mp3
/ko/srv/blab/aud_blab7/sound_077.mp3
/ko/srv/blab/aud_blab7/sound_078.mp3
/ko/srv/blab/aud_blab7/sound_079.mp3
/ko/srv/blab/aud_blab7/sound_080.mp3
/ko/srv/blab/aud_blab7/sound_081.mp3
/ko/srv/blab/aud_blab7/sound_082.mp3
/ko/srv/blab/aud_blab7/sound_083.mp3
/ko/srv/blab/aud_blab7/sound_084.mp3
/ko/srv/blab/aud_blab7/sound_085.mp3
/ko/srv/blab/aud_blab7/sound_086.mp3
/ko/srv/blab/aud_blab7/sound_087.mp3
/ko/srv/blab/aud_blab7/sound_088.mp3
/ko/srv/blab/aud_blab7/sound_089.mp3
/ko/srv/blab/aud_blab7/sound_090.mp3
/ko/srv/blab/aud_blab7/sound_091.mp3
/ko/srv/blab/aud_blab7/sound_092.mp3
/ko/srv/blab/aud_blab7/sound_093.mp3
/ko/srv/blab/aud_blab7/sound_094.mp3
/ko/srv/blab/aud_blab7/sound_095.mp3
/ko/srv/blab/aud_blab7/sound_096.mp3
/ko/srv/blab/aud_blab7/sound_097.mp3
/ko/srv/blab/aud_blab7/sound_098.mp3
/ko/srv/blab/aud_blab7/sound_099.mp3
/ko/srv/blab/aud_blab7/sound_100.mp3
/ko/srv/blab/aud_blab7/sound_101.mp3
/ko/srv/blab/ui/sounds/1.mp3
/ko/srv/blab/ui/sounds/2.mp3
/ko/srv/blab/ui/sounds/3.mp3
/ko/srv/blab/ui/sounds/4.mp3
/ko/srv/blab/ui/sounds/5.mp3
/ko/srv/blab/ui/sounds/6.mp3
/ko/srv/blab/ui/sounds/7.mp3
/ko/srv/blab/ui/sounds/8.mp3
/ko/srv/blab/ui/sounds/9.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/alarm3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/buzz.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/compute_ack.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/compute_ack_long.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/ping.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/ping2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/retro_beep1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/retro_beep2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/beeps/super_ping.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/alien_comm.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/alien_comm2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_noise.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_signal.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/comm/radio_tune.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/cloaking_device.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/computing.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/drop_item.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/engine.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/lightning1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/lost_in_time.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_bass_note.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_flange_rez.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/low_hum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/onimous_echo.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/quasar.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/scanner.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/environmental/war_drum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion7.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/explosion8.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/explosions/low_explosion.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/boss_transform.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/boup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/brain_fry.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_mine.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_radio.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/deploy_web.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/electric_drop.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/final_boss_die.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/get_item.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/get_item2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/item_appear.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/item_appear2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/lock_on.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/materialize.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/power_up.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/robot_error.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/robot_no.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/whiplash.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/wobble.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/misc/wobble2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot1.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/alien_shot7.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/clash_ricochet.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/hit5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ion_cannon.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ion_cannon_light.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/laser.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/pea_shooter.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/photon.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/quantum_missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/ricochet6.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/scatter_shot.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/scatter_shot2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/super_missile.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/projectiles/super_missile2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/black_hole.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/cosmic_string.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_launch_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_swoop_down.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/enemy_wake_up.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/engine_damage.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/engine_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/flush_garbage.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_abort.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_abort2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/hyperdrive_warmup.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/pressurize_airlock.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shield_activate.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shields_recharged.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/shields_recharged2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/ship_dock.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/ships_collide.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_bug_scream.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_clank.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_dog_bark.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_drip.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_glug.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_ribbit.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_vacuum.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/space_wind.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/space/super_web_active.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/switches/switch5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/blurn.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/blurn_shhh.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/notify.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select2.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select3.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select4.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/select5.mp3
/ko/svc/effectgames/ht/images/docs/aud/effects/ui/shunt.mp3
/ko/svc/effectgames/ht/sounds/shutter.mp3
/ko/svc/js/effectgm/htdocs/sounds/shutter.mp3
/ko/svc/js/kojs/kojs_3js_stemkoski/7DFPS/audio/deep-solar-wind.mp3
/ko/svc/js/kojs/kojs_threejs/examples/sounds/358232_j_s_song.mp3
/ko/svc/js/kojs/kojs_threejs/examples/sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3
/ko/svc/js/stemkoskijs/7DFPS/audio/deep-solar-wind.mp3
/ko/svc/js/threejs/examples/sounds/358232_j_s_song.mp3
/ko/svc/js/threejs/examples/sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3
/ko/svc/js/threejs-tetris/music/cash.mp3
/ko/svc/js/threejs-tetris/music/collision.mp3
/ko/svc/js/threejs-tetris/music/gameover.mp3
/ko/svc/js/threejs-tetris/music/move.mp3
/ko/svc/jsdoit/preload/_assets/audio/Thunder.mp3
/ko/svc/jsdoit/preload/_assets/static/CabinBoy.mp3
/ko/svc/tests/easeljs/_assets/audio/bionic.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/break.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/death.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/music.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/shot.mp3
/ko/svc/tests/easeljs/examples/Game/sounds/spawn.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/BodySlam.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/DirtSlide.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/EnemyHit.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/garywalk_chill.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/HitHard4.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/jump4.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/LaserGunShot.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/PressPlay.mp3
/ko/svc/tests/sandbox/PlanetaryGary/assets/sounds/TunnelCollision.mp3
/ko/svc/tests/sandbox/ToolkitBannerAd/sounds/EnemyHit.mp3
/ko/svc/tests/sandbox/ToolkitBannerAd/sounds/LaserGunShot.mp3
/ko/svc/tests/soundjs/_assets/audio/05-Binrpilot-Underground.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-AudioSprite.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Break.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Death.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Shot.mp3
/ko/svc/tests/soundjs/_assets/audio/Game-Spawn.mp3
/ko/svc/tests/soundjs/_assets/audio/GU-StealDaisy.mp3
/ko/svc/tests/soundjs/_assets/audio/Humm.mp3
/ko/svc/tests/soundjs/_assets/audio/M-GameBG.mp3
/ko/svc/tests/soundjs/_assets/audio/R-Damage.mp3
/ko/svc/tests/soundjs/_assets/audio/S-Damage.mp3
/ko/svc/tests/soundjs/_assets/audio/Thunder1.mp3
/ko/svc/tests/soundjs/_assets/audio/ToneWobble.mp3
/ko/svc/tests/soundjs/_assets/audio/U-CabinBoy3.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/break.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/death.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/music.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/shot.mp3
/ko/svc/tests/soundjs/examples/Game/sounds/spawn.mp3
/us0/2007/konet.ka5/httpdocs/mp3/net/silent.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND104.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND105.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND108.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND111.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND112.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND12.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND13.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND131.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND136.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND14.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND16.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND17.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND18.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND181.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND19.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND20.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND21.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND22.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND24.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND240.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND243.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND25.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND26.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND27.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND28.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND29.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND30.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND34.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND35.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND36.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND38.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND39.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND42.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND43.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND45.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND49.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND49D.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND5.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND50.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND528.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND53.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND54.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND55.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND560.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND563.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND57.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND58.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND6.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND65.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND68.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND7.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND713.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND735.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND8.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND827.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND9.mp3
/us0/2007/konet.ka5/httpdocs/mp3/pinball/SOUND999.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_space1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_space2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/delete_tek4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qabitem.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qabmenu.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qclick.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qdelete4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qmem4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen10.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen4.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen5.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen6.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen7.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen8.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen9.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_2000.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_99.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_bell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_birds.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_chimes.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_IPO.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_newsbreak.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qopen_rickety_mineshaft_of_riches.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qrecord.mp3
/us0/2007/konet.ka5/httpdocs/mp3/quicken/qrecord1.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/alarm.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/beep.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bells.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/blip.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/bubbles.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/busy.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/chord.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click2.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/click3.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/clink.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/clonk.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/cork.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/crumpling.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/cymbal.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/doorbell.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/exclamation.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/fall.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/flipflop.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/gong.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/metalcling.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/metalclonk.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/phaser.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/ping.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/sissors.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/slip.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/taps.mp3
/us0/2007/konet.ka5/httpdocs/mp3/spy/toilet.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/BEAM.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/BIRDS.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/CRICKET.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/KNOCK.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/MACHINE.mp3
/us0/2007/konet.ka5/httpdocs/mp3/ts3/PUTER.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_001.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_002.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_003.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_004.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_005.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_006.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_007.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_008.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_009.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_010.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_011.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_012.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_013.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_014.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_015.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_016.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_017.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_018.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_019.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_020.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_021.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_022.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_023.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_024.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_025.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_026.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_027.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_028.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_029.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_030.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_031.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_032.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_033.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_034.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_035.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_036.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_037.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_038.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_039.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_040.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_041.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_042.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_043.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_044.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_045.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_046.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_047.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_048.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_049.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_050.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_051.mp3
/us0/2007/kuntao.ka5/httpdocs/cms/images/stories/20000229/mp3/kt_000229_052.mp3
/vhosts1/chapel.ka6/httpdocs/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/ka5/httpdocs/doctorjoe/docjoe_dan_Tori_Amos_-_Yes,_Anastasia.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/A Hard Day's Night.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Always On My Mind.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Andrew Sisters- Bei Mir Bist du Schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Auctioneer.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Banana Boat Song.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Benny Goodman - Bei Mir Bist Du Schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Big girls don't cry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Bless The Beasts And Children.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Cab Calloway - Minnie The Moocher.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Can't Help Falling In Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Cherry Pink & Apple Blossom White.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/CherryCherry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Frances - Who's Sorry Now.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Frances Where the boys ARE.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Connie Francis - Mama.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Crazy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_bach_-_air_for_g_string.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_bach_-_brandenburg_concerto_3_allegro.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_canon_in_d.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_chopin_-_nocturne_in_e_flat.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_eugene_ormandy_-_grande_valse.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_humoresque.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_16_-_con_moto.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_5.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_hungarian_dance_no_7_in_a_-_brahms.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_monti-csardas.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_mozart-variation.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_mozart_-_moonlight_sonata.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_offenbach_-_tales_of_hoffmann,_barcarolle.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_classical_rhapsody_on_a_theme_of_paganini.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_andrew_sisters-_bei_mir_bist_du_schon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_a_byssele.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_bei_mir_bistu_shain.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_chiribim_chiribom.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_fargess_mich_nit.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_ich_hob_dich_zifeel_lieb.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_main_glick.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_ochy_chernye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_papirossen.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_rumeine.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_shabes_lich.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_tum_balalaika.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_barry_sisters_-_vie_a_heen_zol_ich_gayn.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_chassidic_melody__-_netania_davrath.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_chieu_matxcova.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_ein_keloheinu.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_eli_eli.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_eretz_eretz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_exodus-havah-nagilah_-_connie-francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_inzenyrska.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_theodore_bikel_-_mayn_shtetele_belz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_tumalalaika_-_herschel_bernardi.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_ethnic_yome,_yome_-_shoshana_damari.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_&_celine_dion_-_the_prayer.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_&_sarah_brightman_-_time_to_say_goodbye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_andrea_bocelli_-_puccini_-_nessun_dorma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_beverly_sills_-_richard_strauss_-_breit_uber_mein_haupt.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_carreras_domingo_pavarotti_-_nessun_dorma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_libiamo-libiamo-carlo-de-monte-victoria-de-los-angeles.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_luciano-pavarotti-una-furtiva-lagrima.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_mario_lanza_-_arriverderci_roma.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_rodgers_&_hammerstein_-_the_sound_of_music_-_edelweiss.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_sarah_brightman_&_andrea_bocelli_-_time_to_say_goodbye.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/dj_opera_sarah_brightman_-_hijo_de_la_luna.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - Que Sera Sera.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - Secret Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Doris Day - You Are My Sunshine.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Ella Fitzgerald - Heart and Soul.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frank Sinatra - One for my baby (and one more for the road) .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frank Sinatra - The Way You Look Tonight.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Frankie Lane - Cry of the wild goose.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Girl, You[ll Be a WomanSoon.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Good Night Irene.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Great Pretender (Platters).mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Green Green Grass Of Home.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/High Noon - Frankie Lane.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Honeycomb.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/I Want To Hold Your Hand.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/If you love me-BrendaLee.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/In The Good Old Summertime.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Kay Kyser,with Ish Kabibble, Harry Babbitt, Sally Mason - Three little Fishies.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/King of the Road.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/la-paloma - connie-francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Lili Marlene - Marlene Dietrich.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Little Sir Echo - Horace Heidt.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Louie Armstrong - What a Wonderful World.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Louie Louie - Kingsmen.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Love Me Tender.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Memories Are Made Of This.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Mister Sandman - The Chordettes .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/mockin_bird_hill_patti_page.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Mona Lisa.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/My Heart Belongs To DaddyK.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Norwegian Wood.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/oh_lonesome_me_connie_francis.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Pattie Page - How Much Is That Doggie In The Window.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Pattie Page - Tennessee Waltz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Quando, Quando, Quando-EngelbertHumperdinck.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Ramblin'_Rose.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Rosemary Clooney - This Ole House.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Scatterbrain - Freddy Martin Orch.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/September Morn.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/sherry.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Sons of The Pioneers _ Cool Water.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Springtime in the Rockies - Will Carter .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Standing On The Corner.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Sukiyaki.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Tennessee Waltz.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/That's Amore.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/The Platters The Great Pretender.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/The Platters - Unchained Melody.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/They Can't Take That Away From Me.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Tiny Bubbles & Pearly shells.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/topsy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Volare.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/What's new pussycat.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Why_Dont_You_Do_Right_.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/winchester_cathedral_petula_clark.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/windy.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Yellow Bird.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/Yesterday.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/You Can't Hurry Love.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/You've lost That Lovin' Feeling .mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/you-send-me.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/YouDon'tBringMeFlowers.mp3
/vhosts1/ka5/httpdocs/doctorjoe/media/mp3/favs/young_love.mp3
/vhosts1/ka5/httpdocs/zencart/media/thehunter.mp3
/vhosts1/ka5/inbox/brell77_snip22_carousel.mp3
/vhosts1/ka5/ko/shoutcast/scpromo.mp3
/vhosts1/ka5/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/ka5/ko/shoutcast/test1.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/scpromo.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/Start_Today_Again.mp3
/vhosts1/konet.org/public_html/ko/shoutcast/test1.mp3
/vhosts1/konet.org/public_html/zencart/media/thehunter.mp3
`;
kolists['av'] =
`/index1_avril.mp4
/index0.mp4
/index1.mp4
/index2.mp4
/index3.mp4
/index4.mp4
/index5.mp4
/index6.mp4
/index7.mp4
/index8.mp4
/index9.mp4
/index10.mp4
/index11.mp4
/av.mp4
/index.mp4
/index1.mp4
/index2.mp4
/index3.mp4
/index4.mp4
/kb/vid/youb/tech_petdrone_skydio_r1_review.mp4
/kb/vid/youb/tech_unboxing_led_500.mp4
/kb/vid/youb/tech_thermoelectric_cooler_pelier.mp4
/kb/vid/youb/dance_rtsf2019_dietmar_n_nellia?never_stop_jiving.mp4
/kb/vid/youb/ dance_butoh_japan.mp4
/kb/vid/youb/dance_peeping_tom_le_salon.mp4
/kb/jtfdc/vid/jtfdc_20190124_1350_stalkaround_lwhitesuv_jtf30in_jkwii.mp4
/kb/jtfdc/vid/jtfdc_20190122_2200_stalkaround_jtf28in_drivewaytraffic.mp4
/kb/vid/youb/01_sixto_rodriguez_sandrevan_lullabylifestyles_[coming_from_.mp4
/ko_jtf/kb/v/index.mp4
/ko_jtf/kb/v/jtfinc_9559_byrd_trustee_threat_201505.mp4
/ko_jtf/kb/v/index1.mp4
/ko_jtf/kb/v/ko_jtf.mp4
`;
kolists['fb'] =
`pages/1.jpg
pages/2.jpg
pages/3.jpg
pages/4.jpg
pages/5.jpg
pages/6.jpg
pages/7.jpg
pages/8.jpg
pages/9.jpg
/imgs/gif/alien_tek/a11_flipbook.gif
/imgs/gif/alien_tek/afda.gif
/imgs/gif/alien_tek/applewait.gif
/imgs/gif/alien_tek/asdfadfad.gif
/imgs/gif/alien_tek/cityspiral.gif
/imgs/gif/alien_tek/cobe4.gif
/imgs/gif/alien_tek/donujt.gif
/imgs/gif/alien_tek/drip1.gif
/imgs/gif/alien_tek/floaters.gif
/imgs/gif/alien_tek/icepalace.gif
/imgs/gif/alien_tek/lit2.gif
/imgs/gif/alien_tek/lite1.gif
/imgs/gif/alien_tek/litecrystle.gif
/imgs/gif/view/giphy_view34.gif
/imgs/gif/view/giphy_view35.gif
`;
kolists['bb'] = ``;
kolists['dd'] = ``;
kolists['pn'] =
`/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg,.
/pn/imgs,mars-gale-crater-panorama-pia11241-full.jpg,mars-gale-crater-panorama-pia11241-full,.jpg,18009851,2017-07-17_07:37:49,
/pn/imgs/yard.jpg,.
/pn/imgs,yard.jpg,yard,.jpg,100790,2007-05-10_20:35:18,
/pn/imgs/pano_creek5.jpg
/pn/imgs/pano_burmuda.jpg
/pn/imgs/PIA22313_pano.jpg
/pn/imgs/Sol83-PremiersGivres-pano.jpg
/pn/imgs/Taipo_pano.jpg
/pn/imgs/Opportunity-Mars-Rover-Lander-pia19112.jpg
/pn/imgs/mars-rover-opportunity-pia19111_Sol3902B_Cape_Tribulation_L2R2ana.jpg
/pn/imgs/mars-rover-opportunity-pia19110_Sol3902B_Cape_Tribulation_L257F.jpg
/pn/imgs/mars-gale-crater-panorama-pia11241-full.jpg
/pn/imgs/opportunity-panorama-warton-ridge-enhanced-pia20850-full.jpg
/pn/imgs/mars-panoramic-mt-sharp-rover-curiosity-pia19662.jpg
/pn/imgs/pano_jtf_entrance_jtf.jpg
/pn/imgs/pano_jtf_entrance.jpg
/pn/imgs/pano_fork_grass.jpg
/pn/imgs/pano_jtfarms_entrance_9700x100.jpg
/pn/imgs/pano_backyard_all.jpg
/pn/imgs/pano_jtfarms_enter_hi.jpg
/pn/imgs/pano_falls.jpg
/pn/imgs/pano_falls1_4000.jpg
/pn/imgs/pano_courtyard2.jpg
/pn/imgs/pano_courtyard1.jpg
/pn/imgs/pano_closeline.jpg
/pn/imgs/pano_falls_south.jpg
/pn/imgs/pano_falls_north.jpg
/pn/imgs/pano_falls_015-285.jpg
/pn/imgs/pano_creek.jpg
/pn/imgs/yard.jpg
/pn/imgs/veneer.jpg
/pn/imgs/sphere.jpg
/pn/imgs/pano.jpg
// img.src = '