text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;

namespace MHGameWork.TheWizards.DependencyInjection
{
    /// <summary>
    /// Responsible for holding dependency bindings for interfaces
    /// </summary>
    public class DependencyBindings
    {
        private Dictionary<Type, object> bindings = new Dictionary<Type, object>();

        /// <summary>
        /// T should be an interface
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public void SetBinding(Type t, object instance)
        {
            bindings[t] = instance;
        }

        public object GetBinding(Type t)
        {
            if (!bindings.ContainsKey(t))
                executeDefaultBindingMethod(t);

            if (!bindings.ContainsKey(t))
            {
                Console.WriteLine("Interface: '{0}' is not bound to the DependencyBindings, and no default binding found.", t.FullName);
                return null;
            }

            return bindings[t];
        }

        private void executeDefaultBindingMethod(Type interfaceType)
        {

            var methods = interfaceType.Assembly.GetTypes().SelectMany(t =>
                                                         t.GetMethods(BindingFlags.Public | BindingFlags.Static)
                                                             .Where(m => isBindingMethodForType(m, interfaceType)));

            if (methods.Count() == 0)
                return;

            if (methods.Count() > 1)
            {
                Console.WriteLine(
                    "Multiple default binding methods found for interface '{0}', can't use default binding!",
                    interfaceType);

                return;
            }

            methods.First().Invoke(null, null);

        }

        private bool isBindingMethodForType(MethodInfo m, Type interfaceType)
        {
            return m.GetCustomAttributes(typeof(DefaultBindingMethodAttribute), false).Where(att => ((DefaultBindingMethodAttribute)att).InterfaceType == interfaceType).Count() > 0;
        }

    }
}


text:
/*
* This class holds the logics of the animationPage and all the different diagrams. It also holds some of the
* graphical components related to the diagrams.
*/

const processDivClassName = "processes";
const classesDivClassName = "classes";
const fieldsDivClassName = "fields";
const seqFrameDivClassName = "frameseq";
const parFrameDivClassName = "framepar";
const frameTitleClassName = "frameTitle";
const lifelines = "lifeLine";
const arrowDivClassNameL2R = "arrowLtoR";
const arrowDivClassNameR2L = "arrowRtoL";
const arrowDivClassNameSelfCall = "selfCallArrow";
const messageDivClassName = "messages";

var scrollBoolean = false;

var animator = JSON.parse(localStorage.getItem('stringJSON'));
var mainDiv = document.getElementById("outputJSON");
var log = document.getElementById("logList");
var llHeight = 150;
var counter = 0;
addColor = false;
logCounter = 0;

// The main function for running the simulated animation in animationPage
function outputAnimation(animator, tmpSocketIds) {
    socketIds = arrayifyString(tmpSocketIds);

    // an if statement to check if animation is going on at the moment or not. If it already is running it will do nothing.
    if (scrollBoolean) {}
    else {
        //Resets values used in the animation and clears the divs of previous content
        mainDiv.innerHTML = "";
        log.innerHTML = "";
        counter = 0;
        logCounter = 0;
        objectIndex = 0;

        if (animator.type === 'sequence_diagram') {
            scrollBoolean = true;

            llHeight = 150;
            //Selects the processes array in JSON File and iterates for every element
            processDiv = document.createElement("div");
            processDiv.className = "processDiv";
            mainDiv.appendChild(processDiv);

            for (var i = 0; i < animator.processes.length; i++) {

                createProcess(animator, i);

                //Similar behavior as in the previous block, but this time the lifelines are given a unique ID, are
                //appended to the <div> created in the previous block and the activators are appended to the lifeline divs.

                createLifeline(animator, i);
            }
            objectArray = [];
            addColor = false;
            arrowCounter = 0;
            createNodes(animator.diagram, mainDiv);
            setTimeout(function () {
                scrollBoolean = false;
            }, arrowCounter * 1000);
        }

        // Checks if it's a class diagram
        if (animator.type === 'class_diagram') {
            var left = 25;
            var top = 25;
            var classBool = true;
            for (var i = 0; i < animator.classes.length; i++) {
                createClass(animator, i, left, top);
                if (mainDiv.clientWidth - 400 < left && classBool) {
                    classBool = false;
                    top += 175;
                }
                else if (left < 150 && !classBool) {
                    top += 175;
                    classBool = true;
                }
                else if (classBool) {
                    left += 275;
                }
                else {
                    left -= 275;
                }
            }
            classLog(animator);
            makeRelations(animator);
        }

        if (animator.type === 'deployment_diagram') {
            var left = 25;
            var top = 25;
            // creates the boxes for the deployment diagram
            var depBool = true;
            for (var i = 0; i < animator.mapping.length; i++) {
                createDeploymentClass(animator, i, left, top);
                if (mainDiv.clientWidth - 400 < left && depBool) {
                    depBool = false;
                    top += 150;
                }
                else if (left < 150 && !depBool) {
                    top += 150;
                    depBool = true;
                }
                else if (depBool) {
                    left = left + 260
                }
                else
                    left -= 260;
            }
            makeDeploymentRelations(animator);
        }
    }
}

/*
* This function creates arrows based on the direction of the arrow by using the functions arrowL2R and arrowR2L.
* It checks the start and end position of each arrow in the content of the diagram section provided in the JSON file.
* The function is set to a timeout in order to generate the arrows one by one with a timeout of one second.
*/

function incrementLifeline(extraHeight) {

    var LifeLinesArray = document.querySelectorAll('.lifeLine');

    llHeight = llHeight + extraHeight;

    for (var k = 0; k < LifeLinesArray.length; k++) {
        LifeLinesArray[k].style.height = (llHeight + "px");
    }
}

function createLog(animator, i, e, total) {

    // resets the i and increment e as for loop inside a for loop to get all messages.

    if (animator.diagram.content[e].content.length === i) {
        i = 0;
        e++;
    }

    var li = document.createElement("li");
    li.setAttribute('id', ((total + 1) + ": Sending message From: " +
        animator.diagram.content[e].content[i].from.toString() + " To: " +
        animator.diagram.content[e].content[i].to.toString() + " || Message: " +
        animator.diagram.content[e].content[i].message.toString()));
    li.appendChild(document.createTextNode((total + 1) + ": Sending message From: " +
        animator.diagram.content[e].content[i].from.toString() + " To: " +
        animator.diagram.content[e].content[i].to.toString() + " || Message: " +
        animator.diagram.content[e].content[i].message.toString()));
    log.appendChild(li);

    if (animator.diagram.content.length > e) {
        // base case of the recursive loop
        if (animator.diagram.content[e].content[i + 1] === undefined && e + 1 === animator.diagram.content.length) {
            scrollBoolean = false;
        }
        // the recursive call of the loop and the incrementing of var i
        else {
            setTimeout(function () {
                i++;
                total++;
                createLog(animator, i, e, total);
            }, 1000);
        }
    }
}

function concatLog(to, from, messageString) {
    logCounter++;
    var li = document.createElement("li");
    li.setAttribute('id', logCounter + ":" + messageString);
    li.appendChild(document.createTextNode(logCounter + ". Sending message From: \"" + from +
        "\" To: \"" + to + "\" || Message: " + messageString));
    log.appendChild(li);
    document.getElementById('logList').scrollBy(0, document.getElementById('logList').scrollHeight);
}

/*
 * This function generates an arrow with the specific direction of left to right. It also generates the div related to
 * the message that each arrow carries. As stated in the function, arrows are children of frameDiv.
 */

function arrowL2R(from, to, messageSent, frameToAppend) {

    var arrow = document.createElement("div");
    var svg = document.createElementNS('http://www.w3.org/2000/svg', "svg");
    var polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
    var message = document.createElement("div");

    arrow.className = arrowDivClassNameL2R;
    var arrowLengthL2R = to.x - from.x;
    arrow.style.maxWidth = arrowLengthL2R + 'px';

    svg.setAttribute("preserveAspectRatio", "xMaxYMid slice");
    svg.setAttribute("viewBox", "0 0 1400 14");
    svg.setAttribute("width", "100%");
    svg.setAttribute("height", "14");
    polygon.setAttribute("points", "1400,7 1385,1 1390,6 0,6 0,8 1390,8 1385,13 1400,7");

    arrow.style.left = from.x - 20 + 'px';

    message.className = messageDivClassName;
    message.innerHTML = messageSent;

    arrow.appendChild(message);
    svg.appendChild(polygon);
    arrow.appendChild(svg);
    frameToAppend.appendChild(arrow);
    mainDiv.scrollBy(0, document.getElementById('outputJSON').scrollHeight);
}

/*
 * This function generates an arrow with the specific direction of right to left. It also generates the div related to
 * the message that each arrow carries. As stated in the function, arrows are children of frameDiv.
 */

function arrowR2L(from, to, messageSent, frameToAppend) {

    var arrow = document.createElement("div");
    var svg = document.createElementNS('http://www.w3.org/2000/svg', "svg");
    var polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
    var message = document.createElement("div");

    arrow.className = arrowDivClassNameR2L;
    var arrowLengthR2L = from.x - to.x;
    arrow.style.maxWidth = arrowLengthR2L + 'px';

    svg.setAttribute("preserveAspectRatio", "xMinYMid slice");
    svg.setAttribute("viewBox", "0 0 1400 14");
    svg.setAttribute("width", "100%");
    svg.setAttribute("height", "14");
    polygon.setAttribute("points", "0,7 15,1 10,6 1400,6 1400,8 10,8 15,13 0,7");

    arrow.style.left = to.x - 20 + 'px';

    message.className = messageDivClassName;
    message.innerHTML = messageSent;

    arrow.appendChild(message);
    svg.appendChild(polygon);
    arrow.appendChild(svg);
    frameToAppend.appendChild(arrow);
    mainDiv.scrollBy(0, document.getElementById('outputJSON').scrollHeight);
}

/*
 * This function generates a self-call arrow . It also generates the div related to
 * the message that the arrow carries. As stated in the function, arrows are children of frameDiv.
 */

function selfCallArrow(from, to, messageSent, frameToAppend) {

    var arrow = document.createElement("div");
    var svg = document.createElementNS('http://www.w3.org/2000/svg', "svg");
    var polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
    var message = document.createElement("div");

    arrow.className = arrowDivClassNameSelfCall;
    arrow.style.maxWidth = '150px';

    svg.setAttribute("preserveAspectRatio", "xMinYMin slice");
    svg.setAttribute("viewBox", "0 0 150 60");
    svg.setAttribute("width", "100%");
    polygon.setAttribute("points", "0,50 15,44 10,49 90,49 90,9 0,9 0,7 92,7 92,51 10,51 15,56 0,50");

    arrow.style.left = from.x - 20 + 'px';

    message.className = messageDivClassName;
    message.innerHTML = messageSent;

    arrow.appendChild(message);
    svg.appendChild(polygon);
    arrow.appendChild(svg);
    frameToAppend.appendChild(arrow);
    mainDiv.scrollBy(0, document.getElementById('outputJSON').scrollHeight);
}

/*
* Helper function that gets an arrow's exact position by using its dedicated id
*/

function getPosition(el) {
    var xPos = 0;
    var yPos = 0;
    while (el) {
        if (el.tagName == "BODY") {
            // deal with browser quirks with body/window/document and page scroll
            var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
            var yScroll = el.scrollTop || document.documentElement.scrollTop;

            xPos += (el.offsetLeft - xScroll + el.clientLeft);
            yPos += (el.offsetTop - yScroll + el.clientTop);
        } else {
            // for all other non-BODY elements
            xPos += (el.offsetLeft - el.scrollLeft + el.clientLeft);
            yPos += (el.offsetTop - el.scrollTop + el.clientTop);
        }

        el = el.offsetParent;
    }
    return {
        x: xPos,
        y: yPos
    };
}

/*
 * This function creates an object (process) in the SSD diagram from the list of processes in the JSON file provided.
 */

function createProcess(animator, i) {

    div = document.createElement("div");                                    //Creates an HTML <div> element
    stickyProcessContainerDiv = document.createElement("div");              //Creates an HTML <div> element
    stickyDiv = document.createElement("div");                              //Creates an HTML <div> element

    if (animator.processes.length > 6) {
        stickyProcessContainerDiv.className = "stickyProcessContainerDivBig";
        div.className = processDivClassName + "Big";                        //assigns it a class
        stickyDiv.className = "stickyDivBig";                               //assigns it a class
    }
    else {
        stickyProcessContainerDiv.className = "stickyProcessContainerDiv";
        div.className = processDivClassName;              //assigns it a class
        stickyDiv.className = "stickyDiv";                //assigns it a class
    }
    processDiv.appendChild(stickyProcessContainerDiv);

    stickyDiv.innerHTML =
        animator.processes[i].name.toString() + ": " +    //Gives it a text output as specified in the JSON file, here
                                                          //the class and name of the object
        animator.processes[i].class.toString();           //Here it is the class and name of the SSD object
    stickyProcessContainerDiv.appendChild(stickyDiv);

    if (animator.processes.length === socketIds.length) {
        div.id = socketIds[i];
        stickyDiv.id = socketIds[i];
    }

    else if (animator.processes.length > socketIds.length) {
        if (counter < socketIds.length) {
            div.id = socketIds[i];
            stickyDiv.id = socketIds[i];
            counter++;
        }
        else if (i - counter === socketIds.length) {
            counter += socketIds.length;
            div.id = socketIds[i - counter];
            stickyDiv.id = socketIds[i - counter];
        }
        else {
            div.id = socketIds[i - counter];
            stickyDiv.id = socketIds[i - counter];
        }
    }

    else if (animator.processes.length < socketIds.length) {
        if (counter < animator.processes.length) {
            div.id = socketIds[i];
            stickyDiv.id = socketIds[i];
            counter++;
        }
        else {
        }
    }
    console.log("stickyDiv id: " + stickyDiv.id);

    div.innerHTML =
        animator.processes[i].name.toString() + ": " +  //Gives it a text output as specified in the JSON file, here the class and name of the object
        animator.processes[i].class.toString();         //here it is the class and name of the SSD object
    mainDiv.appendChild(div);                           //Places the new <div> element under the mainDiv, as specified in the variable declaration in l.4
}

/*
 * This function creates the lifeline related to each object (process) in the SSD diagram. It also assigns an id to
 * each lifeline including the name of its object's name. This id is used later in locating the start and end position
 * of the arrows.
 */

function createLifeline(animator, i) {
    var lifeLineDiv = document.createElement("div");
    lifeLineDiv.className = lifelines;
    lifeLineDiv.id = animator.processes[i].name.toString();
    div.appendChild(lifeLineDiv);
}

function createClass(animator, i, left, top) {
    var div = document.createElement("div");
    div.className = classesDivClassName;
    div.innerHTML = animator.classes[i].name.toString();
    div.id = animator.classes[i].name.toString();
    mainDiv.appendChild(div);
    div.style.left = left + "px";
    div.style.top = top + "px";

    var div2 = document.createElement("div");
    div2.className = "hr2";
    div.appendChild(div2);

    var div3 = document.createElement("div");
    div3.className = fieldsDivClassName;
    div.appendChild(div3);

    fillFields(animator, div3, i);
    dragElement(div);
}

function fillFields(animator, div, i) {
    for (var x = 0; x < animator.classes[i].fields.length; x++) {
        var text = document.createElement("div");
        text.innerHTML = animator.classes[i].fields[x].name.toString() + ": " +
            animator.classes[i].fields[x].type.toString();
        div.appendChild(text);
    }
}

function classLog(animator) {
    var relation = "";
    for (var i = 0; i < animator.relationships.length; i++) {
        var li = document.createElement("li");
        if (animator.relationships[i].type === 'inheritance') {
            relation = " inherits "
        }
        else {
            relation = ""
        }
        li.setAttribute('id', ((i + 1) + ": " +
            animator.relationships[i].subclass.toString() +
            relation +
            animator.relationships[i].superclass.toString()));
        li.appendChild(document.createTextNode((i + 1) + ": " +
            animator.relationships[i].subclass.toString() +
            relation +
            animator.relationships[i].superclass.toString()));
        log.appendChild(li);
    }
}

function makeRelations(animator) {
    for (var i = 0; i < animator.relationships.length; i++) {
        if (document.getElementById("SUPER" + animator.relationships[i].superclass.toString() &&
                document.getElementById("SUB" + animator.relationships[i].subclass.toString()))) {
        }
        // If super is defined - Make sub
        else if (document.getElementById("SUPER" + animator.relationships[i].superclass.toString())) {
            makeSub(animator, i);
            makeLine(animator, i);
        }
        // If sub is defined - Make super
        else if (document.getElementById("SUB" + animator.relationships[i].subclass.toString())) {
            makeSuper(animator, i);
            makeLine(animator, i);
        }
        // If none are defined - Make both
        else {
            makeSuper(animator, i);
            makeSub(animator, i);
            makeLine(animator, i);
        }
    }
}

function makeSuper(animator, i) {
    var superClass = document.querySelector("#" + animator.relationships[i].superclass.toString());
    var superCont = document.createElement("div");
    superCont.className = "svgCont";
    superCont.id = "SUPER" + animator.relationships[i].superclass.toString();
    var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    var polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
    svg.setAttribute("height", "25px");
    svg.setAttribute("width", "25px");
    polygon.setAttribute("points", "1,12.5 24,1 24,24");
    polygon.setAttribute("style", "fill:white;stroke:black;stroke-width:3");
    svg.appendChild(polygon);
    superCont.appendChild(svg);
    mainDiv.appendChild(superCont);
    superCont.style.left = superClass.offsetLeft + 250 + "px";
    superCont.style.top = superClass.offsetTop + 60 + "px";
}

function makeSub(animator, i) {
    var subClass = document.querySelector("#" + animator.relationships[i].subclass.toString());
    var subCont = document.createElement("div");
    subCont.className = "svgCont";
    subCont.id = "SUB" + animator.relationships[i].subclass.toString();
    var svg2 = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svg2.setAttribute("height", "25px");
    svg2.setAttribute("width", "25px");
    subCont.appendChild(svg2);
    mainDiv.appendChild(subCont);
    subCont.style.left = subClass.offsetLeft + 125 + "px";
    subCont.style.top = subClass.offsetTop + 60 + "px";
}

function makeLine(animator, i) {
    var main = $("#outputJSON");
    var lineCont = document.createElement("div");
    var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    var line = document.createElementNS('http://www.w3.org/2000/svg', 'line');

    line.id = animator.relationships[i].superclass.toString() + animator.relationships[i].subclass.toString();
    lineCont.className = "lineCont";

    svg.appendChild(line);
    lineCont.appendChild(svg);
    mainDiv.appendChild(lineCont);

    svg.setAttribute("height", main.innerHeight());
    svg.setAttribute("width", main.innerWidth());
    line.setAttribute("x1", (document.getElementById("SUPER" + animator.relationships[i].superclass.toString()).offsetLeft + 13 + "px"));
    line.setAttribute("y1", (document.getElementById("SUPER" + animator.relationships[i].superclass.toString()).offsetTop + 13 + "px"));
    line.setAttribute("x2", (document.getElementById("SUB" + animator.relationships[i].subclass.toString()).offsetLeft + 13 + "px"));
    line.setAttribute("y2", (document.getElementById("SUB" + animator.relationships[i].subclass.toString()).offsetTop + 13 + "px"));
    line.setAttribute("style", "stroke:black;stroke-width:2");
}

function makeFrom(animator, i) {
    var subClass = document.querySelector("#" + animator.mapping[i].process.toString());
    var subCont = document.createElement("div");
    subCont.className = "svgCont";
    subCont.id = "FROM" + animator.mapping[i].process.toString() + "FROM" + animator.mapping[i].process.toString();
    var svg2 = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svg2.setAttribute("height", "25px");
    svg2.setAttribute("width", "25px");
    subCont.appendChild(svg2);
    mainDiv.appendChild(subCont);
    subCont.style.left = subClass.offsetLeft + 125 + "px";
    subCont.style.top = subClass.offsetTop + 50 + "px";
}

function makeTo(animator, i) {
    var subClass = document.querySelector("#" + animator.mapping[i].process.toString());
    var subCont = document.createElement("div");
    subCont.className = "svgCont";
    subCont.id = "TO" + animator.mapping[i].process.toString() + "TO" + animator.mapping[i].process.toString();
    var svg2 = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svg2.setAttribute("height", "25px");
    svg2.setAttribute("width", "25px");
    subCont.appendChild(svg2);
    mainDiv.appendChild(subCont);
    subCont.style.left = subClass.offsetLeft + 125 + "px";
    subCont.style.top = subClass.offsetTop + 50 + "px";
}

function makeDeploymentRelations(animator) {
    for (var i = 0; i < animator.mapping.length; i++) {
        if (i < 1) {
            makeFrom(animator, i);
            createDeploymentLines(animator, i);
        }
        else if (i == animator.mapping.length - 1) {
            makeTo(animator, i);
            createDeploymentLines(animator, i);
        }
        else {
            makeFrom(animator, i);
            makeTo(animator, i);
            createDeploymentLines(animator, i);
        }
    }
}

function createDeploymentClass(animator, i, left, top) {
    var div = document.createElement("div");
    div.className = classesDivClassName + " deploymentBox";
    div.innerHTML = "<<" + animator.mapping[i].device.toString() + ">>";
    div.id = animator.mapping[i].process.toString();
    mainDiv.appendChild(div);
    div.style.left = left + "px";
    div.style.top = top + "px";
    dragElement(div);
}

function createDeploymentLines(animator, i) {

    if (i == animator.mapping.length - 1) {
    }
    else {
        var main = $("#outputJSON");
        var lineCont = document.createElement("div");
        var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
        var line = document.createElementNS('http://www.w3.org/2000/svg', 'line');

        line.id = "FROM" + animator.mapping[i].process.toString() + "FROM" + animator.mapping[i].process.toString() +
            "TO" + animator.mapping[i + 1].process.toString() + "TO" + animator.mapping[i + 1].process.toString();
        lineCont.className = "lineCont";

        svg.appendChild(line);
        lineCont.appendChild(svg);
        mainDiv.appendChild(lineCont);

        svg.setAttribute("height", main.innerHeight());
        svg.setAttribute("width", main.innerWidth());
        line.setAttribute("x1", (document.getElementById(animator.mapping[i].process.toString()).offsetLeft + 13 + "px"));
        line.setAttribute("y1", (document.getElementById(animator.mapping[i].process.toString()).offsetTop + 13 + "px"));
        line.setAttribute("x2", (document.getElementById(animator.mapping[i + 1].process.toString()).offsetLeft + 13 + "px"));
        line.setAttribute("y2", (document.getElementById(animator.mapping[i + 1].process.toString()).offsetTop + 13 + "px"));
        line.setAttribute("style", "stroke:black;stroke-width:2");
    }
}

function dragElement(element) {
    var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
    element.onmousedown = dragMouseDown;

    function dragMouseDown(e) {
        e = e || window.event;
        // get the mouse cursor position at startup
        pos3 = e.clientX;
        pos4 = e.clientY;
        document.onmouseup = closeDragElement;
        // call a function whenever the cursor moves
        document.onmousemove = elementDrag;
    }

    function elementDrag(e) {
        e = e || window.event;
        // Calculate the new cursor position
        pos1 = pos3 - e.clientX;
        pos2 = pos4 - e.clientY;
        pos3 = e.clientX;
        pos4 = e.clientY;
        // Set the element's new position
        element.style.top = (element.offsetTop - pos2) + "px";
        element.style.left = (element.offsetLeft - pos1) + "px";
        moveRelation(element, pos2, pos1);
    }

    function moveRelation(element, pos2, pos1) {
        // If both are defined - move both
        if (document.getElementById("SUPER" + element.id.toString()) && document.getElementById("SUB" + element.id.toString())) {
            var SUPER = document.getElementById("SUPER" + element.id.toString());
            var SUB = document.getElementById("SUB" + element.id.toString());
            SUPER.style.top = (SUPER.offsetTop - pos2) + "px";
            SUPER.style.left = (SUPER.offsetLeft - pos1) + "px";
            SUB.style.top = (SUB.offsetTop - pos2) + "px";
            SUB.style.left = (SUB.offsetLeft - pos1) + "px";
            // Get all lines that has a connection to this SUPER
            var elements = $("line[id^='" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x1", ((SUPER.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y1", ((SUPER.offsetTop - pos1) + 13) + "px");
            }
            // Get all lines that has a connection to this SUB
            var elements = $("line[id$='" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x2", ((SUB.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y2", ((SUB.offsetTop - pos1) + 13) + "px");
            }
        }
        // If only super is defined - move super
        else if (document.getElementById("SUPER" + element.id.toString())) {
            // Move the SUPERcont
            var SUPER = document.getElementById("SUPER" + element.id.toString());
            SUPER.style.top = (SUPER.offsetTop - pos2) + "px";
            SUPER.style.left = (SUPER.offsetLeft - pos1) + "px";
            // Get all lines that has a connection to this SUPER
            var elements = $("line[id^='" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x1", ((SUPER.offsetLeft - pos2 + 13)) + "px");
                e.setAttribute("y1", ((SUPER.offsetTop - pos1) + 13) + "px");
            }
        }
        // If only sub is defined - move sub
        else if (document.getElementById("SUB" + element.id.toString())) {
            // Move the SUBcont
            var SUB = document.getElementById("SUB" + element.id.toString());
            SUB.style.top = (SUB.offsetTop - pos2) + "px";
            SUB.style.left = (SUB.offsetLeft - pos1) + "px";
            // Get all lines that has a connection to this SUB
            var elements = $("line[id$='" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x2", ((SUB.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y2", ((SUB.offsetTop - pos1) + 13) + "px");
            }
        }
        else if (document.getElementById("FROM" + element.id.toString() + "FROM" + element.id.toString()) &&
            document.getElementById("TO" + element.id.toString() + "TO" + element.id.toString())) {
            var SUPER = document.getElementById("FROM" + element.id.toString() + "FROM" + element.id.toString());
            var SUB = document.getElementById("TO" + element.id.toString() + "TO" + element.id.toString());
            SUPER.style.top = (SUPER.offsetTop - pos2) + "px";
            SUPER.style.left = (SUPER.offsetLeft - pos1) + "px";
            SUB.style.top = (SUB.offsetTop - pos2) + "px";
            SUB.style.left = (SUB.offsetLeft - pos1) + "px";
            // Get all lines that has a connection to this FROM
            var elements = $("line[id^='FROM" + element.id.toString() + "FROM" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x1", ((SUPER.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y1", ((SUPER.offsetTop - pos1) + 13) + "px");
            }
            // Get all lines that has a connection to this TO
            var elements = $("line[id$='TO" + element.id.toString() + "TO" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x2", ((SUPER.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y2", ((SUPER.offsetTop - pos1) + 13) + "px");
            }

        }
        else if (document.getElementById("FROM" + element.id.toString() + "FROM" + element.id.toString())) {
            var SUPER = document.getElementById("FROM" + element.id.toString() + "FROM" + element.id.toString());
            SUPER.style.top = (SUPER.offsetTop - pos2) + "px";
            SUPER.style.left = (SUPER.offsetLeft - pos1) + "px";
            // Get all lines that has a connection to this FROM
            var elements = $("line[id^='FROM" + element.id.toString() + "FROM" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x1", ((SUPER.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y1", ((SUPER.offsetTop - pos1) + 13) + "px");
            }
        }
        else if (document.getElementById("TO" + element.id.toString() + "TO" + element.id.toString())) {
            var SUB = document.getElementById("TO" + element.id.toString() + "TO" + element.id.toString());
            SUB.style.top = (SUB.offsetTop - pos2) + "px";
            SUB.style.left = (SUB.offsetLeft - pos1) + "px";
            // Get all lines that has a connection to this TO
            var elements = $("line[id$='TO" + element.id.toString() + "TO" + element.id.toString() + "']");
            // Loop through them and change their points
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                e.setAttribute("x2", ((SUB.offsetLeft - pos2) + 13) + "px");
                e.setAttribute("y2", ((SUB.offsetTop - pos1) + 13) + "px");
            }
        }
        else {}
    }

    function closeDragElement() {
        // Stop moving when mouse button is released
        document.onmouseup = null;
        document.onmousemove = null;
    }
}

/*
 *This function is responsible for parsing the JSON File nodes in its entirety.
 *It takes two parameters, a JSON Object (this could also be an array) as well as the frame
 *to append the nodes to.
 *
 *It is called recursively after each node creation and stops once the parsing is done.
 *The JSON must have at least one "send" node otherwise the function will hang.
 */

function createNodes(object, frameToAppend) {
    var arrayOfNodes = [];                    //This array will contain all the JSON Objects (nodes) inside object
    var arrayOfObjects = [];                  //This array will contain the "content" objects in the object

    for (key in object) {
        if (object.hasOwnProperty(key)) {
            if (key == "node") {
                arrayOfNodes.push(object[key]);
            }
            else if (key == "content") {
                arrayOfObjects = object[key];
            }
        }
    }

    for (var i = 0; i < arrayOfNodes.length; i++) {
        for (key in arrayOfNodes) {
            if (arrayOfNodes[i] === "seq") {
                var seqFrameDiv = document.createElement("div");    //create frame div seqFrame
                seqFrameDiv.className = seqFrameDivClassName;
                frameToAppend.appendChild(seqFrameDiv);
                if (frameToAppend.className === parFrameDivClassName) {
                    seqFrameDiv.style.borderBottom = "1.5px dashed black";
                }
                for (var j = 0; j < arrayOfObjects.length; j++) {
                    createNodes(arrayOfObjects[j], seqFrameDiv);    //calls the function to create objects contained in seq
                }
            }
            else if (arrayOfNodes[i] === "par") {
                var parFrameDiv = document.createElement("div");    //create frame div parFrame
                parFrameDiv.className = parFrameDivClassName;
                frameToAppend.appendChild(parFrameDiv);
                var parFrameTitle = document.createElement("div");
                parFrameTitle.className = frameTitleClassName;
                parFrameTitle.innerHTML = "par";                    //create frameTitle with "par" title
                parFrameDiv.appendChild(parFrameTitle);             //call createFrame(object content, frame parFrame)
                for (var j = 0; j < arrayOfObjects.length; j++) {
                    createNodes(arrayOfObjects[j], parFrameDiv);    //calls the function to create objects contained in par
                }
            }
            else if (arrayOfNodes[i] === "send") {
                var fromNode = getPosition(document.querySelector("#" + object.from.toString()));
                var toNode = getPosition(document.querySelector("#" + object.to.toString()));
                var messageToSend = "";

                if (object.message.length == 1) {
                    messageToSend += object.message[0];
                }
                else { //this clause serves to format the message if it contains function arguments
                    for (var j = 0; j < object.message.length; j++) {
                        if (j == 0) {
                            messageToSend += object.message[0] + "(";
                        }
                        else if (j == object.message.length - 1) {
                            messageToSend += object.message[j] + ")";
                        }
                        else {
                            messageToSend += object.message[j] + ", ";
                        }
                    }
                }
                var lifelineElement = document.getElementById(object.from);
                objectArray.push({
                    fromNode: fromNode, toNode: toNode, messageToSend: messageToSend,
                    frameToAppend: frameToAppend, objectFrom: object.from, lifelineElement: lifelineElement
                });
                setTimeout(function () {
                    serverRequest();
                    concatLog(object.from, object.to, messageToSend);
                }, arrowCounter * 1000);
                arrowCounter++;
            }
        }
    }
}

function updatePosition() {

    $(".arrowRtoL").empty();
    $(".arrowLtoR").empty();

    var tmpArray = objectArray;

    var fromNode = getPosition(document.querySelector("#" + animator.diagram.from.toString()));
    var toNode = getPosition(document.querySelector("#" + animator.diagram.to.toString()));

    for (var j = 0; j < tmpArray.length; j++) {
        tmpArray[j].fromNode = fromNode;
        tmpArray[j].toNode = toNode;
    }

    for (var i = 0; i < tmpArray.length; i++) {

        if (tmpArray[i].fromNode.x > tmpArray[i].toNode.x) {
            arrowR2L(tmpArray[i].fromNode, tmpArray[i].toNode,
                tmpArray[i].messageToSend, tmpArray[i].frameToAppend);
            incrementLifeline();

        }
        else {
            arrowL2R(tmpArray[i].fromNode, tmpArray[i].toNode,
                tmpArray[i].messageToSend, tmpArray[i].frameToAppend);
            incrementLifeline();
        }
    }
}

function arrayifyString(string) {
    var array = string.split(",");
    return array;
}

redpajama_set_name: RedPajamaGithub


text:
package org.vaadin.vol.client.wrappers.layer;

public class BingMapLayer extends Layer {

    protected BingMapLayer() {
    };

    public native final static BingMapLayer create(String displayName,
            String apikey, String type)
    /*-{
     	if(!displayName) {
     	    displayName = "Bing map";
     	}
     	var c ={};
     	c.name = displayName;
     	c.type = type;
     	c.key = apikey;

    	return new $wnd.OpenLayers.Layer.Bing(c);
    }-*/;

}


text: package sqlexp // imports github.com/golang-sql/sqlexp


text:
package com.ukefu.webim.web.handler.admin.system;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.google.gson.Gson;
import com.hazelcast.com.eclipsesource.json.JsonObject;
import com.ukefu.util.Menu;
import com.ukefu.webim.service.cache.CacheHelper;
import com.ukefu.webim.web.handler.Handler;

@Controller
@RequestMapping("/admin/monitor")
public class HazelcastMonitorController extends Handler{

    @RequestMapping("/hazelcast")
    @Menu(type = "admin" , subtype = "metadata" , admin = true)
    public ModelAndView index(ModelMap map , HttpServletRequest request , HttpServletResponse response) throws SQLException {
    	Map<String , Object> jsonObjectMap = new HashMap< String , Object>();

    	jsonObjectMap.put("agentUser" , convert(CacheHelper.getAgentUserCacheBean().getStatics())) ;
    	jsonObjectMap.put("agentStatus" , convert(CacheHelper.getAgentStatusCacheBean().getStatics())) ;

    	jsonObjectMap.put("apiUser" , convert(CacheHelper.getApiUserCacheBean().getStatics())) ;
    	jsonObjectMap.put("imrCache" , convert(CacheHelper.getIMRCacheBean().getStatics())) ;
    	jsonObjectMap.put("onlineUser" , convert(CacheHelper.getOnlineUserCacheBean().getStatics())) ;
    	jsonObjectMap.put("systemCache" , convert(CacheHelper.getSystemCacheBean().getStatics())) ;

    	map.addAttribute("systemStatics", new Gson().toJson(jsonObjectMap)) ;

    	response.setCharacterEncoding("UTF-8");
    	response.setContentType("application/json; charset=utf-8");
        return request(super.createRequestPageTempletResponse("/admin/system/monitor/hazelcast"));
    }
    /**
     * 转换统计数据
     * @param json
     * @return
     */
    private Map<String , Object> convert(JsonObject json){
    	Map<String , Object> values = new HashMap<String , Object>();
    	for(String key : json.names()){
    		values.put(key, json.get(key)) ;
    	}
    	return values;
    }
}


text:
@charset "UTF-8";
.vertical-middle-center {
  vertical-align: middle;
  text-align: center; }

.vertical-middle-right {
  vertical-align: middle;
  text-align: right; }

.vertical-middle-left {
  vertical-align: middle;
  text-align: left; }

.still-right {
  vertical-align: middle;
  padding-left: 27em; }

.vertical-top-center {
  vertical-align: top;
  text-align: center; }

.vertical-top-right {
  vertical-align: top;
  text-align: right; }

.vertical-top-left {
  vertical-align: top;
  text-align: left; }

.vertical-bottom-center {
  vertical-align: bottom;
  text-align: center; }

.vertical-bottom-right {
  vertical-align: bottom;
  text-align: right; }

.vertical-bottom-left {
  vertical-align: bottom;
  text-align: left; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "游ゴシック Medium", YuGothic, YuGothicM, "Hiragino Kaku Gothic ProN", メイリオ, Meiryo, sans-serif;
  font-size: 15px;
  line-height: 1.75; }

h4 {
  font-size: 25px;
  margin: 10px 0 30px;
  position: relative; }

h4:after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  top: 35px;
  width: 60px;
  height: 3px;
  background-color: #74c2fa; }

a img:hover {
  opacity: 0.75; }

.button--nostyle {
  border: none;
  background-color: transparent;
  padding: 0; }
  .button--nostyle:hover {
    opacity: 0.7; }
  .button--nostyle:focus {
    outline: transparent; }
  .button--nostyle img {
    margin: 0; }

.button--style {
  text-decoration: none;
  background-color: #f2b403;
  color: #fff;
  font-size: 20px;
  font-weight: 700;
  width: 39.88888%;
  border: none;
  border-radius: 0;
  padding: 20.3px 0;
  display: inline-block;
  margin-bottom: 0;
  margin-right: 10px;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  cursor: pointer; }
  .button--style:hover, .button--style:visited, .button--style:focus, .button--style:active {
    color: #fff;
    background-color: #f2b403;
    border: none;
    text-decoration: none; }
  .button--style:hover {
    opacity: 0.7; }

.confirming--btn {
  display: none; }

.button--show_more, .single--page_navigation a {
  padding: 10px 30px;
  border: 1px solid #146db9;
  color: #146db9;
  float: right;
  display: inline-block;
  text-decoration: none;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -ms-border-radius: 5px;
  border-radius: 5px; }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    .button--show_more, .single--page_navigation a {
      padding-bottom: 7px; } }
  @media screen and (min-width: 0\0) {
    .button--show_more, .single--page_navigation a {
      padding-bottom: 7px; } }

.button--show_more:hover, .single--page_navigation a:hover,
.button--show_more:visited,
.single--page_navigation a:visited,
.button--show_more:focus,
.single--page_navigation a:focus,
.button--show_more:active,
.single--page_navigation a:active {
  color: #146db9;
  text-decoration: none; }

.button--show_more:hover, .single--page_navigation a:hover {
  text-decoration: none;
  opacity: 0.75; }

.background--cover {
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat; }

.gradient--style, .job--category li .terms--parents {
  background: #146cb9;
  background: -moz-linear-gradient(top, #146cb9 0%, #74c2fa 74%, #74c2fa 100%);
  background: -webkit-gradient(left top, left bottom, color-stop(0%, #146cb9), color-stop(74%, #74c2fa), color-stop(100%, #74c2fa));
  background: -webkit-linear-gradient(top, #146cb9 0%, #74c2fa 74%, #74c2fa 100%);
  background: -o-linear-gradient(top, #146cb9 0%, #74c2fa 74%, #74c2fa 100%);
  background: -ms-linear-gradient(top, #146cb9 0%, #74c2fa 74%, #74c2fa 100%);
  background: linear-gradient(to bottom, #146cb9 0%, #74c2fa 74%, #74c2fa 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#146cb9', endColorstr='#74c2fa', GradientType=0 ); }

.dynamic--page {
  text-transform: uppercase; }

.container {
  max-width: 1029px; }

.container--small {
  max-width: 793px; }

.container--interview {
  margin: 0 auto;
  max-width: 780px; }

.site--header_main {
  background-color: #fff; }

.site--navigation {
  background-color: #74c2fa; }

.site--header_main {
  padding: 20px 0; }
  .site--header_main .custom-logo-link {
    float: left; }
    .site--header_main .custom-logo-link img {
      width: 116px; }
  .site--header_main .site-description {
    float: left;
    margin: 35px 0px 0px 20px;
    font-size: 15px;
    clear: inherit; }

.contact--btn {
  text-align: center;
  margin-top: 90px; }
  .contact--btn a {
    display: inline-block; }
    .contact--btn a img:hover {
      opacity: 0.75; }

.header--contact {
  float: right;
  margin-top: 10px; }

.header--contact a {
  display: block; }

.main-navigation ul {
  padding: 0 10px; }

.site--navigation .container {
  padding: 2px 0; }

.site--navigation_menu li {
  width: 13.9999999%;
  text-align: center; }
  .site--navigation_menu li a {
    color: #fff;
    padding: 5px 0;
    display: block; }
  .site--navigation_menu li a:hover {
    text-decoration: none;
    background-color: #fff;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    border-radius: 5px;
    color: #74c2fa; }

.slick--slide {
  position: relative; }
  .slick--slide img {
    max-width: 100%;
    width: 100%; }
  .slick--slide .container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 100%; }

.table--display {
  display: table;
  height: 100%;
  width: 100%;
  position: relative; }
  .table--display .table--cell_display {
    display: table-cell; }
    .table--display .table--cell_display img {
      width: auto; }

.slide--label_position {
  vertical-align: bottom;
  padding-bottom: 80px; }
  .slide--label_position img {
    display: inline-block !important; }

.page--description {
  text-align: center;
  margin-bottom: 70px; }

.section--blue {
  background-image: url("../images/blue-bg.jpg");
  background-repeat: repeat-x;
  padding: 40px 0;
  margin-bottom: 50px; }
  .section--blue p {
    font-size: 15px;
    color: #fff; }
    .section--blue p span {
      font-size: 24px; }

.section--content, .event--area {
  margin-bottom: 10em; }

.section--content--top-date {
  margin-bottom: 70px; }

.section--header {
  text-align: center;
  margin-bottom: 70px; }
  .section--header h1,
  .section--header h2 {
    color: #125e9f;
    font-size: 30px; }
  .section--header span {
    color: #262626;
    font-size: 14px; }

.section--header--top-page {
  margin-bottom: 50px; }

.interview--page img,
.benefit--page img {
  width: 100%; }

.interviewees--list {
  padding: 0 30px; }

.interviewees--images {
  margin-bottom: 50px; }

.interviewees--content {
  border-top: 1px solid #262626;
  border-bottom: 1px solid #262626; }
  .interviewees--content p {
    padding: 20px 75px;
    margin-bottom: 0; }

.row--list .row {
  margin-bottom: 60px; }
.row--list p {
  line-height: 2;
  margin-bottom: 20px; }

.event--area {
  background-color: #e2e2e2; }
  .event--area .section--content, .event--area .event--area {
    margin-bottom: 0;
    padding: 30px 0; }

.event--section {
  text-align: left; }

.event--lists ul {
  list-style-type: none;
  margin: 0;
  padding-top: 15px; }
  .event--lists ul li {
    padding: 10px 40px;
    border-bottom: 1px dashed #262626;
    position: relative; }
    @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
      .event--lists ul li {
        padding-bottom: 10px;
        padding-top: 12px; } }
    @media screen and (min-width: 0\0) {
      .event--lists ul li {
        padding-bottom: 10px;
        padding-top: 12px; } }
    .event--lists ul li p {
      margin: 0;
      width: 100%;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis; }
      @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
        .event--lists ul li p {
          line-height: 115%; } }
      @media screen and (min-width: 0\0) {
        .event--lists ul li p {
          line-height: 115%; } }
      .event--lists ul li p span {
        display: inline-block;
        width: 110px; }
      .event--lists ul li p a {
        color: #262626;
        text-decoration: none; }
      .event--lists ul li p a:hover {
        opacity: 0.75; }
      .event--lists ul li p a:hover,
      .event--lists ul li p a:visited,
      .event--lists ul li p a:focus {
        color: #262626;
        text-decoration: none; }
  .event--lists ul li:before {
    content: "\f0da";
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-size: 20px;
    color: #125e9f;
    position: absolute;
    left: 25px;
    top: 12px; }
    @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
      .event--lists ul li:before {
        top: 7px; } }
    @media screen and (min-width: 0\0) {
      .event--lists ul li:before {
        top: 7px; } }

.date--box_list .row
.box--list .box--inner {
  text-align: center;
  font-size: 18px;
  background-color: #125e9f;
  padding: 30px 20px 20px;
  min-height: 222px;
  position: relative;
  margin-bottom: 30px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  border-radius: 10px; }
  .date--box_list .row
  .box--list .box--inner span {
    display: block;
    color: #fff;
    margin-top: 20px;
    line-height: 1.3;
    position: absolute;
    bottom: 25px;
    left: 0;
    right: 0; }
.date--box_list .row
.box--list:nth-child(odd) .box--inner {
  background-color: #74c2fa; }

.date--links .btn--links {
  width: 48.99999999%;
  float: left;
  border: 2px solid #125e9f;
  padding: 20px 30px 20px 90px;
  text-align: center;
  font-size: 25px;
  position: relative;
  text-decoration: none;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  border-radius: 10px; }
  .date--links .btn--links:hover {
    text-decoration: none;
    opacity: 0.75; }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    .date--links .btn--links {
      padding-top: 32px;
      padding-bottom: 26px;
      line-height: 100%; } }
  @media screen and (min-width: 0\0) {
    .date--links .btn--links {
      padding-top: 32px;
      padding-bottom: 26px;
      line-height: 100%; } }
  .date--links .btn--links i {
    float: right;
    position: relative;
    top: 9px;
    left: 15px; }
    @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
      .date--links .btn--links i {
        top: -2px; } }
    @media screen and (min-width: 0\0) {
      .date--links .btn--links i {
        top: -2px; } }
.date--links .btn--links:hover,
.date--links .btn--links:visited {
  color: #125e9f; }
.date--links .btn--links:first-child {
  margin-right: 10px; }
.date--links .btn--links:first-child:before {
  content: "";
  background-image: url("../images/icon-folder.png");
  background-repeat: no-repeat;
  position: absolute;
  left: 22px;
  top: 12px;
  height: 59px;
  width: 80px; }
.date--links .btn--links:last-child:before {
  content: "";
  background-image: url("../images/icon-hand.png");
  background-repeat: no-repeat;
  position: absolute;
  left: 22px;
  top: 12px;
  height: 59px;
  width: 80px; }

.interviewers {
  margin-top: 6em; }
  .interviewers a,
  .interviewers a:hover,
  .interviewers a:visited,
  .interviewers a:focus {
    text-decoration: none;
    color: inherit; }
  .interviewers h3 {
    font-size: 20px;
    margin: 15px 0 5px; }
  .interviewers .interviewer {
    margin-bottom: 50px; }

.styled--text_banner {
  font-size: 30px;
  color: #125e9f;
  font-weight: bold;
  text-shadow: 0 0 20px #fff, 0 0 20px #fff, 0 0 20px #fff, 0 0 20px #fff, 0 0 20px #fff, 0 0 20px #fff, 0 0 20px #fff, 0 0 20px #fff; }
  .styled--text_banner span {
    font-size: 40px;
    margin: 0 20px;
    position: relative;
    top: 2px; }

.styled--text_banner_dark {
  font-size: 20px;
  color: #fff;
  font-weight: bold;
  text-shadow: 0 0 20px #262626, 0 0 20px #262626, 0 0 20px #262626, 0 0 20px #262626, 0 0 20px #262626; }

.interviewer--pages h3 {
  color: #125e9f;
  font-size: 20px; }
.interviewer--pages .intervierwer--entry h1,
.interviewer--pages .intervierwer--entry h2 {
  font-size: 25px; }
.interviewer--pages .intervierwer--entry h1 {
  margin: 0; }
.interviewer--pages .intervierwer--entry h2 {
  text-align: right; }
.interviewer--pages .intervierwer--entry span {
  display: block; }
.interviewer--pages .intervierwer--entry_content {
  margin-top: 5em; }
  .interviewer--pages .intervierwer--entry_content h3 {
    color: #74c2fa;
    font-size: 18px;
    margin-bottom: 25px;
    font-weight: bold; }
  .interviewer--pages .intervierwer--entry_content .last--content {
    margin-top: 5em; }

.interviewers--footer_type {
  border-top: 1px solid #262626;
  margin-top: 5em;
  padding-top: 1.5em; }
  .interviewers--footer_type .interviewer--footer_section {
    text-align: left;
    margin-bottom: 30px; }
    .interviewers--footer_type .interviewer--footer_section h2 {
      font-size: 20px;
      margin-bottom: 5px; }

.work--section {
  margin-bottom: 8em; }
  .work--section .work--section_description {
    padding: 20px 15px 0; }
    .work--section .work--section_description p {
      margin-bottom: 20px; }

.flow--section {
  padding-left: 5em;
  padding-bottom: 4em;
  position: relative; }
  .flow--section:before {
    content: "";
    background-image: url("../images/flow_circle.png");
    background-position: top;
    background-repeat: no-repeat;
    width: 30px;
    height: 30px;
    left: 0;
    top: -10px;
    position: absolute; }
  .flow--section:after {
    content: "";
    position: absolute;
    top: 0;
    height: 100%;
    left: 14px;
    width: 1px;
    border-left: 1px dashed #125e9f;
    z-index: -1; }
  .flow--section .flow--section_inner {
    border: 2px solid #125e9f;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
    padding: 15px 40px 30px;
    position: relative; }
    .flow--section .flow--section_inner:before {
      content: "";
      width: 0px;
      height: 15px;
      border-top: 0px solid transparent;
      border-bottom: 15px solid transparent;
      border-right: 45px solid #125e9f;
      position: absolute;
      top: -2px;
      left: -45px; }
    .flow--section .flow--section_inner:after {
      content: "";
      width: 0px;
      height: 12px;
      border-top: 0px solid transparent;
      border-bottom: 15px solid transparent;
      border-right: 45px solid #fff;
      position: absolute;
      top: 0px;
      left: -32px; }
    .flow--section .flow--section_inner .flow--head {
      color: #125e9f;
      font-size: 25px;
      font-weight: bold; }
      .flow--section .flow--section_inner .flow--head span {
        font-size: 40px;
        position: relative;
        top: 6px;
        margin-right: 15px; }
    .flow--section .flow--section_inner .body--flow p {
      padding: 0 10px; }
  .flow--section .no--border-radius-left {
    border-top-left-radius: 0; }

.last--flow:after {
  border-left: none; }

.event--post {
  height: 335px;
  overflow: hidden; }

.event--archive_list {
  font-size: 18px; }
  .event--archive_list:hover {
    opacity: 0.75; }
  .event--archive_list a {
    color: #262626;
    text-decoration: none; }
  .event--archive_list a:hover,
  .event--archive_list a:visited {
    color: #262626;
    text-decoration: none; }
  .event--archive_list .thumbnail--meduim {
    height: 187px;
    background-color: #e2e2e2;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    border-radius: 5px; }
  .event--archive_list span {
    display: block;
    font-size: 12px;
    margin: 10px 0 5px;
    border-bottom: 1px solid #125e9f;
    padding-bottom: 5px; }

.archive--title_head {
  font-size: 25px;
  color: #146db9; }

.search--categories {
  margin: 70px auto; }

.job--box {
  border: 1px solid #146db9; }
  .job--box a {
    float: none;
    padding: 5px 40px;
    font-size: 12px;
    color: #146db9; }
  .job--box a:hover {
    text-decoration: none;
    background-color: #146db9;
    color: #fff; }
  .job--box a:visited,
  .job--box a:focus {
    text-decoration: none; }
  .job--box h3 {
    margin: 0;
    padding: 10px 5px;
    background-color: #146db9;
    color: #fff;
    font-size: 20px;
    text-align: center; }
  .job--box .job--box_content {
    padding: 15px 10px;
    text-align: center; }
    .job--box .job--box_content p {
      font-size: 14px;
      line-height: normal; }
    .job--box .job--box_content span {
      font-size: 12px;
      color: #146db9;
      display: block; }
    .job--box .job--box_content span:before {
      margin-right: 5px;
      display: inline-block;
      font: normal normal normal 14px/1 FontAwesome;
      text-rendering: auto;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale; }
    .job--box .job--box_content .office span:before {
      content: "\f015";
      font-size: 12px; }
    .job--box .job--box_content .work span:before {
      content: "\f041";
      font-size: 12px; }
    .job--box .job--box_content .office {
      border-bottom: 1px dotted #146db9;
      text-align: left; }
    .job--box .job--box_content .work {
      padding-top: 10px;
      text-align: left; }

.event--single_banner {
  position: relative;
  text-align: center; }
  .event--single_banner .container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 100%; }

.pages--single_banner {
  position: relative;
  text-align: center; }
  .pages--single_banner .container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 100%; }

.event--entry {
  font-size: 25px;
  margin-top: 25px; }

.entry-content img {
  padding: 10px 5px; }

.job--single_head h1 {
  font-size: 25px;
  display: inline-block;
  margin: 0 10px 0 0; }
.job--single_head span {
  display: inline-block;
  background-color: #daebf8;
  padding: 2px 10px;
  vertical-align: top;
  font-size: 12px; }

.entry--fields {
  margin-top: 70px; }
  .entry--fields h2 {
    margin: 0;
    padding: 10px 20px;
    font-size: 20px;
    color: #fff;
    background-color: #146db9; }
  .entry--fields table tr th,
  .entry--fields table tr td {
    padding: 20px;
    border-bottom: 1px dashed #aeaeae;
    border-top: none; }
  .entry--fields table tr th {
    font-weight: normal;
    color: #146db9; }
  .entry--fields table tr td {
    line-height: 2; }

.breadcrumb {
  background-color: transparent;
  font-size: 12px; }
  .breadcrumb .container--inner {
    list-style-type: none;
    margin: 0;
    padding: 0; }
    .breadcrumb .container--inner li {
      display: inline; }
      .breadcrumb .container--inner li a {
        padding-right: 10px;
        color: #74c2fa;
        text-decoration: underline; }
        .breadcrumb .container--inner li a:hover {
          color: #23527c; }
      .breadcrumb .container--inner li a:after {
        content: "\f105";
        display: inline-block;
        font: normal normal normal 14px/1 FontAwesome;
        text-rendering: auto;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        font-size: 14px;
        color: #262626;
        position: relative;
        left: 6px; }
      .breadcrumb .container--inner li a:visited {
        color: #125e9f; }

.single--page_navigation {
  margin-top: 110px; }
  .single--page_navigation a {
    float: none; }
  .single--page_navigation a {
    padding: 10px 23px; }
  .single--page_navigation .posttype--btn_link {
    margin: 0 25px;
    background-color: #74c2fa;
    border-color: #74c2fa;
    color: #fff; }
  .single--page_navigation .posttype--btn_link:hover,
  .single--page_navigation .posttype--btn_link:visited {
    color: #fff; }

.widget-title {
  font-size: 20px;
  margin-top: 25px; }
  .widget-title:after {
    top: 30px; }

.event-new_arrrival {
  list-style-type: none;
  margin: 0;
  padding: 0; }
  .event-new_arrrival li {
    padding: 10px 5px;
    border-bottom: 1px dashed #262626;
    position: relative; }
    .event-new_arrrival li:hover {
      opacity: 0.75; }
    .event-new_arrrival li .new--arrival_list a,
    .event-new_arrrival li .new--arrival_list a:hover {
      text-decoration: none;
      color: inherit; }
    .event-new_arrrival li .new--arrival_list .thumb--list {
      height: 48px;
      width: 60px;
      background-color: #e2e2e2;
      float: left;
      margin-right: 10px; }
    .event-new_arrrival li .new--arrival_list p {
      font-size: 14px;
      margin: 0;
      padding-top: 5px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis; }
    .event-new_arrrival li .new--arrival_list span {
      float: right;
      margin-right: 10px;
      font-size: 10px;
      position: absolute;
      bottom: 5px;
      right: 0px; }

.container--single--page .content-area {
  padding-right: 40px; }

.single--event_content {
  margin-top: 2.75em; }

.job--category {
  margin: 0;
  padding: 0;
  list-style-type: none; }
  .job--category li .terms--parents {
    display: block;
    padding: 10px;
    font-size: 20px;
    color: #fff;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    border-radius: 5px; }
  .job--category li .terms--parents:before {
    content: "\f055";
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    margin-right: 10px;
    font-size: 20px; }
  .job--category li .terms--parents:hover,
  .job--category li .terms--parents:focus {
    text-decoration: none; }
  .job--category li .parent--active:before {
    content: "\f056"; }
  .job--category li .sub--category {
    margin: 0;
    padding: 0 10px;
    list-style-type: none;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.2s ease-out; }
    .job--category li .sub--category li a {
      background-color: #fff;
      color: #146db9;
      font-size: 15px;
      padding: 10px 0;
      display: block;
      border-bottom: 1px solid #146db9; }
    .job--category li .sub--category li a:before {
      content: "\f0a9";
      display: inline-block;
      font: normal normal normal 14px/1 FontAwesome;
      text-rendering: auto;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      margin-right: 10px;
      font-size: 18px; }
    .job--category li .sub--category li a:hover {
      text-decoration: none; }
    .job--category li .sub--category li:last-child a {
      border-bottom: none; }

.contact--single-style {
  margin: 0 !important;
  float: left;
  width: 100% !important;
  padding-left: 0 !important; }
  .contact--single-style table {
    margin-top: 0 !important; }

.contact--send {
  margin-bottom: 1.5em; }

.fieldhide {
  display: none; }

.site-footer {
  margin-top: 10em; }

.footer--socials {
  background-color: #daebf8; }
  .footer--socials .footer--socials_content {
    padding: 50px 0; }

.foot-social_con {
  width: 61.333333%;
  float: left; }
  .foot-social_con .foot--social_img a {
    width: 32.33333333333333%;
    float: left;
    margin: 2px; }

.foot-info_con {
  width: 38.333333%;
  float: left; }

.foot--address_text {
  padding: 0;
  width: 48.333333%;
  float: left; }
  .foot--address_text .foot--title {
    font-size: 15px;
    display: block;
    margin-bottom: 15px;
    padding-left: 10px; }
  .foot--address_text .foot--address {
    font-size: 12px;
    padding-left: 10px;
    margin-bottom: 10px; }
    @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
      .foot--address_text .foot--address {
        margin-bottom: 13px; } }
    @media screen and (min-width: 0\0) {
      .foot--address_text .foot--address {
        margin-bottom: 13px; } }

.foot--logo {
  padding: 0;
  margin-right: 5px;
  min-height: 132px;
  position: relative;
  width: 48.333333%;
  float: left;
  text-align: center;
  padding-right: 20px; }
  .foot--logo a img {
    width: 116px; }
    .foot--logo a img:hover {
      opacity: 0.75; }

.foot--button {
  display: block;
  padding: 5px;
  text-align: center;
  color: #fff;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -ms-border-radius: 5px;
  border-radius: 5px; }
  .foot--button:hover {
    opacity: 0.75; }

.foot--button:hover,
.foot--button:visited {
  text-decoration: none;
  color: #fff; }

.contact--foot {
  background-color: #125e9f;
  position: absolute;
  width: 100%;
  bottom: 3px; }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    .contact--foot {
      padding-bottom: 1px; } }
  @media screen and (min-width: 0\0) {
    .contact--foot {
      padding-bottom: 1px; } }

.phone--foot {
  background-color: #ffb400; }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    .phone--foot {
      padding-bottom: 2px; } }
  @media screen and (min-width: 0\0) {
    .phone--foot {
      padding-bottom: 2px; } }

.site-info {
  background-color: #125e9f;
  padding: 10px 0; }
  .site-info p {
    margin-bottom: 0;
    text-align: center;
    color: #fff; }

.mb-90 {
  margin-bottom: 90px; }

.mb-110 {
  margin-bottom: 110px; }

.date--links {
  margin-top: 20px; }

.last--work {
  margin-bottom: 0; }

.error--content_head {
  text-align: center;
  margin-bottom: 15px;
  font-size: 25px;
  padding: 0 30px; }

.error--content_body {
  text-align: center;
  padding: 0 30px; }

.container--work_hack {
  margin: 6em 0 0 !important; }

.page_top {
  position: absolute;
  bottom: 20px;
  right: 30px;
  z-index: 1;
  text-align: center;
  font-size: 12px;
  line-height: 20px; }
  .page_top:hover, .page_top:active, .page_top:visited, .page_top:focus {
    text-decoration: none; }
  .page_top i {
    font-size: 25px; }

.active--pagetop {
  position: fixed;
  bottom: 60px; }

.toggled ._menu-main-menu-container {
  height: 100%; }

.link--hover:hover {
  opacity: 0.75; }

/*# sourceMappingURL=style.css.map */


text:
package org.apache.felix.sigil.common.core;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.felix.sigil.common.core.internal.license.LicenseManager;
import org.apache.felix.sigil.common.core.internal.model.eclipse.Library;
import org.apache.felix.sigil.common.core.internal.model.eclipse.LibraryImport;
import org.apache.felix.sigil.common.core.internal.model.eclipse.SigilBundle;
import org.apache.felix.sigil.common.core.internal.model.osgi.BundleModelElement;
import org.apache.felix.sigil.common.core.internal.model.osgi.PackageExport;
import org.apache.felix.sigil.common.core.internal.model.osgi.PackageImport;
import org.apache.felix.sigil.common.core.internal.model.osgi.RequiredBundle;
import org.apache.felix.sigil.common.core.licence.ILicenseManager;
import org.apache.felix.sigil.common.model.ModelElementFactory;
import org.apache.felix.sigil.common.model.eclipse.ILibrary;
import org.apache.felix.sigil.common.model.eclipse.ILibraryImport;
import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
import org.apache.felix.sigil.common.model.osgi.IPackageExport;
import org.apache.felix.sigil.common.model.osgi.IPackageImport;
import org.apache.felix.sigil.common.model.osgi.IRequiredBundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class BldCore implements BundleActivator
{
    private static LicenseManager licenceManager = new LicenseManager();

    private static final Logger log = Logger.getLogger(BldCore.class.getName());

    public static void error(String string, Throwable e)
    {
        // TODO
        log.log(Level.WARNING, string, e);
    }

    public static void error(String string)
    {
        log.log(Level.WARNING, string);
    }

    public static ILicenseManager getLicenseManager()
    {
        return licenceManager;
    }

    public void start(BundleContext context) throws Exception
    {
        init();
    }

    public static void init() throws Exception
    {
        ModelElementFactory.getInstance().register(ISigilBundle.class, SigilBundle.class,
            "bundle", "sigil", null);
        ModelElementFactory.getInstance().register(ILibrary.class, Library.class,
            "library", "sigil", null);
        ModelElementFactory.getInstance().register(ILibraryImport.class,
            LibraryImport.class, "library-import", "sigil", null);

        // osgi elements
        ModelElementFactory.getInstance().register(IBundleModelElement.class,
            BundleModelElement.class, "bundle", null, null);
        ModelElementFactory.getInstance().register(IPackageExport.class,
            PackageExport.class, "package.export", null, null);
        ModelElementFactory.getInstance().register(IPackageImport.class,
            PackageImport.class, "package.import", null, null);
        ModelElementFactory.getInstance().register(IRequiredBundle.class,
            RequiredBundle.class, "required.bundle", null, null);
    }

    public void stop(BundleContext context) throws Exception
    {
        // TODO Auto-generated method stub

    }
}


text:
<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
<Class name="%SourceControl.Git">
<Import>%SourceControl.Git</Import>
<Super>%Studio.Extension.Base</Super>
<TimeCreated>62655,58027.787011</TimeCreated>

<XData name="Menu">
<Data><![CDATA[
<MenuBase>
<Menu Name="%SourceMenu" Type="0">
<MenuItem Name="%Cache-Git-Settings" />
<MenuItem Name="%Settings" />
<MenuItem Name="%CreateRepo" Save = "001"/>
<MenuItem Name="%Clone" Save = "001"/>
<MenuItem Name="%Commit" Save = "001"/>
<MenuItem Separator="true"/>
<MenuItem Name="%Pull" Save = "001"/>
<MenuItem Name="%Fetch" Save = "001"/>
<MenuItem Name="%Switch" Save = "001"/>
<MenuItem Name="%Merge" Save = "001"/>
<MenuItem Name="%Push" Save = "001"/>
<MenuItem Separator="true"/>
<MenuItem Name="%Diff" Save = "001"/>
<MenuItem Name="%RepoStatus" Save = "001"/>
<MenuItem Name="%Resolve" Save = "001"/>
<MenuItem Name="%Revert" Save = "001"/>
<MenuItem Name="%Log" Save = "001"/>
<MenuItem Separator="true"/>
<MenuItem Name="%StashSave" Save = "001"/>
<MenuItem Name="%StashPop" Save = "001"/>
<MenuItem Separator="true"/>
<MenuItem Name="%Export" Save = "001" />
<MenuItem Name="%ExportForce" Save = "001" />
<MenuItem Name="%Import" Save = "001" />
<MenuItem Name="%ImportForce" Save = "001" />
<MenuItem Separator="true"/>
<MenuItem Name="%OpenRepoFolder" Save = "001" />
</Menu>
<Menu Name="%SourceMenuContext" Type="1">
<MenuItem Name="%AddToSC"/>
<MenuItem Name="%RemoveFromSC"/>
<MenuItem Name="%Diff" Save = "001"/>
<MenuItem Name="%Blame" Save = "001"/>
</Menu>
</MenuBase>
]]></Data>
</XData>

<Method name="UserAction">
<FormalSpec><![CDATA[Type:%Integer,Name:%String,InternalName:%String,SelectedText:%String,&Action:%String,&Target:%String,&Msg:%String,&Reload:%Boolean]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	#dim ec As %Status = $$$OK
	#dim menu As %Status = $Piece(Name, ",", 1)
	if menu '= "%SourceMenu", menu'="%SourceMenuContext" {
		quit $$$OK
	}
	set InternalName = ##class(Utils).NormalizeInternalName(InternalName)
	set ec = ##class(Utils).UserAction(InternalName, Name, .Target, .Action, .Reload)
	quit ec
]]></Implementation>
</Method>

<Method name="OnSourceMenuItem">
<FormalSpec><![CDATA[name:%String,&Enabled:%String,&DisplayName:%String]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	if name = "%Cache-Git-Settings" {
		// We always show Settings
		set DisplayName = "Settings"
		quit $$$OK
	}
	if name = "%Settings" && ##class(Utils).GitBinExists() {
		set DisplayName = "TortoiseGit Settings"
		quit $$$OK
	}

	if ##class(Utils).NeedSettings() {
		set Enabled = -1
		quit $$$OK
	}
	if ##class(Utils).IsNamespaceInGit() {
		if name = "%Export" {
			set DisplayName = "Export All"
		} elseif name="%ExportForce" {
			set DisplayName = "Export All Force"
		} elseif name = "%Import" {
			set DisplayName = "Import All"
		} elseif name = "%ImportForce" {
			set DisplayName = "Import All Force"
		}elseif name = "%RepoStatus" && ##class(Utils).GitBinExists() {
			set DisplayName = "Check for modifications"
		}elseif name = "%OpenRepoFolder" {
			set DisplayName = "Open Repo Folder"
		}
		elseif ##class(Utils).IsMenuGitCommand(name) && ##class(Utils).GitBinExists() {
			set DisplayName = $case(name,"%StashSave":"Stash save",
			                             "%StashPop":"Stash pop",
			                             :$Extract(name, 2, *))
		}
		else {
			set Enabled = -1
		}
	} elseif ##class(Utils).GitBinExists() {
		if name = "%CreateRepo" {
			set DisplayName = "Create Repo"
		} elseif name = "%Clone" {
			set DisplayName = "Clone"
		} else {
			set Enabled = -1
		}
	} else {
		set Enabled = -1
	}
	quit $$$OK
]]></Implementation>
</Method>

<Method name="OnSourceMenuContextItem">
<FormalSpec><![CDATA[itemName:%String,menuItemName:%String,&Enabled:%String,&DisplayName:%String]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set:menuItemName="%AddToSC" DisplayName = "Add to SourceControl"
	set:menuItemName="%RemoveFromSC" DisplayName = "Remove from SourceControl"

	if (itemName = "") || '##class(Utils).IsNamespaceInGit() {
		set Enabled = -1
	}elseif $F(itemName,",") > 0 { //if more than one item is selected, we can only add/remove, no diff or blame
		set Enabled = $case(menuItemName,"%AddToSC":1,"%RemoveFromSC":1,:-1)

	}elseif ##class(Utils).IsInSourceControl(##class(Utils).NormalizeInternalName(itemName)) {
		set Enabled = $Case(menuItemName, "%AddToSC":-1,:1)
	} else {
		set Enabled = $Case(menuItemName, "%AddToSC":1,:-1)
	}
	quit $$$OK
]]></Implementation>
</Method>

<Method name="OnMenuItem">
<Description><![CDATA[
This is called for every menu item returned to Studio to allow the menu to be enabled/disabled without
having to write a custom query for <query>MenuItems</query>. The <var>DisplayName</var> of this menu is
also passed by reference and this may be modified to change the appearance of this menu item. The <var>MenuName</var>
is the main menu name then the submenu name separated by a ','. If <var>Enabled</var> is set to -1 then it will remove
this menu item from the list totally, 0 will gray the menu item out and the default 1 will display the menu item as normal.]]></Description>
<FormalSpec><![CDATA[MenuName:%String,InternalName:%String,SelectedText:%String,&Enabled:%Boolean,&DisplayName:%String]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	#dim menu As %String= $Piece(MenuName,",")
	#dim name As %String = $Piece(MenuName,",",2)
	if menu = "%SourceMenuContext", name = "" {
		set DisplayName = "Git"
	}
	if menu = "%SourceMenu", name = "" {
		set DisplayName = "Git"
	}
	#dim ec As %Status = $$$OK

	if menu = "%SourceMenu" {
		set ec = ..OnSourceMenuItem(name, .Enabled, .DisplayName)
	}elseif menu = "%SourceMenuContext" {
		set ec = ..OnSourceMenuContextItem(InternalName, name, .Enabled, .DisplayName)
	}
	Quit ec
]]></Implementation>
</Method>

<Method name="OnBeforeLoad">
<Description>
This is called before the actual load of data to give the chance
to load the item from an external format.</Description>
<FormalSpec>InternalName:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set InternalName = ##class(Utils).NormalizeInternalName(InternalName)
	if ##class(Utils).IsInSourceControl(InternalName) {
		quit ##class(Utils).ImportItem(InternalName)
	}
	quit $$$OK
]]></Implementation>
</Method>

<Method name="OnAfterSave">
<Description>
This is called after the item has been saved to the database.
It may be passed a reference to the object representing the item
just saved. It can be use to export this documement to an external form for example.</Description>
<FormalSpec>InternalName:%String,Object:%RegisteredObject=$$$NULLOREF</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set InternalName = ##class(Utils).NormalizeInternalName(InternalName)
	if ##class(Utils).IsNamespaceInGit() && ..IsInSourceControl(InternalName) {
		$$$QuitOnError(##class(Utils).RemoveRoutineTSH(InternalName))
		quit ##class(Utils).ExportItem(InternalName)
	} else {
		quit $$$OK
	}
]]></Implementation>
</Method>

<Method name="OnAfterCompile">
<Description>
Called after the compile of the item is done.</Description>
<FormalSpec>InternalName:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[	Quit ..OnAfterSave(InternalName)
]]></Implementation>
</Method>

<Method name="IsInSourceControl">
<Description>
Returns true if this item is in source control and false otherwise.</Description>
<CodeMode>expression</CodeMode>
<FormalSpec>InternalName:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[InternalName'="" && ##class(Utils).IsInSourceControl(##class(Utils).NormalizeInternalName(InternalName))
]]></Implementation>
</Method>

<Method name="OnAfterDelete">
<Description>
Called after an item is deleted.</Description>
<FormalSpec>InternalName:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set InternalName = ##class(Utils).NormalizeInternalName(InternalName)
	if ##class(Utils).IsInSourceControl(InternalName) {
		quit ##class(Utils).DeleteExternalFile(InternalName)
	}
	quit $$$OK
]]></Implementation>
</Method>
</Class>
</Export>


text:
import sys, os

sys.path.insert(0, os.path.dirname(__file__))

from composer import Composable


text:
package com.sachin.cloudy.data.entities;

import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;

import javax.persistence.*;
import java.time.LocalDateTime;

/**
 * Created by sachinhooda on 18/2/17.
 */
@MappedSuperclass
public class AuditableEntity extends AbstractEntity {
  private static final long serialVersionUID = -5066053418553822879L;

  @CreatedDate
  @Column(name = "CREATED_DATE", nullable = false)
  private LocalDateTime createdDate;

  @LastModifiedDate
  @Column(name = "LAST_MODIFIED_DATE")
  private LocalDateTime lastModifiedDate;

  @CreatedBy
  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "CREATED_BY")
  private User createdBy;

  @LastModifiedBy
  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "LAST_MODIFIED_BY")
  private User lastModifiedBy;

  public LocalDateTime getCreatedDate() {
    return createdDate;
  }

  public void setCreatedDate(LocalDateTime createdDate) {
    this.createdDate = createdDate;
  }

  public LocalDateTime getLastModifiedDate() {
    return lastModifiedDate;
  }

  public void setLastModifiedDate(LocalDateTime lastModifiedDate) {
    this.lastModifiedDate = lastModifiedDate;
  }

  public User getCreatedBy() {
    return createdBy;
  }

  public void setCreatedBy(User createdBy) {
    this.createdBy = createdBy;
  }

  public User getLastModifiedBy() {
    return lastModifiedBy;
  }

  public void setLastModifiedBy(User lastModifiedBy) {
    this.lastModifiedBy = lastModifiedBy;
  }
}


text:
var path = require('path');
var concat = require('gulp-concat');
var cssimport = require("gulp-cssimport");
var cssUrlToAbsolute = require('../../lib/gulp-css-url-to-absolute');
var distData = require('./data');
var distNext = require('./next');
var getConcatFileNme = require('../../util/get_concat_file_name');

module.exports = {
    // merge js
    concatJs: (gulp) => {
        return function concatJs(cb) {
            if (distData.currentConfig.needConcatJs) {
                distNext.concatJs();

                var group = distData.currentConfig.processingData.concatJsGroup[distData.currentConfig.processingData.concatJsKey];
                if (group && group.length)
                    return gulp.src(group)
                        .pipe(concat(getConcatFileNme(
                                distData.currentConfig.moduleName,
                                distData.currentConfig.processingData.concatJsKey
                            ) + '.js'))
                        .pipe(gulp.dest(distData.currentConfig.buildPaths.extract.js + '/' + distData.currentConfig.moduleDir));
                else cb();
            }
            else cb();
        }
    },
    // merge css
    concatCss: (gulp) => {
        return function concatCss(cb) {
            if (distData.currentConfig.needConcatCss) {
                distNext.concatCss();

                var group = distData.currentConfig.processingData.concatCssGroup[distData.currentConfig.processingData.concatCssKey];
                if (group && group.length)
                    return gulp.src(group)
                        .pipe(cssUrlToAbsolute({
                            root: distData.currentConfig.basePaths.webRoot
                        }))
                        .pipe(concat(getConcatFileNme(
                                distData.currentConfig.moduleName,
                                distData.currentConfig.processingData.concatCssKey
                            ) + '.css'))
                        .pipe(gulp.dest(distData.currentConfig.buildPaths.extract.css + '/' + distData.currentConfig.moduleDir));
                else cb();
            }
            else cb();
        }
    },
    // concat all css for mark @import
    concatCssForImport: (gulp) => {
        return function concatCssForImport(cb) {
            if (distData.currentConfig.useInCss) {
                distNext.inCssModule();

                var sourcePath = distData.currentConfig.buildPaths.copiedDev.css + '/' +
                    distData.currentConfig.processingData.inCssModule + '.css';
                var cssHome = distData.currentConfig.inCssToTagLoad ?
                    distData.currentConfig.buildPaths.extract.css : distData.currentConfig.buildPaths.extractCss.css;
                var targetPath = cssHome + '/' + distData.currentConfig.processingData.inCssModule + '.css';

                return gulp.src(sourcePath)
                    .pipe(cssimport({}))
                    .pipe(gulp.dest(path.dirname(targetPath)));
            }
            else cb();
        }
    }
};


text:
package io.github.harshtuna.jfx.chart;

import javafx.util.StringConverter;
import javafx.util.converter.LocalDateStringConverter;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalUnit;

public class LocalDateAxis extends TemporalAxis<LocalDate> {
    public LocalDateAxis(LocalDate base, TemporalUnit unit) {
        super(base, unit);
        defaultFormatter = new LdFormatter(this);
    }

    public LocalDateAxis(LocalDate lowerBound, LocalDate upperBound, long tickUnit, TemporalUnit unit) {
        super(lowerBound, upperBound, tickUnit, unit);
        defaultFormatter = new LdFormatter(this);
    }

    public LocalDateAxis(String axisLabel, LocalDate lowerBound, LocalDate upperBound, long tickUnit, TemporalUnit unit) {
        super(axisLabel, lowerBound, upperBound, tickUnit, unit);
        defaultFormatter = new LdFormatter(this);
    }

    @Override
    protected String getTickMarkLabel(LocalDate temporal) {
        StringConverter<LocalDate> formatter = getTemporalLabelFormatter();
        if (formatter == null) formatter = defaultFormatter;
        return formatter.toString(temporal);
    }

    // -------------- INNER CLASSES ------------------------------------------------------------------------------------

    /**
     * Default formatter for TimeAxis, this stays in sync with auto-ranging and formats values appropriately.
     * You can wrap this formatter to add prefixes or suffixes;
     */
    public static class LdFormatter extends DefaultFormatter<LocalDate> {
        /**
         * Construct a DefaultFormatter for the given TimeAxis
         *
         * @param axis The axis to format tick marks for
         */
        public LdFormatter(final LocalDateAxis axis) {
            super(axis);
        }

        @Override
        protected StringConverter<LocalDate> getFormatter() {
            return new LocalDateStringConverter(
                    DateTimeFormatter.ISO_LOCAL_DATE,
                    DateTimeFormatter.ISO_LOCAL_DATE
            );
        }
    }
}


text:
Houston::TodoLists::Engine.routes.draw do

  get "todoist/auth", to: "todoist#auth"
  get "hooks/todoist", to: "todoist#webhook"

end


text:
<resources>
    <string name="app_name">Another ViewPager Library Demo</string>
</resources>


text:
'use strict';

import passport from 'passport';
import passportLocal from 'passport-local';
import { UserModel } from '../../models/UserModel';

export default class LocalAuthStrategy {
	public init = () => {
		// Use local strategy
		passport.use(
			'local',
			new passportLocal.Strategy(
				(username, password, done) => {
					UserModel.findOne({
						$or: [
							{
								username: username.toLowerCase()
							},
							{
								email: username.toLowerCase()
							}
						]
					})
						.populate('capabilities', 'code name')
						.populate('capabilitySkills', 'code name')
						.exec((err, user) => {
							if (err) {
								return done(err);
							}
							if (!user || !user.authenticate(password)) {
								return done(null, false, {
									message: 'Invalid username or password (' + new Date().toLocaleTimeString() + ')'
								});
							}

							return done(null, user);
						});
				}
			)
		);
	};
}


text:
package org.codehaus.xsite.model;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;

/**
 * Represents a single page entry in a sitemap, including filename, head and
 * body.
 *
 * @author Joe Walnes
 * @author Mauro Talevi
 * @author Jörg Schaible
 */
public class Page extends Entry {

    private Map<String, String> properties;
    private String filename;
    private String head;
    private String body;
    private Collection<Link> links = new HashSet<Link>();

    /**
     * Creates a Page
     *
     * @param filename
     * @param head
     * @param body
     * @param links
     * @param properties
     */
    public Page(String filename, String head, String body, Collection<Link> links, Map<String, String> properties) {
        this.filename = filename;
        this.head = head;
        this.body = body;
        this.links = links;
        this.properties = properties;
    }

    public String getId() {
        if (properties.containsKey("meta.id")) {
            return properties.get("meta.id");
        } else {
            return filename.substring(0, filename.indexOf(".html"));
        }
    }

    public String getTitle() {
        if (properties.containsKey("meta.short")) {
            return properties.get("meta.short");
        } else {
            return properties.get("title");
        }
    }

    public String getHead() {
        return head.toString();
    }

    public String getBody() {
        return body.toString();
    }

    public String getFilename() {
        return filename;
    }

    public String getHref() {
        return getFilename();
    }

    public Collection<Link> getLinks() {
        return Collections.unmodifiableCollection(links);
    }

    public boolean isIndex() {
        return "index.html".equals(filename);
    }

    public String[] getParagraphs() {
    	String value = properties.get("paragraphs");
    	if (value == null) {
    		return new String[0];
    	}
    	String[] paragraphs = new String[Integer.valueOf(value)];
    	for (int i = 0; i < paragraphs.length; i++ ) {
			paragraphs[i] = properties.get("paragraph." + i);
		}
    	return paragraphs;
    }

    public Map<String, String> getProperties() {
    	return properties;
    }
}


text:
package lunch.api;

import java.io.Serializable;

import com.gigaspaces.annotation.pojo.SpaceRouting;

public class GetLunchRestaurantRequest implements Serializable {

	private String name;

	@SpaceRouting
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}


text:
#if WINDOWS_PHONE_APP
using Microsoft.Xaml.Interactivity;
using System;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace WinRTUtils.Behaviors
{
    public abstract class ProgressIndicatorBehaviorBase : DependencyObject, IBehavior
    {
        /// <summary>
        /// Reference to the current
        /// StatusBar
        /// </summary>
        protected StatusBar _statusbar = null;

        public static DependencyProperty IsVisibleProperty = DependencyProperty.Register("IsVisible", typeof(bool), typeof(ProgressIndicatorBehaviorBase), new PropertyMetadata(false, OnIsVisibleChanged));

        private static void OnIsVisibleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            (d as ProgressIndicatorBehaviorBase).OnIsVisibleChanged(e);
        }

        private void OnIsVisibleChanged(DependencyPropertyChangedEventArgs e)
        {
            if ((bool)e.NewValue == true)
            {
                ShowProgressIndicator();
            }
            else
            {
                HideProgressIndicator();
            }
        }

        /// <summary>
        /// Gets or sets whether the
        /// ProgressIndicator is visible
        /// </summary>
        public bool IsVisible
        {
            get { return (bool)GetValue(IsVisibleProperty); }
            set { SetValue(IsVisibleProperty, value); }
        }

        private static DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(ProgressIndicatorBehaviorBase), new PropertyMetadata(string.Empty, OnTextChanged));

        private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            (d as ProgressIndicatorBehaviorBase).OnTextChanged(e);
        }

        private void OnTextChanged(DependencyPropertyChangedEventArgs e)
        {
            if (_statusbar != null && _statusbar.ProgressIndicator != null)
            {
                _statusbar.ProgressIndicator.Text = (string)e.NewValue;
            }
        }

        /// <summary>
        /// Gets or sets the text of the
        /// ProgressIndicator
        /// </summary>
        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        private double? _progressValue = null;

        /// <summary>
        /// Gets or sets the progress value
        /// </summary>
        protected double? ProgressValue
        {
            get { return _progressValue; }
            set
            {
                _progressValue = value;

                if (_statusbar != null && _statusbar.ProgressIndicator != null)
                {
                    _statusbar.ProgressIndicator.ProgressValue = _progressValue;
                }
            }
        }

        public DependencyObject AssociatedObject { get; private set; }

        public void Attach(DependencyObject associatedObject)
        {
            AssociatedObject = associatedObject;

            var page = AssociatedObject as Page;

            if (page != null)
            {
                _statusbar = StatusBar.GetForCurrentView();

                page.Loaded += OnPageLoaded;
                page.Unloaded += OnPageUnloaded;
            }
        }

        public void Detach()
        {
            var page = AssociatedObject as Page;

            if (page != null)
            {
                _statusbar = null;

                page.Loaded -= OnPageLoaded;
                page.Unloaded -= OnPageUnloaded;
            }
        }

        private void OnPageUnloaded(object sender, RoutedEventArgs e)
        {
            var page = sender as Page;

            if (page != null && page.Frame != null)
            {
                page.Frame.Navigating -= OnNavigating;
            }
        }

        protected void OnPageLoaded(object sender, RoutedEventArgs e)
        {
            var page = sender as Page;

            if (page != null && page.Frame != null)
            {
                page.Frame.Navigating += OnNavigating;
            }

            // restore data
            if (_statusbar != null && _statusbar.ProgressIndicator != null)
            {
                _statusbar.ProgressIndicator.Text = Text;
                _statusbar.ProgressIndicator.ProgressValue = ProgressValue;
            }

            if (IsVisible)
            {
                ShowProgressIndicator();
            }
        }

        private void OnNavigating(object sender, NavigatingCancelEventArgs e)
        {
            var page = AssociatedObject as Page;

            if(page == null) {
                return;
            }

            if ((e.NavigationMode == NavigationMode.New && page.GetType() != e.SourcePageType) ||
                (e.NavigationMode == NavigationMode.Back && page.GetType() != e.SourcePageType))
            {
                HideProgressIndicator();
            }
        }

        protected async void ShowProgressIndicator()
        {
            if (_statusbar == null || _statusbar.ProgressIndicator == null)
            {
                return;
            }

            await _statusbar.ProgressIndicator.ShowAsync();
        }

        private async void HideProgressIndicator()
        {
            if (_statusbar == null || _statusbar.ProgressIndicator == null)
            {
                return;
            }

            await _statusbar.ProgressIndicator.HideAsync();
        }
    }

    [TypeConstraint(typeof(Page))]
    public class ProgressIndicatorBehavior : ProgressIndicatorBehaviorBase
    {
        public static DependencyProperty ProgressValueProperty = DependencyProperty.Register("ProgressValue", typeof(double), typeof(ProgressIndicatorBehavior), new PropertyMetadata(null, OnProgressValueChanged));

        private static void OnProgressValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            (d as ProgressIndicatorBehavior).OnProgressValueChanged(e);
        }

        private void OnProgressValueChanged(DependencyPropertyChangedEventArgs e)
        {
            base.ProgressValue = e.NewValue as double?;
        }

        /// <summary>
        /// Gets or sets the value of the
        /// ProgressIndicator
        /// </summary>
        public new double ProgressValue
        {
            get { return (double)GetValue(ProgressValueProperty); }
            set { SetValue(ProgressValueProperty, value); }
        }
    }

    [TypeConstraint(typeof(Page))]
    public class IndeterminateProgressIndicatorBehavior : ProgressIndicatorBehaviorBase
    {
        public IndeterminateProgressIndicatorBehavior()
        {
            ProgressValue = null;
        }
    }
}
#endif


text:
import * as React from "react"
import * as Oni from "oni-api"

export const activate = (oni: Oni.Plugin.Api) => {
  console.log("config activated")

  oni.input.unbind("<c-g>") // make C-g work as expected in vim
  oni.input.unbind("<c-v>") // make C-v work as expected in vim
  oni.input.unbind("<c-t>") // make C-v work as expected in vim
  oni.input.bind("<s-c-g>", () => oni.commands.executeCommand("sneak.show")) // You can rebind Oni's behaviour to a new keybinding
  // Input
  //
  // Add input bindings here:
  //
  oni.input.bind("<c-enter>", () => console.log("Control+Enter was pressed"))

  //
  // Or remove the default bindings here by uncommenting the below line:
  //
  // oni.input.unbind("<c-p>")
}

export const deactivate = (oni: Oni.Plugin.Api) => {
  console.log("config deactivated")
}

export const configuration = {
  //add custom config here, such as
  activate,
  "oni.hideMenu": "hidden", // Hide top bar menu
  "oni.loadInitVim": true, // Load user's init.vim
  "oni.useDefaultConfig": false, // Do not load Oni's init.vim
  //"ui.colorscheme": "nord",
  "ui.colorscheme": "gruvbox_dark",
  //"ui.colorscheme": "onedark", // Load init.vim colorscheme, remove this line if wants Oni's default

  "autoClosingPairs.enabled": false, // disable autoclosing pairs
  "commandline.mode": false, // Do not override commandline UI
  "wildmenu.mode": false, // Do not override wildmenu UI,

  //"tabs.mode"                : "native", // Use vim's tabline, need completely quit Oni and restart a few times

  "statusbar.enabled": true, // use vim's default statusline
  "sidebar.enabled": true, // sidebar ui is gone
  "sidebar.default.open": false, // the side bar collapse
  "learning.enabled": true, // Turn off learning pane
  "achievements.enabled": false, // Turn off achievements tracking / UX
  "editor.typingPrediction": false, // Wait for vim's confirmed typed characters, avoid edge cases
  "editor.textMateHighlighting.enabled": false, // Use vim syntax highlighting

  "oni.bookmarks": ["~/Documents"],
  //"oni.loadInitVim": false,
  "editor.fontSize": "12px",
  "editor.fontFamily": "Hack Nerd Font",
  "experimental.markdownPreview.enabled": true,

  // UI customizations
  "ui.animations.enabled": true,
  "ui.fontSmoothing": "auto",
}


text:
<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 1/22/15
 * Time: 9:22 AM
 */

namespace common\components;

use yii\base\Component;

class MyPostgresHelper extends Component
{
    public static function unescape_hstore($hstore)
    {
        $hstore = preg_replace('/([$])/', "\\\\$1", $hstore);
        $unescapedHStore = array();
        eval('$unescapedHStore = array(' . $hstore . ');');
        return $unescapedHStore;
    }

}