text:
// going to break the game into periods: 1, 2, 3, 4, 5 etc. and that way all posts and all data will be the same for all players no matter when they start to play. This also solves Alessandra Casella's problem. There has to be a global clock that is gotten by an ajax call. The global clock gives periods: 1, 2, 3, plus how many seconds are left before the next period starts. Each bet and each datapoint is tagged with a period number (the current one). Each players interface pulls out the current bets and datapoints out of the mongodb database.;

var putWindowDebug = false;
var callWindowDebug = false;
var betWindowDebug = false;

function lookup(firstDict, secondDict, names){
    strins=Object.keys(secondDict);
//cases.push()
    var target={};
    var cases=[];
    var tempList=[];
    names.map(function(n){target[n]=firstDict[n]})
    //alert(JSON.stringify(target))
    strins.map(function(n){tempList.push(n.split(";"))})
    //alert(JSON.stringify(tempList))
    tempList.map(function(m){
	var tempDict={};
	m.map(function(n){

	    var keyVal=n.split(":")
	    tempDict[keyVal[0]]=keyVal[1]

	})
	cases.push(tempDict)
    })
    var returnVal="";
    cases.map(function(ca){
	var checkList=[]
	Object.keys(ca).map(function(k)
			    {
				checkList.push(ca[k]===target[k])
			    });
	if (sum(checkList)===checkList.length)
	{
	    returnVal = secondDict[strins[cases.indexOf(ca)]]
	}
    })
    return returnVal
}

function makePrediction(variable, t, width, color)
{
    if (typeof(width) === "undefined")
    {
        width = 40;
    }

    var height = width*2.5;
    var predictionCanvas = Object.create(Widget);

    predictionCanvas.setShape(new createjs.Container());

    predictionCanvas.background = makeRect(1, height/2, "#666", 1, "#FFFFFF", 3);
    predictionCanvas.tags = {};
    predictionCanvas.background.render(predictionCanvas.shape, {x:width/2, y:0})

    var names = [];
    var conds = {};
    var queryPath = "";
    var returnList = [];

    variables.map(function(variab)
    {
        names.push(variab.varName.replace(" ", "_").toLowerCase());
    });

    //return JSON.stringify(conds)
    predictionCanvas.prediction = function(queryLookup, color)
    {
	//var sillydict={}
	//var Keys=Object.keys(somedict)
	//Keys.map(function(k){sillydict[k]=somedict[k];})
	//console.log(typeof(somedict), somedict)
	if (typeof(color)==="undefined"){color='red'}
	if (typeof(queryLookup)==="string") {

	    if (typeof(JSON.parse(queryLookup))!=="string") {
	    //if (typeof(JSON.parse(queryLookup))!=="string") {

		var lookupTable=JSON.parse(queryLookup);
		var predVals = [];

		var quer = lookup(truth[t], lookupTable, names);
		//alert(JSON.stringify(quer))
		var curKeys = Object.keys(quer).sort();
                var len = curKeys.length;
                var coordX = 6;

                curKeys.map(function(key)
                    {
                        if (typeof(predictionCanvas.tags[key])!=="undefined")
                        {
			    if (predictionCanvas.tags[key].isRendered()){
				predictionCanvas.tags[key].erase();
			    }
                            if (typeof(predictionCanvas.tags[key].rect)!=="undefined")
                            {
				if (predictionCanvas.tags[key].rect.isRendered()){
                                    predictionCanvas.tags[key].rect.erase();
				}
			    }
                        }
                    });

                for (var i=0; i<len; i++)
                {
                    predVals.push(quer[curKeys[i]]);
                    predictionCanvas.tags[curKeys[i]] = makeTextWidget(curKeys[i], 10, "Arial", "#666");
                    predictionCanvas.tags[curKeys[i]].rect=makeRect((width-10)/len, 0.70*height*quer[curKeys[i]], color, 1, "#FFFFFF", 3);
                //(betQueryWindow.height-120)*currentData[key]
                    predictionCanvas.tags[curKeys[i]].rect.render(predictionCanvas.shape, {x:coordX-(width-10)/(4*len), y:height*(1-0.7*quer[curKeys[i]])-20});
                    predictionCanvas.tags[curKeys[i]].render(predictionCanvas.shape, {x:coordX, y:height-20});
                    coordX += (1.0/len)*width;
                }

            }

        }

    }

    return predictionCanvas;

}

function getTime()
{
    var d = new Date();
    return d.getTime();
}

function capitalizeEachWord(str) {
    return str.replace(/\w\S*/g, function(txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

function getIntersect(arr1, arr2)
{
    var temp = [];
    for(var i = 0; i < arr1.length; i++)
    {
        for(var k = 0; k < arr2.length; k++)
        {
            if (arr1[i] == arr2[k])
            {
                temp.push( arr1[i]);
                break;
            }
        }
    }
    return temp;
}

var previousUpdateTime = getTime();

function makeBetButton2(betView)
{
    var betButton = makeButton("Offer Buy!", 70, 15);
    var callback = {
        'betView':betView,
        'truth':truth,
        "call": function()
        {
            var betView = this.betView;
            var valToBetOn = share_val;
            var points = "" + this.betView.pointsInp.getNumVal();
            var bayesVar = betView.bayesVar;
            var vars = modelClass.vars;
            var queryPath = "";
            var conditionalVarNames = getIntersect(Object.keys(truth[truth.length-1]), modelClass.vars);
            bettingVar = truth[truth.length-1]['betting_var'];
	    predictionVar = bettingVar;
            conditionalVarNames.map(function(na)
            {
                queryPath += "/" + na + ":" + truth[truth.length-1][na];
            });

            $.ajax({
                type: "GET",
                url: '/js/query' + queryPath,
                async: true,

                dataType: "json",
                success: function(data)
                {
                    if (typeof(data) === "object")
                    {
                        var prediction = data[bettingVar];
                        var currentKeys=Object.keys(prediction);
                        currentKeys.sort();
                        threshHold=Math.round(prediction[currentKeys[0]]*100);
                        //alert(threshHold)
                        if (points in range(threshHold + 1))
                        {
                            $.ajax({
                                type: "post",
                                url: '/js/newpost',
                                async: true,
                                data:JSON.stringify({"user_id": user.id, "treatmentNum": treatmentNum, "valToBetOn": valToBetOn, 'price': points, 'period': truth[truth.length-1].period}),
                                            dataType: "json",
                                dataType: "json",
                                contentType: "application/json",
                                success: function(){}
                            });
                        }
                        else
                        {
                            warn("You must choose a value for your buying offer, \n\nthat is below " +
                                    JSON.stringify(threshHold) + " points,\n\nor you must change your model!");
                        }
                    }
                    else {
                        warn(JSON.stringify(data));
                    }
                }
            });
            this.betView.pointsInp.clear();
        }
    };
    betView.pointsInp.registerEnterCallback(callback);
    makeClickable(betButton, callback);
    return betButton;
}

function makePutButton(betView)
{
    var putButton = makeButton("Offer Sale!", 70, 15);
    var callback = {
        'betView': betView,
        'truth': truth,
        "call": function()
        {
            var betView = this.betView;
            var valToBetOn = share_val;
            var points = "" + this.betView.pointsInp.getNumVal();
            var bayesVar = betView.bayesVar;
            var vars = modelClass.vars;
            var queryPath = "";
            var conditionalVarNames = getIntersect(Object.keys(truth[truth.length-1]), modelClass.vars);
            var bettingVar=truth[truth.length-1]['betting_var'];

            conditionalVarNames.map(function(na)
            {
                queryPath += "/" + na + ":" + truth[truth.length-1][na];
            });
                //alert(truth[truth.length-1].period);

            $.ajax({
                type: "GET",
                url: '/js/query' + queryPath,
                async: true,

                dataType: "json",
                success: function(data)
                {
                    if (typeof(data)==="object")
                    {
                        var prediction = data[bettingVar];
                        var currentKeys = Object.keys(prediction);
                        currentKeys.sort();
                        var threshHold = Math.round(prediction[currentKeys[0]]*100);
                        var greaterVal = range(101).slice(threshHold, 101);
                        var truthVal = (greaterVal.contains(parseInt(points)));
                        if (truthVal === true)
                        {
                            $.ajax({
                                type: "post",
                                url: '/js/newput',
                                async: true,
                                data:JSON.stringify({"user_id": user.id, "treatmentNum": treatmentNum, "valToBetOn": valToBetOn, 'price': points, 'period': truth[truth.length-1].period}),
                                            dataType: "json",
                                contentType: "application/json",
                                success: function(){}
                            });
                        }
                        else
                        {
                            warn("You must choose a value for your selling offer, \n\nthat is above " + JSON.stringify(threshHold) + " points,\n\nor you must change your model!");
                        }
                    }
                    else
                    {
                        warn(JSON.stringify(data));
                    }
                }

            });

            this.betView.pointsInp.clear();
        }
    };
    betView.pointsInp.registerEnterCallback(callback);
    makeClickable(putButton, callback);
    return putButton;
}

function makeContractedButton(inpWindow)
{
    var height=25;
    var contractedButton = Object.create(Widget);
    contractedButton.height = height;
    contractedButton.setShape(new createjs.Container());
    contractedButton.text = makeTextWidget(inpWindow.text, 15, "Arial", "#666");
    var textWidth = contractedButton.text.shape.getMeasuredWidth();
    var contractedButtonWidth = textWidth + 30;

    contractedButton.background = makeRect(contractedButtonWidth, height, "#ffffff", 0, "#FFFFFF", 3);
    contractedButton.background.render(contractedButton.shape, {x:0, y:0});
    contractedButton.text.render(contractedButton.shape, {x:15, y:4});

    contractedButton.frameWindow = inpWindow;

    var callback = {
        "button": contractedButton,
        "call": function() {
            var frameWindow = this.button.frameWindow;
            frameWindow.render(topLayer.shape, {x:frameWindow.xPos, y:frameWindow.yPos});
            this.button.erase();
        }
    };
    contractedButton.callback = callback;
    makeClickable(contractedButton, callback);
    return contractedButton;
}

function makeBarButton(inpWindow, yPos)
{
    var height = 25;
    var width = inpWindow.width //+ inpWindow.borderWidth*2;
    var barButton = Object.create(Button);
    barButton.setShape(new createjs.Container());
    barButton.background = makeRect(width, height, /*"#3B4DD0", "#3b5998"*/ '#FFFFFF', 0, 1, 3);
    barButton.background.render(barButton.shape, {x:0, y:0});
    barButton.text=makeTextWidget(inpWindow.text, 15,"Arial", "#666");
    barButton.text.render(barButton.shape, {x:(width-barButton.text.width)/2, y:(height-barButton.text.height)/2});
    barButton.shape.on("click", function (evt)
    {
        var button = makeContractedButton(inpWindow)
        button.render(topLayer.shape, {x:inpWindow.xPos, y:yPos});
        inpWindow.erase()
    });
    barButton.shape.on("mouseover", function(evt)
    {
        this.widget.background.changeColor("#666");
        this.widget.text.changeColor("#ffffff");
    });
    barButton.shape.on("mouseout", function(evt)
    {
        this.widget.background.changeColor("#ffffff");
        this.widget.text.changeColor("#666");
    });
    barButton.shape.on("mousedown", function(evt)
    {
        this.widget.background.changeColor("black");
        this.widget.text.changeColor("#ffffff");
        mousePressed = true;
    });

    return barButton;
}

function makeDataWindow(data, domain, variables, xPos, modelClass)
{
    variables.map(function(variable){variable.enabled=true});
    var names = [];
    var enabled = {};
    var bettingVar = truth[truth.length-1]['betting_var'];
    var borderWidth = 0;

    variables.map(function(variable)
    {
        names.push(variable.varName.toLowerCase().replace(" ", "_"));
    });

    names.map(function(name)
    {
        enabled[name] = true;
    });

    var colors={}
    variables.map(function(variable)
    {
        colors[variable.varName.toLowerCase().replace(" ", "_")] = variable.color;
    });

    var view = Object.create(View);
    view.frameHeight = (data.length + 1)*40;
    view.borderWidth = 0;
    view.xPos = xPos;
    view.height = (domain.length + 1)*50;//stageHeight-80;
    view.yPos = stageHeight - 1.5*view.height;
    view.text="<--  OLD" + "          " + "          " + "          " + "          " + "          " + "          " + "          " + "          " + "          " + "DATA" + "          " + "          " + "          " + "          " + "          " + "          " + "          " +  "          " + "          " + "NEW  -->";
    view.setShape(new createjs.Container());
    view.width = stageWidth-xPos-150;//(domain.length + 1)*50;
    view.barButton = makeBarButton(view, stageHeight-25);

    view.enabled = enabled;

    view.background = makeRect(view.width /*+ betQueryWindow.width*/, view.height*2, '#FFFFFF'/*'#EBEEF4',"#f0f0f0"*/, borderWidth, "#FFFFFF", 3);
    view.background.render(view.shape, {x:0, y:0});
    view.barButton.render(view.shape, {x:0, y:-22});
    yCoord = 5;
    coords = {};
    domain.map(function(element)
    {
	    makeTextWidget(element, 20, 'Arial', '#666').renderW(view, {x:10, y:yCoord+15});
	    coords[element] = yCoord;
	    yCoord += view.height/(domain.length);
	})
    view.data = data;

    view.drawInnerFrame = function()
    {
        view.innerFrame = WidgetHL();
        xCoord = 10;

		//alert(mydict.responseJSON)
	predictions = [];
	index = 0;
	view.data.map(function(dat)
		      {
			  var yOffset = 0;
			  names.map(function(key)
				    {
					value = dat[key];
					col = colors[key];
					if (value !== undefined)
					{
					    makeCircle(8, col).renderW(view.innerFrame, {x: xCoord, y: coords[value] + yOffset})
					}
					yOffset += 5;
				    });
			  dat.xCoord = xCoord;
			  pred=makePrediction(predictionVar, index, 40, colors[predictionVar.replace("_", " ").capitalize()])
			  pred.prediction({}, colors[bettingVar.replace("_", " ").capitalize()]);
			  pred.renderW(view.innerFrame, {x: xCoord-10, y: 115})
			  predictions.push(pred)

			  xCoord += 40;
			  index += 1;
		      });

        for (var i = 1; i < view.data.length; i++)
        {
            var dataLine = new createjs.Shape();
            var graphics = dataLine.graphics.setStrokeStyle(2);
            var yOffset = 0;
            names.map(function(key)
            {
                value0 = view.data[i-1][key];
                value1 = view.data[i][key];
                col = colors[key];
                graphics.beginStroke(col).moveTo(view.data[i-1].xCoord + 8,
                    coords[value0] + 8 + yOffset).lineTo(view.data[i].xCoord + 8,
                    coords[value1] + 8 + yOffset);
                graphics.endStroke();
                view.innerFrame.shape.addChild(dataLine);
                yOffset += 5;
            });
        }
    }

    sendModelIfUpdated();

    prevIsFreePeriod = false;
    view.drawInnerFrame();

    view.frame = makeFrameWidgetWide(
         view.height-80, view.width,
        view.innerFrame, view.frameHeight);

    view.frame.render(view.shape, {x:0, y:0});
    startCountDownText(view);

    return view;
}

alertStatus = 0

function getCurrTimePeriod()
{
    // the variable "truth" is just the data that the server returns
    return truth[truth.length-1].period;
}

function removeSpaces(inpStr)
{
    return inpStr.replace(/\s+/g, '');
}

function makePutWindow(bets, domain, betVariable, xPos)
{
    return makeBetWindow2(bets, domain, betVariable, xPos, true);
}

function makeCallWindow(bets, domain, betVariable, xPos, isPut)
{
    return makeBetWindow2(bets, domain, betVariable, xPos, false);
}

function makeBuyButton(xPos)
{
    var betButton = makeButton("Buy", 90, 25, "green");
    betButton.xPos=xPos;
    betButton.callback = {
        //'betView':betView,
        'truth':truth,
        "call": function()
        {
            //var betView = this.betView;
            var valToBetOn = share_val;
            var points = price;
	    var newShares =(user.points-user.points%points)/points;
            //var bayesVar = betView.bayesVar;
            var vars = modelClass.vars;
            var queryPath = "";
            var conditionalVarNames = getIntersect(Object.keys(truth[truth.length-1]), modelClass.vars);
            bettingVar = truth[truth.length-1]['betting_var'];
	    predictionVar=bettingVar;
            conditionalVarNames.map(function(na)
            {
                queryPath += "/" + na + ":" + truth[truth.length-1][na];
            });

            $.ajax({
                type: "GET",
                url: '/js/query' + queryPath,
                async: true,

                dataType: "json",
                success: function(data)
                {
                    if (typeof(data) === "object")
                    {
                        var prediction = data[bettingVar];
                        var currentKeys=Object.keys(prediction);
                        currentKeys.sort();
                        threshHold=Math.round(prediction[currentKeys[0]]*100);
                        //alert(threshHold)
                        if (points in range(threshHold + 1) && user.points-price>=0)
                        {
                            $.ajax({
                                type: "post",
                                url: '/js/newpost',
                                async: true,
                                data:JSON.stringify({"user_id": user.id, "treatmentNum": treatmentNum, "valToBetOn": valToBetOn, 'price': points, 'shares':newShares,  'period': truth[truth.length-1].period}),
                                            dataType: "json",
                                dataType: "json",
                                contentType: "application/json",
                                success: function(){}
                            });
                        }
                        else
                        {
			    if (user.points-price<=0)
			    {
				warn("You have no points to buy shares with.");

			    }
			    else
			    {
				warn("The current price of " + JSON.stringify(price) + " points \nexceeds your buying threshold of " + JSON.stringify(threshHold) + " points.\n\nIf you want to buy at the current price,\nyou must change your model!");
			    }
                        }
                    }
                    else {
                        warn(JSON.stringify(data));
                    }
                }
            });
            //this.betView.pointsInp.clear();
        }
    };
    //betView.pointsInp.registerEnterCallback(callback);
    makeClickable(betButton, betButton.callback, "green");
    return betButton;
}

function makeSellButton(xPos)
{
    var putButton = makeButton("Sell", 90, 25, "red");
    putButton.xPos=xPos;
    var callback = {
        //'betView': betView,
        'truth': truth,
        "call": function()
        {
            //var betView = this.betView;
            var valToBetOn = share_val;
            var points = price;
            //var bayesVar = betView.bayesVar;
            var vars = modelClass.vars;
            var queryPath = "";
            var conditionalVarNames = getIntersect(Object.keys(truth[truth.length-1]), modelClass.vars);
            //var bettingVar= truth[truth.length-1]['betting_var'];

            conditionalVarNames.map(function(na)
            {
                queryPath += "/" + na + ":" + truth[truth.length-1][na];
            });
                //alert(truth[truth.length-1].period);

            $.ajax({
                type: "GET",
                url: '/js/query' + queryPath,
                async: true,

                dataType: "json",
                success: function(data)
                {
                    if (typeof(data)==="object")
                    {
                        var prediction = data[bettingVar];
                        var currentKeys = Object.keys(prediction);
                        currentKeys.sort();
                        var threshHold = Math.round(prediction[currentKeys[0]]*100);
                        var greaterVal = range(101).slice(threshHold, 101);
                        var truthVal = (greaterVal.contains(parseInt(points)));
                        if (truthVal === true && user.shares>=1)
                        {
                            $.ajax({
                                type: "post",
                                url: '/js/newput',
                                async: true,
                                data:JSON.stringify({"user_id": user.id, "treatmentNum": treatmentNum, "valToBetOn": valToBetOn, 'price': points, 'shares':user.shares, 'period': truth[truth.length-1].period}),
                                            dataType: "json",
                                contentType: "application/json",
                                success: function(){}
                            });
                        }
                        else
			{
			    if (user.shares<=0)
			    {
				warn("You have no shares to sell.");

			    }
			    else
			    {
				warn("The current share price of " + JSON.stringify(price) + " points \nis below your threshold of " + JSON.stringify(threshHold) + ". \n\nIf you want to sell at the current price,\n you must change your model!");

			    }
                        /*{

                        }*/
			}
		    }
		    else
		    {
                        warn(JSON.stringify(data));
		    }
                }

	    });

            //this.betView.pointsInp.clear();
        }
    };
    //betView.pointsInp.registerEnterCallback(callback);
    makeClickable(putButton, callback, "red");
    return putButton;
}

//The below is not used now.
function makeBetWindow2(bets, domain, betVariable, xPos, isPut)
{
    //the variable "betVariable" is the variable on which bets are placed.
    var betWidth = 100;
    var betHeight = 40
    var betSpacing = 10;
    var distBetweenYs = betHeight + betSpacing;
    var borderWidth = 0;

    var view = WidgetHL();
    view.width = 240;
    view.height = 170;
    view.frameHeight = 190;

    view.borderWidth = borderWidth;
    view.xPos = xPos; //this is the x position of the entire view, along the stage.

    if (isPut) {
        view.text = "FOR SALE";
    } else {
        view.text = "SEEKING TO BUY";
    }

    view.barButton = makeBarButton(view, 75);
    view.bayesVar = betVariable;

    view.background = makeRect(view.width, view.height, '#FFFFFF'/*'#EBEEF4', "#f0f0f0"*/, borderWidth, "white", 3);
    view.background.renderW(view, {x:0, y:0});
    view.yPos = 75;

    view.bets = bets;
    view.data = {"myputs": [], "myposts": []};

    view.drawFrame = function()
    {
        var view = this;
        var frame = WidgetHL();
        frame.postItems = [];
        view.bets.map(function(bet)
        {
            var postItem = WidgetHL();
            postItem.bet = bet;
            bet.postItem = postItem;

            postItem.value = makeTextWidget(bet.title, 16, "Arial", "#666");
            postItem.betEdge = makeRect(40, betHeight-20, '#FFFFFF'/*"#A9D0F5"*/, 1, '#FFFFFF'/*"#A9D0F5"*/, 50);
            postItem.betEdge.renderW(postItem, {x: 40, y: 20});
            postItem.betBackground = makeRect(view.width,betHeight-20,'#FFFFFF'/*"#A9D0F5"*/, 1, '#FFFFFF'/*"#A9D0F5"*/);
            postItem.betBackground.renderW(postItem, {x:50, y:20});
            //postItem.value.renderW(postItem, {x:45, y:22});
            postItem.points = makeTextWidget(bet.price, 16, "Arial", "#666");
            postItem.pointsBackground = makeRect(30,betHeight-20,"#ffffff", 1, '#FFFFFF'/*"#A9D0F5"*/, 50);
            postItem.pointsBackground.renderW(postItem, {x:view.width-45, y:20});
            postItem.points.renderW(postItem, {x:view.width-40, y:22});

            postItem.author = makeTextWidget(postItem.bet.author, 12, "Arial", "#666");
            postItem.author.renderW(postItem, {x:65, y:23});
            postItem.view = view;

            postItem.hasAccept = false;
            if (postItem.bet.userid !== user.id)
            {
                postItem.hasAccept = true;
                postItem.acceptButton = WidgetHL();
                var acceptButton = postItem.acceptButton;
                acceptButton.background = makeRect(60, 20, "#3B5998");
                acceptButton.background.renderW(acceptButton, {x: 0, y: 0});

                if (postItem.view.isPut) {
                    var acceptText = "BUY";
                } else {
                    var acceptText = "SELL";
                }

                acceptButton.text = makeTextWidget(acceptText, 10, "Arial", "white");
                acceptButton.text.renderW(acceptButton, {x: 10, y:5});
                acceptButton.renderW(postItem, {x:150, y: 45})

                var acceptButtonCallBack = {
                    "acceptButton": acceptButton,
                    "postItem": postItem,
                    "call": function() {
                        var acceptOperation;
                        if (this.postItem.view.isPut) {
                            acceptOperation = 'accept_put';
                        } else {
                            acceptOperation = 'accept_call';
                        }
                        $.ajax({
                            type: "post",
                            url: '/js/' + acceptOperation + '/' + this.postItem.bet.id+"/"+ user.id+'/'+ this.postItem.bet.userid,
                            async: true,
                            data: JSON.stringify({"points": this.postItem.bet.price}),
                            dataType: "json",
                            contentType: "application/json",
                            success: function(){}
                        });
                    }
                };

                makeClickable3(acceptButton, acceptButtonCallBack, "orange", "red");
            }
            frame.postItems.push(postItem);
        });

        if (betWindowDebug) {
            alert("frame.postItems.length: " + frame.postItems.length);
        }

        yCoord = 70;
        view.frameHeight = Math.max(distBetweenYs*frame.postItems.length+20, 190);//it would be great to make this adoptable!
        for (var i=0;i<frame.postItems.length;i++)
        {
            frame.postItems[i].yCoord = yCoord;
            frame.postItems[i].renderW(frame, {x:10, y: view.frameHeight-frame.postItems[i].yCoord});
            yCoord += distBetweenYs;
        }

        view.frame = makeFrameWidget(
            view.width, 160,
            frame, view.frameHeight);

        view.frame.render(view.shape, {x:0, y:3});
    }

    view.drawFrame();
    view.isPut = isPut;

    view.previousUpdateTime = getTime();

    function refreshBets(event, data)
    {
        var view = data.view;
        var currentTime = getTime();
        if (currentTime-view.previousUpdateTime > 1000)
        {
            view.previousUpdateTime = currentTime;
            var getBetsUrl;
            if (view.isPut) {
                getBetsUrl = '/js/puts/'+ treatmentNum + '/' + getCurrTimePeriod();
                view.dataReturnKey = "myputs";
            } else {
                getBetsUrl = '/js/calls/' + treatmentNum + '/' + getCurrTimePeriod();
                view.dataReturnKey = "myposts";
            }
            //alert("sending update request to " + getBetsUrl);
            $.ajax(
                {
                    type: "GET",
                    url: getBetsUrl,
                    async: true,
                    dataType: "json",
                    success: function(data)
                    {
                        //do your stuff with the JSON data;
                        if (view.data[view.dataReturnKey].length !== data[view.dataReturnKey].length)
                        {
                            if ((putWindowDebug && view.isPut) || (callWindowDebug && !view.isPut))
                            {
                                var typeOfBet;
                                if (view.isPut) {
                                    typeOfBet = "PUTS";
                                } else {
                                    typeOfBet = "CALLS";
                                }
                                alert("NUMBER OF " + typeOfBet + " HAS CHANGED");
                                alert("view.data." + view.dataReturnKey + ".length: " + view.data[view.dataReturnKey].length);
                                alert("data." + view.dataReturnKey + ".length: " + data[view.dataReturnKey].length);
                            }
                            view.frame.erase();
                            view.bets = data[view.dataReturnKey];
                            view.drawFrame();
                            view.data = data;
                        }
                    }
                });
        }
    }

    var count=0;
    previousTimeT2 = getTime();

    createjs.Ticker.on("tick", refreshBets, null, false, {view: view});

    view.betBack = makeRect(view.width, 27, "#ffffff", borderWidth);
    view.betBack.render(view.shape, {x:0, y:162});
    view.inputLabel = makeTextWidget("Points:", 12, "Arial", "#666");
    view.inputLabel.render(view.shape, {x:70, y:170});

    ////view.pointMenu = makeScrollMenu(["10", "20", "30", "40", "50", "60", "70", "80", "90"], 40, 15, "white","0", 12);
    ////view.bettingMenu = makeScrollMenu(["A", "B", "C"], 40, 15, "white","Value", 12);
    ////view.pointMenu.render(view.shape, {x:120, y:170})
    ////view.bettingMenu.render(view.shape, {x:35, y:170});

    view.pointsInp = makeTextBox(20);
    view.pointsInp.renderW(view, Point(110, 165));

    view.barButton.render(view.shape, {x:-borderWidth, y:-22});

    if (view.isPut) {
        view.betButton = makePutButton(view);
    } else {
        view.betButton = makeBetButton2(view);
    }
    view.betButton.render(view.shape, {x:view.width-75, y:170});

    return view;
}

function showTestDataWindow()
{
    dataWindow = makeDataWindow(truth, ['A', 'B', 'C'], variables[2]);
    dataWindow.render(stage, {x:600, y:stageHeight-290});
}


Calcium Block With Cactus & Vegetables.
Helps to prevent overgrown beaks on tortoises.
Zoo Med's Tortoise Banquet Calcium Block is designed to provide supplemental calcium to your tortoise's diet while also helping to prevent your tortoise's beak from becoming overgrown. This formula includes a mixture of nutritious vegetables including Spineless Opuntia Cactus, Carrots, and Alfalfa in a solid Calcium base. The block provides enrichment to tortoises as they bite the block to get to the food inside.


text:
Her Name is Melinda McCormick: Three Blacks Who Murdered McCormick Because "they hated white people" sentenced (One had an IQ in the Mid-50s)
Remember Melinda McCormick, the white citizen of Pensacola who was brutally murdered by three blacks in 2013 because they "hate white people?"
Of course you don't.
But we do.
Despite the fact McCormick was targeted by the three blacks for death because those comprising the latter hate the former (for her membership in the white race), no hate crime charges were pursued.
Worse, the defense tried to claim one of the participants in the anti-white murder of McCormick by three blacks had an IQ in the 50s, meaning she wasn't fit for trial (it's been noted a Border collie, the smartest dog breed, has an IQ of 49...). [Woman gets 30 years for fatal beating, burning, PNJ.com, August 8, 2016]:
A woman who pleaded no contest to participating in the fatal beating and burning of a West Pensacola woman was sentenced to 30 years in state prison Friday.
In March 2013, Kiesha Pugh and two accomplices entered the Mobile Highway apartment of 33-year-old Melinda McCormick, beat her with blunt instruments, stole some of her belongings, and set McCormick's apartment on fire.
Pugh pleaded to charges of second-degree murder and arson and was sentenced by Circuit Judge Thomas Dannheisser. One of Pugh's co-defendants, Anthony Pressley, pleaded no contest to murder and was sentenced to 60 years in prison. A jury convicted the third co-defendant, Gregory Williams, of murder and arson, and he was sentenced to life in prison.
All three defendants possess some degree of mental disability, and mental health professionals worked with the trio to make them competent for court. At Pugh's sentencing Friday, her attorney asked that she receive a lessened sentence because Pugh's IQ is in the mid-to-low 50s and a physician said she did not possess the "critical thinking" abilities of a typical adult.
The doctor testified that Pugh's academic level was that of a second grader and that she had the emotional and social maturity of a 10- or 11-year-old child.
"She is someone who is easily led and she doesn't consider all possible outcomes," Pugh's attorney Richard Currey told the judge. "She's extremely vulnerable to peer pressure and unable to problem solve her way out of situations."
Pressley, Williams and Pugh reportedly hatched the plan to rob and kill McCormick and went to her home and attacked her with a hammer, pipe and crowbar. Pugh, Pressley's then girlfriend, claimed she participated in the murder because she was scared to refuse.
The Florida panhandle is basically Alabama south, a wonderful place full of good people who will vote overwhelmingly for Donald J. Trump this upcoming November.
Below, you can see the details from the SBPDL article back in 2013 (the links to the original articles no longer work, for they reveal a sordid reality of anti-white hatred the media must keep silent until white people have been deprived of the right to vote).
33-year-old Melinda McCormick (just another disposable white person), go ahead and ask yourself the same question. [New Details Emerge in the Melinda McCormick Case, ABC 3 WEAR, 4-9-13]:
We have new details on what happened to a Pensacola woman who was found inside a burning apartment.. Escambia County deputies have released the results of the autopsy.
The autopsy shows 33-year-old Melinda McCormick was brutally beaten with three different weapons, and then her home was set on fire. This weekend, three people were arrested for McCormick's death. Gregory Williams, Keisha Pugh, and Anthony Pressley are all charged with first degree murder and armed robbery.
Channel Three's Christina Leavenworth joins us now live with more on the suspects' motive.
The suspects are now in the Escambia County Jail on no bond. The sheriff says the autopsy pictures are the worst he has ever seen. Investigators say Melinda McCormick let the suspects inside her home because she knew all three of them.
Gregory Williams was her boyfriend, but she had no idea what they had planned. A crime so heinous it brings tears to Serena Semkoff's eyes. Investigators say her neighbor, Melinda McCormick was beaten by a hammer, crow bar and a lead pipe, and then the suspects set her sheets on fire to try and destroy the body, but left the hammer behind. Serena Semkoff "Its a tragedy she was always so bubbly."
What were they after? Investigators say it was a plot to steal McCormick's social security benefits. Serena Semkoff "She would meet people on the bus tell them her business, tell her ...Told her you don't need to tell them all your business."
State Attorney, Bill Eddins, also says it was fueled by hate. One of the suspects says he did it because he hated white people.
Bill Eddins "That aspect should be evaluated as heinous atrocious and cruel and that will be used to see whether or not we seek the death penalty...." It was the surveillance video at the apartments that led investigators to the three suspects. Deputies say all three admitted to the crime.
They also told deputies McCormick was begging them to stop. Hearing these new details make the death even more painful for her neighbors... "We were just next door, we just moved from 7a to here which is right next door, it would have been easily us, ..."
Just right next door from a murder, with one of the motives being intense anti-white sentiment, that will never receive any national press coverage.
Here's more on McCormick death, with gruesome details of her autopsy revealing disturbing images of what happened in the room right next door from 7a [State To Seek Death Penalty In Beating, Burning Death, North Escambia, 4-9-13]:
Anthony Lamar Pressley, 26, Kiesha LeShay Pugh, 28, and Gregory Edward Williams, 21, were each charged with homicide and robbery for the March 31 death of Melinda McCormick inside her burning apartment of Mobile Highway. All three have confessed, investigators said.
Deputies say an autopsy shows McCormick was hit 40 times with a hammer, lead pipe and crow bar. She was still alive when her bed sheets were set on fire, according to the State Fire Marshal's Office. They were caught on video (see below) headed to and away from the area of the apartment.
Williams reportedly told investigators that he hated white people, and that was a partial reason for the crime.The trio allegedly planned to steal Social Security money from McCormick. Officials said arson charges may also be added against the men.
"This was a particular hateful crime," Escambia County Sheriff David Morgan said. "One of the saddest parts of this story is that the card that they intended to steal was not even in the woman's residence."
Yet they stole the life of a white woman, who they admitted they hated the race she represented, and none will face the death penalty.
Ricky Tucker said...
White people are going to have to start living their lives like Rick Grimes and co. From The Walking Dead, armed and ready to fight. No one reading this should go through the day unarmed. Get a gun and permit, get a knife, mace, a tactical pen, a baseball inside a gym sock...something, anything. Don't let them get too close and if you have to strike don't hesitate or show mercy.
This poor woman is dead because she believed the fairy tale IKAGO. Some blacks are able to present themselves as "regular people" and some delusional Whites accept this at face value. Those of us who have had the misfortune to live or work around blacks know this is only a temporary state of being. Their true color (pun intended) is revealed when YT has something they want, or when YT is outnumbered. They ALWAYS revert to what they truly are - savage hominids. Teach your children the truth about blacks and browns.
9:00 PM Saturday night, officer involved shooting in Milwaukee. The orcs and hobgoblins are gathering in the darkness and rioting. Another white city gone to the chimps. Pretty sure all the blm assholes have been alerted, and are on their way to the airport to get there to show solidarity. Hillary Clinton roused from her drug induced coma to issue a prerecorded message of support. Scanner indicates crowd growing larger, more violent and agitated. Obama relaxes on Martha's Vineyard, blissfully thinking about today's golf game. Mainstream media busy trying to spin casual Trump remark into platform for moral indignation. Democrat's worrying about commie infiltration of their family secrets. Illegal aliens casually walking across border to no opposition from homeland security. Black males in Chicago busy killing anything they can see. Typical Saturday night in the new world order.
Simply put...."all's well that ends well". Once again the world is slightly safer.
A white woman living on social security at age 32 and dating a black guy. What could possibly go wrong? Guess the article answered that question. Anybody who has read even a bit of Negros in Negroland isn't the slightest bit surprised at the stupidity and cruelty.
The typical "urban youths." I never heard about this story but I heard plenty about Michael Brown and Trayvon Martin. That's strange...
Amberlamps said...
Burn the coal pay the toll.
So Williams was "dating" her and he hated YT? Yea that makes perfect sense, I've always thought that negroes with a YT were like that. Time and time again with their coalburners they seem to prove it, I'd be willing to bet that the coal burner murder numbers are much higher when the numbers are crunched and compared.
Before I got past the pictures it was obvious which one has the lowest IQ, the darkest one of course. That being said the other two probably are around 70. The darkest one looks almost pure African to me.
Philadelphia Mike said...
PK...what a great post! WOW. This one really addresses the most basic of issues that we face regarding the negro. His lack of intelligence as compared to the rest of humanity.
As most of us here already know, the negro is intellectually inferior to all of the other people of this planet.
But in this particular murder trial the attorney tried to use this fact to soften the sentence of the negro defendants. And the judge didn't bite. Instead, the judge still held the negro criminal defendants accountable for their actions. There was no bell curve here...no lowering of the standard.
It's a very interesting situation...because to hold the negro to a lower standard in a court of law due to his lack of intelligence would in essence be acknowledging in a court of law that he is inferior. Should the standard ever be lowered for the negro due to his lower intelligence, it would create a legal slippery slope whereby the negro would be acknowledged as not being equal to all other men. Case law and precedent would be set.
Wow...this is mind boggling.
Tonight's post was fascinating to me, PK. Thanks. :)
And to boot, the 3 IQ's of these feral negroes combined don't even equal the IQ of one White genius!!!!!
On another note...I really enjoyed your comment last night, German Rock.
Philadelphia Mike
Black people must be some supernatural punishment for the universe. Not sure what we did to deserve them, but it must have been a doozy! Sickest, most reprehensible bunch of debris to ever inhabit this planet. Hope this is the only planet that has them. My fantasy is to wake up and find that they are no longer here. Every last one of them, just gone.
Sounds like the attorneys and doctors are describing all of these creatures.
She was stupid to let them in though, if anyone should have known better she should have. Well, or maybe not, since she was probably brainwashed to think everyone is the same.
I'm probably not the first to mention this, but by the way, did anyone have Milwaukee in the race riot betting pool? It's going down tonight as I type this, police had to shoot a dindu with a gun and the onlookers chimped out and have torched several buildings and vehicles. They should just shoot them all.
Milwaukee was due for a riot.
http://www.cbsnews.com/news/police-shooting-in-milwaukee-sparks-violent-protest/
Texas here:
Savages.
I'm so sick of the "low IQ" defense. I've known a several low IQ people with the emotional maturity, as they say, of children.
They were sweet and gentle.
They were also white.
Now these "people"—savages. Subhuman savages.
"Gregory Williams was her boyfriend." He is one of the 3 negroids that killed her.
Another in a LONG line of warnings to White women. Nature color-coded these creatures for a reason, and it isn't a green light to lay down with disease-infested simians. Stay away from blacks and your life span will be greatly increased.
Proudyt said...
I guess no black on white violence is considered a hate crime until Hillary gets f*cked up the ass by one of these half human pos's. Please let's bring back public hangings.
Worse, the defense tried to claim one of the participants in the anti-white murder of McCormick by three blacks had an IQ in the 50s, meaning she wasn't fit for trial (it's been noted a Border collie, the smartest dog breed, has an IQ of 49...).
This proves that groids have a defect more serious than subhuman IQ. Notwithstanding its low IQ, a Border Collie is far more beneficial to modern society than a groid. Border Collies are lovable, inexpensive to feed, know not to shit in the floor, and will protect the home of their family – all qualities lacking in a groid.
Here's the plus side. Black Run America cannot stop Russian hackers...
skybill said...
Thx for the update..... IQ of 50...really??
40...60 and Life......How does that transfer into our Tax Dollars to house, clothe and feed these monsters from here out?????
Sorry, but I can't buy any lame excuse for these pieces of scum!!
Got Gunz.......OUTLAW!!!!,
III%,
skybill-out
The one with the IQ of 50 was the smart one of the group.
"Gregory Williams was her boyfriend..."
This is a problem. If your boyfriend is black, he'll likely attack.
rent slave said...
Blacks must think that Hillary's lead is safe as they're now rioting in Milwaukee.
Definitely a coal burner.. wont shed a tear
her attorney asked that she receive a lessened sentence because Pugh's IQ is in the mid-to-low 50s and a physician said she did not possess the "critical thinking" abilities of a typical adult.
So the attorney figured she belonged out in the public? Anytime Negroes and Liberals are mixed you get ignorant shit like this.Personally I believe the death penalty should be given to all three. None are redeemable. Why waste another dollar on any of them.
Wow, Milwaukee is on fire tonight. Dindu with a lengthy criminal record runs from police during a traffic stop while in possession of a stolen gun.
Officer shoots him, and another black saint is born.
The best part of the following article is a quote from Khalif Rainy:
Alderman Khalif Rainey, who represents the district where the violence occurred, said the city's black residents are "tired of living under this oppression." He said he didn't justify the violence "but nobody can deny that there are racial problems here in Milwaukee, Wisconsin, that have to be rectified."
Another formerly white area bites the dust. Because of "oppressed" blacks seeking "liberation". A vote for Hillary is a vote for more of this b.s.
https://www.washingtonpost.com/national/police-milwaukee-officer-fatally-shoots-man-who-had-gun/2016/08/13/74f6fe8c-61ba-11e6-84c1-6d27287896b5_story.html
Why did this woman associate with Williams? She let the trio in the house suspecting nothing.
I have to put a good bit of the blame on the white woman for associating with blacks.
Maybe white women think blacks are mythical good loving people who are rocket scientists. Maybe she liked the sex, but payed the price with her own life. Blacks are to be shunned and avoided at all cost.
I look at black people as wild animals. They can be tamed, but one must be forever vigilant. Why do we allow more of this kind in our country. The black woman had an IQ of 50 so her actions were predictable. Melinda was supposedly a smart white woman; so why did she allow herself to become involved with blacks? She didn't know about black behavior?
I could almost use the comments I made for the last story, but this Woman doesn't look like a trendy. It is more Coal Burning gone bad. She must have had a low I.Q. Obesity or some sort of substance abuse or get back at Daddy problem that lead her to the Dark Side. Here in St. Louis, I rarely see an attractive White Woman with a Black Man, it's always shall we say the less desirable ones. Nomesayin?
"....IQ is in the mid-to-low 50s ....did not possess the "critical thinking" abilities of a typical adult.
.....academic level was that of a second grader ..... the emotional and social maturity of a 10- or 11-year-old child.
......easily led and she doesn't consider all possible outcomes.... extremely vulnerable to peer pressure .... unable to problem solve her way out of situations."
As somebody pointed out yesterday, we have 40 million of these and we're importing more from darkest Africa every day.
These snippets pretty well describe TNB and every single black African on Earth to a greater or lesser degree. This is NOT because of democrats, broken homes, poverty, zip codes, schools, lack of God, or any other environmental factor, it is the culmination of aeons of evolution forging these creatures to a life of law of the jungle savagery in equatorial Africa. NOTHING short of tens of thousands of years of evolution will change this.
Nature over nurture is critical to our position and coming up with a sound negro policy that can preserve our civilization, while "Marxist Creationism" (the belief that the state can create the perfect 'citizen') depends on paint job theory. We must attack this absurdity relentlessly by questioning it and demanding evidence.
A million years ago some of our would-be ancestors never had the wherewithal to run or grab a pointed stick when they saw a sabre tooth tiger. They proved unfit and never passed along their DNA. We cannot grieve the loss of those without the sense of self preservation, pattern recognition, or risk assessment necessary to avoid becoming prey. Those are not the bloodlines we need to preserve our precious white race.
"..her academic level was that of a second grader and that she had the emotional and social maturity of a 10- or 11-year-old child. She is someone who is easily led and she doesn't consider all possible outcomes. She's extremely vulnerable to peer pressure and unable to problem solve her way out of situations."
The defense attorney inadvertently made one of the most spot-on descriptions of the average black adult, not realizing that his client was the average black adult.
"Hate" crimes can be committed only by Whites against Obama's Sons. You didn't get the DOJ memo, tovarisch?
Blacks swear their communities witness unnecessary deaths on a weekly basis. False testimony, false arrests, false prosecutions, false convictions, false imprisonment and claim wrongful execution of innocent black men mar the record of this nation's "Criminal Injustice System", as it is known in the black communities.
With that in mind, Major media outlets "openly" admit having policies of censoring black crime. The most "aggressively censored" news is black on white crime. When and where ever the media is exposed for covering up violent black on white crime, they fight back vigorously.
So, In black articles everyday and everywhere we read stuff like;- "MSNBC host Chris Hayes decided to turn the tables on Fox News' resident Grand Wizard, Bill O'Reilly by exposing White on White crime and how White culture is running America."
A negro won't get through one paragraph in Ebony without a blast of ;-"Whites demonstrate an appalling inability to view life through the black lens" and ' "indicative of the cloyingly clueless nature of whiteness." or " Lack of ability/ compulsion/requirement for White folks to understand the ways of black ones." Catch that?... requirement?
I'm just waiting for my race to shrug off the "requirement" guilt and fatigue, to sound off like they have a pair, to exercise the old saying, "when the going gets tough, the tough get going!
Johnny said...
Sorry, but I can't manage much sympathy for a mudshark who ended up dead. She was old enough to know better, and obviously had observed the savages in their natural habitat. She knew what they were.
OT, Hot off the press....
Milwaukee's getting culturally enriched.( Negroes riot over police shooting suspect "armed" with stolen gun.) MPD's officers body cam working fine and caught it all on tape. They didn't release the footage, so the smart, surprisingly intelligent, wonderful negro community, (already possessing all the facts and full knowledge of the true incident) decide to exercise their right to protest.
They just open a brand new barrel of "Negro Fatigue" on the city and play all night long.
Filthy savage animals.
Segregation NOW!!
And if you want to puke your f*cking guts out, read this drivel. Good peek inside the mind of a Liberal freak:
http://www.charlotteobserver.com/opinion/op-ed/article95399302.html
Comments are stupendous!
http://fox6now.com/2016/08/14/daylight-reveals-destruction-left-behind-from-night-of-unrest-in-milwaukee/
BTW, I stead of Milwaukee, shouldn't it be called, "Kill Whitey"?
"Gregory Williams was her boyfriend,"
THIS sentence says all we need to know about this woman. Good riddance to bad rubbish.
This should be an eye opener for anyone who is trying to push blacks forward. You can't they need to be returned to their own environment and that my friend is the continent of Africa. What you see happening in the Section-Ape housing is rapid breeding just like Africa. The male's bolt right after knocking up a female. As a result the father is unknown, she breeds 8 to 10 niglets, and as adults these niglets hook up with half brothers, sisters and cousins. You get that above an IQ of 50. Their IQ is not that great naturally, but you will see this more and more as time goes on. The negro is too dumb to be useful, however its animal intellect is a danger to all of the civilized world. We are at a crossroads folks, 60 years of wasted tax dollars totalling in the trillions and guess what..... mother nature wins, you cannot change genetics. A tiger is a tiger no matter where you locate it the world or how much you attempt to train it. It's time for them to go folks the experiment is over there is no society with wild apes on the loose.
Looks like Richie, Potsy, Ralph and Fonzie had a rough night in Milwaukee. Looking for whites to beat up? This is getting scary and old. Think I'll visit gander mountain and learn how to shoot. This country is screwed.
When will they ever learn? This is like people who keep tigers as pets.
Major chimpout in Milwaukee last night:
http://www.infowars.com/video-black-lives-matter-rioters-target-whites-for-beat-downs/
Two pickup trucks with eight men could have shut this down almost immediately.
Okay...maybe I'm just naive to the way government benefits work, but dont these morons need to at least resemble the person they're robbing in order to "steal her benefts"? Don't you need picture ID to cash a check every month? Or do these retarded apes think the government just sends a big sack of cash through the mail all at once, and all they'd need to do is find where the white woman hid it?
Christ, these chimps are unbelievable.
I'm sure these officers who arrested them must feel like Marlin Perkins!
"All three defendants possess some degree of mental disability"
It's not a mental disability per se, it's just a result of being born a negro.
What would our cities look like if every time a black person raped or murdered a white we riot and burn building's ? Let Milwaukee and Baltimore and Ferguson and whatever other city police shoot a scumbag burn. I'm all out of fucks to give.
as far as the Social Fascist american government is concerned, All White People are disposable & they faster we're disposed of the better. After, we're gone, it'll be the Asian peoples turn to be disposable
I wonder if she didn't have a black boyfriend, would she still be amongst the living? From my experience no matter how nice they are eventually you will see their true colors. Poor coalburner never got a little burnt from them to know better so she got burnt big time. Oh well.
Ohio girl
Worse, the defense tried to claim one of the participants in the anti-white murder of McCormick by three blacks had an IQ in the 50s,...
An IQ in the 50s?
She must have been the brains of the outfit.
Deadeye Dick said...
More people being attacked for being white.
http://www.theamericanmirror.com/video-milwaukee-agitators-shout-black-power-attack-white-drivers/
I stopped caring at "Gregory Williams was her boyfriend..."
Look, Milwaukee is on fire and I thought it would be Filthadelphia during the DNC that started the parade of riots. At least the nogs keep things unpredictable. Summer still has a few weeks left, plenty of time to "burn this bitch down" in the immortal words of The Gentle Giant Sr.
How will Queen Hillary respond to the riots? She has built her rickety "coalition of the fringes" (HT Steve Sailer) on (among others) BLM and hipster types, sort of like oil and water. Will Queen Hillary encourage BLM to "burn this bitch down" or just ignore the rioting? She can't openly encourage the rioters even though that's where her sympathies lie.
So far the MSM is simply ignoring the rioting except for Fox which had among others Newt "Cuckservative" Gingrich. Newt the Cuck knows what caused the riots; too high marginal tax rates,too many regulations, not enough "investment". Free enterprise is what the nogs need along with copies of the Constitution, Adam Smith's "The Wealth of Nations" and perhaps a little Edmund Burke for bedtime reading. First Newt the Cuck will have to teach Shitavious to read though.
This is playing right in to Trump's law and order theme especially if the rioting spreads. Hmmmm, on Sunday won't the nogs be on bended knee in church all day asking Chocolate Jesus to make the felonies go away? No doubt then Shitavious will have to go to bed early to get up early Monday morning to resume his career as an engineer, astronaut, doctor etc. just like I see on TV. I guess they won't have time to riot between praying and working.
non-DWL from NE
BHO says hello to PK
The 50 IQ is named "Pugh", or is it "Pug" like the dog? Someone here commented that border collies have an IQ of 49 and she does kind of look like a pug I once knew. The four legged pug was a thief too just like the two legged Pugh although the pug I knew confined his thieving to food, not SS checks.
I didn't read that she was burning coal?
Border collies fall into the "Working" dog category, and will instinctively herd animals that they come into contact with. Which is the opposite of blacks who instinctively avoid working, and hurt animals and humans that they come in contact with.
After reading that drivel I was happy to see "Comments disabled for this story", and could only imagine why the website would do that.
Blogger Ricky Tucker said...
Unfortunately Ol' Rick Grimes turned oil driller with Michonne at the end of last season! Hooray For Hollywood! ....
I would rather live with a tiger then a nog.
Sounds like she had more interest in negroes than simple friendship.
From a Florida paper:
Investigators say Melinda McCormick let the suspects inside her home because she knew all three of them. Gregory Williams was her boyfriend, but she had no idea what they had planned....
If that's accurate, then she burned coal and then the coal burned her.
To be fair, she was probably mentally disabled. She's 33 and on Social Security? She's hanging out with and screwing negroes with IQS in the 50s and aren't even basketball millionaires ?
Someone should have been watching her. If they had, she might still be alive.
Mental illness. Its the new Dindu Nuffins.
"Blacks must think that Hillary's lead is safe as they're now rioting in Milwaukee."
BLM via (((Soros))) know that the fix is already in.
Black people must be some supernatural punishment for the universe. Not sure what we did to deserve them, but it must have been a doozy!
We treated them like human beings instead of surplus farm animals. It was kindness and empathy.
Please let's bring back public hangings.
I think it would take impalements or burnings at the stake to make an adequate deterrent.
Pugh's IQ is in the mid-to-low 50s and a physician said she did not possess the "critical thinking" abilities of a typical adult.
So the attorney figured she belonged out in the public?
There should be two options in the case of dangerous African retards: lifetime institutionalization or exile. A stipend to live in Liberia is the best option for America.
Remember our commenter a while back who took his leave of a stupid friend when said friend admitted a bunch of ghetto trash to his apartment... and the friend was beaten and robbed? Anti-racism is suicide. (Oddly that comment is un-findable now. "ghetto scum", "full body piece" and "yakuza" don't come up with any reference to it. I have to wonder if it's been removed or deliberately buried by TPTB.)
Coal burner. No sympathy here.
Damn near everything in the modern world has a warning label on it somewhere. Failure to heed these warnings can result in serious injury or death.
Blacks are color coded for your safety. Ignore it at your own peril.
I`m done giving a fuck about people stupid enough to allow blacks within arms reach.
We need some enterprising geneticist to concoct a new strain of necrotizing fasciitis that targets the melanin rich.
This would be a Godsend and could alleviate our suffering in a most expedient way
No! Marlin was always back at the nice Mutual of Omaha office, it was poor Jim who had to risk his ass in the field!
The comment I referred to above is still there:
http://stuffblackpeopledontlike.blogspot.com/2015/09/horatius-would-be-proud.html#c3260684180489512783
The phrases "yakuza", "ghetto scum" and "full body piece" are all in it, but searches come up empty. Something funny is going on.
My condolences to her family and friends. The comments trashing the murdered woman are really not right. Bad enough she's betrayed and murdered and then she's dehumanized on here?
To the idiots saying they have no sympathy, your IQ seems quite low.
An IQ of 50 is MENSA Society territory among negroes.
Remember Omar Thornton? The negro who killed 8 co-workers at a Connecticut beer distributorship?
He had a white girlfriend and a union job making great money, a pension and a future.
He got caught stealing beer and he was called on the carpet accompanied by his union rep.
They reviewed tapes of the theft together with management and the proof was incontrovertible.
He was fired, because of, you know, "racism."
What else could he do but return with two pistols and commit murder?
He was down with the struggle.
I have to disagree about Pensacola, as a former resident, the place is pure trash. The people there are, by and large, stereotypical southern waste-lazy, stupid, willfully ignorant, cowardly, fat, you name it. They aren't much better than their black neighbors, by and large. You're right, though, they'll vote for Trump because they are stupid enough to believe that a man who employs sweatshops is somehow going to bring jobs back to America, even though their own economic squalor is a result of similar lack of foresight.
Blacks are retarded?
Who knew.
Still--burn the coal, lose your soul.
Probably also your life. Here is her honey muffin squeeze...who tortured her to death for a few hundred bucks.
http://www.gannett-cdn.com/-mm-/0d9c23749261a211c6d904bff4e5578a44767a7c/c=0-119-2072-2882&r=537&c=0-0-534-712/local/-/media/2016/03/08/Pensacola/Pensacola/635930461903825658-Gregory-Williams-Trial-3.JPG
Who would do anything, seeing that, but run away as fast as possible? Everything about him screams Dangerous Degenerate Retard.
Still there are many white women who did not have the strong white men role models that I did growing up. I was taught never to feel guilty for rebuffing the CONSTANT come-ons by groid males. I was inoculated before I got in PC settings where race-mixing (((was pushed on us constantly))).
Did this dead white woman think she was going to save him from his stupid and mean? Or did she think she was taking in an orphan pit bull and somehow she could be its savior? Or what?
White saints are canonized by the church,
black saints are "cannonized" by Smith & Wesson.
Thank you, thank you . . . I'll be here all week . . . tip your wait staff . . .
Arms reach? More like the 21-foot rule.
The wheels have come off in Chicago and are grinding down to the hubs. I see the shot clock breaking the 2 hour mark for shootings and dropping under the 12 hour mark for murders by the end of the month.
White coworkers
I assume these eight are armed and white?
And Trump is the only one who actually went to Milwaukee. Fancy that. Not even president yet, but acting more presidential than Obama or Clinton.
I've read that it has been determined that there are sufficient significant differences between blacks and all other human races that they could in fact be classified as a different species.
Sally from the Valley said...
Agreed. This woman was likely intellectually disabled (on SSI,according to the story). And as someone pointed out earlier, white people with low IQs are usually friendly and trusting, unlike particularly low IQ blacks, who are often extra vicious.
She didn't know better, couldn't be expected to. Her white family should have been looking after this vulnerable woman. And the commenters here should have a little compassion for one of their own who obviously couldn't fend for herself. Empathy and morality are the primary qualities that set whites apart from the rest. Let's not lose those.
Just lost my Australian Shepherd almost identical to a Border Collier. He was our Guardian. Four legged burglar alarm. Never needed a gun. Every time he saw a lump of coal barking his head off. I could never pinpoint why. My son had a lump of coal friend that would come and have play dates. Ugh. Last week when we put him down John said he caught ronnie beating and kicking our dog. That is why that lump of coal never showed his face in our house again. Just bought a shotgun. It's name is Trump.
In two months Osama hands over the Internet to a foreign country. Just think Banks, social security, private banking online, investing hackable made possible by Osama. Like a theif in the night the bible says. October surprise a financial collapse.....things like EBT......martial law. Right before the election. Barry stays. I eeeffffing shudder.
SWF said...
Very well said. I don't care to mock and name call - I just feel that I don't wish to give up my own personal dignity, particularly when discussing the low IW 's anf uncivil behavior of a group of people. And - you are correct about the qualities of empathy, morality, and compassion being part of higher thinking and civilized behaviour. I don't like to see white women with black men as it is usually fat girls with low self-esteem and, often, low IQ'S themselves. I feel that black men only go after them to degrade them.Just another way to strike back at white people. I have a long time friend who is a black ' activist' (educational...) and she is dead set against interracial relationships. Her belief is, as is mine, that inter-breeding weakens the genetics of both - and she is correct. In nature there is no inter- breeding - lions and cheetahs, Blue Jays and Cardinals. If, through human intervention hybrids are created they are sterile. Big fail on Mother Natures part to not extend this to black/ white breeding!

redpajama_set_name: RedPajamaCommonCrawl


Tiny Sheets turns every table into a spreadsheet.
Press = or F2 in a table cell to enter a formula.
This demo is best viewed on Chrome, Firefox or Safari.
Press F2 or = to enter Formula Editing Mode, then enter your formula.
Pressing Esc or clicking outside the active table will abort.
Hitting enter will evaluate the formula and replace the cell with a new value.
Cells that have a formula are marked with an orange square in the bottom right corner.


text:
local data = require "data" -- only mutable global data
local audio = require "audio"

math.randomseed(os.time())

local scene = {};

local onExit = nil;

local score = 0;

local function createPoint(pointList, x, y)
  table.insert(pointList, {
    x = x,
    y = y
  });
end

function scene.getResolution()
  return 800, 600;
end

local pause = false;

local function drawDot(x, y, color)
  oldR, oldG, oldB = love.graphics.getColor();
  love.graphics.setColor(color.r, color.g, color.b, 255);
  love.graphics.arc("fill", x * data.rectSize + data.rectSize / 2, y * data.rectSize + data.rectSize / 2, data.rectSize / 2, 0, math.pi * 2);
  love.graphics.setColor(oldR, oldG, oldB, 255);
end

local function drawPoints(pointList)
  for k, v in pairs(pointList) do
    drawDot(v.x, v.y, {r = 255, g = 255, b = 0});
  end
end

local function updatePoints(pointList, delta)
  data.pointTimer = data.pointTimer + delta;
  if data.pointTimer >= data.pointDelay then
    createPoint(pointList, math.random(0, data.mapW - 1), math.random(0, data.mapH - 1));
    data.pointTimer = 0;
  end
end

local function iteratePoints(pointList, callback)
  for k, v in pairs(pointList) do callback(k, v) end
end

local function removePoint(pointList, index)
  return table.remove(pointList, index);
end

function getSpeed()
  return data.speed;
end

function increaseSpeed()
  data.speed = data.speed * 0.95;
end

function makeSnakeHead(sn)
  table.insert(sn, {x = math.floor(data.mapW/2), y = math.floor(data.mapH/2), nx = 0, ny = 0});
  --table.insert(sn, {x = math.floor(mapW/2), y = math.floor(mapH/2), nx = 0, ny = 0});
end

function makeEnemySnakeHead(sn)
  table.insert(sn, {x = math.random(0, data.mapW), y = math.random(0, data.mapH), nx = 0, ny = 0});
  --table.insert(sn, {x = math.floor(mapW/2), y = math.floor(mapH/2), nx = 0, ny = 0});
end

function addSnakeTail(sn)
  table.insert(sn, {
    x = sn[#sn].x + sn[1].nx;
    y = sn[#sn].y + sn[1].ny;
    nx = 0,
    ny = 0
  });
  return #sn;
end

function iterateSnakeTail(sn, callback)
  for k, v in pairs(sn) do
    if k > 1 then callback(k, v); end
  end
end

function scene.load(exit)
  data.snake = {};
  data.enemy = {};
  data.points = {};
  score = 0;

  makeSnakeHead(data.snake);
  makeEnemySnakeHead(data.enemy);

  local gameMusic = "music/HappyLevel.wav";

  if data.speed == data.difficulty.normal then gameMusic = "music/SwingingLevel.wav" end
  if data.speed == data.difficulty.fast then gameMusic = "music/FranticLevel.wav" end
  if data.speed == data.difficulty.extreme then gameMusic = "music/8BitMetal.wav" end

  audio.load("game-music", gameMusic)
  audio.load("sfx-die", "music/sfx/die.wav")
  audio.load("sfx-coin", "music/sfx/coin.wav")

  audio.play("game-music", true, data.musicVolume);
  onExit = exit;
end

function createMap(width, height)
  local result = {}
  for y = 1, height + 1, 1 do
    result[y] = {}
    for x = 1, width + 1, 1 do
      result[y][x] = 0
    end
  end
  return result;
end

function drawGameMap(w, h, size)
  r, g, b = love.graphics.getColor();
  love.graphics.setColor(0, 0, 64, 255);
  love.graphics.rectangle("fill", 0, 0, w * size, h * size);
  love.graphics.setColor(r, g, b, 255);
end

function decreaseUntilZero(var, val)
  if (var > 1) then var = var - val; end
  return var;
end

function darkenColor(color, value)
  color.r = decreaseUntilZero(color.r, value);
  color.g = decreaseUntilZero(color.g, value);
  color.b = decreaseUntilZero(color.b, value);
  return color;
end

function drawSnake(sn, snColor)
  snr, sng, snb = snColor.r, snColor.g, snColor.b;

  for i=1, #sn, 1 do
    if (sn[i].dead) then
      snColor = {r = 255, g = 0, b = 0}
    end
    local newColor = darkenColor({r = snColor.r, g = snColor.g, b = snColor.b}, i);
    drawDot(sn[i].x, sn[i].y, newColor);

  end
end

function scene.draw()
  drawGameMap(data.mapW, data.mapH, data.rectSize);
  local w, h = scene.getResolution();
  love.graphics.printf("Score: " .. score,0, h -  40, w,"center")

  drawSnake(data.snake, {r = 0, g = 255, b = 0})
  drawSnake(data.enemy, {r = 255, g = 255, b = 255})
  drawPoints(data.points);

  if data.snake[1].dead then
    love.graphics.setColor(0, 0, 0, 128);
    love.graphics.rectangle("fill", 0, 0, w, h);
    love.graphics.setColor(255, 214, 0);
    love.graphics.printf("Your snake died to deadly death. Press ESC to quit game.",0, h/2 -  10, w,"center")
    love.graphics.setColor(255, 255, 255, 255);
  end

end

function updateSnakeElement(el, prev)
  el.oldX = el.x;
  el.oldY = el.y;
  el.x = prev.oldX;
  el.y = prev.oldY;
  if (prev.dead) then el.dead = true; end
  return el;
end

function updateSnake(sn)
  if (not sn[1].dead) then
    sn[1].oldX, sn[1].oldY = sn[1].x, sn[1].y;
    sn[1].x = sn[1].x + sn[1].nx;
    sn[1].y = sn[1].y + sn[1].ny;
  end

  if sn[1].x > data.mapW - 1 then sn[1].x = 0; end
  if sn[1].y > data.mapH - 1 then sn[1].y = 0; end
  if sn[1].x < 0 then sn[1].x = data.mapW - 1; end
  if sn[1].y < 0 then sn[1].y = data.mapH - 1; end

  for i=2, #sn, 1 do
    local currentElement = updateSnakeElement(sn[i], sn[i-1]);
    if currentElement.x == sn[1].x and currentElement.y == sn[1].y then
      sn[1].dead = true;
      audio.play("sfx-die", false, data.sfxVolume);
    end
  end
end

function updatePlayer(sn)
  iterateSnakeTail(data.enemy, function(index, e)
    if sn[1].x == e.x and sn[1].y == e.y then
      sn[1].dead = true;
      audio.play("sfx-die", false, data.sfxVolume);
    end
  end)
  if sn[1].dead then
    if #sn > 1 then
      return table.remove(sn, #sn);
    else
      -- absolutely dead
    end
  end
  updateSnake(sn);
end

function scene.update(delta)
  if pause then return; end
  data.timer = data.timer + delta;
  if (data.timer >= getSpeed()) then
    updatePlayer(data.snake);
    updateEnemy(data.enemy, data.points);
    data.timer = 0;
  end

  updatePoints(data.points, delta);
  iteratePoints(data.points, function(index, point)
    if point.x == data.snake[1].x and point.y == data.snake[1].y then
      addSnakeTail(data.snake);
      audio.play("sfx-coin", false, data.sfxVolume);
      score = score + data.coinValue;
      removePoint(data.points, index);
      createPoint(data.points, math.random(0, data.mapW - 1), math.random(0, data.mapH - 1));
    end
  end);

end

function findRandomPoint(pointList)
  r = math.random(1, #pointList);
  return pointList[r];
end

function setEnemyGoal(sn, point)
  sn[1].goal = point;
end

function preventSnakeSuicide(head, sn)
  for i, e in pairs(sn) do
    if i > 1 and head.x + head.nx == e.x and head.y + head.ny == e.y then -- collision ahead?
      if head.x + head.nx == e.x then head.nx = 0; end
      if head.y + head.ny == e.y then head.ny = 0; end
      if head.nx == 0 then
        if head.y + 1 == e.y then head.ny = -1; head.nx = 0; end
        if head.y - 1 == e.y then head.ny = 1; head.nx = 0; end
      end
      if head.ny == 0 then
        if head.x + 1 == e.x then head.nx = -1; head.ny = 0; end
        if head.x - 1 == e.x then head.nx = 1; head.ny = 0; end
      end
      -- preventSnakeSuicide(head, sn);
      head.goal = nil;
      break;
    end
  end
end

function findNearestPoint(head, pointList)
  result = pointList[1];
  compDist = nil;
  iteratePoints(pointList, function(index, p)
    dist = math.abs(head.x - p.x + head.y - p.y);
    if nil == compDist then compDist = dist; end
    if dist < compDist then
      result = p;
      compDist = dist;
    end
  end);
  return result;
end

function findPath(head)
  local distX = math.abs(head.goal.x - head.x);
  local distY = math.abs(head.goal.y - head.y);
  if distX > distY then
    head.ny = 0;
    if head.goal.x > head.x then head.nx = 1;
    elseif head.goal.x < head.x then head.nx = -1; end
    return;
  end
  if distX < distY then
    head.nx = 0;
    if head.goal.y > head.y then head.ny = 1;
    elseif head.goal.y < head.y then head.ny = -1; end
    return;
  end
end

function updateEnemy(sn, pointList)
  local goalExists = false;

  if sn[1].dead then
    if #sn > 1 then
      return table.remove(sn, #sn);
    else
      sn[1].dead = false;
      iterateSnakeTail(data.snake, function(i, e)
        if sn[1].x == e.x and sn[1].y == e.y then
          sn[1].dead = true;
        end
      end);
    end
  end

  iterateSnakeTail(data.snake, function(index, e)
    if sn[1].x == e.x and sn[1].y == e.y then

      if not sn[1].dead then
        audio.play("sfx-die", false, data.sfxVolume);
        score = score + data.killEnemyValue
      end

      sn[1].dead = true;
    end
  end)

  iteratePoints(pointList, function(index, p)
    if sn[1].goal and (p.x == sn[1].goal.x and p.y == sn[1].goal.y) then
      goalExists = true;
    end

    if sn[1].x == p.x and sn[1].y == p.y then
      addSnakeTail(sn);
      removePoint(pointList, index);
    end
  end) -- iterate points

  if not goalExists then sn[1].goal = nil; end

  if nil ~= sn[1].goal then
    findPath(sn[1])
  else
    sn[1].goal = findNearestPoint(sn[1], pointList);
  end
  -- if sn[1].nx ~= 0 then sn[1].ny = 0; end
  preventSnakeSuicide(sn[1], data.snake);
  preventSnakeSuicide(sn[1], sn);
  return updateSnake(sn);
end

function scene.keypressed(key)

  if key == "left" then
    data.snake[1].nx = -1
    data.snake[1].ny = 0;
  end

  if key == "right" then
    data.snake[1].nx = 1
    data.snake[1].ny = 0;
  end

  if key == "down" then
    data.snake[1].nx = 0
    data.snake[1].ny = 1;
  end

  if key == "up" then
    data.snake[1].nx = 0
    data.snake[1].ny = -1;
  end

  if key == "s" then
    addSnakeTail(data.snake);
  end

  if key == "p" then
    pause = not pause;
  end

  if key == "escape" then
    onExit(require "splash");
  end
end

return scene;

redpajama_set_name: RedPajamaGithub


text:
import os
import subprocess
import zipfile

# Thanks to https://github.com/youngsoul/ for this script
# Source: https://github.com/youngsoul/AlexaDeploymentSample
# Watch the tutorial video here: https://www.youtube.com/watch?v=WFWAK175p2g

"""
Script will create an AWS Lambda function deployment.

It expects there to be a deployments directory and it will create a
deployment of the form:

deployment_n

where n is incremented for each deployment based on the existing deployment
directories

"""

root_deployments_dir = "./deployments"

# List of files that should be included in the deployment
# Only the files listed here, and the libraries in the requirements.txt
# file will be included in the deployment.
deployment_files = ['AlexaAsanaClient.py']

def _read_requirements():
    with open("./requirements.txt", 'r') as f:
        install_requirements = f.readlines()

    return install_requirements

def _get_immediate_subdirectories(a_dir):
    return [name for name in os.listdir(a_dir)
            if os.path.isdir(os.path.join(a_dir, name))]

def _make_deployment_dir():
    all_deployment_directories = _get_immediate_subdirectories(root_deployments_dir)
    max_deployment_number = -1
    for deployment_dir in all_deployment_directories:
        dir_name_elements = deployment_dir.split("_")
        if( len(dir_name_elements) == 2):
            if int(dir_name_elements[1]) > max_deployment_number:
                max_deployment_number = int(dir_name_elements[1])

    if max_deployment_number == -1:
        max_deployment_number = 0

    deployment_name = "deployment_{0}".format(max_deployment_number+1)
    new_deployment_dir_path = "{0}/{1}".format(root_deployments_dir, deployment_name)

    if not os.path.exists(new_deployment_dir_path):
        os.mkdir(new_deployment_dir_path)

    return (new_deployment_dir_path, deployment_name)

def _install_requirements(deployment_requirements, deployment_dir):
    """
    pip install <requirements line> -t <deployment_dir>
    :param deployment_requirements
    :param deployment_dir:
    :return:
    """
    if os.path.exists(deployment_dir):
        for requirement in deployment_requirements:
            cmd = "pip install {0} -t {1}".format(requirement, deployment_dir).split()
            return_code = subprocess.call(cmd, shell=False)

def _copy_deployment_files(deployment_dir):
    for deployment_file in deployment_files:
        if os.path.exists(deployment_file):
            cmd = "cp {0} {1}".format(deployment_file, deployment_dir).split()
            return_code = subprocess.call(cmd, shell=False)
        else:
            raise NameError("Deployment file not found [{0}]".format(deployment_file))

def zipdir(dirPath=None, zipFilePath=None, includeDirInZip=False):
    """
    Attribution:  I wish I could remember where I found this on the
    web.  To the unknown sharer of knowledge - thank you.

    Create a zip archive from a directory.

    Note that this function is designed to put files in the zip archive with
    either no parent directory or just one parent directory, so it will trim any
    leading directories in the filesystem paths and not include them inside the
    zip archive paths. This is generally the case when you want to just take a
    directory and make it into a zip file that can be extracted in different
    locations.

    Keyword arguments:

    dirPath -- string path to the directory to archive. This is the only
    required argument. It can be absolute or relative, but only one or zero
    leading directories will be included in the zip archive.

    zipFilePath -- string path to the output zip file. This can be an absolute
    or relative path. If the zip file already exists, it will be updated. If
    not, it will be created. If you want to replace it from scratch, delete it
    prior to calling this function. (default is computed as dirPath + ".zip")

    includeDirInZip -- boolean indicating whether the top level directory should
    be included in the archive or omitted. (default True)

"""
    if not zipFilePath:
        zipFilePath = dirPath + ".zip"
    if not os.path.isdir(dirPath):
        raise OSError("dirPath argument must point to a directory. "
            "'%s' does not." % dirPath)
    parentDir, dirToZip = os.path.split(dirPath)
    #Little nested function to prepare the proper archive path
    def trimPath(path):
        archivePath = path.replace(parentDir, "", 1)
        if parentDir:
            archivePath = archivePath.replace(os.path.sep, "", 1)
        if not includeDirInZip:
            archivePath = archivePath.replace(dirToZip + os.path.sep, "", 1)
        return os.path.normcase(archivePath)

    outFile = zipfile.ZipFile(zipFilePath, "w",
        compression=zipfile.ZIP_DEFLATED)
    for (archiveDirPath, dirNames, fileNames) in os.walk(dirPath):
        for fileName in fileNames:
            filePath = os.path.join(archiveDirPath, fileName)
            outFile.write(filePath, trimPath(filePath))
        #Make sure we get empty directories as well
        if not fileNames and not dirNames:
            zipInfo = zipfile.ZipInfo(trimPath(archiveDirPath) + "/")
            #some web sites suggest doing
            #zipInfo.external_attr = 16
            #or
            #zipInfo.external_attr = 48
            #Here to allow for inserting an empty directory.  Still TBD/TODO.
            outFile.writestr(zipInfo, "")
    outFile.close()

if __name__ == "__main__":
    (deployment_dir, deployment_name) = _make_deployment_dir()
    _copy_deployment_files(deployment_dir)
    install_requirements = _read_requirements()
    _install_requirements(install_requirements, deployment_dir)

    zipdir(deployment_dir, "{0}/{1}.zip".format(root_deployments_dir, deployment_name))


After getting engaged last year, Vivian Dsena and Vahbbiz Dorabjee enjoyed a wonderful courtship period which strengthened their relation even further. The couple has now decided to take this relationship a step mbele and enter a beautiful married life.
To find out zaidi about the same we contacted Vahbbiz who confirmed the news saying, "Yes, finally out marriage tarehe is decided . We are getting married on 7th January 2013."
While other actors on TV are content playing lover boy au somebody's husband, Vivian Dsena has carved a niche for himself kwa playing hatke roles. After all, not every actor gets to play a vampire on the small screen! After becoming the nation's moyo throb with his 'bloodthirsty' role, he is ready to take it up a notch kwa playing superstar RK in his new onyesha 'Madhubala-Ek Ishq Ek Junoon'. Though he is pushing the envelope when it comes to roles, he is not that adventurous when it comes to other things.
I heard that PKYEK seasen-2 is coming between 18 march-23 march 2112 .I visit on sukriti's real Facebook (with her proof)she alisema that k pkyek-2 changed its name- FANNA and misha(priya wal) is not in the serial.she miss her.Pkyek-2(fanna)'s set is very fabulas she like it so much! On shooting's first siku vahbiz come with vivian to support him.
Saurabh Tewari's Nautanki Films'Shikhar is undoubtedly the inayofuata much awaited onyesha on Colors. Several big names had reportedly been approached to be part of the onyesha and considering that the concept bordered around kuvuka, msalaba border romance, the hunt for the lead faces was magnanimous. We hear that many maarufu hunks of televisheni were approached for the male lead role and the onyesha has apparently shortlisted two names for the leads.
The pair, who has been very open about their relationship, kept the engagement under wraps. They did not call the media au share any details about the special occasion.
On which siku Vivu and vahbi engaged?


reinstall this driver? Already did the sfc /scannow and no error reported.
Any help would greatly be appreciated. Thanks!
Responses to "Firewall Driver (mdsdrv.sys)"
Doesn't hurt to try the links in safe mode (F-8).
successfully removed using the above scanner.
You can use Google to find it if the OneCare scan doesn't remove it.
> reinstall this driver? Already did the sfc /scannow and no error reported.
> Any help would greatly be appreciated. Thanks!
no infections found. Also I don't found any abnormal behavior in my system.
> Doesn't hurt to try the links in safe mode (F-8).
> successfully removed using the above scanner.
> You can use Google to find it if the OneCare scan doesn't remove it.
> > reinstall this driver? Already did the sfc /scannow and no error reported.
> > Any help would greatly be appreciated. Thanks!


We offer refunds rather than exchanges. That way you can re-order any style/color/size that you want, and at any time you want.
You have 30 days from the day your item shipped to initiate a return.
* Please note, the original manufacturer's shoe box should be enclosed in another bag/box before returning, as to preserve the quality of the original packaging. You may re-use the packing bag from the original shipment, or another form of packaging (plastic, paper, etc.), so long as it adequately protects the original manufacturer's shoe box.
Packages returned with shipping labels or tape attached directly to the shoe box will be denied.
A refund will be issued for the purchase price plus the original shipping charge if applicable.
Most credits are applied within 5 business days of receipt of the item, allowing for processing and inspection time.
You will receive a confirmation email when your account has been credited.
In order for a refund to be made, the returned merchandise must be in unworn, perfect, re-sellable condition. Please make certain to send your return via prepaid courier and use a service that employs a tracking number system. Make sure to enclose a copy of your order number, name and email.
Once we have your return and they have passed inspection, a full refund will be issued within 5 business days.
We do not offer exchanges. We have found that it is easier for both parties if a refund is made on the return, then the customer may make a new purchase for a replacement product.


I'd love a door like that!
Most of us would love that! 🙂 Thank you for your visit.
Very nice. Last time I went to Rajasthan mount abu. I couldn't go to udaipur as my flight was from jaipur. . how is the place ??
The place is beautiful; especially the lakes and the palaces. May be you can plan a trip next time.
What a pretty and colorful door it is ! City of lakes is just as beautiful as this art.
That is very true Rashmi! The lakes and palaces are beautiful at Udaipur.
Very well said Mihran! Each door says a story..
The floor looks like real marble.
This is real marble. Marble is mined at Makrana town in Rajasthan and is even exported for its high quality.
It is so vibrant! Beautiful!
What a beautiful work of art !!!
Thank you Sreejith! Appreciate your visit and the comment!
Great! I am sure you will have more fun time and pictures to share.


text:
Q: How to design an api to be called by different applications Application A has an api setAge(String staffName). Application B and C both call this api.
If a staff Jack has different names in A, B, C: JackA, JackB, JackC, so how to design application A to map JackB=>JackA and JackC=>JackA?

A: You need to model identity in some way. If your business objects (e.g. staff members) are persisted in a relational db you can use the table's primary key, but this is a rather bad practice, as technical keys should not be relied upon on the application level. Instead use a unique business-id for your entities. That can be a String or a UUID for example. When accessing the entities in your API, clients have to pass that business-id as a parameter.
If you are in an OO language like Java, you might have to consider implementing object equality through equals and hashCode contracts (see here).

redpajama_set_name: RedPajamaStackExchange