<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>body{background-color:white;}</style>
<script>(function() {
  // If window.HTMLWidgets is already defined, then use it; otherwise create a
  // new object. This allows preceding code to set options that affect the
  // initialization process (though none currently exist).
  window.HTMLWidgets = window.HTMLWidgets || {};

  // See if we're running in a viewer pane. If not, we're in a web browser.
  var viewerMode = window.HTMLWidgets.viewerMode =
      /\bviewer_pane=1\b/.test(window.location);

  // See if we're running in Shiny mode. If not, it's a static document.
  // Note that static widgets can appear in both Shiny and static modes, but
  // obviously, Shiny widgets can only appear in Shiny apps/documents.
  var shinyMode = window.HTMLWidgets.shinyMode =
      typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings;

  // We can't count on jQuery being available, so we implement our own
  // version if necessary.
  function querySelectorAll(scope, selector) {
    if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) {
      return scope.find(selector);
    }
    if (scope.querySelectorAll) {
      return scope.querySelectorAll(selector);
    }
  }

  function asArray(value) {
    if (value === null)
      return [];
    if ($.isArray(value))
      return value;
    return [value];
  }

  // Implement jQuery's extend
  function extend(target /*, ... */) {
    if (arguments.length == 1) {
      return target;
    }
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];
      for (var prop in source) {
        if (source.hasOwnProperty(prop)) {
          target[prop] = source[prop];
        }
      }
    }
    return target;
  }

  // IE8 doesn't support Array.forEach.
  function forEach(values, callback, thisArg) {
    if (values.forEach) {
      values.forEach(callback, thisArg);
    } else {
      for (var i = 0; i < values.length; i++) {
        callback.call(thisArg, values[i], i, values);
      }
    }
  }

  // Replaces the specified method with the return value of funcSource.
  //
  // Note that funcSource should not BE the new method, it should be a function
  // that RETURNS the new method. funcSource receives a single argument that is
  // the overridden method, it can be called from the new method. The overridden
  // method can be called like a regular function, it has the target permanently
  // bound to it so "this" will work correctly.
  function overrideMethod(target, methodName, funcSource) {
    var superFunc = target[methodName] || function() {};
    var superFuncBound = function() {
      return superFunc.apply(target, arguments);
    };
    target[methodName] = funcSource(superFuncBound);
  }

  // Add a method to delegator that, when invoked, calls
  // delegatee.methodName. If there is no such method on
  // the delegatee, but there was one on delegator before
  // delegateMethod was called, then the original version
  // is invoked instead.
  // For example:
  //
  // var a = {
  //   method1: function() { console.log('a1'); }
  //   method2: function() { console.log('a2'); }
  // };
  // var b = {
  //   method1: function() { console.log('b1'); }
  // };
  // delegateMethod(a, b, "method1");
  // delegateMethod(a, b, "method2");
  // a.method1();
  // a.method2();
  //
  // The output would be "b1", "a2".
  function delegateMethod(delegator, delegatee, methodName) {
    var inherited = delegator[methodName];
    delegator[methodName] = function() {
      var target = delegatee;
      var method = delegatee[methodName];

      // The method doesn't exist on the delegatee. Instead,
      // call the method on the delegator, if it exists.
      if (!method) {
        target = delegator;
        method = inherited;
      }

      if (method) {
        return method.apply(target, arguments);
      }
    };
  }

  // Implement a vague facsimilie of jQuery's data method
  function elementData(el, name, value) {
    if (arguments.length == 2) {
      return el["htmlwidget_data_" + name];
    } else if (arguments.length == 3) {
      el["htmlwidget_data_" + name] = value;
      return el;
    } else {
      throw new Error("Wrong number of arguments for elementData: " +
        arguments.length);
    }
  }

  // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
  function escapeRegExp(str) {
    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
  }

  function hasClass(el, className) {
    var re = new RegExp("\\b" + escapeRegExp(className) + "\\b");
    return re.test(el.className);
  }

  // elements - array (or array-like object) of HTML elements
  // className - class name to test for
  // include - if true, only return elements with given className;
  //   if false, only return elements *without* given className
  function filterByClass(elements, className, include) {
    var results = [];
    for (var i = 0; i < elements.length; i++) {
      if (hasClass(elements[i], className) == include)
        results.push(elements[i]);
    }
    return results;
  }

  function on(obj, eventName, func) {
    if (obj.addEventListener) {
      obj.addEventListener(eventName, func, false);
    } else if (obj.attachEvent) {
      obj.attachEvent(eventName, func);
    }
  }

  function off(obj, eventName, func) {
    if (obj.removeEventListener)
      obj.removeEventListener(eventName, func, false);
    else if (obj.detachEvent) {
      obj.detachEvent(eventName, func);
    }
  }

  // Translate array of values to top/right/bottom/left, as usual with
  // the "padding" CSS property
  // https://developer.mozilla.org/en-US/docs/Web/CSS/padding
  function unpackPadding(value) {
    if (typeof(value) === "number")
      value = [value];
    if (value.length === 1) {
      return {top: value[0], right: value[0], bottom: value[0], left: value[0]};
    }
    if (value.length === 2) {
      return {top: value[0], right: value[1], bottom: value[0], left: value[1]};
    }
    if (value.length === 3) {
      return {top: value[0], right: value[1], bottom: value[2], left: value[1]};
    }
    if (value.length === 4) {
      return {top: value[0], right: value[1], bottom: value[2], left: value[3]};
    }
  }

  // Convert an unpacked padding object to a CSS value
  function paddingToCss(paddingObj) {
    return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px";
  }

  // Makes a number suitable for CSS
  function px(x) {
    if (typeof(x) === "number")
      return x + "px";
    else
      return x;
  }

  // Retrieves runtime widget sizing information for an element.
  // The return value is either null, or an object with fill, padding,
  // defaultWidth, defaultHeight fields.
  function sizingPolicy(el) {
    var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']");
    if (!sizingEl)
      return null;
    var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}");
    if (viewerMode) {
      return sp.viewer;
    } else {
      return sp.browser;
    }
  }

  // @param tasks Array of strings (or falsy value, in which case no-op).
  //   Each element must be a valid JavaScript expression that yields a
  //   function. Or, can be an array of objects with "code" and "data"
  //   properties; in this case, the "code" property should be a string
  //   of JS that's an expr that yields a function, and "data" should be
  //   an object that will be added as an additional argument when that
  //   function is called.
  // @param target The object that will be "this" for each function
  //   execution.
  // @param args Array of arguments to be passed to the functions. (The
  //   same arguments will be passed to all functions.)
  function evalAndRun(tasks, target, args) {
    if (tasks) {
      forEach(tasks, function(task) {
        var theseArgs = args;
        if (typeof(task) === "object") {
          theseArgs = theseArgs.concat([task.data]);
          task = task.code;
        }
        var taskFunc = tryEval(task);
        if (typeof(taskFunc) !== "function") {
          throw new Error("Task must be a function! Source:\n" + task);
        }
        taskFunc.apply(target, theseArgs);
      });
    }
  }

  // Attempt eval() both with and without enclosing in parentheses.
  // Note that enclosing coerces a function declaration into
  // an expression that eval() can parse
  // (otherwise, a SyntaxError is thrown)
  function tryEval(code) {
    var result = null;
    try {
      result = eval(code);
    } catch(error) {
      if (!error instanceof SyntaxError) {
        throw error;
      }
      try {
        result = eval("(" + code + ")");
      } catch(e) {
        if (e instanceof SyntaxError) {
          throw error;
        } else {
          throw e;
        }
      }
    }
    return result;
  }

  function initSizing(el) {
    var sizing = sizingPolicy(el);
    if (!sizing)
      return;

    var cel = document.getElementById("htmlwidget_container");
    if (!cel)
      return;

    if (typeof(sizing.padding) !== "undefined") {
      document.body.style.margin = "0";
      document.body.style.padding = paddingToCss(unpackPadding(sizing.padding));
    }

    if (sizing.fill) {
      document.body.style.overflow = "hidden";
      document.body.style.width = "100%";
      document.body.style.height = "100%";
      document.documentElement.style.width = "100%";
      document.documentElement.style.height = "100%";
      if (cel) {
        cel.style.position = "absolute";
        var pad = unpackPadding(sizing.padding);
        cel.style.top = pad.top + "px";
        cel.style.right = pad.right + "px";
        cel.style.bottom = pad.bottom + "px";
        cel.style.left = pad.left + "px";
        el.style.width = "100%";
        el.style.height = "100%";
      }

      return {
        getWidth: function() { return cel.offsetWidth; },
        getHeight: function() { return cel.offsetHeight; }
      };

    } else {
      el.style.width = px(sizing.width);
      el.style.height = px(sizing.height);

      return {
        getWidth: function() { return el.offsetWidth; },
        getHeight: function() { return el.offsetHeight; }
      };
    }
  }

  // Default implementations for methods
  var defaults = {
    find: function(scope) {
      return querySelectorAll(scope, "." + this.name);
    },
    renderError: function(el, err) {
      var $el = $(el);

      this.clearError(el);

      // Add all these error classes, as Shiny does
      var errClass = "shiny-output-error";
      if (err.type !== null) {
        // use the classes of the error condition as CSS class names
        errClass = errClass + " " + $.map(asArray(err.type), function(type) {
          return errClass + "-" + type;
        }).join(" ");
      }
      errClass = errClass + " htmlwidgets-error";

      // Is el inline or block? If inline or inline-block, just display:none it
      // and add an inline error.
      var display = $el.css("display");
      $el.data("restore-display-mode", display);

      if (display === "inline" || display === "inline-block") {
        $el.hide();
        if (err.message !== "") {
          var errorSpan = $("<span>").addClass(errClass);
          errorSpan.text(err.message);
          $el.after(errorSpan);
        }
      } else if (display === "block") {
        // If block, add an error just after the el, set visibility:none on the
        // el, and position the error to be on top of the el.
        // Mark it with a unique ID and CSS class so we can remove it later.
        $el.css("visibility", "hidden");
        if (err.message !== "") {
          var errorDiv = $("<div>").addClass(errClass).css("position", "absolute")
            .css("top", el.offsetTop)
            .css("left", el.offsetLeft)
            // setting width can push out the page size, forcing otherwise
            // unnecessary scrollbars to appear and making it impossible for
            // the element to shrink; so use max-width instead
            .css("maxWidth", el.offsetWidth)
            .css("height", el.offsetHeight);
          errorDiv.text(err.message);
          $el.after(errorDiv);

          // Really dumb way to keep the size/position of the error in sync with
          // the parent element as the window is resized or whatever.
          var intId = setInterval(function() {
            if (!errorDiv[0].parentElement) {
              clearInterval(intId);
              return;
            }
            errorDiv
              .css("top", el.offsetTop)
              .css("left", el.offsetLeft)
              .css("maxWidth", el.offsetWidth)
              .css("height", el.offsetHeight);
          }, 500);
        }
      }
    },
    clearError: function(el) {
      var $el = $(el);
      var display = $el.data("restore-display-mode");
      $el.data("restore-display-mode", null);

      if (display === "inline" || display === "inline-block") {
        if (display)
          $el.css("display", display);
        $(el.nextSibling).filter(".htmlwidgets-error").remove();
      } else if (display === "block"){
        $el.css("visibility", "inherit");
        $(el.nextSibling).filter(".htmlwidgets-error").remove();
      }
    },
    sizing: {}
  };

  // Called by widget bindings to register a new type of widget. The definition
  // object can contain the following properties:
  // - name (required) - A string indicating the binding name, which will be
  //   used by default as the CSS classname to look for.
  // - initialize (optional) - A function(el) that will be called once per
  //   widget element; if a value is returned, it will be passed as the third
  //   value to renderValue.
  // - renderValue (required) - A function(el, data, initValue) that will be
  //   called with data. Static contexts will cause this to be called once per
  //   element; Shiny apps will cause this to be called multiple times per
  //   element, as the data changes.
  window.HTMLWidgets.widget = function(definition) {
    if (!definition.name) {
      throw new Error("Widget must have a name");
    }
    if (!definition.type) {
      throw new Error("Widget must have a type");
    }
    // Currently we only support output widgets
    if (definition.type !== "output") {
      throw new Error("Unrecognized widget type '" + definition.type + "'");
    }
    // TODO: Verify that .name is a valid CSS classname

    // Support new-style instance-bound definitions. Old-style class-bound
    // definitions have one widget "object" per widget per type/class of
    // widget; the renderValue and resize methods on such widget objects
    // take el and instance arguments, because the widget object can't
    // store them. New-style instance-bound definitions have one widget
    // object per widget instance; the definition that's passed in doesn't
    // provide renderValue or resize methods at all, just the single method
    //   factory(el, width, height)
    // which returns an object that has renderValue(x) and resize(w, h).
    // This enables a far more natural programming style for the widget
    // author, who can store per-instance state using either OO-style
    // instance fields or functional-style closure variables (I guess this
    // is in contrast to what can only be called C-style pseudo-OO which is
    // what we required before).
    if (definition.factory) {
      definition = createLegacyDefinitionAdapter(definition);
    }

    if (!definition.renderValue) {
      throw new Error("Widget must have a renderValue function");
    }

    // For static rendering (non-Shiny), use a simple widget registration
    // scheme. We also use this scheme for Shiny apps/documents that also
    // contain static widgets.
    window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || [];
    // Merge defaults into the definition; don't mutate the original definition.
    var staticBinding = extend({}, defaults, definition);
    overrideMethod(staticBinding, "find", function(superfunc) {
      return function(scope) {
        var results = superfunc(scope);
        // Filter out Shiny outputs, we only want the static kind
        return filterByClass(results, "html-widget-output", false);
      };
    });
    window.HTMLWidgets.widgets.push(staticBinding);

    if (shinyMode) {
      // Shiny is running. Register the definition with an output binding.
      // The definition itself will not be the output binding, instead
      // we will make an output binding object that delegates to the
      // definition. This is because we foolishly used the same method
      // name (renderValue) for htmlwidgets definition and Shiny bindings
      // but they actually have quite different semantics (the Shiny
      // bindings receive data that includes lots of metadata that it
      // strips off before calling htmlwidgets renderValue). We can't
      // just ignore the difference because in some widgets it's helpful
      // to call this.renderValue() from inside of resize(), and if
      // we're not delegating, then that call will go to the Shiny
      // version instead of the htmlwidgets version.

      // Merge defaults with definition, without mutating either.
      var bindingDef = extend({}, defaults, definition);

      // This object will be our actual Shiny binding.
      var shinyBinding = new Shiny.OutputBinding();

      // With a few exceptions, we'll want to simply use the bindingDef's
      // version of methods if they are available, otherwise fall back to
      // Shiny's defaults. NOTE: If Shiny's output bindings gain additional
      // methods in the future, and we want them to be overrideable by
      // HTMLWidget binding definitions, then we'll need to add them to this
      // list.
      delegateMethod(shinyBinding, bindingDef, "getId");
      delegateMethod(shinyBinding, bindingDef, "onValueChange");
      delegateMethod(shinyBinding, bindingDef, "onValueError");
      delegateMethod(shinyBinding, bindingDef, "renderError");
      delegateMethod(shinyBinding, bindingDef, "clearError");
      delegateMethod(shinyBinding, bindingDef, "showProgress");

      // The find, renderValue, and resize are handled differently, because we
      // want to actually decorate the behavior of the bindingDef methods.

      shinyBinding.find = function(scope) {
        var results = bindingDef.find(scope);

        // Only return elements that are Shiny outputs, not static ones
        var dynamicResults = results.filter(".html-widget-output");

        // It's possible that whatever caused Shiny to think there might be
        // new dynamic outputs, also caused there to be new static outputs.
        // Since there might be lots of different htmlwidgets bindings, we
        // schedule execution for later--no need to staticRender multiple
        // times.
        if (results.length !== dynamicResults.length)
          scheduleStaticRender();

        return dynamicResults;
      };

      // Wrap renderValue to handle initialization, which unfortunately isn't
      // supported natively by Shiny at the time of this writing.

      shinyBinding.renderValue = function(el, data) {
        Shiny.renderDependencies(data.deps);
        // Resolve strings marked as javascript literals to objects
        if (!(data.evals instanceof Array)) data.evals = [data.evals];
        for (var i = 0; data.evals && i < data.evals.length; i++) {
          window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]);
        }
        if (!bindingDef.renderOnNullValue) {
          if (data.x === null) {
            el.style.visibility = "hidden";
            return;
          } else {
            el.style.visibility = "inherit";
          }
        }
        if (!elementData(el, "initialized")) {
          initSizing(el);

          elementData(el, "initialized", true);
          if (bindingDef.initialize) {
            var result = bindingDef.initialize(el, el.offsetWidth,
              el.offsetHeight);
            elementData(el, "init_result", result);
          }
        }
        bindingDef.renderValue(el, data.x, elementData(el, "init_result"));
        evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]);
      };

      // Only override resize if bindingDef implements it
      if (bindingDef.resize) {
        shinyBinding.resize = function(el, width, height) {
          // Shiny can call resize before initialize/renderValue have been
          // called, which doesn't make sense for widgets.
          if (elementData(el, "initialized")) {
            bindingDef.resize(el, width, height, elementData(el, "init_result"));
          }
        };
      }

      Shiny.outputBindings.register(shinyBinding, bindingDef.name);
    }
  };

  var scheduleStaticRenderTimerId = null;
  function scheduleStaticRender() {
    if (!scheduleStaticRenderTimerId) {
      scheduleStaticRenderTimerId = setTimeout(function() {
        scheduleStaticRenderTimerId = null;
        window.HTMLWidgets.staticRender();
      }, 1);
    }
  }

  // Render static widgets after the document finishes loading
  // Statically render all elements that are of this widget's class
  window.HTMLWidgets.staticRender = function() {
    var bindings = window.HTMLWidgets.widgets || [];
    forEach(bindings, function(binding) {
      var matches = binding.find(document.documentElement);
      forEach(matches, function(el) {
        var sizeObj = initSizing(el, binding);

        if (hasClass(el, "html-widget-static-bound"))
          return;
        el.className = el.className + " html-widget-static-bound";

        var initResult;
        if (binding.initialize) {
          initResult = binding.initialize(el,
            sizeObj ? sizeObj.getWidth() : el.offsetWidth,
            sizeObj ? sizeObj.getHeight() : el.offsetHeight
          );
          elementData(el, "init_result", initResult);
        }

        if (binding.resize) {
          var lastSize = {
            w: sizeObj ? sizeObj.getWidth() : el.offsetWidth,
            h: sizeObj ? sizeObj.getHeight() : el.offsetHeight
          };
          var resizeHandler = function(e) {
            var size = {
              w: sizeObj ? sizeObj.getWidth() : el.offsetWidth,
              h: sizeObj ? sizeObj.getHeight() : el.offsetHeight
            };
            if (size.w === 0 && size.h === 0)
              return;
            if (size.w === lastSize.w && size.h === lastSize.h)
              return;
            lastSize = size;
            binding.resize(el, size.w, size.h, initResult);
          };

          on(window, "resize", resizeHandler);

          // This is needed for cases where we're running in a Shiny
          // app, but the widget itself is not a Shiny output, but
          // rather a simple static widget. One example of this is
          // an rmarkdown document that has runtime:shiny and widget
          // that isn't in a render function. Shiny only knows to
          // call resize handlers for Shiny outputs, not for static
          // widgets, so we do it ourselves.
          if (window.jQuery) {
            window.jQuery(document).on(
              "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets",
              resizeHandler
            );
            window.jQuery(document).on(
              "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets",
              resizeHandler
            );
          }

          // This is needed for the specific case of ioslides, which
          // flips slides between display:none and display:block.
          // Ideally we would not have to have ioslide-specific code
          // here, but rather have ioslides raise a generic event,
          // but the rmarkdown package just went to CRAN so the
          // window to getting that fixed may be long.
          if (window.addEventListener) {
            // It's OK to limit this to window.addEventListener
            // browsers because ioslides itself only supports
            // such browsers.
            on(document, "slideenter", resizeHandler);
            on(document, "slideleave", resizeHandler);
          }
        }

        var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']");
        if (scriptData) {
          var data = JSON.parse(scriptData.textContent || scriptData.text);
          // Resolve strings marked as javascript literals to objects
          if (!(data.evals instanceof Array)) data.evals = [data.evals];
          for (var k = 0; data.evals && k < data.evals.length; k++) {
            window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]);
          }
          binding.renderValue(el, data.x, initResult);
          evalAndRun(data.jsHooks.render, initResult, [el, data.x]);
        }
      });
    });

    invokePostRenderHandlers();
  }


  function has_jQuery3() {
    if (!window.jQuery) {
      return false;
    }
    var $version = window.jQuery.fn.jquery;
    var $major_version = parseInt($version.split(".")[0]);
    return $major_version >= 3;
  }

  /*
  / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's
  / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now
  / really means $(setTimeout(fn)).
  / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous
  /
  / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny
  / one tick later than it did before, which means staticRender() is
  / called renderValue() earlier than (advanced) widget authors might be expecting.
  / https://github.com/rstudio/shiny/issues/2630
  /
  / For a concrete example, leaflet has some methods (e.g., updateBounds)
  / which reference Shiny methods registered in initShiny (e.g., setInputValue).
  / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to
  / delay execution of those methods (until Shiny methods are ready)
  / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268
  /
  / Ideally widget authors wouldn't need to use this setTimeout() hack that
  / leaflet uses to call Shiny methods on a staticRender(). In the long run,
  / the logic initShiny should be broken up so that method registration happens
  / right away, but binding happens later.
  */
  function maybeStaticRenderLater() {
    if (shinyMode && has_jQuery3()) {
      window.jQuery(window.HTMLWidgets.staticRender);
    } else {
      window.HTMLWidgets.staticRender();
    }
  }

  if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", function() {
      document.removeEventListener("DOMContentLoaded", arguments.callee, false);
      maybeStaticRenderLater();
    }, false);
  } else if (document.attachEvent) {
    document.attachEvent("onreadystatechange", function() {
      if (document.readyState === "complete") {
        document.detachEvent("onreadystatechange", arguments.callee);
        maybeStaticRenderLater();
      }
    });
  }


  window.HTMLWidgets.getAttachmentUrl = function(depname, key) {
    // If no key, default to the first item
    if (typeof(key) === "undefined")
      key = 1;

    var link = document.getElementById(depname + "-" + key + "-attachment");
    if (!link) {
      throw new Error("Attachment " + depname + "/" + key + " not found in document");
    }
    return link.getAttribute("href");
  };

  window.HTMLWidgets.dataframeToD3 = function(df) {
    var names = [];
    var length;
    for (var name in df) {
        if (df.hasOwnProperty(name))
            names.push(name);
        if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") {
            throw new Error("All fields must be arrays");
        } else if (typeof(length) !== "undefined" && length !== df[name].length) {
            throw new Error("All fields must be arrays of the same length");
        }
        length = df[name].length;
    }
    var results = [];
    var item;
    for (var row = 0; row < length; row++) {
        item = {};
        for (var col = 0; col < names.length; col++) {
            item[names[col]] = df[names[col]][row];
        }
        results.push(item);
    }
    return results;
  };

  window.HTMLWidgets.transposeArray2D = function(array) {
      if (array.length === 0) return array;
      var newArray = array[0].map(function(col, i) {
          return array.map(function(row) {
              return row[i]
          })
      });
      return newArray;
  };
  // Split value at splitChar, but allow splitChar to be escaped
  // using escapeChar. Any other characters escaped by escapeChar
  // will be included as usual (including escapeChar itself).
  function splitWithEscape(value, splitChar, escapeChar) {
    var results = [];
    var escapeMode = false;
    var currentResult = "";
    for (var pos = 0; pos < value.length; pos++) {
      if (!escapeMode) {
        if (value[pos] === splitChar) {
          results.push(currentResult);
          currentResult = "";
        } else if (value[pos] === escapeChar) {
          escapeMode = true;
        } else {
          currentResult += value[pos];
        }
      } else {
        currentResult += value[pos];
        escapeMode = false;
      }
    }
    if (currentResult !== "") {
      results.push(currentResult);
    }
    return results;
  }
  // Function authored by Yihui/JJ Allaire
  window.HTMLWidgets.evaluateStringMember = function(o, member) {
    var parts = splitWithEscape(member, '.', '\\');
    for (var i = 0, l = parts.length; i < l; i++) {
      var part = parts[i];
      // part may be a character or 'numeric' member name
      if (o !== null && typeof o === "object" && part in o) {
        if (i == (l - 1)) { // if we are at the end of the line then evalulate
          if (typeof o[part] === "string")
            o[part] = tryEval(o[part]);
        } else { // otherwise continue to next embedded object
          o = o[part];
        }
      }
    }
  };

  // Retrieve the HTMLWidget instance (i.e. the return value of an
  // HTMLWidget binding's initialize() or factory() function)
  // associated with an element, or null if none.
  window.HTMLWidgets.getInstance = function(el) {
    return elementData(el, "init_result");
  };

  // Finds the first element in the scope that matches the selector,
  // and returns the HTMLWidget instance (i.e. the return value of
  // an HTMLWidget binding's initialize() or factory() function)
  // associated with that element, if any. If no element matches the
  // selector, or the first matching element has no HTMLWidget
  // instance associated with it, then null is returned.
  //
  // The scope argument is optional, and defaults to window.document.
  window.HTMLWidgets.find = function(scope, selector) {
    if (arguments.length == 1) {
      selector = scope;
      scope = document;
    }

    var el = scope.querySelector(selector);
    if (el === null) {
      return null;
    } else {
      return window.HTMLWidgets.getInstance(el);
    }
  };

  // Finds all elements in the scope that match the selector, and
  // returns the HTMLWidget instances (i.e. the return values of
  // an HTMLWidget binding's initialize() or factory() function)
  // associated with the elements, in an array. If elements that
  // match the selector don't have an associated HTMLWidget
  // instance, the returned array will contain nulls.
  //
  // The scope argument is optional, and defaults to window.document.
  window.HTMLWidgets.findAll = function(scope, selector) {
    if (arguments.length == 1) {
      selector = scope;
      scope = document;
    }

    var nodes = scope.querySelectorAll(selector);
    var results = [];
    for (var i = 0; i < nodes.length; i++) {
      results.push(window.HTMLWidgets.getInstance(nodes[i]));
    }
    return results;
  };

  var postRenderHandlers = [];
  function invokePostRenderHandlers() {
    while (postRenderHandlers.length) {
      var handler = postRenderHandlers.shift();
      if (handler) {
        handler();
      }
    }
  }

  // Register the given callback function to be invoked after the
  // next time static widgets are rendered.
  window.HTMLWidgets.addPostRenderHandler = function(callback) {
    postRenderHandlers.push(callback);
  };

  // Takes a new-style instance-bound definition, and returns an
  // old-style class-bound definition. This saves us from having
  // to rewrite all the logic in this file to accomodate both
  // types of definitions.
  function createLegacyDefinitionAdapter(defn) {
    var result = {
      name: defn.name,
      type: defn.type,
      initialize: function(el, width, height) {
        return defn.factory(el, width, height);
      },
      renderValue: function(el, x, instance) {
        return instance.renderValue(x);
      },
      resize: function(el, width, height, instance) {
        return instance.resize(width, height);
      }
    };

    if (defn.find)
      result.find = defn.find;
    if (defn.renderError)
      result.renderError = defn.renderError;
    if (defn.clearError)
      result.clearError = defn.clearError;

    return result;
  }
})();

</script>
<script>function R2D3(el, width, height) {
  var self = this;
  var x = null;
  var version = null;
  
  self.data = null;
  self.shadow = null;
  self.root = self.svg = self.canvas = null;
  self.width = 0;
  self.height = 0;
  self.options = null;
  self.resizer = null;
  self.renderer = null;
  self.rendererDefaut = true;
  self.captureErrors = null;
  self.theme = {};
  self.style = null;
  self.useShadow = true;
  
  self.setX = function(newX) {
    x = newX;
    self.data = x.data;
    
    if (x.type == "data.frame") {
      self.data = HTMLWidgets.dataframeToD3(self.data);
    }
    
    if (x.theme) {
      self.theme = themeCapable() ? x.theme.runtime : x.theme.default;
    }
    
    self.options = x.options;
    
    if (!x.useShadow) {
      self.useShadow = false;
    }
  };
  
  self.setContainer = function(container) {
    self.container = container;
  };
  
  self.setRoot = function(root) {
    self.root = self.svg = self.canvas = root;
  };
  
  var createContainer = function() {
    if (self.container == "svg")
      return document.createElementNS("http://www.w3.org/2000/svg", "svg");
    else
      return document.createElement(self.container);
  };
  
  self.createRoot = function() {
    if (self.shadow === null) {
      if (self.useShadow && el.attachShadow) {
        self.shadow = el.attachShadow({
          mode: "open"
        });
      }
      else {
        self.shadow = el;
      }
    }
    
    if (self.root !== null) {
      self.d3().select(self.shadow).select(self.container).remove();
      self.setRoot(null);
    }
    
    var container = createContainer();
    self.shadow.appendChild(container);
    var root = self.d3().select(container)
      .attr("width", self.width)
      .attr("height", self.height);
      
    if (self.theme.background) root.style("background", self.theme.background);
    if (self.theme.foreground) {
      root.style("fill", self.theme.foreground);
      root.style("color", self.theme.foreground);
    }
    
    self.setRoot(root);
    self.addStyle();
  };
  
  self.setWidth = function(width) {
    self.width = width;
  };
  
  self.setHeight = function(height) {
    self.height = height;
  };
  
  self.onRender = function(renderer) {
    self.renderer = renderer;
    self.rendererDefaut = false;
  };
  
  self.onResize = function(resizer) {
    self.resizer = resizer;
  };
  
  self.render = function() {
    if (self.renderer === null) return;
    
    try {
      self.renderer(self.data, self.root, self.width, self.height, self.options);
    }
    catch (err) {
      self.showError(err, null, null);
    }
  };
  
  self.resize = function() {
    if (self.resizer === null) return;
    try {
      self.resizer(self.width, self.height);
    }
    catch (err) {
      self.showError(err, null, null);
    }
  };
  
  var simpleHash = function(data) {
    var step = Math.max(1, Math.floor(data.length / 1000));

    var hash = 0;
    for (var idx = 0; idx < data.length; idx += step) {
		  hash = ((hash << 5) - hash) + data.charCodeAt(idx);
		  hash = hash & hash;
    }
    
    return Math.abs(hash) % 1000;
  };
  
  self.addScript = function(script) {
    var el = document.createElement("script");
    el.type = "text/javascript";
    
    var debugHeader = "//# sourceURL=r2d3-script-" + simpleHash(script) + "\n";
    el.text = debugHeader + script;
    
    self.captureErrors = function(msg, url, lineNo, columnNo, error) {
      self.showError({
          message: msg,
          stack: null
        }, lineNo, columnNo);
    };

    document.head.appendChild(el);
    self.captureErrors = null;
  };
  
  self.setStyle = function(style) {
    self.style = style;
  };
  
  self.addStyle = function() {
    if (!self.style) return;
    
    var el = document.createElement("style");
            
    el.type = "text/css";
    if (el.styleSheet) {
      el.styleSheet.cssText = self.style;
    } else {
      el.appendChild(document.createTextNode(self.style));
    }
    
    self.root.node().appendChild(el);
  };
  
  self.setVersion = function(newVersion) {
    version = newVersion;
  };
  
  self.d3 = function() {
    switch(version) {
      case 3:
        return window.d3;
      case 4:
        return window.d3v4;
      case 5:
        return window.d3v5;
    }
  };
  
  var consoleLog = function(data) {
    console.log(data);

    var entry = document.createElement("div");
    lastConsoleEntry = entry;
    entry.style.bottom = "0";
    entry.style.left = "0";
    entry.style.right = "0";
    entry.style.background = "rgb(244, 248, 249)";
    entry.style.border = "1px solid #d6dadc";
    entry.style.padding = "8px 15px 8px 15px";
    entry.style.position = "absolute";
    entry.style.fontFamily = "'Lucida Sans', 'DejaVu Sans', 'Lucida Grande', 'Segoe UI', Verdana, Helvetica, sans-serif, serif";
    entry.style.fontSize = "9pt";
    self.shadow.appendChild(entry);
    
    entry.style.transform = "translateY(40px)";
    entry.style.opacity = "0";
    entry.style.transition = "all 0.25s";
    
    entry.onmouseenter = function(e) {
      consoleHovering = true;
    };
    
    entry.onmouseleave = function(e) {
      if (lastConsoleEntry == e.target) consoleHovering = false;
    };
    
    setTimeout(function() {
      entry.style.transform = "translateY(0)";
      entry.style.opacity = "1";
      entry.style.transition = "all 0.5s";
    }, 50);
    
    entry.innerText = data;
    
    (function(entry) {
      setTimeout(function() {
        var hideConsole = function() {
          entry.style.opacity = "0";
          entry.addEventListener("transitionend", function(event) {
            event.target.parentNode.removeChild(event.target);
          });
        };
        
        var retryHide = function() {
          if (consoleHovering && lastConsoleEntry == entry) {
            setTimeout(retryHide, 100);
          }
          else {
            hideConsole();
          }
        };
        
        retryHide();
      }, 3000);
    })(entry);
  };
  
  var consoleHovering = false;
  var lastConsoleEntry = null;
  var createConsoleOverride = function(type) {
    return function(data) {
      consoleLog(type + data);
    };
  };
  
  self.console = {
    assert: console.assert,
    clear: console.clear,
    count: console.count,
    error: createConsoleOverride("Error: "),
    group: console.group,
    groupCollapsed: console.groupCollapsed,
    groupEnd: console.groupEnd,
    info: createConsoleOverride("Info: "),
    log: createConsoleOverride(""),
    table: console.table,
    time: console.time,
    timeEnd: console.timeEnd,
    trace: console.trace,
    warn: console.warn
  };
  
  self.callD3Script = function() {
    var d3Script = self.d3Script;
    
    try {
      d3Script(self.d3(), self, self.data, self.root, self.width, self.height, self.options, self.theme, self.console);
    }
    catch (err) {
      self.showError(err, null, null);
    }
  };
  
  self.widgetRender = function(x) {
    self.setX(x);
    self.setWidth(width);
    self.setHeight(height);
    
    if (!self.root) {
      self.setVersion(x.version);
      self.setStyle(x.style);
      self.addScript(x.script);
      self.d3Script = d3Script;
      self.setContainer(x.container);
      
      self.createRoot();
      
      self.callD3Script();
    }
    
    self.render();
    
    if (self.renderer === null) {
      self.renderer = function(data, container, width, height, options) {
        self.callD3Script();
      };
    }
    
    if (self.resizer === null) {
      self.resizer = function(width, height) {
        self.createRoot();
        self.callD3Script();
        if (!self.rendererDefaut) self.render();
      };
    }
  };
  
  self.debounce = function(f, wait) {
    var timeout = null;
    return function() {
      if (timeout) window.clearTimeout(timeout);
      timeout = window.setTimeout(f, wait);
    };
  };
  
  self.resizeDebounce = self.debounce(self.resize, 100);
  
  self.widgetResize = function(width, height) {
    self.root
      .attr("width", width)
      .attr("height", height);

    self.setWidth(width);
    self.setHeight(height);
    
    self.resizeDebounce();
  };
  
  var openSource = function(filename, line, column, domain, highlight) {
    if (window.parent.postMessage) {
      window.parent.postMessage({
        message: "openfile",
        source: "r2d3",
        file: filename,
        line: line,
        column: column,
        highlight: highlight
      }, domain);
    }
  };
  
  var themesLoaded = false;
  var registerTheme = function(domain) {
    domain = domain ? domain : window.location.origin;
    if (window.parent.postMessage) {
      window.addEventListener('message', function(event) {
        if (typeof event.data != 'object')
          return;
      	if (event.origin !== domain)
      	  return;
    	  if (event.data.message !== "ontheme")
          return;
          
        document.body.style.background = event.data.background;
        
        self.theme.background = event.data.background;
        self.theme.foreground = event.data.foreground;
      	
      	// resize to give script chance to pick new theme
      	if (themesLoaded) self.resize();
      	themesLoaded = true;
      }, false);
      
      window.parent.postMessage({
        message: "ontheme",
        source: "r2d3"
      }, domain);
    }
  };
  
  var errorObject = null;
  var errorLine = null;
  var errorColumn = null;
  var errorFile = null;
  var errorHighlightOnce = false;
  var hostDomain = null;
  
  var queryParameter = function(param) {
    var query = window.location.search.substring(1);
    var entries = query.split('&');
    
    for (var idxEntry = 0; idxEntry < entries.length; idxEntry++) {
        var params = entries[idxEntry].split('=');
        if (decodeURIComponent(params[0]) == param) {
            return decodeURIComponent(params[1]);
        }
    }
    
    return null;
  };
  
  var themeCapable = function() {
    return queryParameter("capabilities") === "1";
  };
  
  var registerMessageListeners = function(event) {
    if (!themeCapable()) {
      hostDomain = null;
    } else {
      hostDomain = queryParameter("host");
      registerTheme(hostDomain);
    }
  };
  
  var cleanStackTrace = function(stack) {
    var cleaned = stack.substr(0, stack.indexOf("at d3Script"));
    cleaned = cleaned.replace(new RegExp("\\(.*/session/view[^/]*/lib/[^/]+/", "g"), "(");
    cleaned = cleaned.replace(new RegExp("\\(.*/session/view[^/]*/", "g"), "(");
    
    return cleaned;
  };
  
  var parseLineFileRef = function(line) {
    var lines = x.script.split("\n");
    line = Math.min(lines.length - 1, line);
    
    var header = "/* R2D3 Source File: ";
    var file = null;
    for (var maybe = line; line && maybe >= 0; maybe--) {
      if (lines[maybe].includes(header)) {
        var data = lines[maybe].split(header)[1];
        var source = data.split("*/")[0].trim();
        
        line = line - (maybe + 2);
        file = source;
        
        break;
      }
    }
      
    return {
      file: file,
      line: line
    };
  };
  
  var parseCallstackRef = function(callstack) {
    var reg = new RegExp("at [^\\n]+ \\((<anonymous>|r2d3-script-[0-9]+):([0-9]+):([0-9]+)\\)");
    var matches = reg.exec(callstack);
    if (matches && matches.length === 4) {
      
      var line = parseInt(matches[2]);
      var column = parseInt(matches[3]);
      var file = null;
      var lineRef = parseLineFileRef(line);
      if (lineRef) {
        file = lineRef.file;
        line = lineRef.line;
      }
      
      return {
        file: file,
        line: line,
        column: column
      };
    }
    else {
      return null;
    }
  };
  
  var createSourceLink = function(path, line, column, domain) {
    var name = baseName(path);
    var linkEl = document.createElement("a");
    linkEl.innerText = "(" + name + "#" + line + ":" + column + ")";
    linkEl.href = "#";
    linkEl.color = "#4531d6";
    linkEl.style.display = "inline-block";
    linkEl.style.textDecoration = "none";
    linkEl.onclick = function() {
      openSource(path, line, column, domain, false);
    };
    
    return linkEl;
  };
  
  var baseName = function(path) {
    var parts = path.split(new RegExp("/|\\\\"));
    return parts[parts.length - 1];
  };
  
  var showErrorImpl = function() {
    var message = errorObject, callstack = "";
    
    if (errorObject.message) message = errorObject.message;
    if (errorObject.stack) callstack = errorObject.stack;
    
    if (errorLine === null || errorColumn === null) {
      var parseResult = parseCallstackRef(callstack);
      if (parseResult) {
        errorFile = parseResult.file;
        errorLine = parseResult.line;
        errorColumn = parseResult.column;
      }
    }
    else {
      var parseLineResult = parseLineFileRef(errorLine);
      if (parseLineResult) {
        errorFile = parseLineResult.file;
        errorLine = parseLineResult.line;
      }
    }
    
    if (errorFile) {
      message = message + " in ";
    }
    
    var container = document.getElementById("r2d3-error-container");
    if (!container) {
      container = document.createElement("div");
      self.shadow.appendChild(container);
    }
    else {
      container.innerHTML = "";
    }
    
    container.id = "r2d3-error-container";
    container.style.fontFamily = "'Lucida Sans', 'DejaVu Sans', 'Lucida Grande', 'Segoe UI', Verdana, Helvetica, sans-serif, serif";
    container.style.fontSize = "9pt";
    container.style.color = "#444";
    container.style.position = "absolute";
    container.style.top = "0";
    container.style.left = "8px";
    container.style.right = "8px";
    container.style.overflow = "scroll";
    container.style.lineHeight = "16px";
    
    var header = document.createElement("div");
    header.innerText = "Error: " + message.replace("\n", "");
    header.style.marginTop = "8px";
    header.style.background = "rgb(244, 248, 249)";
    header.style.border = "1px solid #d6dadc";
    header.style.padding = "8px 15px 8px 15px";
    header.style.lineHeight = "24px";
    container.appendChild(header);
    
    if (errorFile) {
      if (hostDomain) {
        if (!errorHighlightOnce) {
          openSource(errorFile, errorLine, errorColumn, hostDomain, true);
          errorHighlightOnce = true;
        }
        
        var linkEl = createSourceLink(errorFile, errorLine, errorColumn, hostDomain);
        header.appendChild(linkEl);
      }
      else {
        header.innerText = "Error: " + message.replace("\n", "") + " " + errorFile + "#" + errorLine + ":" + errorColumn;
      }
    }
    
    if (callstack) {
      var stack = document.createElement("div");
      var cleanStack = cleanStackTrace(callstack);
      stack.style.display = "block";
      stack.style.border = "1px solid #d6dadc";
      stack.style.padding = "12px 15px 12px 15px";
      stack.style.background = "#FFFFFF";
      stack.style.borderTop = "0";
      
      var allEmpty = true;
      var entries = cleanStack.split("\n");
      for (var idxEntry in entries) {
        var entry = entries[idxEntry];
        var stackEl = document.createElement("div");
        
        var stackRes = parseCallstackRef(entry);
        if (idxEntry === "0") {
          header.appendChild(document.createElement("br"));
          header.appendChild(document.createTextNode(entry));
        } else if (hostDomain && stackRes) {
          stackEl.innerText = entry.substr(
            0,
            Math.max(entry.indexOf("(<anony"), entry.indexOf("(r2d3-script-"))
          );
          var stackLinkEl = createSourceLink(stackRes.file, stackRes.line, stackRes.column, hostDomain);
          stackEl.appendChild(stackLinkEl);
        }
        else {
          stackEl.innerText = entry;
        }
        
        if (stackEl.innerHTML.trim().length > 0)  stack.appendChild(stackEl);
      }
      
      if (stack.childElementCount > 0)
        container.appendChild(stack);
    }
  };
  
  self.showError = function(error, line, column) {
    errorObject = error;
    errorLine = line;
    errorColumn = column;
    
    showErrorImpl();
  };
  
  window.onerror = function (msg, url, lineNo, columnNo, error) {
    if (self.captureErrors) {
      self.captureErrors(msg, url, lineNo, columnNo, error);
    }
    
    return false;
  };
  
  registerMessageListeners();
}</script>
<script>// webcomponents.js requires Set api which is not available in all browsers
if (typeof(Set) !== "undefined") {
/**
@license @nocompile
Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
(function(){/*

 Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
 Code distributed by Google as part of the polymer project is also
 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
'use strict';var q,aa="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ca(){ca=function(){};aa.Symbol||(aa.Symbol=da)}var da=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}();
function ea(){ca();var a=aa.Symbol.iterator;a||(a=aa.Symbol.iterator=aa.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&ba(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ha(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ha(a){ea();a={next:a};a[aa.Symbol.iterator]=function(){return this};return a}function ia(a){ea();var b=a[Symbol.iterator];return b?b.call(a):fa(a)}
function ja(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}
(function(){if(!function(){var a=document.createEvent("Event");a.initEvent("foo",!0,!0);a.preventDefault();return a.defaultPrevented}()){var a=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(a.call(this),Object.defineProperty(this,"defaultPrevented",{get:function(){return!0},configurable:!0}))}}var b=/Trident/.test(navigator.userAgent);if(!window.CustomEvent||b&&"function"!==typeof window.CustomEvent)window.CustomEvent=function(a,b){b=b||{};var c=document.createEvent("CustomEvent");
c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c},window.CustomEvent.prototype=window.Event.prototype;if(!window.Event||b&&"function"!==typeof window.Event){var c=window.Event;window.Event=function(a,b){b=b||{};var c=document.createEvent("Event");c.initEvent(a,!!b.bubbles,!!b.cancelable);return c};if(c)for(var d in c)window.Event[d]=c[d];window.Event.prototype=c.prototype}if(!window.MouseEvent||b&&"function"!==typeof window.MouseEvent){b=window.MouseEvent;window.MouseEvent=function(a,
b){b=b||{};var c=document.createEvent("MouseEvent");c.initMouseEvent(a,!!b.bubbles,!!b.cancelable,b.view||window,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget);return c};if(b)for(d in b)window.MouseEvent[d]=b[d];window.MouseEvent.prototype=b.prototype}Array.from||(Array.from=function(a){return[].slice.call(a)});Object.assign||(Object.assign=function(a,b){for(var c=[].slice.call(arguments,1),d=0,e;d<c.length;d++)if(e=c[d])for(var f=
a,n=e,r=Object.getOwnPropertyNames(n),G=0;G<r.length;G++)e=r[G],f[e]=n[e];return a})})(window.WebComponents);(function(){function a(){}function b(a,b){if(!a.childNodes.length)return[];switch(a.nodeType){case Node.DOCUMENT_NODE:return G.call(a,b);case Node.DOCUMENT_FRAGMENT_NODE:return x.call(a,b);default:return r.call(a,b)}}var c="undefined"===typeof HTMLTemplateElement,d=!(document.createDocumentFragment().cloneNode()instanceof DocumentFragment),e=!1;/Trident/.test(navigator.userAgent)&&function(){function a(a,b){if(a instanceof DocumentFragment)for(var d;d=a.firstChild;)c.call(this,d,b);else c.call(this,
a,b);return a}e=!0;var b=Node.prototype.cloneNode;Node.prototype.cloneNode=function(a){a=b.call(this,a);this instanceof DocumentFragment&&(a.__proto__=DocumentFragment.prototype);return a};DocumentFragment.prototype.querySelectorAll=HTMLElement.prototype.querySelectorAll;DocumentFragment.prototype.querySelector=HTMLElement.prototype.querySelector;Object.defineProperties(DocumentFragment.prototype,{nodeType:{get:function(){return Node.DOCUMENT_FRAGMENT_NODE},configurable:!0},localName:{get:function(){},
configurable:!0},nodeName:{get:function(){return"#document-fragment"},configurable:!0}});var c=Node.prototype.insertBefore;Node.prototype.insertBefore=a;var d=Node.prototype.appendChild;Node.prototype.appendChild=function(b){b instanceof DocumentFragment?a.call(this,b,null):d.call(this,b);return b};var f=Node.prototype.removeChild,g=Node.prototype.replaceChild;Node.prototype.replaceChild=function(b,c){b instanceof DocumentFragment?(a.call(this,b,c),f.call(this,c)):g.call(this,b,c);return c};Document.prototype.createDocumentFragment=
function(){var a=this.createElement("df");a.__proto__=DocumentFragment.prototype;return a};var h=Document.prototype.importNode;Document.prototype.importNode=function(a,b){b=h.call(this,a,b||!1);a instanceof DocumentFragment&&(b.__proto__=DocumentFragment.prototype);return b}}();var f=Node.prototype.cloneNode,g=Document.prototype.createElement,h=Document.prototype.importNode,k=Node.prototype.removeChild,m=Node.prototype.appendChild,n=Node.prototype.replaceChild,r=Element.prototype.querySelectorAll,
G=Document.prototype.querySelectorAll,x=DocumentFragment.prototype.querySelectorAll,v=function(){if(!c){var a=document.createElement("template"),b=document.createElement("template");b.content.appendChild(document.createElement("div"));a.content.appendChild(b);a=a.cloneNode(!0);return 0===a.content.childNodes.length||0===a.content.firstChild.content.childNodes.length||d}}();if(c){var U=document.implementation.createHTMLDocument("template"),Dc=!0,xa=document.createElement("style");xa.textContent="template{display:none;}";
var Ec=document.head;Ec.insertBefore(xa,Ec.firstElementChild);a.prototype=Object.create(HTMLElement.prototype);var mf=!document.createElement("div").hasOwnProperty("innerHTML");a.R=function(b){if(!b.content&&b.namespaceURI===document.documentElement.namespaceURI){b.content=U.createDocumentFragment();for(var c;c=b.firstChild;)m.call(b.content,c);if(mf)b.__proto__=a.prototype;else if(b.cloneNode=function(b){return a.a(this,b)},Dc)try{p(b),Fc(b)}catch(zh){Dc=!1}a.b(b.content)}};var p=function(b){Object.defineProperty(b,
"innerHTML",{get:function(){return Gc(this)},set:function(b){U.body.innerHTML=b;for(a.b(U);this.content.firstChild;)k.call(this.content,this.content.firstChild);for(;U.body.firstChild;)m.call(this.content,U.body.firstChild)},configurable:!0})},Fc=function(a){Object.defineProperty(a,"outerHTML",{get:function(){return"<template>"+this.innerHTML+"</template>"},set:function(a){if(this.parentNode){U.body.innerHTML=a;for(a=this.ownerDocument.createDocumentFragment();U.body.firstChild;)m.call(a,U.body.firstChild);
n.call(this.parentNode,a,this)}else throw Error("Failed to set the 'outerHTML' property on 'Element': This element has no parent node.");},configurable:!0})};p(a.prototype);Fc(a.prototype);a.b=function(c){c=b(c,"template");for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)a.R(f)};document.addEventListener("DOMContentLoaded",function(){a.b(document)});Document.prototype.createElement=function(){var b=g.apply(this,arguments);"template"===b.localName&&a.R(b);return b};var nf=/[&\u00A0"]/g,kb=/[&\u00A0<>]/g,
l=function(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}};xa=function(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b};var F=xa("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),of=xa("style script xmp iframe noembed noframes plaintext noscript".split(" ")),Gc=function(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,
g;e<f&&(g=d[e]);e++){a:{var h=g;var k=a;var m=b;switch(h.nodeType){case Node.ELEMENT_NODE:for(var n=h.localName,v="<"+n,r=h.attributes,p=0;k=r[p];p++)v+=" "+k.name+'="'+k.value.replace(nf,l)+'"';v+=">";h=F[n]?v:v+Gc(h,m)+"</"+n+">";break a;case Node.TEXT_NODE:h=h.data;h=k&&of[k.localName]?h:h.replace(kb,l);break a;case Node.COMMENT_NODE:h="\x3c!--"+h.data+"--\x3e";break a;default:throw window.console.error(h),Error("not implemented");}}c+=h}return c}}if(c||v){a.a=function(a,b){var c=f.call(a,!1);
this.R&&this.R(c);b&&(m.call(c.content,f.call(a.content,!0)),lb(c.content,a.content));return c};var lb=function(c,d){if(d.querySelectorAll&&(d=b(d,"template"),0!==d.length)){c=b(c,"template");for(var e=0,f=c.length,g,h;e<f;e++)h=d[e],g=c[e],a&&a.R&&a.R(h),n.call(g.parentNode,pf.call(h,!0),g)}},pf=Node.prototype.cloneNode=function(b){if(!e&&d&&this instanceof DocumentFragment)if(b)var c=qf.call(this.ownerDocument,this,!0);else return this.ownerDocument.createDocumentFragment();else this.nodeType===
Node.ELEMENT_NODE&&"template"===this.localName&&this.namespaceURI==document.documentElement.namespaceURI?c=a.a(this,b):c=f.call(this,b);b&&lb(c,this);return c},qf=Document.prototype.importNode=function(c,d){d=d||!1;if("template"===c.localName)return a.a(c,d);var e=h.call(this,c,d);if(d){lb(e,c);c=b(e,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]');for(var f,k=0;k<c.length;k++){f=c[k];d=g.call(document,"script");d.textContent=f.textContent;for(var m=f.attributes,
l=0,v;l<m.length;l++)v=m[l],d.setAttribute(v.name,v.value);n.call(f.parentNode,d,f)}}return e}}c&&(window.HTMLTemplateElement=a)})();var ka;Array.isArray?ka=Array.isArray:ka=function(a){return"[object Array]"===Object.prototype.toString.call(a)};var la=ka;var ma=0,na,oa="undefined"!==typeof window?window:void 0,pa=oa||{},qa=pa.MutationObserver||pa.WebKitMutationObserver,ra="undefined"===typeof self&&"undefined"!==typeof process&&"[object process]"==={}.toString.call(process),sa="undefined"!==typeof Uint8ClampedArray&&"undefined"!==typeof importScripts&&"undefined"!==typeof MessageChannel;function ta(){return"undefined"!==typeof na?function(){na(ua)}:va()}
function wa(){var a=0,b=new qa(ua),c=document.createTextNode("");b.observe(c,{characterData:!0});return function(){c.data=a=++a%2}}function ya(){var a=new MessageChannel;a.port1.onmessage=ua;return function(){return a.port2.postMessage(0)}}function va(){var a=setTimeout;return function(){return a(ua,1)}}var za=Array(1E3);function ua(){for(var a=0;a<ma;a+=2)(0,za[a])(za[a+1]),za[a]=void 0,za[a+1]=void 0;ma=0}var Aa,Ba;
if(ra)Ba=function(){return process.xb(ua)};else{var Ca;if(qa)Ca=wa();else{var Da;if(sa)Da=ya();else{var Ea;if(void 0===oa&&"function"===typeof require)try{var Fa=require("vertx");na=Fa.zb||Fa.yb;Ea=ta()}catch(a){Ea=va()}else Ea=va();Da=Ea}Ca=Da}Ba=Ca}Aa=Ba;function Ga(a,b){za[ma]=a;za[ma+1]=b;ma+=2;2===ma&&Aa()};function Ha(a,b){var c=this,d=new this.constructor(Ia);void 0===d[Ja]&&Ka(d);var e=c.o;if(e){var f=arguments[e-1];Ga(function(){return La(e,d,f,c.l)})}else Ma(c,d,a,b);return d};function Na(a){if(a&&"object"===typeof a&&a.constructor===this)return a;var b=new this(Ia);Oa(b,a);return b};var Ja=Math.random().toString(36).substring(16);function Ia(){}var Qa=new Pa;function Ra(a){try{return a.then}catch(b){return Qa.error=b,Qa}}function Sa(a,b,c,d){try{a.call(b,c,d)}catch(e){return e}}function Ta(a,b,c){Ga(function(a){var d=!1,f=Sa(c,b,function(c){d||(d=!0,b!==c?Oa(a,c):t(a,c))},function(b){d||(d=!0,u(a,b))});!d&&f&&(d=!0,u(a,f))},a)}function Ua(a,b){1===b.o?t(a,b.l):2===b.o?u(a,b.l):Ma(b,void 0,function(b){return Oa(a,b)},function(b){return u(a,b)})}
function Va(a,b,c){b.constructor===a.constructor&&c===Ha&&b.constructor.resolve===Na?Ua(a,b):c===Qa?(u(a,Qa.error),Qa.error=null):void 0===c?t(a,b):"function"===typeof c?Ta(a,b,c):t(a,b)}function Oa(a,b){if(a===b)u(a,new TypeError("You cannot resolve a promise with itself"));else{var c=typeof b;null===b||"object"!==c&&"function"!==c?t(a,b):Va(a,b,Ra(b))}}function Wa(a){a.xa&&a.xa(a.l);Xa(a)}function t(a,b){void 0===a.o&&(a.l=b,a.o=1,0!==a.U.length&&Ga(Xa,a))}
function u(a,b){void 0===a.o&&(a.o=2,a.l=b,Ga(Wa,a))}function Ma(a,b,c,d){var e=a.U,f=e.length;a.xa=null;e[f]=b;e[f+1]=c;e[f+2]=d;0===f&&a.o&&Ga(Xa,a)}function Xa(a){var b=a.U,c=a.o;if(0!==b.length){for(var d,e,f=a.l,g=0;g<b.length;g+=3)d=b[g],e=b[g+c],d?La(c,d,e,f):e(f);a.U.length=0}}function Pa(){this.error=null}var Ya=new Pa;
function La(a,b,c,d){var e="function"===typeof c;if(e){try{var f=c(d)}catch(m){Ya.error=m,f=Ya}if(f===Ya){var g=!0;var h=f.error;f.error=null}else var k=!0;if(b===f){u(b,new TypeError("A promises callback cannot return that same promise."));return}}else f=d,k=!0;void 0===b.o&&(e&&k?Oa(b,f):g?u(b,h):1===a?t(b,f):2===a&&u(b,f))}function Za(a,b){try{b(function(b){Oa(a,b)},function(b){u(a,b)})}catch(c){u(a,c)}}var $a=0;function Ka(a){a[Ja]=$a++;a.o=void 0;a.l=void 0;a.U=[]};function ab(a,b){this.Na=a;this.N=new a(Ia);this.N[Ja]||Ka(this.N);if(la(b))if(this.$=this.length=b.length,this.l=Array(this.length),0===this.length)t(this.N,this.l);else{this.length=this.length||0;for(a=0;void 0===this.o&&a<b.length;a++)bb(this,b[a],a);0===this.$&&t(this.N,this.l)}else u(this.N,Error("Array Methods must be provided an Array"))}
function bb(a,b,c){var d=a.Na,e=d.resolve;e===Na?(e=Ra(b),e===Ha&&void 0!==b.o?cb(a,b.o,c,b.l):"function"!==typeof e?(a.$--,a.l[c]=b):d===w?(d=new d(Ia),Va(d,b,e),db(a,d,c)):db(a,new d(function(a){return a(b)}),c)):db(a,e(b),c)}function cb(a,b,c,d){var e=a.N;void 0===e.o&&(a.$--,2===b?u(e,d):a.l[c]=d);0===a.$&&t(e,a.l)}function db(a,b,c){Ma(b,void 0,function(b){return cb(a,1,c,b)},function(b){return cb(a,2,c,b)})};function eb(a){return(new ab(this,a)).N};function fb(a){var b=this;return la(a)?new b(function(c,d){for(var e=a.length,f=0;f<e;f++)b.resolve(a[f]).then(c,d)}):new b(function(a,b){return b(new TypeError("You must pass an array to race."))})};function gb(a){var b=new this(Ia);u(b,a);return b};function w(a){this[Ja]=$a++;this.l=this.o=void 0;this.U=[];if(Ia!==a){if("function"!==typeof a)throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(this instanceof w)Za(this,a);else throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");}}w.prototype={constructor:w,then:Ha,a:function(a){return this.then(null,a)}};/*

Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
window.Promise||(window.Promise=w,w.prototype["catch"]=w.prototype.a,w.prototype.then=w.prototype.then,w.all=eb,w.race=fb,w.resolve=Na,w.reject=gb);/*

 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
 Code distributed by Google as part of the polymer project is also
 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
window.WebComponents=window.WebComponents||{flags:{}};var hb=document.querySelector('script[src*="webcomponents-bundle"]'),ib=/wc-(.+)/,y={};if(!y.noOpts){location.search.slice(1).split("&").forEach(function(a){a=a.split("=");var b;a[0]&&(b=a[0].match(ib))&&(y[b[1]]=a[1]||!0)});if(hb)for(var jb=0,mb;mb=hb.attributes[jb];jb++)"src"!==mb.name&&(y[mb.name]=mb.value||!0);if(y.log&&y.log.split){var nb=y.log.split(",");y.log={};nb.forEach(function(a){y.log[a]=!0})}else y.log={}}
window.WebComponents.flags=y;var ob=y.shadydom;ob&&(window.ShadyDOM=window.ShadyDOM||{},window.ShadyDOM.force=ob);var pb=y.register||y.ce;pb&&window.customElements&&(window.customElements.forcePolyfill=pb);/*

Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
function qb(){this.Da=this.root=null;this.da=!1;this.L=this.Z=this.pa=this.assignedSlot=this.assignedNodes=this.S=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.V=void 0;this.Ia=this.va=!1}qb.prototype.toJSON=function(){return{}};function z(a){a.ka||(a.ka=new qb);return a.ka}function A(a){return a&&a.ka};var B=window.ShadyDOM||{};B.Ua=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var rb=Object.getOwnPropertyDescriptor(Node.prototype,"firstChild");B.I=!!(rb&&rb.configurable&&rb.get);B.Ba=B.force||!B.Ua;var sb=navigator.userAgent.match("Trident"),tb=navigator.userAgent.match("Edge");void 0===B.Fa&&(B.Fa=B.I&&(sb||tb));function ub(a){return(a=A(a))&&void 0!==a.firstChild}function C(a){return"ShadyRoot"===a.Oa}function vb(a){a=a.getRootNode();if(C(a))return a}
var wb=Element.prototype,xb=wb.matches||wb.matchesSelector||wb.mozMatchesSelector||wb.msMatchesSelector||wb.oMatchesSelector||wb.webkitMatchesSelector;function yb(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e;d<c.length&&(e=c[d]);d++){var f=Object.getOwnPropertyDescriptor(b,e);f&&Object.defineProperty(a,e,f)}}function zb(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)yb(a,c[d]);return a}function Ab(a,b){for(var c in b)a[c]=b[c]}
var Bb=document.createTextNode(""),Cb=0,Db=[];(new MutationObserver(function(){for(;Db.length;)try{Db.shift()()}catch(a){throw Bb.textContent=Cb++,a;}})).observe(Bb,{characterData:!0});function Eb(a){Db.push(a);Bb.textContent=Cb++}var Fb=!!document.contains;function Gb(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1};var Hb=[],Ib;function Jb(a){Ib||(Ib=!0,Eb(Kb));Hb.push(a)}function Kb(){Ib=!1;for(var a=!!Hb.length;Hb.length;)Hb.shift()();return a}Kb.list=Hb;function Lb(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.ca=new Set}function Mb(a){a.a||(a.a=!0,Eb(function(){Nb(a)}))}function Nb(a){if(a.a){a.a=!1;var b=a.takeRecords();b.length&&a.ca.forEach(function(a){a(b)})}}Lb.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]};
function Ob(a,b){var c=z(a);c.S||(c.S=new Lb);c.S.ca.add(b);var d=c.S;return{La:b,P:d,Pa:a,takeRecords:function(){return d.takeRecords()}}}function Pb(a){var b=a&&a.P;b&&(b.ca.delete(a.La),b.ca.size||(z(a.Pa).S=null))}
function Qb(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,"addedNodes",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var D={},Rb=Element.prototype.insertBefore,Sb=Element.prototype.replaceChild,Tb=Element.prototype.removeChild,Ub=Element.prototype.setAttribute,Vb=Element.prototype.removeAttribute,Wb=Element.prototype.cloneNode,Xb=Document.prototype.importNode,Yb=Element.prototype.addEventListener,Zb=Element.prototype.removeEventListener,$b=Window.prototype.addEventListener,ac=Window.prototype.removeEventListener,bc=Element.prototype.dispatchEvent,cc=Node.prototype.contains||HTMLElement.prototype.contains,dc=Document.prototype.getElementById,
ec=Element.prototype.querySelector,fc=DocumentFragment.prototype.querySelector,gc=Document.prototype.querySelector,hc=Element.prototype.querySelectorAll,ic=DocumentFragment.prototype.querySelectorAll,jc=Document.prototype.querySelectorAll;D.appendChild=Element.prototype.appendChild;D.insertBefore=Rb;D.replaceChild=Sb;D.removeChild=Tb;D.setAttribute=Ub;D.removeAttribute=Vb;D.cloneNode=Wb;D.importNode=Xb;D.addEventListener=Yb;D.removeEventListener=Zb;D.eb=$b;D.fb=ac;D.dispatchEvent=bc;D.contains=cc;
D.getElementById=dc;D.ob=ec;D.sb=fc;D.mb=gc;D.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return ec.call(this,a);case Node.DOCUMENT_NODE:return gc.call(this,a);default:return fc.call(this,a)}};D.pb=hc;D.tb=ic;D.nb=jc;D.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return hc.call(this,a);case Node.DOCUMENT_NODE:return jc.call(this,a);default:return ic.call(this,a)}};var kc=/[&\u00A0"]/g,lc=/[&\u00A0<>]/g;function mc(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}}function nc(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var oc=nc("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),pc=nc("style script xmp iframe noembed noframes plaintext noscript".split(" "));
function qc(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,g;e<f&&(g=d[e]);e++){a:{var h=g;var k=a;var m=b;switch(h.nodeType){case Node.ELEMENT_NODE:for(var n=h.localName,r="<"+n,G=h.attributes,x=0;k=G[x];x++)r+=" "+k.name+'="'+k.value.replace(kc,mc)+'"';r+=">";h=oc[n]?r:r+qc(h,m)+"</"+n+">";break a;case Node.TEXT_NODE:h=h.data;h=k&&pc[k.localName]?h:h.replace(lc,mc);break a;case Node.COMMENT_NODE:h="\x3c!--"+h.data+"--\x3e";break a;default:throw window.console.error(h),
Error("not implemented");}}c+=h}return c};var E={},H=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),I=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function rc(a){var b=[];H.currentNode=a;for(a=H.firstChild();a;)b.push(a),a=H.nextSibling();return b}E.parentNode=function(a){H.currentNode=a;return H.parentNode()};E.firstChild=function(a){H.currentNode=a;return H.firstChild()};E.lastChild=function(a){H.currentNode=a;return H.lastChild()};E.previousSibling=function(a){H.currentNode=a;return H.previousSibling()};
E.nextSibling=function(a){H.currentNode=a;return H.nextSibling()};E.childNodes=rc;E.parentElement=function(a){I.currentNode=a;return I.parentNode()};E.firstElementChild=function(a){I.currentNode=a;return I.firstChild()};E.lastElementChild=function(a){I.currentNode=a;return I.lastChild()};E.previousElementSibling=function(a){I.currentNode=a;return I.previousSibling()};E.nextElementSibling=function(a){I.currentNode=a;return I.nextSibling()};
E.children=function(a){var b=[];I.currentNode=a;for(a=I.firstChild();a;)b.push(a),a=I.nextSibling();return b};E.innerHTML=function(a){return qc(a,function(a){return rc(a)})};E.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var J={},sc=B.I,tc=[Node.prototype,Element.prototype,HTMLElement.prototype];function K(a){var b;a:{for(b=0;b<tc.length;b++){var c=tc[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)}
var L=sc?{parentNode:K("parentNode"),firstChild:K("firstChild"),lastChild:K("lastChild"),previousSibling:K("previousSibling"),nextSibling:K("nextSibling"),childNodes:K("childNodes"),parentElement:K("parentElement"),previousElementSibling:K("previousElementSibling"),nextElementSibling:K("nextElementSibling"),innerHTML:K("innerHTML"),textContent:K("textContent"),firstElementChild:K("firstElementChild"),lastElementChild:K("lastElementChild"),children:K("children")}:{},uc=sc?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,
"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},vc=sc?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{};J.Ca=L;J.rb=uc;J.lb=vc;J.parentNode=function(a){return L.parentNode.get.call(a)};
J.firstChild=function(a){return L.firstChild.get.call(a)};J.lastChild=function(a){return L.lastChild.get.call(a)};J.previousSibling=function(a){return L.previousSibling.get.call(a)};J.nextSibling=function(a){return L.nextSibling.get.call(a)};J.childNodes=function(a){return Array.prototype.slice.call(L.childNodes.get.call(a))};J.parentElement=function(a){return L.parentElement.get.call(a)};J.previousElementSibling=function(a){return L.previousElementSibling.get.call(a)};J.nextElementSibling=function(a){return L.nextElementSibling.get.call(a)};
J.innerHTML=function(a){return L.innerHTML.get.call(a)};J.textContent=function(a){return L.textContent.get.call(a)};J.children=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:a=uc.children.get.call(a);break;case Node.DOCUMENT_NODE:a=vc.children.get.call(a);break;default:a=L.children.get.call(a)}return Array.prototype.slice.call(a)};
J.firstElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return uc.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return vc.firstElementChild.get.call(a);default:return L.firstElementChild.get.call(a)}};J.lastElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return uc.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return vc.lastElementChild.get.call(a);default:return L.lastElementChild.get.call(a)}};var M=B.Fa?J:E;function wc(a){for(;a.firstChild;)a.removeChild(a.firstChild)}
var xc=B.I,yc=document.implementation.createHTMLDocument("inert"),zc=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),Ac=zc&&zc.get,Bc=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),Cc={parentElement:{get:function(){var a=A(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:M.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=A(this);a=a&&a.parentNode;return void 0!==a?a:M.parentNode(this)},configurable:!0},
nextSibling:{get:function(){var a=A(this);a=a&&a.nextSibling;return void 0!==a?a:M.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=A(this);a=a&&a.previousSibling;return void 0!==a?a:M.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=A(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return M.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a=
A(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return M.previousElementSibling(this)},configurable:!0}},Hc={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},Ic={childNodes:{get:function(){if(ub(this)){var a=A(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c=
M.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=A(this);a=a&&a.firstChild;return void 0!==a?a:M.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=A(this);a=a&&a.lastChild;return void 0!==a?a:M.lastChild(this)},configurable:!0},textContent:{get:function(){if(ub(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&
a.push(d.textContent);return a.join("")}return M.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!ub(this)&&xc){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&wc(this);J.Ca.textContent.set.call(this,a)}else wc(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a=
A(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return M.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=A(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return M.lastElementChild(this)},configurable:!0},children:{get:function(){var a;ub(this)?a=Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE}):
a=M.children(this);a.item=function(b){return a[b]};return a},configurable:!0},innerHTML:{get:function(){return ub(this)?qc("template"===this.localName?this.content:this):M.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;wc(b);var c=this.localName;c&&"template"!==c||(c="div");c=yc.createElement(c);for(xc?J.Ca.innerHTML.set.call(c,a):c.innerHTML=a;c.firstChild;)b.appendChild(c.firstChild)},configurable:!0}},Jc={shadowRoot:{get:function(){var a=A(this);return a&&
a.Da||null},configurable:!0}},Kc={activeElement:{get:function(){var a=Bc&&Bc.get?Bc.get.call(document):B.I?void 0:document.activeElement;if(a&&a.nodeType){var b=!!C(this);if(this===document||b&&this.host!==a&&D.contains.call(this.host,a)){for(b=vb(a);b&&b!==this;)a=b.host,b=vb(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}};
function N(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function Lc(a){N(a,Cc);N(a,Hc);N(a,Ic);N(a,Kc)}
function Mc(){var a=Nc.prototype;a.__proto__=DocumentFragment.prototype;N(a,Cc,!0);N(a,Ic,!0);N(a,Kc,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]},
configurable:!0})})}var Oc=B.I?function(){}:function(a){var b=z(a);b.va||(b.va=!0,N(a,Cc,!0),N(a,Hc,!0))},Pc=B.I?function(){}:function(a){z(a).Ia||(N(a,Ic,!0),N(a,Jc,!0))};var Qc=M.childNodes;function Rc(a,b,c){Oc(a);c=c||null;var d=z(a),e=z(b),f=c?z(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=A(d.previousSibling))f.nextSibling=a;if(f=A(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null}
function Sc(a,b){var c=z(a);if(void 0===c.firstChild)for(b=b||Qc(a),c.firstChild=b[0]||null,c.lastChild=b[b.length-1]||null,Pc(a),c=0;c<b.length;c++){var d=b[c],e=z(d);e.parentNode=a;e.nextSibling=b[c+1]||null;e.previousSibling=b[c-1]||null;Oc(d)}};var Tc=M.parentNode;
function Uc(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=A(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Tc(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;b.parentNode&&Vc(b.parentNode,b);var e,f;if(!b.__noInsertionPoint){if(f=e=vb(a)){var g;"slot"===b.localName?g=[b]:b.querySelectorAll&&
(g=b.querySelectorAll("slot"));f=g&&g.length?g:void 0}f&&(g=e,d=f,g.a=g.a||[],g.m=g.m||[],g.w=g.w||{},g.a.push.apply(g.a,[].concat(d instanceof Array?d:ja(ia(d)))))}("slot"===a.localName||f)&&(e=e||vb(a))&&Wc(e);if(ub(a)){e=c;Pc(a);f=z(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(g=0;g<f.length;g++)Rc(f[g],a,e);e=z(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Rc(b,a,e);e=A(a);if(Xc(a)){Wc(e.root);
var h=!0}else e.root&&(h=!0)}h||(h=C(a)?a.host:a,c?(c=Yc(c),D.insertBefore.call(h,b,c)):D.appendChild.call(h,b));Zc(a,b);return b}
function Vc(a,b){if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var c=vb(b),d=A(a);if(ub(a)){var e=z(b),f=z(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var g=e.previousSibling,h=e.nextSibling;g&&(z(g).nextSibling=h);h&&(z(h).previousSibling=g);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if(Xc(a)){Wc(d.root);var k=!0}}$c(b);if(c){(e=a&&"slot"===a.localName)&&
(k=!0);if(c.m){ad(c);f=c.w;for(v in f)for(g=f[v],h=0;h<g.length;h++){var m=g[h];if(Gb(b,m)){g.splice(h,1);var n=c.m.indexOf(m);0<=n&&c.m.splice(n,1);h--;n=A(m);if(m=n.L)for(var r=0;r<m.length;r++){var G=m[r],x=bd(G);x&&D.removeChild.call(x,G)}n.L=[];n.assignedNodes=[];n=!0}}var v=n}else v=void 0;(v||e)&&Wc(c)}k||(k=C(a)?a.host:a,(!d.root&&"slot"!==b.localName||k===Tc(b))&&D.removeChild.call(k,b));Zc(a,null,b);return b}
function $c(a){var b=A(a);if(b&&void 0!==b.V){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)$c(e)}if(a=A(a))a.V=void 0}function Yc(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=A(a))&&b.L)&&b.length?b[0]:Yc(a.nextSibling));return b}function Xc(a){return(a=(a=A(a))&&a.root)&&cd(a)}
function dd(a,b){if("slot"===b)a=a.parentNode,Xc(a)&&Wc(A(a).root);else if("slot"===a.localName&&"name"===b&&(b=vb(a))){if(b.m){var c=a.Ja,d=ed(a);if(d!==c){c=b.w[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.w[d]||(b.w[d]=[]);c.push(a);1<c.length&&(b.w[d]=fd(c))}}Wc(b)}}function Zc(a,b,c){if(a=(a=A(a))&&a.S)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Mb(a)}
function gd(a){if(a&&a.nodeType){var b=z(a),c=b.V;void 0===c&&(C(a)?(c=a,b.V=c):(c=(c=a.parentNode)?gd(c):a,D.contains.call(document.documentElement,a)&&(b.V=c)));return c}}function hd(a,b,c){var d=[];id(a.childNodes,b,c,d);return d}function id(a,b,c,d){for(var e=0,f=a.length,g;e<f&&(g=a[e]);e++){var h;if(h=g.nodeType===Node.ELEMENT_NODE){h=g;var k=b,m=c,n=d,r=k(h);r&&n.push(h);m&&m(r)?h=r:(id(h.childNodes,k,m,n),h=void 0)}if(h)break}}var jd=null;
function kd(a,b,c){jd||(jd=window.ShadyCSS&&window.ShadyCSS.ScopingShim);jd&&"class"===b?jd.setElementClass(a,c):(D.setAttribute.call(a,b,c),dd(a,b))}function ld(a,b){if(a.ownerDocument!==document)return D.importNode.call(document,a,b);var c=D.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=ld(a[b],!0),c.appendChild(d)}return c};var md="__eventWrappers"+Date.now(),nd={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0,pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,
dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0};function od(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}
function pd(a,b){if(!C)return a;a=od(a,!0);for(var c=0,d,e,f,g;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(g=a.indexOf(f),e=f),!C(f)||-1<g)return d}
var qd={get composed(){!1!==this.isTrusted&&void 0===this.ha&&(this.ha=nd[this.type]);return this.ha||!1},composedPath:function(){this.ta||(this.ta=od(this.__target,this.composed));return this.ta},get target(){return pd(this.currentTarget,this.composedPath())},get relatedTarget(){if(!this.ja)return null;this.wa||(this.wa=od(this.ja,!0));return pd(this.currentTarget,this.wa)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.ia=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);
this.ia=this.Ha=!0}};function rd(a){function b(b,d){b=new a(b,d);b.ha=d&&!!d.composed;return b}Ab(b,a);b.prototype=a.prototype;return b}var sd={focus:!0,blur:!0};function td(a){return a.__target!==a.target||a.ja!==a.relatedTarget}function ud(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!td(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.Ha);d++);}
function vd(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];ud(a,d,"capture");if(a.ia)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=A(d);f=f&&f.root;if(0===c||f&&f===e)if(ud(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.ia)break}}
function wd(a,b,c,d,e,f){for(var g=0;g<a.length;g++){var h=a[g],k=h.type,m=h.capture,n=h.once,r=h.passive;if(b===h.node&&c===k&&d===m&&e===n&&f===r)return g}return-1}
function xd(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var g=!!c.passive}else e=!!c,g=f=!1;var h=c&&c.la||this,k=b[md];if(k){if(-1<wd(k,h,a,e,f,g))return}else b[md]=[];k=function(e){f&&this.removeEventListener(a,b,c);e.__target||yd(e);if(h!==this){var g=Object.getOwnPropertyDescriptor(e,"currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return h},
configurable:!0})}if(e.composed||-1<e.composedPath().indexOf(h))if(td(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===h||h instanceof Window){var k="function"===d?b.call(h,e):b.handleEvent&&b.handleEvent(e);h!==this&&(g?(Object.defineProperty(e,"currentTarget",g),g=null):delete e.currentTarget);return k}};b[md].push({node:h,type:a,capture:e,once:f,passive:g,gb:k});sd[a]?(this.__handlers=
this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][e?"capture":"bubble"].push(k)):(this instanceof Window?D.eb:D.addEventListener).call(this,a,k,c)}}}
function zd(a,b,c){if(b){if(c&&"object"===typeof c){var d=!!c.capture;var e=!!c.once;var f=!!c.passive}else d=!!c,f=e=!1;var g=c&&c.la||this,h=void 0;var k=null;try{k=b[md]}catch(m){}k&&(e=wd(k,g,a,d,e,f),-1<e&&(h=k.splice(e,1)[0].gb,k.length||(b[md]=void 0)));(this instanceof Window?D.fb:D.removeEventListener).call(this,a,h||b,c);h&&sd[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][d?"capture":"bubble"],h=a.indexOf(h),-1<h&&a.splice(h,1))}}
function Ad(){for(var a in sd)window.addEventListener(a,function(a){a.__target||(yd(a),vd(a))},!0)}function yd(a){a.__target=a.target;a.ja=a.relatedTarget;if(B.I){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.ib=b;yb(c,qd);b.__patchProto=c}a.__proto__=b.__patchProto}else yb(a,qd)}var Bd=rd(window.Event),Cd=rd(window.CustomEvent),Dd=rd(window.MouseEvent);function Ed(a,b){return{index:a,W:[],ba:b}}
function Fd(a,b,c,d){var e=0,f=0,g=0,h=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(g=0;g<k;g++)if(a[g]!==c[g])break a;g=k}if(b==a.length&&d==c.length){h=a.length;for(var m=c.length,n=0;n<k-g&&Gd(a[--h],c[--m]);)n++;h=n}e+=g;f+=g;b-=h;d-=h;if(0==b-e&&0==d-f)return[];if(e==b){for(b=Ed(e,0);f<d;)b.W.push(c[f++]);return[b]}if(f==d)return[Ed(e,b-e)];k=e;g=f;d=d-g+1;h=b-k+1;b=Array(d);for(m=0;m<d;m++)b[m]=Array(h),b[m][0]=m;for(m=0;m<h;m++)b[0][m]=m;for(m=1;m<d;m++)for(n=1;n<h;n++)if(a[k+n-1]===c[g+m-1])b[m][n]=
b[m-1][n-1];else{var r=b[m-1][n]+1,G=b[m][n-1]+1;b[m][n]=r<G?r:G}k=b.length-1;g=b[0].length-1;d=b[k][g];for(a=[];0<k||0<g;)0==k?(a.push(2),g--):0==g?(a.push(3),k--):(h=b[k-1][g-1],m=b[k-1][g],n=b[k][g-1],r=m<n?m<h?m:h:n<h?n:h,r==h?(h==d?a.push(0):(a.push(1),d=h),k--,g--):r==m?(a.push(3),k--,d=m):(a.push(2),g--,d=n));a.reverse();b=void 0;k=[];for(g=0;g<a.length;g++)switch(a[g]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=Ed(e,0));b.ba++;e++;b.W.push(c[f]);f++;break;case 2:b||(b=Ed(e,
0));b.ba++;e++;break;case 3:b||(b=Ed(e,0)),b.W.push(c[f]),f++}b&&k.push(b);return k}function Gd(a,b){return a===b};var bd=M.parentNode,Hd=M.childNodes,Id={};function Jd(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b}function Nc(a,b,c){if(a!==Id)throw new TypeError("Illegal constructor");this.Oa="ShadyRoot";a=Hd(b);this.host=b;this.b=c&&c.mode;Sc(b,a);c=A(b);c.root=this;c.Da="closed"!==this.b?this:null;c=z(this);c.firstChild=c.lastChild=c.parentNode=c.nextSibling=c.previousSibling=null;c.childNodes=[];this.aa=!1;this.a=this.w=this.m=null;c=0;for(var d=a.length;c<d;c++)D.removeChild.call(b,a[c])}
function Wc(a){a.aa||(a.aa=!0,Jb(function(){return Kd(a)}))}function Kd(a){for(var b;a;){a.aa&&(b=a);a:{var c=a;a=c.host.getRootNode();if(C(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()}
Nc.prototype._renderRoot=function(){this.aa=!1;if(this.m){ad(this);for(var a=0,b;a<this.m.length;a++){b=this.m[a];var c=A(b),d=c.assignedNodes;c.assignedNodes=[];c.L=[];if(c.pa=d)for(c=0;c<d.length;c++){var e=A(d[c]);e.Z=e.assignedSlot;e.assignedSlot===b&&(e.assignedSlot=null)}}for(b=this.host.firstChild;b;b=b.nextSibling)Ld(this,b);for(a=0;a<this.m.length;a++){b=this.m[a];d=A(b);if(!d.assignedNodes.length)for(c=b.firstChild;c;c=c.nextSibling)Ld(this,c,b);(c=(c=A(b.parentNode))&&c.root)&&cd(c)&&c._renderRoot();
Md(this,d.L,d.assignedNodes);if(c=d.pa){for(e=0;e<c.length;e++)A(c[e]).Z=null;d.pa=null;c.length>d.assignedNodes.length&&(d.da=!0)}d.da&&(d.da=!1,Nd(this,b))}a=this.m;b=[];for(d=0;d<a.length;d++)c=a[d].parentNode,(e=A(c))&&e.root||!(0>b.indexOf(c))||b.push(c);for(a=0;a<b.length;a++){d=b[a];c=d===this?this.host:d;e=[];d=d.childNodes;for(var f=0;f<d.length;f++){var g=d[f];if("slot"==g.localName){g=A(g).L;for(var h=0;h<g.length;h++)e.push(g[h])}else e.push(g)}d=void 0;f=Hd(c);g=Fd(e,e.length,f,f.length);
for(var k=h=0;h<g.length&&(d=g[h]);h++){for(var m=0,n;m<d.W.length&&(n=d.W[m]);m++)bd(n)===c&&D.removeChild.call(c,n),f.splice(d.index+k,1);k-=d.ba}for(k=0;k<g.length&&(d=g[k]);k++)for(h=f[d.index],m=d.index;m<d.index+d.ba;m++)n=e[m],D.insertBefore.call(c,n,h),f.splice(m,0,n)}}};function Ld(a,b,c){var d=z(b),e=d.Z;d.Z=null;c||(c=(a=a.w[b.slot||"__catchall"])&&a[0]);c?(z(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(z(d.assignedSlot).da=!0)}
function Md(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=A(e).assignedNodes;f&&f.length&&Md(a,b,f)}else b.push(c[d])}function Nd(a,b){D.dispatchEvent.call(b,new Event("slotchange"));b=A(b);b.assignedSlot&&Nd(a,b.assignedSlot)}function ad(a){if(a.a&&a.a.length){for(var b=a.a,c,d=0;d<b.length;d++){var e=b[d];Sc(e);Sc(e.parentNode);var f=ed(e);a.w[f]?(c=c||{},c[f]=!0,a.w[f].push(e)):a.w[f]=[e];a.m.push(e)}if(c)for(var g in c)a.w[g]=fd(a.w[g]);a.a=[]}}
function ed(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.Ja=b}function fd(a){return a.sort(function(a,c){a=Jd(a);for(var b=Jd(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}function cd(a){ad(a);return!(!a.m||!a.m.length)};function Od(a){var b=a.getRootNode();C(b)&&Kd(b);return(a=A(a))&&a.assignedSlot||null}
var Pd={addEventListener:xd.bind(window),removeEventListener:zd.bind(window)},Qd={addEventListener:xd,removeEventListener:zd,appendChild:function(a){return Uc(this,a)},insertBefore:function(a,b){return Uc(this,a,b)},removeChild:function(a){return Vc(this,a)},replaceChild:function(a,b){Uc(this,a,b);Vc(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=D.cloneNode.call(this,a);else if(b=D.cloneNode.call(this,!1),a){a=this.childNodes;for(var c=0,d;c<a.length;c++)d=a[c].cloneNode(!0),
b.appendChild(d)}return b},getRootNode:function(){return gd(this)},contains:function(a){return Gb(this,a)},dispatchEvent:function(a){Kb();return D.dispatchEvent.call(this,a)}};
Object.defineProperties(Qd,{isConnected:{get:function(){if(Ac&&Ac.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(Fb){if(D.contains.call(a,this))return!0}else if(a.documentElement&&D.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(C(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}});
var Rd={get assignedSlot(){return Od(this)}},Sd={querySelector:function(a){return hd(this,function(b){return xb.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(D.querySelectorAll(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return hd(this,function(b){return xb.call(b,a)})}},Td={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();C(b)&&Kd(b);return(b=A(this))?(a&&a.flatten?
b.L:b.assignedNodes)||[]:[]}}},Ud=zb({setAttribute:function(a,b){kd(this,a,b)},removeAttribute:function(a){D.removeAttribute.call(this,a);dd(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new Nc(Id,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){kd(this,"slot",a)},get assignedSlot(){return Od(this)}},Sd,Td);Object.defineProperties(Ud,Jc);
var Vd=zb({importNode:function(a,b){return ld(a,b)},getElementById:function(a){return hd(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Sd);Object.defineProperties(Vd,{_activeElement:Kc.activeElement});
var Wd=HTMLElement.prototype.blur,Xd=zb({blur:function(){var a=A(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Wd.call(this)}}),Yd={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.la=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.la=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return hd(this,function(b){return b.id==a},function(a){return!!a})[0]||null}};
function Zd(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(B.Ba){var ShadyDOM={inUse:B.Ba,patch:function(a){Pc(a);Oc(a);return a},isShadyRoot:C,enqueue:Jb,flush:Kb,settings:B,filterMutations:Qb,observeChildren:Ob,unobserveChildren:Pb,nativeMethods:D,nativeTree:M};window.ShadyDOM=ShadyDOM;window.Event=Bd;window.CustomEvent=Cd;window.MouseEvent=Dd;Ad();var $d=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;Zd(Nc.prototype,Yd);Zd(window.Node.prototype,Qd);Zd(window.Window.prototype,Pd);Zd(window.Text.prototype,Rd);Zd(window.DocumentFragment.prototype,
Sd);Zd(window.Element.prototype,Ud);Zd(window.Document.prototype,Vd);window.HTMLSlotElement&&Zd(window.HTMLSlotElement.prototype,Td);Zd($d.prototype,Xd);B.I&&(Lc(window.Node.prototype),Lc(window.Text.prototype),Lc(window.DocumentFragment.prototype),Lc(window.Element.prototype),Lc($d.prototype),Lc(window.Document.prototype),window.HTMLSlotElement&&Lc(window.HTMLSlotElement.prototype));Mc();window.ShadowRoot=Nc};var ae=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function be(a){var b=ae.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function O(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}
function ce(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}
function de(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)de(d,b,c);d=ce(a,e);continue}else if("template"===f){d=ce(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)de(e,b,c)}d=d.firstChild?d.firstChild:ce(a,d)}}function P(a,b,c){a[b]=c};function ee(){this.a=new Map;this.M=new Map;this.F=[];this.c=!1}function fe(a,b,c){a.a.set(b,c);a.M.set(c.constructor,c)}function ge(a,b){a.c=!0;a.F.push(b)}function he(a,b){a.c&&de(b,function(b){return a.b(b)})}ee.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.F.length;b++)this.F[b](a)}};function Q(a,b){var c=[];de(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):ie(a,d)}}
function R(a,b){var c=[];de(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}}
function je(a,b,c){c=void 0===c?{}:c;var d=c.bb||new Set,e=c.ga||function(b){return ie(a,b)},f=[];de(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);je(a,c,{bb:f,ga:e})}})}else f.push(b)},d);
if(a.c)for(b=0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])}
function ie(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(g){throw b.__CE_state=2,g;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],
f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}O(b)&&a.connectedCallback(b)}}}ee.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};ee.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};
ee.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function ke(a){var b=document;this.A=a;this.a=b;this.P=void 0;je(this.A,this.a);"loading"===this.a.readyState&&(this.P=new MutationObserver(this.b.bind(this)),this.P.observe(this.a,{childList:!0,subtree:!0}))}function le(a){a.P&&a.P.disconnect()}ke.prototype.b=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||le(this);for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)je(this.A,c[d])};function me(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}me.prototype.resolve=function(a){if(this.a)throw Error("Already resolved.");this.a=a;this.b&&this.b(a)};function S(a){this.ma=!1;this.A=a;this.ra=new Map;this.na=function(a){return a()};this.Y=!1;this.oa=[];this.Ma=new ke(a)}q=S.prototype;
q.define=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!be(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.A.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.ma)throw Error("A custom element is already being defined.");this.ma=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function.");
return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var g=d("disconnectedCallback");var h=d("adoptedCallback");var k=d("attributeChangedCallback");var m=b.observedAttributes||[]}catch(n){return}finally{this.ma=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:g,adoptedCallback:h,attributeChangedCallback:k,observedAttributes:m,constructionStack:[]};fe(this.A,a,b);this.oa.push(b);
this.Y||(this.Y=!0,this.na(function(){return ne(c)}))};q.ga=function(a){je(this.A,a)};
function ne(a){if(!1!==a.Y){a.Y=!1;for(var b=a.oa,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);je(a.A,document,{ga:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.A.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)ie(a.A,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var g=0;g<f.length;g++)ie(a.A,f[g]);(e=a.ra.get(e))&&e.resolve(void 0)}}}q.get=function(a){if(a=this.A.a.get(a))return a.constructor};
q.whenDefined=function(a){if(!be(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.ra.get(a);if(b)return b.c;b=new me;this.ra.set(a,b);this.A.a.get(a)&&!this.oa.some(function(b){return b.localName===a})&&b.resolve(void 0);return b.c};q.Xa=function(a){le(this.Ma);var b=this.na;this.na=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=S;S.prototype.define=S.prototype.define;S.prototype.upgrade=S.prototype.ga;
S.prototype.get=S.prototype.get;S.prototype.whenDefined=S.prototype.whenDefined;S.prototype.polyfillWrapFlushCallback=S.prototype.Xa;var oe=window.Document.prototype.createElement,pe=window.Document.prototype.createElementNS,qe=window.Document.prototype.importNode,re=window.Document.prototype.prepend,se=window.Document.prototype.append,te=window.DocumentFragment.prototype.prepend,ue=window.DocumentFragment.prototype.append,ve=window.Node.prototype.cloneNode,we=window.Node.prototype.appendChild,xe=window.Node.prototype.insertBefore,ye=window.Node.prototype.removeChild,ze=window.Node.prototype.replaceChild,Ae=Object.getOwnPropertyDescriptor(window.Node.prototype,
"textContent"),Be=window.Element.prototype.attachShadow,Ce=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),De=window.Element.prototype.getAttribute,Ee=window.Element.prototype.setAttribute,Fe=window.Element.prototype.removeAttribute,Ge=window.Element.prototype.getAttributeNS,He=window.Element.prototype.setAttributeNS,Ie=window.Element.prototype.removeAttributeNS,Je=window.Element.prototype.insertAdjacentElement,Ke=window.Element.prototype.insertAdjacentHTML,Le=window.Element.prototype.prepend,
Me=window.Element.prototype.append,Ne=window.Element.prototype.before,Oe=window.Element.prototype.after,Pe=window.Element.prototype.replaceWith,Qe=window.Element.prototype.remove,Re=window.HTMLElement,Se=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),Te=window.HTMLElement.prototype.insertAdjacentElement,Ue=window.HTMLElement.prototype.insertAdjacentHTML;var Ve=new function(){};function We(){var a=Xe;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.M.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=oe.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===Ve)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
e[d]=Ve;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=Re.prototype;return b}()};function Ye(a,b,c){function d(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var f=[],m=0;m<d.length;m++){var n=d[m];n instanceof Element&&O(n)&&f.push(n);if(n instanceof DocumentFragment)for(n=n.firstChild;n;n=n.nextSibling)e.push(n);else e.push(n)}b.apply(this,d);for(d=0;d<f.length;d++)R(a,f[d]);if(O(this))for(d=0;d<e.length;d++)f=e[d],f instanceof Element&&Q(a,f)}}void 0!==c.fa&&(b.prepend=d(c.fa));void 0!==c.append&&(b.append=d(c.append))};function Ze(){var a=Xe;P(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=oe.call(this,b);a.b(b);return b});P(Document.prototype,"importNode",function(b,c){b=qe.call(this,b,c);this.__CE_hasRegistry?je(a,b):he(a,b);return b});P(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=pe.call(this,b,c);a.b(b);return b});
Ye(a,Document.prototype,{fa:re,append:se})};function $e(){var a=Xe;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,h=e.length;if(0<h&&O(this)){c=Array(h);for(var k=0;k<h;k++)c[k]=e[k]}}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)R(a,c[b])}}})}P(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);
b=xe.call(this,b,d);if(O(this))for(d=0;d<c.length;d++)Q(a,c[d]);return b}c=O(b);d=xe.call(this,b,d);c&&R(a,b);O(this)&&Q(a,b);return d});P(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=we.call(this,b);if(O(this))for(var e=0;e<c.length;e++)Q(a,c[e]);return b}c=O(b);e=we.call(this,b);c&&R(a,b);O(this)&&Q(a,b);return e});P(Node.prototype,"cloneNode",function(b){b=ve.call(this,b);this.ownerDocument.__CE_hasRegistry?je(a,b):
he(a,b);return b});P(Node.prototype,"removeChild",function(b){var c=O(b),e=ye.call(this,b);c&&R(a,b);return e});P(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=ze.call(this,b,d);if(O(this))for(R(a,d),d=0;d<c.length;d++)Q(a,c[d]);return b}c=O(b);var f=ze.call(this,b,d),g=O(this);g&&R(a,d);c&&R(a,b);g&&Q(a,b);return f});Ae&&Ae.get?b(Node.prototype,Ae):ge(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a=
[],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)ye.call(this,this.firstChild);we.call(this,document.createTextNode(a))}})})};function af(a){var b=Element.prototype;function c(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var h=[],k=0;k<d.length;k++){var m=d[k];m instanceof Element&&O(m)&&h.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)e.push(m);else e.push(m)}b.apply(this,d);for(d=0;d<h.length;d++)R(a,h[d]);if(O(this))for(d=0;d<e.length;d++)h=e[d],h instanceof Element&&Q(a,h)}}void 0!==Ne&&(b.before=c(Ne));void 0!==Ne&&(b.after=c(Oe));void 0!==
Pe&&P(b,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=[];for(var g=[],h=0;h<c.length;h++){var k=c[h];k instanceof Element&&O(k)&&g.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}h=O(this);Pe.apply(this,c);for(c=0;c<g.length;c++)R(a,g[c]);if(h)for(R(a,this),c=0;c<d.length;c++)g=d[c],g instanceof Element&&Q(a,g)});void 0!==Qe&&P(b,"remove",function(){var b=O(this);Qe.call(this);b&&R(a,this)})};function bf(){var a=Xe;function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;O(this)&&(e=[],de(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var g=e[f];1===g.__CE_state&&a.disconnectedCallback(g)}this.ownerDocument.__CE_hasRegistry?je(a,this):he(a,this);return b}})}function c(b,c){P(b,"insertAdjacentElement",function(b,d){var e=O(d);b=c.call(this,b,d);e&&R(a,d);O(b)&&Q(a,
d);return b})}function d(b,c){function d(b,c){for(var d=[];b!==c;b=b.nextSibling)d.push(b);for(c=0;c<d.length;c++)je(a,d[c])}P(b,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var e=this.previousSibling;c.call(this,a,b);d(e||this.parentNode.firstChild,this)}else if("afterbegin"===a)e=this.firstChild,c.call(this,a,b),d(this.firstChild,e);else if("beforeend"===a)e=this.lastChild,c.call(this,a,b),d(e||this.firstChild,null);else if("afterend"===a)e=this.nextSibling,c.call(this,
a,b),d(this.nextSibling,e);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}Be&&P(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=Be.call(this,a)});Ce&&Ce.get?b(Element.prototype,Ce):Se&&Se.get?b(HTMLElement.prototype,Se):ge(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return ve.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:
this,d=oe.call(document,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)ye.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)we.call(c,a.childNodes[0])}})});P(Element.prototype,"setAttribute",function(b,c){if(1!==this.__CE_state)return Ee.call(this,b,c);var d=De.call(this,b);Ee.call(this,b,c);c=De.call(this,b);a.attributeChangedCallback(this,b,d,c,null)});P(Element.prototype,"setAttributeNS",function(b,c,d){if(1!==this.__CE_state)return He.call(this,b,c,d);var e=Ge.call(this,
b,c);He.call(this,b,c,d);d=Ge.call(this,b,c);a.attributeChangedCallback(this,c,e,d,b)});P(Element.prototype,"removeAttribute",function(b){if(1!==this.__CE_state)return Fe.call(this,b);var c=De.call(this,b);Fe.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});P(Element.prototype,"removeAttributeNS",function(b,c){if(1!==this.__CE_state)return Ie.call(this,b,c);var d=Ge.call(this,b,c);Ie.call(this,b,c);var e=Ge.call(this,b,c);d!==e&&a.attributeChangedCallback(this,c,d,e,b)});Te?
c(HTMLElement.prototype,Te):Je?c(Element.prototype,Je):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Ue?d(HTMLElement.prototype,Ue):Ke?d(Element.prototype,Ke):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");Ye(a,Element.prototype,{fa:Le,append:Me});af(a)};var cf=window.customElements;if(!cf||cf.forcePolyfill||"function"!=typeof cf.define||"function"!=typeof cf.get){var Xe=new ee;We();Ze();Ye(Xe,DocumentFragment.prototype,{fa:te,append:ue});$e();bf();document.__CE_hasRegistry=!0;var customElements=new S(Xe);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};function df(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}
function ef(a){a=a.replace(ff,"").replace(gf,"");var b=hf,c=a,d=new df;d.start=0;d.end=c.length;for(var e=d,f=0,g=c.length;f<g;f++)if("{"===c[f]){e.rules||(e.rules=[]);var h=e,k=h.rules[h.rules.length-1]||null;e=new df;e.start=f+1;e.parent=h;e.previous=k;h.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)}
function hf(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=jf(c),c=c.replace(kf," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=lf:c.match(rf)&&(a.type=sf,a.keyframesName=a.selector.split(kf).pop()):a.type=0===c.indexOf("--")?tf:uf);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)hf(f,
b);return a}function jf(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})}
function vf(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var g=e.length,h;f<g&&(h=e[f]);f++)d=vf(h,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(wf,"").replace(xf,""),b=b.replace(yf,"").replace(zf,"")),(d=b.trim())&&(d="  "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c}
var uf=1,sf=7,lf=4,tf=1E3,ff=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,gf=/@import[^;]*;/gim,wf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,xf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,yf=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,zf=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,rf=/^@[^\s]*keyframes/,kf=/\s+/g;var T=!(window.ShadyDOM&&window.ShadyDOM.inUse),Af;function Bf(a){Af=a&&a.shimcssproperties?!1:T||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?Af=window.ShadyCSS.nativeCss:window.ShadyCSS?(Bf(window.ShadyCSS),window.ShadyCSS=void 0):Bf(window.WebComponents&&window.WebComponents.flags);var V=Af;var Cf=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,Df=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,Ef=/(--[\w-]+)\s*([:,;)]|$)/gi,Ff=/(animation\s*:)|(animation-name\s*:)/,Gf=/@media\s(.*)/,Hf=/\{[^}]*\}/g;var If=new Set;function Jf(a,b){if(!a)return"";"string"===typeof a&&(a=ef(a));b&&Kf(a,b);return vf(a,V)}function Lf(a){!a.__cssRules&&a.textContent&&(a.__cssRules=ef(a.textContent));return a.__cssRules||null}function Mf(a){return!!a.parent&&a.parent.type===sf}function Kf(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===lf){var g=a.selector.match(Gf);g&&(window.matchMedia(g[1]).matches||(e=!0))}f===uf?b(a):c&&f===sf?c(a):f===tf&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var h;e<f&&(h=a[e]);e++)Kf(h,b,c,d)}}}
function Nf(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;Of(e,c,d);return e}var Pf=null;function Of(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);Pf?a.compareDocumentPosition(Pf)===Node.DOCUMENT_POSITION_PRECEDING&&(Pf=a):Pf=a}
function Qf(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");a:{var d=0;var e=c+3;for(var f=a.length;e<f;e++)if("("===a[e])d++;else if(")"===a[e]&&0===--d)break a;e=-1}d=a.substring(c+4,e);c=a.substring(0,c);a=Qf(a.substring(e+1),b);e=d.indexOf(",");return-1===e?b(c,d.trim(),"",a):b(c,d.substring(0,e).trim(),d.substring(e+1).trim(),a)}function Rf(a,b){T?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)}
function Sf(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,X:c}};function Tf(){}function Uf(a,b,c){var d=Vf;a.__styleScoped?a.__styleScoped=null:Wf(d,a,b||"",c)}function Wf(a,b,c,d){b.nodeType===Node.ELEMENT_NODE&&Xf(b,c,d);if(b="template"===b.localName?(b.content||b.jb).childNodes:b.children||b.childNodes)for(var e=0;e<b.length;e++)Wf(a,b[e],c,d)}
function Xf(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(Yf);c?d&&(b=d.replace("style-scope","").replace(b,""),Rf(a,b)):Rf(a,(d?d+" ":"")+"style-scope "+b)}}function Zf(a,b,c){var d=Vf,e=a.__cssBuild;T||"shady"===e?b=Jf(b,c):(a=Sf(a),b=$f(d,b,a.is,a.X,c)+"\n\n");return b.trim()}
function $f(a,b,c,d,e){var f=ag(c,d);c=c?bg+c:"";return Jf(b,function(b){b.c||(b.selector=b.G=cg(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function ag(a,b){return b?"[is="+a+"]":a}function cg(a,b,c,d,e){var f=b.selector.split(dg);if(!Mf(b)){b=0;for(var g=f.length,h;b<g&&(h=f[b]);b++)f[b]=c.call(a,h,d,e)}return f.join(dg)}function eg(a){return a.replace(fg,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}
Tf.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=fg.test(a);e&&(a=a.replace(fg,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=eg(a));a=a.replace(gg,hg+" $1");a=a.replace(ig,function(a,e,h){d||(a=jg(h,e,b,c),d=d||a.stop,e=a.Sa,h=a.value);return e+h});e&&(a=eg(a));return a};
function jg(a,b,c,d){var e=a.indexOf(kg);0<=a.indexOf(hg)?a=lg(a,d):0!==e&&(a=c?mg(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(ng,function(a,b){return" > "+b}))}a=a.replace(og,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,Sa:b,stop:f}}function mg(a,b){a=a.split(pg);a[0]+=b;return a.join(pg)}
function lg(a,b){var c=a.match(qg);return(c=c&&c[2].trim()||"")?c[0].match(rg)?a.replace(qg,function(a,c,f){return b+f}):c.split(rg)[0]===b?c:sg:a.replace(hg,b)}function tg(a){a.selector===ug&&(a.selector="html")}Tf.prototype.c=function(a){return a.match(kg)?this.b(a,vg):mg(a.trim(),vg)};aa.Object.defineProperties(Tf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}});
var fg=/:(nth[-\w]+)\(([^)]+)\)/,vg=":not(.style-scope)",dg=",",ig=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,rg=/[[.:#*]/,hg=":host",ug=":root",kg="::slotted",gg=new RegExp("^("+kg+")"),qg=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,ng=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,og=/(.*):dir\((?:(ltr|rtl))\)/,bg=".",pg=":",Yf="class",sg="should_not_match",Vf=new Tf;function wg(a,b,c,d){this.K=a||null;this.b=b||null;this.sa=c||[];this.T=null;this.X=d||"";this.a=this.H=this.O=null}function xg(a){return a?a.__styleInfo:null}function yg(a,b){return a.__styleInfo=b}wg.prototype.c=function(){return this.K};wg.prototype._getStyleRules=wg.prototype.c;function zg(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var Ag=navigator.userAgent.match("Trident");function Bg(){}function Cg(a){var b={},c=[],d=0;Kf(a,function(a){Dg(a);a.index=d++;a=a.B.cssText;for(var c;c=Ef.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a}
function Dg(a){if(!a.B){var b={},c={};Eg(a,c)&&(b.J=c,a.rules=null);b.cssText=a.parsedCssText.replace(Hf,"").replace(Cf,"");a.B=b}}function Eg(a,b){var c=a.B;if(c){if(c.J)return Object.assign(b,c.J),!0}else{c=a.parsedCssText;for(var d;a=Cf.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}}
function Fg(a,b,c){b&&(b=0<=b.indexOf(";")?Gg(a,b,c):Qf(b,function(b,e,f,g){if(!e)return b+g;(e=Fg(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=Fg(a,c[f]||f,c)||f;return b+(e||"")+g}));return b&&b.trim()||""}
function Gg(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){Df.lastIndex=0;if(f=Df.exec(e))e=Fg(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var g=e.substring(f);g=g.trim();g=Fg(a,g,c)||g;e=e.substring(0,f)+g}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")}
function Hg(a,b){var c={},d=[];Kf(a,function(a){a.B||Dg(a);var e=a.G||a.parsedSelector;b&&a.B.J&&e&&zg.call(b,e)&&(Eg(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{J:c,key:d}}
function Ig(a,b,c,d){b.B||Dg(b);if(b.B.J){var e=Sf(a);a=e.is;e=e.X;e=a?ag(a,e):"html";var f=b.parsedSelector,g=":host > *"===f||"html"===f,h=0===f.indexOf(":host")&&!g;"shady"===c&&(g=f===e+" > *."+e||-1!==f.indexOf("html"),h=!g&&0===f.indexOf(e));"shadow"===c&&(g=":host > *"===f||"html"===f,h=h&&!g);if(g||h)c=e,h&&(b.G||(b.G=cg(Vf,b,Vf.b,a?bg+a:"",e)),c=b.G||e),d({Za:c,Wa:h,wb:g})}}
function Jg(a,b){var c={},d={},e=b&&b.__cssBuild;Kf(b,function(b){Ig(a,b,e,function(e){zg.call(a.kb||a,e.Za)&&(e.Wa?Eg(b,c):Eg(b,d))})},null,!0);return{Ya:d,Va:c}}
function Kg(a,b,c,d){var e=Sf(b),f=ag(e.is,e.X),g=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=xg(b).K;var h=Lg(e,d);return Zf(b,e,function(b){var e="";b.B||Dg(b);b.B.cssText&&(e=Gg(a,b.B.cssText,c));b.cssText=e;if(!T&&!Mf(b)&&b.cssText){var k=e=b.cssText;null==b.za&&(b.za=Ff.test(e));if(b.za)if(null==b.ea){b.ea=[];for(var r in h)k=h[r],k=k(e),e!==k&&(e=k,b.ea.push(r))}else{for(r=0;r<b.ea.length;++r)k=h[b.ea[r]],e=k(e);k=e}b.cssText=k;b.G=b.G||b.selector;
e="."+d;r=b.G.split(",");k=0;for(var G=r.length,x;k<G&&(x=r[k]);k++)r[k]=x.match(g)?x.replace(f,e):e+" "+x;b.selector=r.join(",")}})}function Lg(a,b){a=a.b;var c={};if(!T&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,g=b;f.F=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+g;f.G=f.G||f.selector;f.selector=f.G.replace(f.keyframesName,f.a);c[e.keyframesName]=Mg(e)}return c}function Mg(a){return function(b){return b.replace(a.F,a.a)}}
function Ng(a,b){var c=Og,d=Lf(a);a.textContent=Jf(d,function(a){var d=a.cssText=a.parsedCssText;a.B&&a.B.cssText&&(d=d.replace(wf,"").replace(xf,""),a.cssText=Gg(c,d,b))})}aa.Object.defineProperties(Bg.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var Og=new Bg;var Pg={},Qg=window.customElements;if(Qg&&!T){var Rg=Qg.define;Qg.define=function(a,b,c){var d=document.createComment(" Shady DOM styles for "+a+" "),e=document.head;e.insertBefore(d,(Pf?Pf.nextSibling:null)||e.firstChild);Pf=d;Pg[a]=d;Rg.call(Qg,a,b,c)}};function Sg(){this.cache={}}Sg.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({J:b,styleElement:c,H:d});100<e.length&&e.shift();this.cache[a]=e};Sg.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var g=c[f];if(e.J[g]!==b[g]){f=!1;break a}}f=!0}if(f)return e}};function Tg(){}
function Ug(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var g=e;var h=[];g.classList?h=Array.from(g.classList):g instanceof window.SVGElement&&g.hasAttribute("class")&&(h=g.getAttribute("class").split(/\s+/));g=h;h=g.indexOf(Vf.a);if((g=-1<h?g[h+1]:"")&&f===e.ownerDocument)Uf(e,g,!0);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&
(f=f.host))if(f=Sf(f).is,g===f)for(e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+Vf.a+")"),f=0;f<e.length;f++)Xf(e[f],g);else g&&Uf(e,g,!0),Uf(e,f)}}}}
if(!T){var Vg=new MutationObserver(Ug),Wg=function(a){Vg.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)Wg(document);else{var Xg=function(){Wg(document.body)};window.HTMLImports?window.HTMLImports.whenReady(Xg):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){Xg();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange",a)}else Xg()})}Tg=function(){Ug(Vg.takeRecords())}}
var Yg=Tg;var Zg={};var $g=Promise.resolve();function ah(a){if(a=Zg[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function bh(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function ch(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.b||(a.b=!0,$g.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.b=!1}))};var dh=new Sg;function W(){this.Aa={};this.c=document.documentElement;var a=new df;a.rules=[];this.F=yg(this.c,new wg(a));this.M=!1;this.b=this.a=null}q=W.prototype;q.Ga=function(){Yg()};q.Ta=function(a){return Lf(a)};q.ab=function(a){return Jf(a)};
q.prepareTemplate=function(a,b,c){if(!a.F){a.F=!0;a.name=b;a.extends=c;Zg[b]=a;var d=(d=a.content.querySelector("style"))?d.getAttribute("css-build")||"":"";var e=[];for(var f=a.content.querySelectorAll("style"),g=0;g<f.length;g++){var h=f[g];if(h.hasAttribute("shady-unscoped")){if(!T){var k=h.textContent;If.has(k)||(If.add(k),k=h.cloneNode(!0),document.head.appendChild(k));h.parentNode.removeChild(h)}}else e.push(h.textContent),h.parentNode.removeChild(h)}e=e.join("").trim();c={is:b,extends:c,hb:d};
T||Uf(a.content,b);eh(this);f=Df.test(e)||Cf.test(e);Df.lastIndex=0;Cf.lastIndex=0;e=ef(e);f&&V&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.M=d;d=[];V||(d=Cg(a._styleAst));if(!d.length||V)e=T?a.content:null,b=Pg[b],f=Zf(c,a._styleAst),b=f.length?Nf(f,c.is,e,b):void 0,a.a=b;a.c=d}};
function fh(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.Ea(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.M)&&a.flushCustomStyles()})})}function eh(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=ah);fh(a)}
q.flushCustomStyles=function(){eh(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(V)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&V&&this.a){var d=Lf(c);eh(this);this.a.transformRules(d);c.textContent=Jf(d)}}else for(gh(this,this.c,this.F),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&Ng(c,this.F.O);this.b.enqueued=!1;this.M&&!V&&this.styleDocument()}}};
q.styleElement=function(a,b){var c=Sf(a).is,d=xg(a);if(!d){var e=Sf(a);d=e.is;e=e.X;var f=Pg[d];d=Zg[d];if(d){var g=d._styleAst;var h=d.c}d=yg(a,new wg(g,f,h,e))}a!==this.c&&(this.M=!0);b&&(d.T=d.T||{},Object.assign(d.T,b));if(V){if(d.T){b=d.T;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=Zg[c])||a===this.c)&&k&&k.a&&!bh(k)){if(bh(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)eh(this),this.a&&this.a.transformRules(k._styleAst,c),k.a.textContent=
Zf(a,d.K),ch(k);T&&(c=a.shadowRoot)&&(c.querySelector("style").textContent=Zf(a,d.K));d.K=k._styleAst}}else if(gh(this,a,d),d.sa&&d.sa.length){c=d;k=Sf(a).is;d=(b=dh.fetch(k,c.O,c.sa))?b.styleElement:null;g=c.H;(h=b&&b.H)||(h=this.Aa[k]=(this.Aa[k]||0)+1,h=k+"-"+h);c.H=h;h=c.H;e=Og;e=d?d.textContent||"":Kg(e,a,c.O,h);f=xg(a);var m=f.a;m&&!T&&m!==d&&(m._useCount--,0>=m._useCount&&m.parentNode&&m.parentNode.removeChild(m));T?f.a?(f.a.textContent=e,d=f.a):e&&(d=Nf(e,h,a.shadowRoot,f.b)):d?d.parentNode||
(Ag&&-1<e.indexOf("@media")&&(d.textContent=e),Of(d,null,f.b)):e&&(d=Nf(e,h,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);h=d;T||(d=c.H,f=e=a.getAttribute("class")||"",g&&(f=e.replace(new RegExp("\\s*x-scope\\s*"+g+"\\s*","g")," ")),f+=(f?" ":"")+"x-scope "+d,e!==f&&Rf(a,f));b||dh.store(k,c.O,h,c.H)}};function hh(a,b){return(b=b.getRootNode().host)?xg(b)?b:hh(a,b):a.c}
function gh(a,b,c){a=hh(a,b);var d=xg(a);a=Object.create(d.O||null);var e=Jg(b,c.K);b=Hg(d.K,b).J;Object.assign(a,e.Va,b,e.Ya);b=c.T;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=Og;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=Fg(f,a[d],a);c.O=a}q.styleDocument=function(a){this.styleSubtree(this.c,a)};
q.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};q.Ea=function(a){var b=this,c=Lf(a);Kf(c,function(a){if(T)tg(a);else{var c=Vf;a.selector=a.parsedSelector;tg(a);a.selector=a.G=cg(c,a,c.c,void 0,void 0)}V&&(eh(b),b.a&&b.a.transformRule(a))});V?a.textContent=Jf(c):this.F.K.rules.push(c)};
q.getComputedStyleValue=function(a,b){var c;V||(c=(xg(a)||xg(hh(this,a))).O[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""};q.$a=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===Vf.a){c=d[e+1];break}}}c&&b.push(Vf.a,c);V||(c=xg(a))&&c.H&&b.push(Og.a,c.H);Rf(a,b.join(" "))};q.Qa=function(a){return xg(a)};W.prototype.flush=W.prototype.Ga;
W.prototype.prepareTemplate=W.prototype.prepareTemplate;W.prototype.styleElement=W.prototype.styleElement;W.prototype.styleDocument=W.prototype.styleDocument;W.prototype.styleSubtree=W.prototype.styleSubtree;W.prototype.getComputedStyleValue=W.prototype.getComputedStyleValue;W.prototype.setElementClass=W.prototype.$a;W.prototype._styleInfoForNode=W.prototype.Qa;W.prototype.transformCustomStyleForDocument=W.prototype.Ea;W.prototype.getStyleAst=W.prototype.Ta;W.prototype.styleAstToString=W.prototype.ab;
W.prototype.flushCustomStyles=W.prototype.flushCustomStyles;Object.defineProperties(W.prototype,{nativeShadow:{get:function(){return T}},nativeCss:{get:function(){return V}}});var X=new W,ih,jh;window.ShadyCSS&&(ih=window.ShadyCSS.ApplyShim,jh=window.ShadyCSS.CustomStyleInterface);
window.ShadyCSS={ScopingShim:X,prepareTemplate:function(a,b,c){X.flushCustomStyles();X.prepareTemplate(a,b,c)},styleSubtree:function(a,b){X.flushCustomStyles();X.styleSubtree(a,b)},styleElement:function(a){X.flushCustomStyles();X.styleElement(a)},styleDocument:function(a){X.flushCustomStyles();X.styleDocument(a)},flushCustomStyles:function(){X.flushCustomStyles()},getComputedStyleValue:function(a,b){return X.getComputedStyleValue(a,b)},nativeCss:V,nativeShadow:T};ih&&(window.ShadyCSS.ApplyShim=ih);
jh&&(window.ShadyCSS.CustomStyleInterface=jh);(function(a){function b(a){""==a&&(f.call(this),this.h=!0);return a.toLowerCase()}function c(a){var b=a.charCodeAt(0);return 32<b&&127>b&&-1==[34,35,60,62,63,96].indexOf(b)?a:encodeURIComponent(a)}function d(a){var b=a.charCodeAt(0);return 32<b&&127>b&&-1==[34,35,60,62,96].indexOf(b)?a:encodeURIComponent(a)}function e(a,e,g){function h(a){kb.push(a)}var k=e||"scheme start",v=0,p="",x=!1,U=!1,kb=[];a:for(;(void 0!=a[v-1]||0==v)&&!this.h;){var l=a[v];switch(k){case "scheme start":if(l&&r.test(l))p+=
l.toLowerCase(),k="scheme";else if(e){h("Invalid scheme.");break a}else{p="";k="no scheme";continue}break;case "scheme":if(l&&G.test(l))p+=l.toLowerCase();else if(":"==l){this.g=p;p="";if(e)break a;void 0!==m[this.g]&&(this.D=!0);k="file"==this.g?"relative":this.D&&g&&g.g==this.g?"relative or authority":this.D?"authority first slash":"scheme data"}else if(e){void 0!=l&&h("Code point not allowed in scheme: "+l);break a}else{p="";v=0;k="no scheme";continue}break;case "scheme data":"?"==l?(this.u="?",
k="query"):"#"==l?(this.C="#",k="fragment"):void 0!=l&&"\t"!=l&&"\n"!=l&&"\r"!=l&&(this.qa+=c(l));break;case "no scheme":if(g&&void 0!==m[g.g]){k="relative";continue}else h("Missing scheme."),f.call(this),this.h=!0;break;case "relative or authority":if("/"==l&&"/"==a[v+1])k="authority ignore slashes";else{h("Expected /, got: "+l);k="relative";continue}break;case "relative":this.D=!0;"file"!=this.g&&(this.g=g.g);if(void 0==l){this.i=g.i;this.s=g.s;this.j=g.j.slice();this.u=g.u;this.v=g.v;this.f=g.f;
break a}else if("/"==l||"\\"==l)"\\"==l&&h("\\ is an invalid code point."),k="relative slash";else if("?"==l)this.i=g.i,this.s=g.s,this.j=g.j.slice(),this.u="?",this.v=g.v,this.f=g.f,k="query";else if("#"==l)this.i=g.i,this.s=g.s,this.j=g.j.slice(),this.u=g.u,this.C="#",this.v=g.v,this.f=g.f,k="fragment";else{k=a[v+1];var F=a[v+2];if("file"!=this.g||!r.test(l)||":"!=k&&"|"!=k||void 0!=F&&"/"!=F&&"\\"!=F&&"?"!=F&&"#"!=F)this.i=g.i,this.s=g.s,this.v=g.v,this.f=g.f,this.j=g.j.slice(),this.j.pop();k=
"relative path";continue}break;case "relative slash":if("/"==l||"\\"==l)"\\"==l&&h("\\ is an invalid code point."),k="file"==this.g?"file host":"authority ignore slashes";else{"file"!=this.g&&(this.i=g.i,this.s=g.s,this.v=g.v,this.f=g.f);k="relative path";continue}break;case "authority first slash":if("/"==l)k="authority second slash";else{h("Expected '/', got: "+l);k="authority ignore slashes";continue}break;case "authority second slash":k="authority ignore slashes";if("/"!=l){h("Expected '/', got: "+
l);continue}break;case "authority ignore slashes":if("/"!=l&&"\\"!=l){k="authority";continue}else h("Expected authority, got: "+l);break;case "authority":if("@"==l){x&&(h("@ already seen."),p+="%40");x=!0;for(l=0;l<p.length;l++)F=p[l],"\t"==F||"\n"==F||"\r"==F?h("Invalid whitespace in authority."):":"==F&&null===this.f?this.f="":(F=c(F),null!==this.f?this.f+=F:this.v+=F);p=""}else if(void 0==l||"/"==l||"\\"==l||"?"==l||"#"==l){v-=p.length;p="";k="host";continue}else p+=l;break;case "file host":if(void 0==
l||"/"==l||"\\"==l||"?"==l||"#"==l){2!=p.length||!r.test(p[0])||":"!=p[1]&&"|"!=p[1]?(0!=p.length&&(this.i=b.call(this,p),p=""),k="relative path start"):k="relative path";continue}else"\t"==l||"\n"==l||"\r"==l?h("Invalid whitespace in file host."):p+=l;break;case "host":case "hostname":if(":"!=l||U)if(void 0==l||"/"==l||"\\"==l||"?"==l||"#"==l){this.i=b.call(this,p);p="";k="relative path start";if(e)break a;continue}else"\t"!=l&&"\n"!=l&&"\r"!=l?("["==l?U=!0:"]"==l&&(U=!1),p+=l):h("Invalid code point in host/hostname: "+
l);else if(this.i=b.call(this,p),p="",k="port","hostname"==e)break a;break;case "port":if(/[0-9]/.test(l))p+=l;else if(void 0==l||"/"==l||"\\"==l||"?"==l||"#"==l||e){""!=p&&(p=parseInt(p,10),p!=m[this.g]&&(this.s=p+""),p="");if(e)break a;k="relative path start";continue}else"\t"==l||"\n"==l||"\r"==l?h("Invalid code point in port: "+l):(f.call(this),this.h=!0);break;case "relative path start":"\\"==l&&h("'\\' not allowed in path.");k="relative path";if("/"!=l&&"\\"!=l)continue;break;case "relative path":if(void 0!=
l&&"/"!=l&&"\\"!=l&&(e||"?"!=l&&"#"!=l))"\t"!=l&&"\n"!=l&&"\r"!=l&&(p+=c(l));else{"\\"==l&&h("\\ not allowed in relative path.");if(F=n[p.toLowerCase()])p=F;".."==p?(this.j.pop(),"/"!=l&&"\\"!=l&&this.j.push("")):"."==p&&"/"!=l&&"\\"!=l?this.j.push(""):"."!=p&&("file"==this.g&&0==this.j.length&&2==p.length&&r.test(p[0])&&"|"==p[1]&&(p=p[0]+":"),this.j.push(p));p="";"?"==l?(this.u="?",k="query"):"#"==l&&(this.C="#",k="fragment")}break;case "query":e||"#"!=l?void 0!=l&&"\t"!=l&&"\n"!=l&&"\r"!=l&&(this.u+=
d(l)):(this.C="#",k="fragment");break;case "fragment":void 0!=l&&"\t"!=l&&"\n"!=l&&"\r"!=l&&(this.C+=l)}v++}}function f(){this.v=this.qa=this.g="";this.f=null;this.s=this.i="";this.j=[];this.C=this.u="";this.D=this.h=!1}function g(a,b){void 0===b||b instanceof g||(b=new g(String(b)));this.Ra=a;f.call(this);a=a.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g,"");e.call(this,a,null,b)}var h=!1;if(!a.qb)try{var k=new URL("b","http://a");k.pathname="c%20d";h="http://a/c%20d"===k.href}catch(v){}if(!h){var m=Object.create(null);
m.ftp=21;m.file=0;m.gopher=70;m.http=80;m.https=443;m.ws=80;m.wss=443;var n=Object.create(null);n["%2e"]=".";n[".%2e"]="..";n["%2e."]="..";n["%2e%2e"]="..";var r=/[a-zA-Z]/,G=/[a-zA-Z0-9\+\-\.]/;g.prototype={toString:function(){return this.href},get href(){if(this.h)return this.Ra;var a="";if(""!=this.v||null!=this.f)a=this.v+(null!=this.f?":"+this.f:"")+"@";return this.protocol+(this.D?"//"+a+this.host:"")+this.pathname+this.u+this.C},set href(a){f.call(this);e.call(this,a)},get protocol(){return this.g+
":"},set protocol(a){this.h||e.call(this,a+":","scheme start")},get host(){return this.h?"":this.s?this.i+":"+this.s:this.i},set host(a){!this.h&&this.D&&e.call(this,a,"host")},get hostname(){return this.i},set hostname(a){!this.h&&this.D&&e.call(this,a,"hostname")},get port(){return this.s},set port(a){!this.h&&this.D&&e.call(this,a,"port")},get pathname(){return this.h?"":this.D?"/"+this.j.join("/"):this.qa},set pathname(a){!this.h&&this.D&&(this.j=[],e.call(this,a,"relative path start"))},get search(){return this.h||
!this.u||"?"==this.u?"":this.u},set search(a){!this.h&&this.D&&(this.u="?","?"==a[0]&&(a=a.slice(1)),e.call(this,a,"query"))},get hash(){return this.h||!this.C||"#"==this.C?"":this.C},set hash(a){this.h||(this.C="#","#"==a[0]&&(a=a.slice(1)),e.call(this,a,"fragment"))},get origin(){var a;if(this.h||!this.g)return"";switch(this.g){case "data":case "file":case "javascript":case "mailto":return"null"}return(a=this.host)?this.g+"://"+a:""}};var x=a.URL;x&&(g.createObjectURL=function(a){return x.createObjectURL.apply(x,
arguments)},g.revokeObjectURL=function(a){x.revokeObjectURL(a)});a.URL=g}})(window);var kh={},lh=Object.create,mh=Object.defineProperties,nh=Object.defineProperty;function Y(a,b){b=void 0===b?{}:b;return{value:a,configurable:!!b.ya,writable:!!b.cb,enumerable:!!b.e}}var oh=void 0;try{oh=1===nh({},"y",{get:function(){return 1}}).y}catch(a){oh=!1}var ph={};function qh(a){a=String(a);for(var b="",c=0;ph[a+b];)b=c+=1;ph[a+b]=1;var d="Symbol("+a+""+b+")";oh&&nh(Object.prototype,d,{get:void 0,set:function(a){nh(this,d,Y(a,{ya:!0,cb:!0}))},configurable:!0,enumerable:!1});return d}
var rh=lh(null);function Z(a){if(this instanceof Z)throw new TypeError("Symbol is not a constructor");a=void 0===a?"":String(a);var b=qh(a);return oh?lh(rh,{ua:Y(a),Ka:Y(b)}):b}mh(Z,{"for":Y(function(a){a=String(a);if(kh[a])return kh[a];var b=Z(a);return kh[a]=b}),keyFor:Y(function(a){if(oh&&(!a||"Symbol"!==a[Z.toStringTag]))throw new TypeError(""+a+" is not a symbol");for(var b in kh)if(kh[b]===a)return oh?kh[b].ua:kh[b].substr(7,kh[b].length-8)})});
mh(Z,{ub:Y(Z("hasInstance")),vb:Y(Z("isConcatSpreadable")),iterator:Y(Z("iterator")),match:Y(Z("match")),replace:Y(Z("replace")),search:Y(Z("search")),Ab:Y(Z("species")),split:Y(Z("split")),Bb:Y(Z("toPrimitive")),toStringTag:Y(Z("toStringTag")),unscopables:Y(Z("unscopables"))});mh(rh,{constructor:Y(Z),toString:Y(function(){return this.Ka}),valueOf:Y(function(){return"Symbol("+this.ua+")"})});oh&&nh(rh,Z.toStringTag,Y("Symbol",{ya:!0}));var sh="function"===typeof Symbol?Symbol:Z;/*

Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
window.Symbol||(window.Symbol=sh,Array.prototype[sh.iterator]=function(){function a(a,e,h){for(;;)switch(b){case 0:c=0;case 1:if(!(c<d.length)){b=3;break}b=4;return{value:d[c],done:!1};case 4:if(1!=a){b=5;break}b=-1;throw h;case 5:case 2:c++;b=1;break;case 3:b=-1;default:return{value:void 0,done:!0}}}var b=0,c,d=this,e={next:function(b){return a(0,b,void 0)},throw:function(b){return a(1,void 0,b)},return:function(){throw Error("Not yet implemented");}};ea();e[Symbol.iterator]=function(){return this};
return e},Set.prototype[sh.iterator]=function(){function a(a,f,k){for(;;)switch(b){case 0:d=[],e.forEach(function(a){d.push(a)}),c=0;case 1:if(!(c<d.length)){b=3;break}b=4;return{value:d[c],done:!1};case 4:if(1!=a){b=5;break}b=-1;throw k;case 5:case 2:c++;b=1;break;case 3:b=-1;default:return{value:void 0,done:!0}}}var b=0,c,d,e=this,f={next:function(b){return a(0,b,void 0)},throw:function(b){return a(1,void 0,b)},return:function(){throw Error("Not yet implemented");}};ea();f[Symbol.iterator]=function(){return this};
return f},Map.prototype[sh.iterator]=function(){function a(a,f,k){for(;;)switch(b){case 0:d=[],e.forEach(function(a,b){d.push([b,a])}),c=0;case 1:if(!(c<d.length)){b=3;break}b=4;return{value:d[c],done:!1};case 4:if(1!=a){b=5;break}b=-1;throw k;case 5:case 2:c++;b=1;break;case 3:b=-1;default:return{value:void 0,done:!0}}}var b=0,c,d,e=this,f={next:function(b){return a(0,b,void 0)},throw:function(b){return a(1,void 0,b)},return:function(){throw Error("Not yet implemented");}};ea();f[Symbol.iterator]=
function(){return this};return f},String.prototype[sh.iterator]=function(){function a(a,e,h){for(;;)switch(b){case 0:c=0;case 1:if(!(c<d.length)){b=3;break}b=4;return{value:d[c],done:!1};case 4:if(1!=a){b=5;break}b=-1;throw h;case 5:case 2:c++;b=1;break;case 3:b=-1;default:return{value:void 0,done:!0}}}var b=0,c,d=this,e={next:function(b){return a(0,b,void 0)},throw:function(b){return a(1,void 0,b)},return:function(){throw Error("Not yet implemented");}};ea();e[Symbol.iterator]=function(){return this};
return e});var th=document.createElement("style");th.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var uh=document.querySelector("head");uh.insertBefore(th,uh.firstChild);var vh=window.customElements,wh=!1,xh=null;vh.polyfillWrapFlushCallback&&vh.polyfillWrapFlushCallback(function(a){xh=a;wh&&a()});function yh(){window.HTMLTemplateElement.bootstrap&&window.HTMLTemplateElement.bootstrap(window.document);xh&&xh();wh=!0;window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))}
"complete"!==document.readyState?(window.addEventListener("load",yh),window.addEventListener("DOMContentLoaded",function(){window.removeEventListener("load",yh);yh()})):yh();}).call(this);
}
</script>
<script>HTMLWidgets.widget({
  name: 'r2d3',
  type: 'output',
  factory: function(el, width, height) {

    var r2d3 = new R2D3(el, width, height);

    return {
      renderValue: function(x) {
        r2d3.widgetRender(x);
      },

      resize: function(width, height) {
        r2d3.widgetResize(width, height);
      }
    };
  }
});
</script>
<script>// https://d3js.org Version 4.13.0. Copyright 2018 Mike Bostock.
(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3v4=t.d3v4||{})})(this,function(t){"use strict";function n(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function e(t){return 1===t.length&&(t=function(t){return function(e,r){return n(t(e),r)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}function r(t,n){return[t,n]}function i(t){return null===t?NaN:+t}function o(t,n){var e,r,o=t.length,u=0,a=-1,c=0,s=0;if(null==n)for(;++a<o;)isNaN(e=i(t[a]))||(s+=(r=e-c)*(e-(c+=r/++u)));else for(;++a<o;)isNaN(e=i(n(t[a],a,t)))||(s+=(r=e-c)*(e-(c+=r/++u)));if(u>1)return s/(u-1)}function u(t,n){var e=o(t,n);return e?Math.sqrt(e):e}function a(t,n){var e,r,i,o=t.length,u=-1;if(null==n){for(;++u<o;)if(null!=(e=t[u])&&e>=e)for(r=i=e;++u<o;)null!=(e=t[u])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++u<o;)if(null!=(e=n(t[u],u,t))&&e>=e)for(r=i=e;++u<o;)null!=(e=n(t[u],u,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]}function c(t){return function(){return t}}function s(t){return t}function f(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}function l(t,n,e){var r,i,o,u,a=-1;if(n=+n,t=+t,e=+e,t===n&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(u=h(t,n,e))||!isFinite(u))return[];if(u>0)for(t=Math.ceil(t/u),n=Math.floor(n/u),o=new Array(i=Math.ceil(n-t+1));++a<i;)o[a]=(t+a)*u;else for(t=Math.floor(t*u),n=Math.ceil(n*u),o=new Array(i=Math.ceil(t-n+1));++a<i;)o[a]=(t-a)/u;return r&&o.reverse(),o}function h(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Hs?10:o>=js?5:o>=Xs?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Hs?10:o>=js?5:o>=Xs?2:1)}function p(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Hs?i*=10:o>=js?i*=5:o>=Xs&&(i*=2),n<t?-i:i}function d(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function v(t,n,e){if(null==e&&(e=i),r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,o=(r-1)*n,u=Math.floor(o),a=+e(t[u],u,t);return a+(+e(t[u+1],u+1,t)-a)*(o-u)}}function g(t){for(var n,e,r,i=t.length,o=-1,u=0;++o<i;)u+=t[o].length;for(e=new Array(u);--i>=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e}function _(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&r>e&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&r>e&&(r=e);return r}function y(t){if(!(i=t.length))return[];for(var n=-1,e=_(t,m),r=new Array(e);++n<e;)for(var i,o=-1,u=r[n]=new Array(i);++o<i;)u[o]=t[o][n];return r}function m(t){return t.length}function x(t){return t}function b(t){return"translate("+(t+.5)+",0)"}function w(t){return"translate(0,"+(t+.5)+")"}function M(){return!this.__axis}function T(t,n){function e(e){var h=null==i?n.ticks?n.ticks.apply(n,r):n.domain():i,p=null==o?n.tickFormat?n.tickFormat.apply(n,r):x:o,d=Math.max(u,0)+c,v=n.range(),g=+v[0]+.5,_=+v[v.length-1]+.5,y=(n.bandwidth?function(t){var n=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(n=Math.round(n)),function(e){return+t(e)+n}}:function(t){return function(n){return+t(n)}})(n.copy()),m=e.selection?e.selection():e,b=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(h,n).order(),T=w.exit(),N=w.enter().append("g").attr("class","tick"),k=w.select("line"),S=w.select("text");b=b.merge(b.enter().insert("path",".tick").attr("class","domain").attr("stroke","#000")),w=w.merge(N),k=k.merge(N.append("line").attr("stroke","#000").attr(f+"2",s*u)),S=S.merge(N.append("text").attr("fill","#000").attr(f,s*d).attr("dy",t===$s?"0em":t===Zs?"0.71em":"0.32em")),e!==m&&(b=b.transition(e),w=w.transition(e),k=k.transition(e),S=S.transition(e),T=T.transition(e).attr("opacity",Qs).attr("transform",function(t){return isFinite(t=y(t))?l(t):this.getAttribute("transform")}),N.attr("opacity",Qs).attr("transform",function(t){var n=this.parentNode.__axis;return l(n&&isFinite(n=n(t))?n:y(t))})),T.remove(),b.attr("d",t===Gs||t==Ws?"M"+s*a+","+g+"H0.5V"+_+"H"+s*a:"M"+g+","+s*a+"V0.5H"+_+"V"+s*a),w.attr("opacity",1).attr("transform",function(t){return l(y(t))}),k.attr(f+"2",s*u),S.attr(f,s*d).text(p),m.filter(M).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Ws?"start":t===Gs?"end":"middle"),m.each(function(){this.__axis=y})}var r=[],i=null,o=null,u=6,a=6,c=3,s=t===$s||t===Gs?-1:1,f=t===Gs||t===Ws?"x":"y",l=t===$s||t===Zs?b:w;return e.scale=function(t){return arguments.length?(n=t,e):n},e.ticks=function(){return r=Vs.call(arguments),e},e.tickArguments=function(t){return arguments.length?(r=null==t?[]:Vs.call(t),e):r.slice()},e.tickValues=function(t){return arguments.length?(i=null==t?null:Vs.call(t),e):i&&i.slice()},e.tickFormat=function(t){return arguments.length?(o=t,e):o},e.tickSize=function(t){return arguments.length?(u=a=+t,e):u},e.tickSizeInner=function(t){return arguments.length?(u=+t,e):u},e.tickSizeOuter=function(t){return arguments.length?(a=+t,e):a},e.tickPadding=function(t){return arguments.length?(c=+t,e):c},e}function N(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new k(r)}function k(t){this._=t}function S(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Js,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}function E(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),tf.hasOwnProperty(n)?{space:tf[n],local:t}:t}function A(t){var n=E(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Ks&&n.documentElement.namespaceURI===Ks?n.createElement(t):n.createElementNS(e,t)}})(n)}function C(){}function z(t){return null==t?C:function(){return this.querySelector(t)}}function P(){return[]}function R(t){return null==t?P:function(){return this.querySelectorAll(t)}}function L(t){return new Array(t.length)}function q(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function D(t,n,e,r,i,o){for(var u,a=0,c=n.length,s=o.length;a<s;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new q(t,o[a]);for(;a<c;++a)(u=n[a])&&(i[a]=u)}function U(t,n,e,r,i,o,u){var a,c,s,f={},l=n.length,h=o.length,p=new Array(l);for(a=0;a<l;++a)(c=n[a])&&(p[a]=s=uf+u.call(c,c.__data__,a,n),s in f?i[a]=c:f[s]=c);for(a=0;a<h;++a)(c=f[s=uf+u.call(t,o[a],a,o)])?(r[a]=c,c.__data__=o[a],f[s]=null):e[a]=new q(t,o[a]);for(a=0;a<l;++a)(c=n[a])&&f[p[a]]===c&&(i[a]=c)}function O(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function F(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function I(t,n){return t.style.getPropertyValue(n)||F(t).getComputedStyle(t,null).getPropertyValue(n)}function Y(t){return t.trim().split(/^|\s+/)}function B(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=Y(t.getAttribute("class")||"")}function j(t,n){for(var e=B(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function X(t,n){for(var e=B(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function V(){this.textContent=""}function $(){this.innerHTML=""}function W(){this.nextSibling&&this.parentNode.appendChild(this)}function Z(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function G(){return null}function Q(){var t=this.parentNode;t&&t.removeChild(this)}function J(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function K(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}function tt(t,n,e){return t=nt(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function nt(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function et(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.capture);++i?n.length=i:delete this.__on}}}function rt(t,n,e){var r=af.hasOwnProperty(t.type)?tt:nt;return function(i,o,u){var a,c=this.__on,s=r(n,o,u);if(c)for(var f=0,l=c.length;f<l;++f)if((a=c[f]).type===t.type&&a.name===t.name)return this.removeEventListener(a.type,a.listener,a.capture),this.addEventListener(a.type,a.listener=s,a.capture=e),void(a.value=n);this.addEventListener(t.type,s,e),a={type:t.type,name:t.name,value:n,listener:s,capture:e},c?c.push(a):this.__on=[a]}}function it(n,e,r,i){var o=t.event;n.sourceEvent=t.event,t.event=n;try{return e.apply(r,i)}finally{t.event=o}}function ot(t,n,e){var r=F(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ut(t,n){this._groups=t,this._parents=n}function at(){return new ut([[document.documentElement]],cf)}function ct(t){return"string"==typeof t?new ut([[document.querySelector(t)]],[document.documentElement]):new ut([[t]],cf)}function st(){return new ft}function ft(){this._="@"+(++sf).toString(36)}function lt(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e}function ht(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}function pt(t){var n=lt();return n.changedTouches&&(n=n.changedTouches[0]),ht(t,n)}function dt(t,n,e){arguments.length<3&&(e=n,n=lt().changedTouches);for(var r,i=0,o=n?n.length:0;i<o;++i)if((r=n[i]).identifier===e)return ht(t,r);return null}function vt(){t.event.stopImmediatePropagation()}function gt(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function _t(t){var n=t.document.documentElement,e=ct(t).on("dragstart.drag",gt,!0);"onselectstart"in n?e.on("selectstart.drag",gt,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function yt(t,n){var e=t.document.documentElement,r=ct(t).on("dragstart.drag",null);n&&(r.on("click.drag",gt,!0),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}function mt(t){return function(){return t}}function xt(t,n,e,r,i,o,u,a,c,s){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=u,this.dx=a,this.dy=c,this._=s}function bt(){return!t.event.button}function wt(){return this.parentNode}function Mt(n){return null==n?{x:t.event.x,y:t.event.y}:n}function Tt(){return"ontouchstart"in this}function Nt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function kt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function St(){}function Et(t){var n;return t=(t+"").trim().toLowerCase(),(n=pf.exec(t))?(n=parseInt(n[1],16),new Rt(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=df.exec(t))?At(parseInt(n[1],16)):(n=vf.exec(t))?new Rt(n[1],n[2],n[3],1):(n=gf.exec(t))?new Rt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=_f.exec(t))?Ct(n[1],n[2],n[3],n[4]):(n=yf.exec(t))?Ct(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=mf.exec(t))?Lt(n[1],n[2]/100,n[3]/100,1):(n=xf.exec(t))?Lt(n[1],n[2]/100,n[3]/100,n[4]):bf.hasOwnProperty(t)?At(bf[t]):"transparent"===t?new Rt(NaN,NaN,NaN,0):null}function At(t){return new Rt(t>>16&255,t>>8&255,255&t,1)}function Ct(t,n,e,r){return r<=0&&(t=n=e=NaN),new Rt(t,n,e,r)}function zt(t){return t instanceof St||(t=Et(t)),t?(t=t.rgb(),new Rt(t.r,t.g,t.b,t.opacity)):new Rt}function Pt(t,n,e,r){return 1===arguments.length?zt(t):new Rt(t,n,e,null==r?1:r)}function Rt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Lt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Dt(t,n,e,r)}function qt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Dt)return new Dt(t.h,t.s,t.l,t.opacity);if(t instanceof St||(t=Et(t)),!t)return new Dt;if(t instanceof Dt)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=c<.5?o+i:2-o-i,u*=60):a=c>0&&c<1?0:u,new Dt(u,a,c,t.opacity)}(t):new Dt(t,n,e,null==r?1:r)}function Dt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ut(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Ot(t){if(t instanceof It)return new It(t.l,t.a,t.b,t.opacity);if(t instanceof Vt){var n=t.h*wf;return new It(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof Rt||(t=zt(t));var e=jt(t.r),r=jt(t.g),i=jt(t.b),o=Yt((.4124564*e+.3575761*r+.1804375*i)/Tf),u=Yt((.2126729*e+.7151522*r+.072175*i)/Nf);return new It(116*u-16,500*(o-u),200*(u-Yt((.0193339*e+.119192*r+.9503041*i)/kf)),t.opacity)}function Ft(t,n,e,r){return 1===arguments.length?Ot(t):new It(t,n,e,null==r?1:r)}function It(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Yt(t){return t>Cf?Math.pow(t,1/3):t/Af+Sf}function Bt(t){return t>Ef?t*t*t:Af*(t-Sf)}function Ht(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function jt(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Xt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Vt)return new Vt(t.h,t.c,t.l,t.opacity);t instanceof It||(t=Ot(t));var n=Math.atan2(t.b,t.a)*Mf;return new Vt(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new Vt(t,n,e,null==r?1:r)}function Vt(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function $t(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Wt)return new Wt(t.h,t.s,t.l,t.opacity);t instanceof Rt||(t=zt(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Df*r+Lf*n-qf*e)/(Df+Lf-qf),o=r-i,u=(Rf*(e-i)-zf*o)/Pf,a=Math.sqrt(u*u+o*o)/(Rf*i*(1-i)),c=a?Math.atan2(u,o)*Mf-120:NaN;return new Wt(c<0?c+360:c,a,i,t.opacity)}(t):new Wt(t,n,e,null==r?1:r)}function Wt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Zt(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function Gt(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return Zt((e-r/n)*n,u,i,o,a)}}function Qt(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return Zt((e-r/n)*n,i,o,u,a)}}function Jt(t){return function(){return t}}function Kt(t,n){return function(e){return t+e*n}}function tn(t,n){var e=n-t;return e?Kt(t,e>180||e<-180?e-360*Math.round(e/360):e):Jt(isNaN(t)?n:t)}function nn(t){return 1==(t=+t)?en:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Jt(isNaN(n)?e:n)}}function en(t,n){var e=n-t;return e?Kt(t,e):Jt(isNaN(t)?n:t)}function rn(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=Pt(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}function on(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),u=new Array(r);for(e=0;e<i;++e)o[e]=fn(t[e],n[e]);for(;e<r;++e)u[e]=n[e];return function(t){for(e=0;e<i;++e)u[e]=o[e](t);return u}}function un(t,n){var e=new Date;return t=+t,n-=t,function(r){return e.setTime(t+n*r),e}}function an(t,n){return t=+t,n-=t,function(e){return t+n*e}}function cn(t,n){var e,r={},i={};null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={});for(e in n)e in t?r[e]=fn(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}function sn(t,n){var e,r,i,o=Vf.lastIndex=$f.lastIndex=0,u=-1,a=[],c=[];for(t+="",n+="";(e=Vf.exec(t))&&(r=$f.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:an(e,r)})),o=$f.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)a[(e=c[r]).i]=e.x(t);return a.join("")})}function fn(t,n){var e,r=typeof n;return null==n||"boolean"===r?Jt(n):("number"===r?an:"string"===r?(e=Et(n))?(n=e,Hf):sn:n instanceof Et?Hf:n instanceof Date?un:Array.isArray(n)?on:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?cn:an)(t,n)}function ln(t,n){return t=+t,n-=t,function(e){return Math.round(t+n*e)}}function hn(t,n,e,r,i,o){var u,a,c;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,c/=a),t*r<n*e&&(t=-t,n=-n,c=-c,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Wf,skewX:Math.atan(c)*Wf,scaleX:u,scaleY:a}}function pn(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],c=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var c=u.push("translate(",null,n,null,e);a.push({i:c-4,x:an(t,i)},{i:c-2,x:an(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:an(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:an(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,c),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:an(t,e)},{i:a-2,x:an(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,c),o=u=null,function(t){for(var n,e=-1,r=c.length;++e<r;)a[(n=c[e]).i]=n.x(t);return a.join("")}}}function dn(t){return((t=Math.exp(t))+1/t)/2}function vn(t,n){var e,r,i=t[0],o=t[1],u=t[2],a=n[0],c=n[1],s=n[2],f=a-i,l=c-o,h=f*f+l*l;if(h<nl)r=Math.log(s/u)/Jf,e=function(t){return[i+t*f,o+t*l,u*Math.exp(Jf*t*r)]};else{var p=Math.sqrt(h),d=(s*s-u*u+tl*h)/(2*u*Kf*p),v=(s*s-u*u-tl*h)/(2*s*Kf*p),g=Math.log(Math.sqrt(d*d+1)-d),_=Math.log(Math.sqrt(v*v+1)-v);r=(_-g)/Jf,e=function(t){var n=t*r,e=dn(g),a=u/(Kf*p)*(e*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(Jf*n+g)-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+a*f,o+a*l,u*e/dn(Jf*n+g)]}}return e.duration=1e3*r,e}function gn(t){return function(n,e){var r=t((n=qt(n)).h,(e=qt(e)).h),i=en(n.s,e.s),o=en(n.l,e.l),u=en(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=u(t),n+""}}}function _n(t){return function(n,e){var r=t((n=Xt(n)).h,(e=Xt(e)).h),i=en(n.c,e.c),o=en(n.l,e.l),u=en(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=u(t),n+""}}}function yn(t){return function n(e){function r(n,r){var i=t((n=$t(n)).h,(r=$t(r)).h),o=en(n.s,r.s),u=en(n.l,r.l),a=en(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=u(Math.pow(t,e)),n.opacity=a(t),n+""}}return e=+e,r.gamma=n,r}(1)}function mn(){return pl||(gl(xn),pl=vl.now()+dl)}function xn(){pl=0}function bn(){this._call=this._time=this._next=null}function wn(t,n,e){var r=new bn;return r.restart(t,n,e),r}function Mn(){mn(),++cl;for(var t,n=Yf;n;)(t=pl-n._time)>=0&&n._call.call(null,t),n=n._next;--cl}function Tn(){pl=(hl=vl.now())+dl,cl=sl=0;try{Mn()}finally{cl=0,function(){var t,n,e=Yf,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Yf=n);Bf=t,kn(r)}(),pl=0}}function Nn(){var t=vl.now(),n=t-hl;n>ll&&(dl-=n,hl=t)}function kn(t){if(!cl){sl&&(sl=clearTimeout(sl));t-pl>24?(t<1/0&&(sl=setTimeout(Tn,t-vl.now()-dl)),fl&&(fl=clearInterval(fl))):(fl||(hl=vl.now(),fl=setInterval(Nn,ll)),cl=1,gl(Tn))}}function Sn(t,n,e){var r=new bn;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}function En(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};(function(t,n,e){function r(c){var s,f,l,h;if(e.state!==xl)return o();for(s in a)if((h=a[s]).name===e.name){if(h.state===wl)return Sn(r);h.state===Ml?(h.state=Nl,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete a[s]):+s<n&&(h.state=Nl,h.timer.stop(),delete a[s])}if(Sn(function(){e.state===wl&&(e.state=Ml,e.timer.restart(i,e.delay,e.time),i(c))}),e.state=bl,e.on.call("start",t,t.__data__,e.index,e.group),e.state===bl){for(e.state=wl,u=new Array(l=e.tween.length),s=0,f=-1;s<l;++s)(h=e.tween[s].value.call(t,t.__data__,e.index,e.group))&&(u[++f]=h);u.length=f+1}}function i(n){for(var r=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(o),e.state=Tl,1),i=-1,a=u.length;++i<a;)u[i].call(null,r);e.state===Tl&&(e.on.call("end",t,t.__data__,e.index,e.group),o())}function o(){e.state=Nl,e.timer.stop(),delete a[n];for(var r in a)return;delete t.__transition}var u,a=t.__transition;a[n]=e,e.timer=wn(function(t){e.state=xl,e.timer.restart(r,e.delay,e.time),e.delay<=t&&r(t-e.delay)},0,e.time)})(t,e,{name:n,index:r,group:i,on:_l,tween:yl,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:ml})}function An(t,n){var e=zn(t,n);if(e.state>ml)throw new Error("too late; already scheduled");return e}function Cn(t,n){var e=zn(t,n);if(e.state>bl)throw new Error("too late; already started");return e}function zn(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Pn(t,n){var e,r,i,o=t.__transition,u=!0;if(o){n=null==n?null:n+"";for(i in o)(e=o[i]).name===n?(r=e.state>bl&&e.state<Tl,e.state=Nl,e.timer.stop(),r&&e.on.call("interrupt",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}function Rn(t,n,e){var r=t._id;return t.each(function(){var t=Cn(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return zn(t,r).value[n]}}function Ln(t,n){var e;return("number"==typeof n?an:n instanceof Et?Hf:(e=Et(n))?(n=e,Hf):sn)(t,n)}function qn(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Dn(t){return at().transition(t)}function Un(){return++Sl}function On(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function Fn(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function In(t){return(1-Math.cos(Pl*t))/2}function Yn(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function Bn(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}function Hn(t){return(t=+t)<Ll?Hl*t*t:t<Dl?Hl*(t-=ql)*t+Ul:t<Fl?Hl*(t-=Ol)*t+Il:Hl*(t-=Yl)*t+Bl}function jn(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return Ql.time=mn(),Ql;return e}function Xn(t){return function(){return t}}function Vn(){t.event.stopImmediatePropagation()}function $n(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function Wn(t){return{type:t}}function Zn(){return!t.event.button}function Gn(){var t=this.ownerSVGElement||this;return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Qn(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Jn(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function Kn(n){function e(t){var e=t.property("__brush",a).selectAll(".overlay").data([Wn("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",uh.overlay).merge(e).each(function(){var t=Qn(this).extent;ct(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),t.selectAll(".selection").data([Wn("selection")]).enter().append("rect").attr("class","selection").attr("cursor",uh.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var i=t.selectAll(".handle").data(n.handles,function(t){return t.type});i.exit().remove(),i.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return uh[t.type]}),t.each(r).attr("fill","none").attr("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush touchstart.brush",u)}function r(){var t=ct(this),n=Qn(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-h/2:n[0][0]-h/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-h/2:n[0][1]-h/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+h:h}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+h:h})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function i(t,n){return t.__brush.emitter||new o(t,n)}function o(t,n){this.that=t,this.args=n,this.state=t.__brush,this.active=0}function u(){function e(){var t=pt(w);!L||x||b||(Math.abs(t[0]-D[0])>Math.abs(t[1]-D[1])?b=!0:x=!0),D=t,m=!0,$n(),o()}function o(){var t;switch(_=D[0]-q[0],y=D[1]-q[1],T){case th:case Kl:N&&(_=Math.max(C-a,Math.min(P-p,_)),s=a+_,d=p+_),k&&(y=Math.max(z-l,Math.min(R-v,y)),h=l+y,g=v+y);break;case nh:N<0?(_=Math.max(C-a,Math.min(P-a,_)),s=a+_,d=p):N>0&&(_=Math.max(C-p,Math.min(P-p,_)),s=a,d=p+_),k<0?(y=Math.max(z-l,Math.min(R-l,y)),h=l+y,g=v):k>0&&(y=Math.max(z-v,Math.min(R-v,y)),h=l,g=v+y);break;case eh:N&&(s=Math.max(C,Math.min(P,a-_*N)),d=Math.max(C,Math.min(P,p+_*N))),k&&(h=Math.max(z,Math.min(R,l-y*k)),g=Math.max(z,Math.min(R,v+y*k)))}d<s&&(N*=-1,t=a,a=p,p=t,t=s,s=d,d=t,M in ah&&F.attr("cursor",uh[M=ah[M]])),g<h&&(k*=-1,t=l,l=v,v=t,t=h,h=g,g=t,M in ch&&F.attr("cursor",uh[M=ch[M]])),S.selection&&(A=S.selection),x&&(s=A[0][0],d=A[1][0]),b&&(h=A[0][1],g=A[1][1]),A[0][0]===s&&A[0][1]===h&&A[1][0]===d&&A[1][1]===g||(S.selection=[[s,h],[d,g]],r.call(w),U.brush())}function u(){if(Vn(),t.event.touches){if(t.event.touches.length)return;c&&clearTimeout(c),c=setTimeout(function(){c=null},500),O.on("touchmove.brush touchend.brush touchcancel.brush",null)}else yt(t.event.view,m),I.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);O.attr("pointer-events","all"),F.attr("cursor",uh.overlay),S.selection&&(A=S.selection),Jn(A)&&(S.selection=null,r.call(w)),U.end()}if(t.event.touches){if(t.event.changedTouches.length<t.event.touches.length)return $n()}else if(c)return;if(f.apply(this,arguments)){var a,s,l,h,p,d,v,g,_,y,m,x,b,w=this,M=t.event.target.__data__.type,T="selection"===(t.event.metaKey?M="overlay":M)?Kl:t.event.altKey?eh:nh,N=n===ih?null:sh[M],k=n===rh?null:fh[M],S=Qn(w),E=S.extent,A=S.selection,C=E[0][0],z=E[0][1],P=E[1][0],R=E[1][1],L=N&&k&&t.event.shiftKey,q=pt(w),D=q,U=i(w,arguments).beforestart();"overlay"===M?S.selection=A=[[a=n===ih?C:q[0],l=n===rh?z:q[1]],[p=n===ih?P:a,v=n===rh?R:l]]:(a=A[0][0],l=A[0][1],p=A[1][0],v=A[1][1]),s=a,h=l,d=p,g=v;var O=ct(w).attr("pointer-events","none"),F=O.selectAll(".overlay").attr("cursor",uh[M]);if(t.event.touches)O.on("touchmove.brush",e,!0).on("touchend.brush touchcancel.brush",u,!0);else{var I=ct(t.event.view).on("keydown.brush",function(){switch(t.event.keyCode){case 16:L=N&&k;break;case 18:T===nh&&(N&&(p=d-_*N,a=s+_*N),k&&(v=g-y*k,l=h+y*k),T=eh,o());break;case 32:T!==nh&&T!==eh||(N<0?p=d-_:N>0&&(a=s-_),k<0?v=g-y:k>0&&(l=h-y),T=th,F.attr("cursor",uh.selection),o());break;default:return}$n()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:L&&(x=b=L=!1,o());break;case 18:T===eh&&(N<0?p=d:N>0&&(a=s),k<0?v=g:k>0&&(l=h),T=nh,o());break;case 32:T===th&&(t.event.altKey?(N&&(p=d-_*N,a=s+_*N),k&&(v=g-y*k,l=h+y*k),T=eh):(N<0?p=d:N>0&&(a=s),k<0?v=g:k>0&&(l=h),T=nh),F.attr("cursor",uh[M]),o());break;default:return}$n()},!0).on("mousemove.brush",e,!0).on("mouseup.brush",u,!0);_t(t.event.view)}Vn(),Pn(w),r.call(w),U.start()}}function a(){var t=this.__brush||{selection:null};return t.extent=s.apply(this,arguments),t.dim=n,t}var c,s=Gn,f=Zn,l=N(e,"start","brush","end"),h=6;return e.move=function(t,e){t.selection?t.on("start.brush",function(){i(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){i(this,arguments).end()}).tween("brush",function(){function t(t){u.selection=1===t&&Jn(s)?null:f(t),r.call(o),a.brush()}var o=this,u=o.__brush,a=i(o,arguments),c=u.selection,s=n.input("function"==typeof e?e.apply(this,arguments):e,u.extent),f=fn(c,s);return c&&s?t:t(1)}):t.each(function(){var t=arguments,o=this.__brush,u=n.input("function"==typeof e?e.apply(this,t):e,o.extent),a=i(this,t).beforestart();Pn(this),o.selection=null==u||Jn(u)?null:u,r.call(this),a.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){it(new function(t,n,e){this.target=t,this.type=n,this.selection=e}(e,t,n.output(this.state.selection)),l.apply,l,[t,this.that,this.args])}},e.extent=function(t){return arguments.length?(s="function"==typeof t?t:Xn([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):s},e.filter=function(t){return arguments.length?(f="function"==typeof t?t:Xn(!!t),e):f},e.handleSize=function(t){return arguments.length?(h=+t,e):h},e.on=function(){var t=l.on.apply(l,arguments);return t===l?e:t},e}function te(t){return function(){return t}}function ne(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function ee(){return new ne}function re(t){return t.source}function ie(t){return t.target}function oe(t){return t.radius}function ue(t){return t.startAngle}function ae(t){return t.endAngle}function ce(){}function se(t,n){var e=new ce;if(t instanceof ce)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i<o;)e.set(i,t[i]);else for(;++i<o;)e.set(n(r=t[i],i,t),r)}else if(t)for(var u in t)e.set(u,t[u]);return e}function fe(){return{}}function le(t,n,e){t[n]=e}function he(){return se()}function pe(t,n,e){t.set(n,e)}function de(){}function ve(t,n){var e=new de;if(t instanceof de)t.each(function(t){e.add(t)});else if(t){var r=-1,i=t.length;if(null==n)for(;++r<i;)e.add(t[r]);else for(;++r<i;)e.add(n(t[r],r,t))}return e}function ge(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}")}function _e(t){function n(t,n){function e(){if(s)return Mh;if(f)return f=!1,wh;var n,e,r=a;if(t.charCodeAt(r)===Th){for(;a++<u&&t.charCodeAt(a)!==Th||t.charCodeAt(++a)===Th;);return(n=a)>=u?s=!0:(e=t.charCodeAt(a++))===Nh?f=!0:e===kh&&(f=!0,t.charCodeAt(a)===Nh&&++a),t.slice(r+1,n-1).replace(/""/g,'"')}for(;a<u;){if((e=t.charCodeAt(n=a++))===Nh)f=!0;else if(e===kh)f=!0,t.charCodeAt(a)===Nh&&++a;else if(e!==o)continue;return t.slice(r,n)}return s=!0,t.slice(r,u)}var r,i=[],u=t.length,a=0,c=0,s=u<=0,f=!1;for(t.charCodeAt(u-1)===Nh&&--u,t.charCodeAt(u-1)===kh&&--u;(r=e())!==Mh;){for(var l=[];r!==wh&&r!==Mh;)l.push(r),r=e();n&&null==(l=n(l,c++))||i.push(l)}return i}function e(n){return n.map(r).join(t)}function r(t){return null==t?"":i.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}var i=new RegExp('["'+t+"\n\r]"),o=t.charCodeAt(0);return{parse:function(t,e){var r,i,o=n(t,function(t,n){if(r)return r(t,n-1);i=t,r=e?function(t,n){var e=ge(t);return function(r,i){return n(e(r),i,t)}}(t,e):ge(t)});return o.columns=i||[],o},parseRows:n,format:function(n,e){return null==e&&(e=function(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}(n)),[e.map(r).join(t)].concat(n.map(function(n){return e.map(function(t){return r(n[t])}).join(t)})).join("\n")},formatRows:function(t){return t.map(e).join("\n")}}}function ye(t){return function(){return t}}function me(){return 1e-6*(Math.random()-.5)}function xe(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,u,a,c,s,f,l,h,p=t._root,d={data:r},v=t._x0,g=t._y0,_=t._x1,y=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((s=n>=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u}while((l=f<<1|s)==(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function be(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function we(t){return t[0]}function Me(t){return t[1]}function Te(t,n,e){var r=new Ne(null==n?we:n,null==e?Me:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ne(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ke(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}function Se(t){return t.x+t.vx}function Ee(t){return t.y+t.vy}function Ae(t){return t.index}function Ce(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function ze(t){return t.x}function Pe(t){return t.y}function Re(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Le(t){return(t=Re(Math.abs(t)))?t[1]:NaN}function qe(t,n){var e=Re(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}function De(t){return new Ue(t)}function Ue(t){if(!(n=Bh.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Yh[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function Oe(t){return t}function Fe(t){function n(t){function n(t){var n,r,u,f=g,x=_;if("c"===v)x=y(t)+x,t="";else{var b=(t=+t)<0;if(t=y(Math.abs(t),d),b&&0==+t&&(b=!1),f=(b?"("===s?s:"-":"-"===s||"("===s?"":s)+f,x=("s"===v?jh[8+Oh/3]:"")+x+(b&&"("===s?")":""),m)for(n=-1,r=t.length;++n<r;)if(48>(u=t.charCodeAt(n))||u>57){x=(46===u?i+t.slice(n+1):t.slice(n))+x,t=t.slice(0,n);break}}p&&!l&&(t=e(t,1/0));var w=f.length+t.length+x.length,M=w<h?new Array(h-w+1).join(a):"";switch(p&&l&&(t=e(M+t,M.length?h-x.length:1/0),M=""),c){case"<":t=f+t+x+M;break;case"=":t=f+M+t+x;break;case"^":t=M.slice(0,w=M.length>>1)+f+t+x+M.slice(w);break;default:t=M+f+t+x}return o(t)}var a=(t=De(t)).fill,c=t.align,s=t.sign,f=t.symbol,l=t.zero,h=t.width,p=t.comma,d=t.precision,v=t.type,g="$"===f?r[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?r[1]:/[%p]/.test(v)?u:"",y=Yh[v],m=!v||/[defgprs%]/.test(v);return d=null==d?v?6:12:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}var e=t.grouping&&t.thousands?function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}}(t.grouping,t.thousands):Oe,r=t.currency,i=t.decimal,o=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):Oe,u=t.percent||"%";return{format:n,formatPrefix:function(t,e){var r=n((t=De(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Le(e)/3))),o=Math.pow(10,-i),u=jh[8+i/3];return function(t){return r(o*t)+u}}}}function Ie(n){return Hh=Fe(n),t.format=Hh.format,t.formatPrefix=Hh.formatPrefix,Hh}function Ye(t){return Math.max(0,-Le(Math.abs(t)))}function Be(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Le(n)/3)))-Le(Math.abs(t)))}function He(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Le(n)-Le(t))+1}function je(){return new Xe}function Xe(){this.reset()}function Ve(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function $e(t){return t>1?0:t<-1?Np:Math.acos(t)}function We(t){return t>1?kp:t<-1?-kp:Math.asin(t)}function Ze(t){return(t=Fp(t/2))*t}function Ge(){}function Qe(t,n){t&&jp.hasOwnProperty(t.type)&&jp[t.type](t,n)}function Je(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Ke(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Je(t[e],n,1);n.polygonEnd()}function tr(t,n){t&&Hp.hasOwnProperty(t.type)?Hp[t.type](t,n):Qe(t,n)}function nr(){$p.point=rr}function er(){ir(Xh,Vh)}function rr(t,n){$p.point=ir,Xh=t,Vh=n,$h=t*=Cp,Wh=Lp(n=(n*=Cp)/2+Sp),Zh=Fp(n)}function ir(t,n){n=(n*=Cp)/2+Sp;var e=(t*=Cp)-$h,r=e>=0?1:-1,i=r*e,o=Lp(n),u=Fp(n),a=Zh*u,c=Wh*o+a*Lp(i),s=a*r*Fp(i);Xp.add(Rp(s,c)),$h=t,Wh=o,Zh=u}function or(t){return[Rp(t[1],t[0]),We(t[2])]}function ur(t){var n=t[0],e=t[1],r=Lp(e);return[r*Lp(n),r*Fp(n),Fp(e)]}function ar(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function cr(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function sr(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function fr(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function lr(t){var n=Yp(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function hr(t,n){ip.push(op=[Gh=t,Jh=t]),n<Qh&&(Qh=n),n>Kh&&(Kh=n)}function pr(t,n){var e=ur([t*Cp,n*Cp]);if(rp){var r=cr(rp,e),i=cr([r[1],-r[0],0],r);lr(i),i=or(i);var o,u=t-tp,a=u>0?1:-1,c=i[0]*Ap*a,s=zp(u)>180;s^(a*tp<c&&c<a*t)?(o=i[1]*Ap)>Kh&&(Kh=o):(c=(c+360)%360-180,s^(a*tp<c&&c<a*t)?(o=-i[1]*Ap)<Qh&&(Qh=o):(n<Qh&&(Qh=n),n>Kh&&(Kh=n))),s?t<tp?mr(Gh,t)>mr(Gh,Jh)&&(Jh=t):mr(t,Jh)>mr(Gh,Jh)&&(Gh=t):Jh>=Gh?(t<Gh&&(Gh=t),t>Jh&&(Jh=t)):t>tp?mr(Gh,t)>mr(Gh,Jh)&&(Jh=t):mr(t,Jh)>mr(Gh,Jh)&&(Gh=t)}else ip.push(op=[Gh=t,Jh=t]);n<Qh&&(Qh=n),n>Kh&&(Kh=n),rp=e,tp=t}function dr(){Zp.point=pr}function vr(){op[0]=Gh,op[1]=Jh,Zp.point=hr,rp=null}function gr(t,n){if(rp){var e=t-tp;Wp.add(zp(e)>180?e+(e>0?360:-360):e)}else np=t,ep=n;$p.point(t,n),pr(t,n)}function _r(){$p.lineStart()}function yr(){gr(np,ep),$p.lineEnd(),zp(Wp)>Mp&&(Gh=-(Jh=180)),op[0]=Gh,op[1]=Jh,rp=null}function mr(t,n){return(n-=t)<0?n+360:n}function xr(t,n){return t[0]-n[0]}function br(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}function wr(t,n){t*=Cp;var e=Lp(n*=Cp);Mr(e*Lp(t),e*Fp(t),Fp(n))}function Mr(t,n,e){cp+=(t-cp)/++up,sp+=(n-sp)/up,fp+=(e-fp)/up}function Tr(){Gp.point=Nr}function Nr(t,n){t*=Cp;var e=Lp(n*=Cp);mp=e*Lp(t),xp=e*Fp(t),bp=Fp(n),Gp.point=kr,Mr(mp,xp,bp)}function kr(t,n){t*=Cp;var e=Lp(n*=Cp),r=e*Lp(t),i=e*Fp(t),o=Fp(n),u=Rp(Yp((u=xp*o-bp*i)*u+(u=bp*r-mp*o)*u+(u=mp*i-xp*r)*u),mp*r+xp*i+bp*o);ap+=u,lp+=u*(mp+(mp=r)),hp+=u*(xp+(xp=i)),pp+=u*(bp+(bp=o)),Mr(mp,xp,bp)}function Sr(){Gp.point=wr}function Er(){Gp.point=Cr}function Ar(){zr(_p,yp),Gp.point=wr}function Cr(t,n){_p=t,yp=n,t*=Cp,n*=Cp,Gp.point=zr;var e=Lp(n);mp=e*Lp(t),xp=e*Fp(t),bp=Fp(n),Mr(mp,xp,bp)}function zr(t,n){t*=Cp;var e=Lp(n*=Cp),r=e*Lp(t),i=e*Fp(t),o=Fp(n),u=xp*o-bp*i,a=bp*r-mp*o,c=mp*i-xp*r,s=Yp(u*u+a*a+c*c),f=We(s),l=s&&-f/s;dp+=l*u,vp+=l*a,gp+=l*c,ap+=f,lp+=f*(mp+(mp=r)),hp+=f*(xp+(xp=i)),pp+=f*(bp+(bp=o)),Mr(mp,xp,bp)}function Pr(t){return function(){return t}}function Rr(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function Lr(t,n){return[t>Np?t-Ep:t<-Np?t+Ep:t,n]}function qr(t,n,e){return(t%=Ep)?n||e?Rr(Ur(t),Or(n,e)):Ur(t):n||e?Or(n,e):Lr}function Dr(t){return function(n,e){return n+=t,[n>Np?n-Ep:n<-Np?n+Ep:n,e]}}function Ur(t){var n=Dr(t);return n.invert=Dr(-t),n}function Or(t,n){function e(t,n){var e=Lp(n),a=Lp(t)*e,c=Fp(t)*e,s=Fp(n),f=s*r+a*i;return[Rp(c*o-f*u,a*r-s*i),We(f*o+c*u)]}var r=Lp(t),i=Fp(t),o=Lp(n),u=Fp(n);return e.invert=function(t,n){var e=Lp(n),a=Lp(t)*e,c=Fp(t)*e,s=Fp(n),f=s*o-c*u;return[Rp(c*o+s*u,a*r+f*i),We(f*r-a*i)]},e}function Fr(t){function n(n){return n=t(n[0]*Cp,n[1]*Cp),n[0]*=Ap,n[1]*=Ap,n}return t=qr(t[0]*Cp,t[1]*Cp,t.length>2?t[2]*Cp:0),n.invert=function(n){return n=t.invert(n[0]*Cp,n[1]*Cp),n[0]*=Ap,n[1]*=Ap,n},n}function Ir(t,n,e,r,i,o){if(e){var u=Lp(n),a=Fp(n),c=r*e;null==i?(i=n+r*Ep,o=n-c/2):(i=Yr(u,i),o=Yr(u,o),(r>0?i<o:i>o)&&(i+=r*Ep));for(var s,f=i;r>0?f>o:f<o;f-=c)s=or([u,-a*Lp(f),-a*Fp(f)]),t.point(s[0],s[1])}}function Yr(t,n){(n=ur(n))[0]-=t,lr(n);var e=$e(-n[1]);return((-n[2]<0?-e:e)+Ep-Mp)%Ep}function Br(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:Ge,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Hr(t,n){return zp(t[0]-n[0])<Mp&&zp(t[1]-n[1])<Mp}function jr(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Xr(t,n,e,r,i){var o,u,a=[],c=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],u=t[n];if(Hr(r,u)){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else a.push(e=new jr(r,t,null,!0)),c.push(e.o=new jr(r,null,e,!1)),a.push(e=new jr(u,t,null,!1)),c.push(e.o=new jr(u,null,e,!0))}}),a.length){for(c.sort(n),Vr(a),Vr(c),o=0,u=c.length;o<u;++o)c[o].e=e=!e;for(var s,f,l=a[0];;){for(var h=l,p=!0;h.v;)if((h=h.n)===l)return;s=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(p)for(o=0,u=s.length;o<u;++o)i.point((f=s[o])[0],f[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(p)for(s=h.p.z,o=s.length-1;o>=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}s=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}}function Vr(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function $r(t,n){var e=n[0],r=n[1],i=[Fp(e),-Lp(e),0],o=0,u=0;cd.reset();for(var a=0,c=t.length;a<c;++a)if(f=(s=t[a]).length)for(var s,f,l=s[f-1],h=l[0],p=l[1]/2+Sp,d=Fp(p),v=Lp(p),g=0;g<f;++g,h=y,d=x,v=b,l=_){var _=s[g],y=_[0],m=_[1]/2+Sp,x=Fp(m),b=Lp(m),w=y-h,M=w>=0?1:-1,T=M*w,N=T>Np,k=d*x;if(cd.add(Rp(k*M*Fp(T),v*b+k*Lp(T))),o+=N?w+M*Ep:w,N^h>=e^y>=e){var S=cr(ur(l),ur(_));lr(S);var E=cr(i,S);lr(E);var A=(N^w>=0?-1:1)*We(E[2]);(r>A||r===A&&(S[0]||S[1]))&&(u+=N^w>=0?1:-1)}}return(o<-Mp||o<Mp&&cd<-Mp)^1&u}function Wr(t,n,e,r){return function(i){function o(n,e){t(n,e)&&i.point(n,e)}function u(t,n){v.point(t,n)}function a(){x.point=u,v.lineStart()}function c(){x.point=o,v.lineEnd()}function s(t,n){d.push([t,n]),y.point(t,n)}function f(){y.lineStart(),d=[]}function l(){s(d[0][0],d[0][1]),y.lineEnd();var t,n,e,r,o=y.clean(),u=_.result(),a=u.length;if(d.pop(),h.push(d),d=null,a)if(1&o){if(e=u[0],(n=e.length-1)>0){for(m||(i.polygonStart(),m=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else a>1&&2&o&&u.push(u.pop().concat(u.shift())),p.push(u.filter(Zr))}var h,p,d,v=n(i),_=Br(),y=n(_),m=!1,x={point:o,lineStart:a,lineEnd:c,polygonStart:function(){x.point=s,x.lineStart=f,x.lineEnd=l,p=[],h=[]},polygonEnd:function(){x.point=o,x.lineStart=a,x.lineEnd=c,p=g(p);var t=$r(h,r);p.length?(m||(i.polygonStart(),m=!0),Xr(p,Gr,t,e,i)):t&&(m||(i.polygonStart(),m=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),m&&(i.polygonEnd(),m=!1),p=h=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};return x}}function Zr(t){return t.length>1}function Gr(t,n){return((t=t.x)[0]<0?t[1]-kp-Mp:kp-t[1])-((n=n.x)[0]<0?n[1]-kp-Mp:kp-n[1])}function Qr(t){function n(t,n){return Lp(t)*Lp(n)>i}function e(t,n,e){var r=[1,0,0],o=cr(ur(t),ur(n)),u=ar(o,o),a=o[0],c=u-a*a;if(!c)return!e&&t;var s=i*u/c,f=-i*a/c,l=cr(r,o),h=fr(r,s);sr(h,fr(o,f));var p=l,d=ar(h,p),v=ar(p,p),g=d*d-v*(ar(h,h)-1);if(!(g<0)){var _=Yp(g),y=fr(p,(-d-_)/v);if(sr(y,h),y=or(y),!e)return y;var m,x=t[0],b=n[0],w=t[1],M=n[1];b<x&&(m=x,x=b,b=m);var T=b-x,N=zp(T-Np)<Mp;if(!N&&M<w&&(m=w,w=M,M=m),N||T<Mp?N?w+M>0^y[1]<(zp(y[0]-x)<Mp?w:M):w<=y[1]&&y[1]<=M:T>Np^(x<=y[0]&&y[0]<=b)){var k=fr(p,(-d+_)/v);return sr(k,h),[y,or(k)]}}}function r(n,e){var r=u?t:Np-t,i=0;return n<-r?i|=1:n>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var i=Lp(t),o=6*Cp,u=i>0,a=zp(i)>Mp;return Wr(n,function(t){var i,o,c,s,f;return{lineStart:function(){s=c=!1,f=1},point:function(l,h){var p,d=[l,h],v=n(l,h),g=u?v?0:r(l,h):v?r(l+(l<0?Np:-Np),h):0;if(!i&&(s=c=v)&&t.lineStart(),v!==c&&(!(p=e(i,d))||Hr(i,p)||Hr(d,p))&&(d[0]+=Mp,d[1]+=Mp,v=n(d[0],d[1])),v!==c)f=0,v?(t.lineStart(),p=e(d,i),t.point(p[0],p[1])):(p=e(i,d),t.point(p[0],p[1]),t.lineEnd()),i=p;else if(a&&i&&u^v){var _;g&o||!(_=e(d,i,!0))||(f=0,u?(t.lineStart(),t.point(_[0][0],_[0][1]),t.point(_[1][0],_[1][1]),t.lineEnd()):(t.point(_[1][0],_[1][1]),t.lineEnd(),t.lineStart(),t.point(_[0][0],_[0][1])))}!v||i&&Hr(i,d)||t.point(d[0],d[1]),i=d,c=v,o=g},lineEnd:function(){c&&t.lineEnd(),i=null},clean:function(){return f|(s&&c)<<1}}},function(n,e,r,i){Ir(i,t,o,r,n,e)},u?[0,-t]:[-Np,t-Np])}function Jr(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,a,s){var f=0,l=0;if(null==i||(f=u(i,a))!==(l=u(o,a))||c(i,o)<0^a>0)do{s.point(0===f||3===f?t:e,f>1?r:n)}while((f=(f+a+4)%4)!==l);else s.point(o[0],o[1])}function u(r,i){return zp(r[0]-t)<Mp?i>0?0:3:zp(r[0]-e)<Mp?i>0?2:1:zp(r[1]-n)<Mp?i>0?1:0:i>0?3:2}function a(t,n){return c(t.x,n.x)}function c(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){function c(t,n){i(t,n)&&w.point(t,n)}function s(o,u){var a=i(o,u);if(l&&h.push([o,u]),x)p=o,d=u,v=a,x=!1,a&&(w.lineStart(),w.point(o,u));else if(a&&m)w.point(o,u);else{var c=[_=Math.max(ld,Math.min(fd,_)),y=Math.max(ld,Math.min(fd,y))],s=[o=Math.max(ld,Math.min(fd,o)),u=Math.max(ld,Math.min(fd,u))];!function(t,n,e,r,i,o){var u,a=t[0],c=t[1],s=0,f=1,l=n[0]-a,h=n[1]-c;if(u=e-a,l||!(u>0)){if(u/=l,l<0){if(u<s)return;u<f&&(f=u)}else if(l>0){if(u>f)return;u>s&&(s=u)}if(u=i-a,l||!(u<0)){if(u/=l,l<0){if(u>f)return;u>s&&(s=u)}else if(l>0){if(u<s)return;u<f&&(f=u)}if(u=r-c,h||!(u>0)){if(u/=h,h<0){if(u<s)return;u<f&&(f=u)}else if(h>0){if(u>f)return;u>s&&(s=u)}if(u=o-c,h||!(u<0)){if(u/=h,h<0){if(u>f)return;u>s&&(s=u)}else if(h>0){if(u<s)return;u<f&&(f=u)}return s>0&&(t[0]=a+s*l,t[1]=c+s*h),f<1&&(n[0]=a+f*l,n[1]=c+f*h),!0}}}}}(c,s,t,n,e,r)?a&&(w.lineStart(),w.point(o,u),b=!1):(m||(w.lineStart(),w.point(c[0],c[1])),w.point(s[0],s[1]),a||w.lineEnd(),b=!1)}_=o,y=u,m=a}var f,l,h,p,d,v,_,y,m,x,b,w=u,M=Br(),T={point:c,lineStart:function(){T.point=s,l&&l.push(h=[]),x=!0,m=!1,_=y=NaN},lineEnd:function(){f&&(s(p,d),v&&m&&M.rejoin(),f.push(M.result())),T.point=c,m&&w.lineEnd()},polygonStart:function(){w=M,f=[],l=[],b=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=l.length;e<i;++e)for(var o,u,a=l[e],c=1,s=a.length,f=a[0],h=f[0],p=f[1];c<s;++c)o=h,u=p,h=(f=a[c])[0],p=f[1],u<=r?p>r&&(h-o)*(r-u)>(p-u)*(t-o)&&++n:p<=r&&(h-o)*(r-u)<(p-u)*(t-o)&&--n;return n}(),e=b&&n,i=(f=g(f)).length;(e||i)&&(u.polygonStart(),e&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),i&&Xr(f,a,n,o,u),u.polygonEnd()),w=u,f=l=h=null}};return T}}function Kr(){pd.point=pd.lineEnd=Ge}function ti(t,n){Qp=t*=Cp,Jp=Fp(n*=Cp),Kp=Lp(n),pd.point=ni}function ni(t,n){t*=Cp;var e=Fp(n*=Cp),r=Lp(n),i=zp(t-Qp),o=Lp(i),u=r*Fp(i),a=Kp*e-Jp*r*o,c=Jp*e+Kp*r*o;hd.add(Rp(Yp(u*u+a*a),c)),Qp=t,Jp=e,Kp=r}function ei(t){return hd.reset(),tr(t,pd),+hd}function ri(t,n){return dd[0]=t,dd[1]=n,ei(vd)}function ii(t,n){return!(!t||!_d.hasOwnProperty(t.type))&&_d[t.type](t,n)}function oi(t,n){return 0===ri(t,n)}function ui(t,n){var e=ri(t[0],t[1]);return ri(t[0],n)+ri(n,t[1])<=e+Mp}function ai(t,n){return!!$r(t.map(ci),si(n))}function ci(t){return(t=t.map(si)).pop(),t}function si(t){return[t[0]*Cp,t[1]*Cp]}function fi(t,n,e){var r=f(t,n-Mp,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function li(t,n,e){var r=f(t,n-Mp,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function hi(){function t(){return{type:"MultiLineString",coordinates:n()}}function n(){return f(qp(o/_)*_,i,_).map(p).concat(f(qp(s/y)*y,c,y).map(d)).concat(f(qp(r/v)*v,e,v).filter(function(t){return zp(t%_)>Mp}).map(l)).concat(f(qp(a/g)*g,u,g).filter(function(t){return zp(t%y)>Mp}).map(h))}var e,r,i,o,u,a,c,s,l,h,p,d,v=10,g=v,_=90,y=360,m=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[p(o).concat(d(c).slice(1),p(i).reverse().slice(1),d(s).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(o=+n[0][0],i=+n[1][0],s=+n[0][1],c=+n[1][1],o>i&&(n=o,o=i,i=n),s>c&&(n=s,s=c,c=n),t.precision(m)):[[o,s],[i,c]]},t.extentMinor=function(n){return arguments.length?(r=+n[0][0],e=+n[1][0],a=+n[0][1],u=+n[1][1],r>e&&(n=r,r=e,e=n),a>u&&(n=a,a=u,u=n),t.precision(m)):[[r,a],[e,u]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(_=+n[0],y=+n[1],t):[_,y]},t.stepMinor=function(n){return arguments.length?(v=+n[0],g=+n[1],t):[v,g]},t.precision=function(n){return arguments.length?(m=+n,l=fi(a,u,90),h=li(r,e,m),p=fi(s,c,90),d=li(o,i,m),t):m},t.extentMajor([[-180,-90+Mp],[180,90-Mp]]).extentMinor([[-180,-80-Mp],[180,80+Mp]])}function pi(t){return t}function di(){xd.point=vi}function vi(t,n){xd.point=gi,td=ed=t,nd=rd=n}function gi(t,n){md.add(rd*t-ed*n),ed=t,rd=n}function _i(){gi(td,nd)}function yi(t,n){kd+=t,Sd+=n,++Ed}function mi(){qd.point=xi}function xi(t,n){qd.point=bi,yi(ud=t,ad=n)}function bi(t,n){var e=t-ud,r=n-ad,i=Yp(e*e+r*r);Ad+=i*(ud+t)/2,Cd+=i*(ad+n)/2,zd+=i,yi(ud=t,ad=n)}function wi(){qd.point=yi}function Mi(){qd.point=Ni}function Ti(){ki(id,od)}function Ni(t,n){qd.point=ki,yi(id=ud=t,od=ad=n)}function ki(t,n){var e=t-ud,r=n-ad,i=Yp(e*e+r*r);Ad+=i*(ud+t)/2,Cd+=i*(ad+n)/2,zd+=i,Pd+=(i=ad*t-ud*n)*(ud+t),Rd+=i*(ad+n),Ld+=3*i,yi(ud=t,ad=n)}function Si(t){this._context=t}function Ei(t,n){Bd.point=Ai,Ud=Fd=t,Od=Id=n}function Ai(t,n){Fd-=t,Id-=n,Yd.add(Yp(Fd*Fd+Id*Id)),Fd=t,Id=n}function Ci(){this._string=[]}function zi(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Pi(t){return function(n){var e=new Ri;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Ri(){}function Li(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),tr(e,t.stream(Nd)),n(Nd.result()),null!=r&&t.clipExtent(r),t}function qi(t,n,e){return Li(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),u=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,a=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([u,a])},e)}function Di(t,n,e){return qi(t,[[0,0],n],e)}function Ui(t,n,e){return Li(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,u=-i*e[0][1];t.scale(150*i).translate([o,u])},e)}function Oi(t,n,e){return Li(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],u=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,u])},e)}function Fi(t,n){return+n?function(t,n){function e(r,i,o,u,a,c,s,f,l,h,p,d,v,g){var _=s-r,y=f-i,m=_*_+y*y;if(m>4*n&&v--){var x=u+h,b=a+p,w=c+d,M=Yp(x*x+b*b+w*w),T=We(w/=M),N=zp(zp(w)-1)<Mp||zp(o-l)<Mp?(o+l)/2:Rp(b,x),k=t(N,T),S=k[0],E=k[1],A=S-r,C=E-i,z=y*A-_*C;(z*z/m>n||zp((_*A+y*C)/m-.5)>.3||u*h+a*p+c*d<jd)&&(e(r,i,o,u,a,c,S,E,N,x/=M,b/=M,w,v,g),g.point(S,E),e(S,E,N,x,b,w,s,f,l,h,p,d,v,g))}}return function(n){function r(e,r){e=t(e,r),n.point(e[0],e[1])}function i(){_=NaN,w.point=o,n.lineStart()}function o(r,i){var o=ur([r,i]),u=t(r,i);e(_,y,g,m,x,b,_=u[0],y=u[1],g=r,m=o[0],x=o[1],b=o[2],Hd,n),n.point(_,y)}function u(){w.point=r,n.lineEnd()}function a(){i(),w.point=c,w.lineEnd=s}function c(t,n){o(f=t,n),l=_,h=y,p=m,d=x,v=b,w.point=o}function s(){e(_,y,g,m,x,b,l,h,f,p,d,v,Hd,n),w.lineEnd=u,u()}var f,l,h,p,d,v,g,_,y,m,x,b,w={point:r,lineStart:i,lineEnd:u,polygonStart:function(){n.polygonStart(),w.lineStart=a},polygonEnd:function(){n.polygonEnd(),w.lineStart=i}};return w}}(t,n):function(t){return Pi({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}function Ii(t){return Yi(function(){return t})()}function Yi(t){function n(t){return t=s(t[0]*Cp,t[1]*Cp),[t[0]*v+u,a-t[1]*v]}function e(t,n){return t=o(t,n),[t[0]*v+u,a-t[1]*v]}function r(){s=Rr(c=qr(x,b,w),o);var t=o(y,m);return u=g-t[0]*v,a=_+t[1]*v,i()}function i(){return p=d=null,n}var o,u,a,c,s,f,l,h,p,d,v=150,g=480,_=250,y=0,m=0,x=0,b=0,w=0,M=null,T=sd,N=null,k=pi,S=.5,E=Fi(e,S);return n.stream=function(t){return p&&d===t?p:p=Xd(function(t){return Pi({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(c)(T(E(k(d=t)))))},n.preclip=function(t){return arguments.length?(T=t,M=void 0,i()):T},n.postclip=function(t){return arguments.length?(k=t,N=f=l=h=null,i()):k},n.clipAngle=function(t){return arguments.length?(T=+t?Qr(M=t*Cp):(M=null,sd),i()):M*Ap},n.clipExtent=function(t){return arguments.length?(k=null==t?(N=f=l=h=null,pi):Jr(N=+t[0][0],f=+t[0][1],l=+t[1][0],h=+t[1][1]),i()):null==N?null:[[N,f],[l,h]]},n.scale=function(t){return arguments.length?(v=+t,r()):v},n.translate=function(t){return arguments.length?(g=+t[0],_=+t[1],r()):[g,_]},n.center=function(t){return arguments.length?(y=t[0]%360*Cp,m=t[1]%360*Cp,r()):[y*Ap,m*Ap]},n.rotate=function(t){return arguments.length?(x=t[0]%360*Cp,b=t[1]%360*Cp,w=t.length>2?t[2]%360*Cp:0,r()):[x*Ap,b*Ap,w*Ap]},n.precision=function(t){return arguments.length?(E=Fi(e,S=t*t),i()):Yp(S)},n.fitExtent=function(t,e){return qi(n,t,e)},n.fitSize=function(t,e){return Di(n,t,e)},n.fitWidth=function(t,e){return Ui(n,t,e)},n.fitHeight=function(t,e){return Oi(n,t,e)},function(){return o=t.apply(this,arguments),n.invert=o.invert&&function(t){return(t=s.invert((t[0]-u)/v,(a-t[1])/v))&&[t[0]*Ap,t[1]*Ap]},r()}}function Bi(t){var n=0,e=Np/3,r=Yi(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Cp,e=t[1]*Cp):[n*Ap,e*Ap]},i}function Hi(t,n){function e(t,n){var e=Yp(o-2*i*Fp(n))/i;return[e*Fp(t*=i),u-e*Lp(t)]}var r=Fp(t),i=(r+Fp(n))/2;if(zp(i)<Mp)return function(t){function n(t,n){return[t*e,Fp(n)/e]}var e=Lp(t);return n.invert=function(t,n){return[t/e,We(n*e)]},n}(t);var o=1+r*(2*i-r),u=Yp(o)/i;return e.invert=function(t,n){var e=u-n;return[Rp(t,zp(e))/i*Ip(e),We((o-(t*t+e*e)*i*i)/(2*i))]},e}function ji(){return Bi(Hi).scale(155.424).center([0,33.6442])}function Xi(){return ji().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Vi(t){return function(n,e){var r=Lp(n),i=Lp(e),o=t(r*i);return[o*i*Fp(n),o*Fp(e)]}}function $i(t){return function(n,e){var r=Yp(n*n+e*e),i=t(r),o=Fp(i),u=Lp(i);return[Rp(n*o,r*u),We(r&&e*o/r)]}}function Wi(t,n){return[t,Up(Bp((kp+n)/2))]}function Zi(t){function n(){var n=Np*a(),u=o(Fr(o.rotate()).invert([0,0]));return s(null==f?[[u[0]-n,u[1]-n],[u[0]+n,u[1]+n]]:t===Wi?[[Math.max(u[0]-n,f),e],[Math.min(u[0]+n,r),i]]:[[f,Math.max(u[1]-n,e)],[r,Math.min(u[1]+n,i)]])}var e,r,i,o=Ii(t),u=o.center,a=o.scale,c=o.translate,s=o.clipExtent,f=null;return o.scale=function(t){return arguments.length?(a(t),n()):a()},o.translate=function(t){return arguments.length?(c(t),n()):c()},o.center=function(t){return arguments.length?(u(t),n()):u()},o.clipExtent=function(t){return arguments.length?(null==t?f=e=r=i=null:(f=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),n()):null==f?null:[[f,e],[r,i]]},n()}function Gi(t){return Bp((kp+t)/2)}function Qi(t,n){function e(t,n){o>0?n<-kp+Mp&&(n=-kp+Mp):n>kp-Mp&&(n=kp-Mp);var e=o/Op(Gi(n),i);return[e*Fp(i*t),o-e*Lp(i*t)]}var r=Lp(t),i=t===n?Fp(t):Up(r/Lp(n))/Up(Gi(n)/Gi(t)),o=r*Op(Gi(t),i)/i;return i?(e.invert=function(t,n){var e=o-n,r=Ip(i)*Yp(t*t+e*e);return[Rp(t,zp(e))/i*Ip(e),2*Pp(Op(o/r,1/i))-kp]},e):Wi}function Ji(t,n){return[t,n]}function Ki(t,n){function e(t,n){var e=o-n,r=i*t;return[e*Fp(r),o-e*Lp(r)]}var r=Lp(t),i=t===n?Fp(t):(r-Lp(n))/(n-t),o=r/i+t;return zp(i)<Mp?Ji:(e.invert=function(t,n){var e=o-n;return[Rp(t,zp(e))/i*Ip(e),o-Ip(i)*Yp(t*t+e*e)]},e)}function to(t,n){var e=Lp(n),r=Lp(t)*e;return[e*Fp(t)/r,Fp(n)/r]}function no(t,n,e,r){return 1===t&&1===n&&0===e&&0===r?pi:Pi({point:function(i,o){this.stream.point(i*t+e,o*n+r)}})}function eo(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function ro(t,n){return[Lp(n)*Fp(t),Fp(n)]}function io(t,n){var e=Lp(n),r=1+Lp(t)*e;return[e*Fp(t)/r,Fp(n)/r]}function oo(t,n){return[Up(Bp((kp+n)/2)),-t]}function uo(t,n){return t.parent===n.parent?1:2}function ao(t,n){return t+n.x}function co(t,n){return Math.max(t,n.y)}function so(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function fo(t,n){var e,r,i,o,u,a=new vo(t),c=+t.value&&(a.value=t.value),s=[a];for(null==n&&(n=lo);e=s.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),o=u-1;o>=0;--o)s.push(r=e.children[o]=new vo(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(po)}function lo(t){return t.children}function ho(t){t.data=t.data.data}function po(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function vo(t){this.data=t,this.depth=this.height=0,this.parent=null}function go(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Wd.call(t))).length,o=[];r<i;)n=t[r],e&&yo(e,n)?++r:(e=function(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return xo(t[0],t[1]);case 3:return bo(t[0],t[1],t[2])}}(o=function(t,n){var e,r;if(mo(n,t))return[n];for(e=0;e<t.length;++e)if(_o(n,t[e])&&mo(xo(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(_o(xo(t[e],t[r]),n)&&_o(xo(t[e],n),t[r])&&_o(xo(t[r],n),t[e])&&mo(bo(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}(o,n)),r=0);return e}function _o(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function yo(t,n){var e=t.r-n.r+1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function mo(t,n){for(var e=0;e<n.length;++e)if(!yo(t,n[e]))return!1;return!0}function xo(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,u=n.y,a=n.r,c=o-e,s=u-r,f=a-i,l=Math.sqrt(c*c+s*s);return{x:(e+o+c/l*f)/2,y:(r+u+s/l*f)/2,r:(l+i+a)/2}}function bo(t,n,e){var r=t.x,i=t.y,o=t.r,u=n.x,a=n.y,c=n.r,s=e.x,f=e.y,l=e.r,h=r-u,p=r-s,d=i-a,v=i-f,g=c-o,_=l-o,y=r*r+i*i-o*o,m=y-u*u-a*a+c*c,x=y-s*s-f*f+l*l,b=p*d-h*v,w=(d*x-v*m)/(2*b)-r,M=(v*g-d*_)/b,T=(p*m-h*x)/(2*b)-i,N=(h*_-p*g)/b,k=M*M+N*N-1,S=2*(o+w*M+T*N),E=w*w+T*T-o*o,A=-(k?(S+Math.sqrt(S*S-4*k*E))/(2*k):E/S);return{x:r+w+M*A,y:i+T+N*A,r:A}}function wo(t,n,e){var r=t.x,i=t.y,o=n.r+e.r,u=t.r+e.r,a=n.x-r,c=n.y-i,s=a*a+c*c;if(s){var f=.5+((u*=u)-(o*=o))/(2*s),l=Math.sqrt(Math.max(0,2*o*(u+s)-(u-=s)*u-o*o))/(2*s);e.x=r+f*a+l*c,e.y=i+f*c-l*a}else e.x=r+u,e.y=i}function Mo(t,n){var e=n.x-t.x,r=n.y-t.y,i=t.r+n.r;return i*i-1e-6>e*e+r*r}function To(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function No(t){this._=t,this.next=null,this.previous=null}function ko(t){if(!(i=t.length))return 0;var n,e,r,i,o,u,a,c,s,f,l;if(n=t[0],n.x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;wo(e,n,r=t[2]),n=new No(n),e=new No(e),r=new No(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(a=3;a<i;++a){wo(n._,e._,r=t[a]),r=new No(r),c=e.next,s=n.previous,f=e._.r,l=n._.r;do{if(f<=l){if(Mo(c._,r._)){e=c,n.next=e,e.previous=n,--a;continue t}f+=c._.r,c=c.next}else{if(Mo(s._,r._)){(n=s).next=e,e.previous=n,--a;continue t}l+=s._.r,s=s.previous}}while(c!==s.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,o=To(n);(r=r.next)!==e;)(u=To(r))<o&&(n=r,o=u);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=go(n),a=0;a<i;++a)n=t[a],n.x-=r.x,n.y-=r.y;return r.r}function So(t){if("function"!=typeof t)throw new Error;return t}function Eo(){return 0}function Ao(t){return function(){return t}}function Co(t){return Math.sqrt(t.value)}function zo(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function Po(t,n){return function(e){if(r=e.children){var r,i,o,u=r.length,a=t(e)*n||0;if(a)for(i=0;i<u;++i)r[i].r+=a;if(o=ko(r),a)for(i=0;i<u;++i)r[i].r-=a;e.r=o+a}}}function Ro(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Lo(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function qo(t,n,e,r,i){for(var o,u=t.children,a=-1,c=u.length,s=t.value&&(r-n)/t.value;++a<c;)(o=u[a]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*s}function Do(t){return t.id}function Uo(t){return t.parentId}function Oo(t,n){return t.parent===n.parent?1:2}function Fo(t){var n=t.children;return n?n[0]:t.t}function Io(t){var n=t.children;return n?n[n.length-1]:t.t}function Yo(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function Bo(t,n,e){return t.a.parent===n.parent?t.a:e}function Ho(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function jo(t,n,e,r,i){for(var o,u=t.children,a=-1,c=u.length,s=t.value&&(i-e)/t.value;++a<c;)(o=u[a]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*s}function Xo(t,n,e,r,i,o){for(var u,a,c,s,f,l,h,p,d,v,g,_=[],y=n.children,m=0,x=0,b=y.length,w=n.value;m<b;){c=i-e,s=o-r;do{f=y[x++].value}while(!f&&x<b);for(l=h=f,g=f*f*(v=Math.max(s/c,c/s)/(w*t)),d=Math.max(h/g,g/l);x<b;++x){if(f+=a=y[x].value,a<l&&(l=a),a>h&&(h=a),g=f*f*v,(p=Math.max(h/g,g/l))>d){f-=a;break}d=p}_.push(u={value:f,dice:c<s,children:y.slice(m,x)}),u.dice?qo(u,e,r,i,w?r+=s*f/w:o):jo(u,e,r,w?e+=c*f/w:i,o),w-=f,m=x}return _}function Vo(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function $o(t,n){return t[0]-n[0]||t[1]-n[1]}function Wo(t){for(var n=t.length,e=[0,1],r=2,i=2;i<n;++i){for(;r>1&&Vo(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function Zo(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function Go(t){if(!t._start)try{(function(t){for(;t._start=t._waiting&&t._active<t._size;){var n=t._ended+t._active,e=t._tasks[n],r=e.length-1,i=e[r];e[r]=function(t,n){return function(e,r){t._tasks[n]&&(--t._active,++t._ended,t._tasks[n]=null,null==t._error&&(null!=e?Qo(t,e):(t._data[n]=r,t._waiting?Go(t):Jo(t))))}}(t,n),--t._waiting,++t._active,e=i.apply(null,e),t._tasks[n]&&(t._tasks[n]=e||ev)}})(t)}catch(n){if(t._tasks[t._ended+t._active-1])Qo(t,n);else if(!t._data)throw n}}function Qo(t,n){var e,r=t._tasks.length;for(t._error=n,t._data=void 0,t._waiting=NaN;--r>=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(n){}t._active=NaN,Jo(t)}function Jo(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function Ko(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new Zo(t)}function tu(){return Math.random()}function nu(t,n){function e(t){var n,e=s.status;if(!e&&function(t){var n=t.responseType;return n&&"text"!==n?t.response:t.responseText}(s)||e>=200&&e<300||304===e){if(o)try{n=o.call(r,s)}catch(t){return void a.call("error",r,t)}else n=s;a.call("load",r,n)}else a.call("error",r,t)}var r,i,o,u,a=N("beforesend","progress","load","error"),c=se(),s=new XMLHttpRequest,f=null,l=null,h=0;if("undefined"==typeof XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(t)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=s.ontimeout=e:s.onreadystatechange=function(t){s.readyState>3&&e(t)},s.onprogress=function(t){a.call("progress",r,t)},r={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?c.get(t):(null==n?c.remove(t):c.set(t,n+""),r)},mimeType:function(t){return arguments.length?(i=null==t?null:t+"",r):i},responseType:function(t){return arguments.length?(u=t,r):u},timeout:function(t){return arguments.length?(h=+t,r):h},user:function(t){return arguments.length<1?f:(f=null==t?null:t+"",r)},password:function(t){return arguments.length<1?l:(l=null==t?null:t+"",r)},response:function(t){return o=t,r},get:function(t,n){return r.send("GET",t,n)},post:function(t,n){return r.send("POST",t,n)},send:function(n,e,o){return s.open(n,t,!0,f,l),null==i||c.has("accept")||c.set("accept",i+",*/*"),s.setRequestHeader&&c.each(function(t,n){s.setRequestHeader(n,t)}),null!=i&&s.overrideMimeType&&s.overrideMimeType(i),null!=u&&(s.responseType=u),h>0&&(s.timeout=h),null==o&&"function"==typeof e&&(o=e,e=null),null!=o&&1===o.length&&(o=function(t){return function(n,e){t(null==n?e:null)}}(o)),null!=o&&r.on("error",o).on("load",function(t){o(null,t)}),a.call("beforesend",r,s),s.send(null==e?null:e),r},abort:function(){return s.abort(),r},on:function(){var t=a.on.apply(a,arguments);return t===a?r:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return r.get(n)}return r}function eu(t,n){return function(e,r){var i=nu(e).mimeType(t).response(n);if(null!=r){if("function"!=typeof r)throw new Error("invalid callback: "+r);return i.get(r)}return i}}function ru(t,n){return function(e,r,i){arguments.length<3&&(i=r,r=null);var o=nu(e).mimeType(t);return o.row=function(t){return arguments.length?o.response(function(t,n){return function(e){return t(e.responseText,n)}}(n,r=t)):r},o.row(r),i?o.get(i):o}}function iu(t){function n(n){var o=n+"",u=e.get(o);if(!u){if(i!==yv)return i;e.set(o,u=r.push(n))}return t[(u-1)%t.length]}var e=se(),r=[],i=yv;return t=null==t?[]:_v.call(t),n.domain=function(t){if(!arguments.length)return r.slice();r=[],e=se();for(var i,o,u=-1,a=t.length;++u<a;)e.has(o=(i=t[u])+"")||e.set(o,r.push(i));return n},n.range=function(e){return arguments.length?(t=_v.call(e),n):t.slice()},n.unknown=function(t){return arguments.length?(i=t,n):i},n.copy=function(){return iu().domain(r).range(t).unknown(i)},n}function ou(){function t(){var t=i().length,r=u[1]<u[0],h=u[r-0],p=u[1-r];n=(p-h)/Math.max(1,t-c+2*s),a&&(n=Math.floor(n)),h+=(p-h-n*(t-c))*l,e=n*(1-c),a&&(h=Math.round(h),e=Math.round(e));var d=f(t).map(function(t){return h+n*t});return o(r?d.reverse():d)}var n,e,r=iu().unknown(void 0),i=r.domain,o=r.range,u=[0,1],a=!1,c=0,s=0,l=.5;return delete r.unknown,r.domain=function(n){return arguments.length?(i(n),t()):i()},r.range=function(n){return arguments.length?(u=[+n[0],+n[1]],t()):u.slice()},r.rangeRound=function(n){return u=[+n[0],+n[1]],a=!0,t()},r.bandwidth=function(){return e},r.step=function(){return n},r.round=function(n){return arguments.length?(a=!!n,t()):a},r.padding=function(n){return arguments.length?(c=s=Math.max(0,Math.min(1,n)),t()):c},r.paddingInner=function(n){return arguments.length?(c=Math.max(0,Math.min(1,n)),t()):c},r.paddingOuter=function(n){return arguments.length?(s=Math.max(0,Math.min(1,n)),t()):s},r.align=function(n){return arguments.length?(l=Math.max(0,Math.min(1,n)),t()):l},r.copy=function(){return ou().domain(i()).range(u).round(a).paddingInner(c).paddingOuter(s).align(l)},t()}function uu(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return uu(n())},t}function au(t){return function(){return t}}function cu(t){return+t}function su(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:au(n)}function fu(t,n,e,r){var i=t[0],o=t[1],u=n[0],a=n[1];return o<i?(i=e(o,i),u=r(a,u)):(i=e(i,o),u=r(u,a)),function(t){return u(i(t))}}function lu(t,n,e,r){var i=Math.min(t.length,n.length)-1,o=new Array(i),u=new Array(i),a=-1;for(t[i]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<i;)o[a]=e(t[a],t[a+1]),u[a]=r(n[a],n[a+1]);return function(n){var e=Os(t,n,1,i)-1;return u[e](o[e](n))}}function hu(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp())}function pu(t,n){function e(){return i=Math.min(a.length,c.length)>2?lu:fu,o=u=null,r}function r(n){return(o||(o=i(a,c,f?function(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=n?0:t>=e?1:r(t)}}}(t):t,s)))(+n)}var i,o,u,a=mv,c=mv,s=fn,f=!1;return r.invert=function(t){return(u||(u=i(c,a,su,f?function(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}(n):n)))(+t)},r.domain=function(t){return arguments.length?(a=gv.call(t,cu),e()):a.slice()},r.range=function(t){return arguments.length?(c=_v.call(t),e()):c.slice()},r.rangeRound=function(t){return c=_v.call(t),s=ln,e()},r.clamp=function(t){return arguments.length?(f=!!t,e()):f},r.interpolate=function(t){return arguments.length?(s=t,e()):s},e()}function du(n){var e=n.domain;return n.ticks=function(t){var n=e();return l(n[0],n[n.length-1],null==t?10:t)},n.tickFormat=function(n,r){return function(n,e,r){var i,o=n[0],u=n[n.length-1],a=p(o,u,null==e?10:e);switch((r=De(null==r?",f":r)).type){case"s":var c=Math.max(Math.abs(o),Math.abs(u));return null!=r.precision||isNaN(i=Be(a,c))||(r.precision=i),t.formatPrefix(r,c);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=He(a,Math.max(Math.abs(o),Math.abs(u))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=Ye(a))||(r.precision=i-2*("%"===r.type))}return t.format(r)}(e(),n,r)},n.nice=function(t){null==t&&(t=10);var r,i=e(),o=0,u=i.length-1,a=i[o],c=i[u];return c<a&&(r=a,a=c,c=r,r=o,o=u,u=r),(r=h(a,c,t))>0?r=h(a=Math.floor(a/r)*r,c=Math.ceil(c/r)*r,t):r<0&&(r=h(a=Math.ceil(a*r)/r,c=Math.floor(c*r)/r,t)),r>0?(i[o]=Math.floor(a/r)*r,i[u]=Math.ceil(c/r)*r,e(i)):r<0&&(i[o]=Math.ceil(a*r)/r,i[u]=Math.floor(c*r)/r,e(i)),n},n}function vu(){var t=pu(su,an);return t.copy=function(){return hu(t,vu())},du(t)}function gu(){function t(t){return+t}var n=[0,1];return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=gv.call(e,cu),t):n.slice()},t.copy=function(){return gu().domain(n)},du(t)}function _u(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],u=t[i];return u<o&&(e=r,r=i,i=e,e=o,o=u,u=e),t[r]=n.floor(o),t[i]=n.ceil(u),t}function yu(t,n){return(n=Math.log(n/t))?function(e){return Math.log(e/t)/n}:au(n)}function mu(t,n){return t<0?function(e){return-Math.pow(-n,e)*Math.pow(-t,1-e)}:function(e){return Math.pow(n,e)*Math.pow(t,1-e)}}function xu(t){return isFinite(t)?+("1e"+t):t<0?0:t}function bu(t){return 10===t?xu:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}function wu(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}function Mu(t){return function(n){return-t(-n)}}function Tu(){function n(){return o=wu(i),u=bu(i),r()[0]<0&&(o=Mu(o),u=Mu(u)),e}var e=pu(yu,mu).domain([1,10]),r=e.domain,i=10,o=wu(10),u=bu(10);return e.base=function(t){return arguments.length?(i=+t,n()):i},e.domain=function(t){return arguments.length?(r(t),n()):r()},e.ticks=function(t){var n,e=r(),a=e[0],c=e[e.length-1];(n=c<a)&&(p=a,a=c,c=p);var s,f,h,p=o(a),d=o(c),v=null==t?10:+t,g=[];if(!(i%1)&&d-p<v){if(p=Math.round(p)-1,d=Math.round(d)+1,a>0){for(;p<d;++p)for(f=1,s=u(p);f<i;++f)if(!((h=s*f)<a)){if(h>c)break;g.push(h)}}else for(;p<d;++p)for(f=i-1,s=u(p);f>=1;--f)if(!((h=s*f)<a)){if(h>c)break;g.push(h)}}else g=l(p,d,Math.min(d-p,v)).map(u);return n?g.reverse():g},e.tickFormat=function(n,r){if(null==r&&(r=10===i?".0e":","),"function"!=typeof r&&(r=t.format(r)),n===1/0)return r;null==n&&(n=10);var a=Math.max(1,i*n/e.ticks().length);return function(t){var n=t/u(Math.round(o(t)));return n*i<i-.5&&(n*=i),n<=a?r(t):""}},e.nice=function(){return r(_u(r(),{floor:function(t){return u(Math.floor(o(t)))},ceil:function(t){return u(Math.ceil(o(t)))}}))},e.copy=function(){return hu(e,Tu().base(i))},e}function Nu(t,n){return t<0?-Math.pow(-t,n):Math.pow(t,n)}function ku(){var t=1,n=pu(function(n,e){return(e=Nu(e,t)-(n=Nu(n,t)))?function(r){return(Nu(r,t)-n)/e}:au(e)},function(n,e){return e=Nu(e,t)-(n=Nu(n,t)),function(r){return Nu(n+e*r,1/t)}}),e=n.domain;return n.exponent=function(n){return arguments.length?(t=+n,e(e())):t},n.copy=function(){return hu(n,ku().exponent(t))},du(n)}function Su(){function t(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t<n;)o[t-1]=v(r,t/n);return e}function e(t){if(!isNaN(t=+t))return i[Os(o,t)]}var r=[],i=[],o=[];return e.invertExtent=function(t){var n=i.indexOf(t);return n<0?[NaN,NaN]:[n>0?o[n-1]:r[0],n<o.length?o[n]:r[r.length-1]]},e.domain=function(e){if(!arguments.length)return r.slice();r=[];for(var i,o=0,u=e.length;o<u;++o)null==(i=e[o])||isNaN(i=+i)||r.push(i);return r.sort(n),t()},e.range=function(n){return arguments.length?(i=_v.call(n),t()):i.slice()},e.quantiles=function(){return o.slice()},e.copy=function(){return Su().domain(r).range(i)},e}function Eu(){function t(t){if(t<=t)return u[Os(o,t,0,i)]}function n(){var n=-1;for(o=new Array(i);++n<i;)o[n]=((n+1)*r-(n-i)*e)/(i+1);return t}var e=0,r=1,i=1,o=[.5],u=[0,1];return t.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],n()):[e,r]},t.range=function(t){return arguments.length?(i=(u=_v.call(t)).length-1,n()):u.slice()},t.invertExtent=function(t){var n=u.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},t.copy=function(){return Eu().domain([e,r]).range(u)},du(t)}function Au(){function t(t){if(t<=t)return e[Os(n,t,0,r)]}var n=[.5],e=[0,1],r=1;return t.domain=function(i){return arguments.length?(n=_v.call(i),r=Math.min(n.length,e.length-1),t):n.slice()},t.range=function(i){return arguments.length?(e=_v.call(i),r=Math.min(n.length,e.length-1),t):e.slice()},t.invertExtent=function(t){var r=e.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return Au().domain(n).range(e)},t}function Cu(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,o){var u,a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return a;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u<e&&e<r);return a},i.filter=function(e){return Cu(function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return xv.setTime(+n),bv.setTime(+r),t(xv),t(bv),Math.floor(e(xv,bv))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}function zu(t){return Cu(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Tv)/Nv})}function Pu(t){return Cu(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Nv})}function Ru(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Lu(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function qu(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Du(t){function n(t,n){return function(e){var r,i,o,u=[],a=-1,c=0,s=t.length;for(e instanceof Date||(e=new Date(+e));++a<s;)37===t.charCodeAt(a)&&(u.push(t.slice(c,a)),null!=(i=Mg[r=t.charAt(++a)])?r=t.charAt(++a):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),u.push(r),c=a+1);return u.push(t.slice(c,a)),u.join("")}}function e(t,n){return function(e){var i,o,u=qu(1900);if(r(u,t,e+="",0)!=e.length)return null;if("Q"in u)return new Date(u.Q);if("p"in u&&(u.H=u.H%12+12*u.p),"V"in u){if(u.V<1||u.V>53)return null;"w"in u||(u.w=1),"Z"in u?(i=(o=(i=Lu(qu(u.y))).getUTCDay())>4||0===o?og.ceil(i):og(i),i=eg.offset(i,7*(u.V-1)),u.y=i.getUTCFullYear(),u.m=i.getUTCMonth(),u.d=i.getUTCDate()+(u.w+6)%7):(i=(o=(i=n(qu(u.y))).getDay())>4||0===o?qv.ceil(i):qv(i),i=Pv.offset(i,7*(u.V-1)),u.y=i.getFullYear(),u.m=i.getMonth(),u.d=i.getDate()+(u.w+6)%7)}else("W"in u||"U"in u)&&("w"in u||(u.w="u"in u?u.u%7:"W"in u?1:0),o="Z"in u?Lu(qu(u.y)).getUTCDay():n(qu(u.y)).getDay(),u.m=0,u.d="W"in u?(u.w+6)%7+7*u.W-(o+5)%7:u.w+7*u.U-(o+6)%7);return"Z"in u?(u.H+=u.Z/100|0,u.M+=u.Z%100,Lu(u)):n(u)}}function r(t,n,e,r){for(var i,o,u=0,a=n.length,c=e.length;u<a;){if(r>=c)return-1;if(37===(i=n.charCodeAt(u++))){if(i=n.charAt(u++),!(o=T[i in Mg?n.charAt(u++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}var i=t.dateTime,o=t.date,u=t.time,a=t.periods,c=t.days,s=t.shortDays,f=t.months,l=t.shortMonths,h=Fu(a),p=Iu(a),d=Fu(c),v=Iu(c),g=Fu(s),_=Iu(s),y=Fu(f),m=Iu(f),x=Fu(l),b=Iu(l),w={a:function(t){return s[t.getDay()]},A:function(t){return c[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return f[t.getMonth()]},c:null,d:ua,e:ua,f:la,H:aa,I:ca,j:sa,L:fa,m:ha,M:pa,p:function(t){return a[+(t.getHours()>=12)]},Q:Ya,s:Ba,S:da,u:va,U:ga,V:_a,w:ya,W:ma,x:null,X:null,y:xa,Y:ba,Z:wa,"%":Ia},M={a:function(t){return s[t.getUTCDay()]},A:function(t){return c[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return f[t.getUTCMonth()]},c:null,d:Ma,e:Ma,f:Ea,H:Ta,I:Na,j:ka,L:Sa,m:Aa,M:Ca,p:function(t){return a[+(t.getUTCHours()>=12)]},Q:Ya,s:Ba,S:za,u:Pa,U:Ra,V:La,w:qa,W:Da,x:null,X:null,y:Ua,Y:Oa,Z:Fa,"%":Ia},T={a:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.w=_[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=v[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=x.exec(n.slice(e));return r?(t.m=b[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=m[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,n,e){return r(t,i,n,e)},d:Gu,e:Gu,f:ea,H:Ju,I:Ju,j:Qu,L:na,m:Zu,M:Ku,p:function(t,n,e){var r=h.exec(n.slice(e));return r?(t.p=p[r[0].toLowerCase()],e+r[0].length):-1},Q:ia,s:oa,S:ta,u:Bu,U:Hu,V:ju,w:Yu,W:Xu,x:function(t,n,e){return r(t,o,n,e)},X:function(t,n,e){return r(t,u,n,e)},y:$u,Y:Vu,Z:Wu,"%":ra};return w.x=n(o,w),w.X=n(u,w),w.c=n(i,w),M.x=n(o,M),M.X=n(u,M),M.c=n(i,M),{format:function(t){var e=n(t+="",w);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",Ru);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",M);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,Lu);return n.toString=function(){return t},n}}}function Uu(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function Ou(t){return t.replace(kg,"\\$&")}function Fu(t){return new RegExp("^(?:"+t.map(Ou).join("|")+")","i")}function Iu(t){for(var n={},e=-1,r=t.length;++e<r;)n[t[e].toLowerCase()]=e;return n}function Yu(t,n,e){var r=Tg.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Bu(t,n,e){var r=Tg.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Hu(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function ju(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Xu(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Vu(t,n,e){var r=Tg.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function $u(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function Wu(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Zu(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Gu(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Qu(t,n,e){var r=Tg.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Ju(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Ku(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function ta(t,n,e){var r=Tg.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function na(t,n,e){var r=Tg.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function ea(t,n,e){var r=Tg.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function ra(t,n,e){var r=Ng.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function ia(t,n,e){var r=Tg.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function oa(t,n,e){var r=Tg.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function ua(t,n){return Uu(t.getDate(),n,2)}function aa(t,n){return Uu(t.getHours(),n,2)}function ca(t,n){return Uu(t.getHours()%12||12,n,2)}function sa(t,n){return Uu(1+Pv.count(Gv(t),t),n,3)}function fa(t,n){return Uu(t.getMilliseconds(),n,3)}function la(t,n){return fa(t,n)+"000"}function ha(t,n){return Uu(t.getMonth()+1,n,2)}function pa(t,n){return Uu(t.getMinutes(),n,2)}function da(t,n){return Uu(t.getSeconds(),n,2)}function va(t){var n=t.getDay();return 0===n?7:n}function ga(t,n){return Uu(Lv.count(Gv(t),t),n,2)}function _a(t,n){var e=t.getDay();return t=e>=4||0===e?Ov(t):Ov.ceil(t),Uu(Ov.count(Gv(t),t)+(4===Gv(t).getDay()),n,2)}function ya(t){return t.getDay()}function ma(t,n){return Uu(qv.count(Gv(t),t),n,2)}function xa(t,n){return Uu(t.getFullYear()%100,n,2)}function ba(t,n){return Uu(t.getFullYear()%1e4,n,4)}function wa(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Uu(n/60|0,"0",2)+Uu(n%60,"0",2)}function Ma(t,n){return Uu(t.getUTCDate(),n,2)}function Ta(t,n){return Uu(t.getUTCHours(),n,2)}function Na(t,n){return Uu(t.getUTCHours()%12||12,n,2)}function ka(t,n){return Uu(1+eg.count(xg(t),t),n,3)}function Sa(t,n){return Uu(t.getUTCMilliseconds(),n,3)}function Ea(t,n){return Sa(t,n)+"000"}function Aa(t,n){return Uu(t.getUTCMonth()+1,n,2)}function Ca(t,n){return Uu(t.getUTCMinutes(),n,2)}function za(t,n){return Uu(t.getUTCSeconds(),n,2)}function Pa(t){var n=t.getUTCDay();return 0===n?7:n}function Ra(t,n){return Uu(ig.count(xg(t),t),n,2)}function La(t,n){var e=t.getUTCDay();return t=e>=4||0===e?cg(t):cg.ceil(t),Uu(cg.count(xg(t),t)+(4===xg(t).getUTCDay()),n,2)}function qa(t){return t.getUTCDay()}function Da(t,n){return Uu(og.count(xg(t),t),n,2)}function Ua(t,n){return Uu(t.getUTCFullYear()%100,n,2)}function Oa(t,n){return Uu(t.getUTCFullYear()%1e4,n,4)}function Fa(){return"+0000"}function Ia(){return"%"}function Ya(t){return+t}function Ba(t){return Math.floor(+t/1e3)}function Ha(n){return bg=Du(n),t.timeFormat=bg.format,t.timeParse=bg.parse,t.utcFormat=bg.utcFormat,t.utcParse=bg.utcParse,bg}function ja(t){return new Date(t)}function Xa(t){return t instanceof Date?+t:+new Date(+t)}function Va(t,n,r,i,o,u,a,c,s){function f(e){return(a(e)<e?g:u(e)<e?_:o(e)<e?y:i(e)<e?m:n(e)<e?r(e)<e?x:b:t(e)<e?w:M)(e)}function l(n,r,i,o){if(null==n&&(n=10),"number"==typeof n){var u=Math.abs(i-r)/n,a=e(function(t){return t[2]}).right(T,u);a===T.length?(o=p(r/Dg,i/Dg,n),n=t):a?(o=(a=T[u/T[a-1][2]<T[a][2]/u?a-1:a])[1],n=a[0]):(o=Math.max(p(r,i,n),1),n=c)}return null==o?n:n.every(o)}var h=pu(su,an),d=h.invert,v=h.domain,g=s(".%L"),_=s(":%S"),y=s("%I:%M"),m=s("%I %p"),x=s("%a %d"),b=s("%b %d"),w=s("%B"),M=s("%Y"),T=[[a,1,Cg],[a,5,5*Cg],[a,15,15*Cg],[a,30,30*Cg],[u,1,zg],[u,5,5*zg],[u,15,15*zg],[u,30,30*zg],[o,1,Pg],[o,3,3*Pg],[o,6,6*Pg],[o,12,12*Pg],[i,1,Rg],[i,2,2*Rg],[r,1,Lg],[n,1,qg],[n,3,3*qg],[t,1,Dg]];return h.invert=function(t){return new Date(d(t))},h.domain=function(t){return arguments.length?v(gv.call(t,Xa)):v().map(ja)},h.ticks=function(t,n){var e,r=v(),i=r[0],o=r[r.length-1],u=o<i;return u&&(e=i,i=o,o=e),e=l(t,i,o,n),e=e?e.range(i,o+1):[],u?e.reverse():e},h.tickFormat=function(t,n){return null==n?f:s(n)},h.nice=function(t,n){var e=v();return(t=l(t,e[0],e[e.length-1],n))?v(_u(e,t)):h},h.copy=function(){return hu(h,Va(t,n,r,i,o,u,a,c,s))},h}function $a(t){return t.match(/.{6}/g).map(function(t){return"#"+t})}function Wa(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}function Za(t){function n(n){var o=(n-e)/(r-e);return t(i?Math.max(0,Math.min(1,o)):o)}var e=0,r=1,i=!1;return n.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],n):[e,r]},n.clamp=function(t){return arguments.length?(i=!!t,n):i},n.interpolator=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Za(t).domain([e,r]).clamp(i)},du(n)}function Ga(t){return function(){return t}}function Qa(t){return t>=1?i_:t<=-1?-i_:Math.asin(t)}function Ja(t){return t.innerRadius}function Ka(t){return t.outerRadius}function tc(t){return t.startAngle}function nc(t){return t.endAngle}function ec(t){return t&&t.padAngle}function rc(t,n,e,r,i,o,u){var a=t-e,c=n-r,s=(u?o:-o)/n_(a*a+c*c),f=s*c,l=-s*a,h=t+f,p=n+l,d=e+f,v=r+l,g=(h+d)/2,_=(p+v)/2,y=d-h,m=v-p,x=y*y+m*m,b=i-o,w=h*v-d*p,M=(m<0?-1:1)*n_(Jg(0,b*b*x-w*w)),T=(w*m-y*M)/x,N=(-w*y-m*M)/x,k=(w*m+y*M)/x,S=(-w*y+m*M)/x,E=T-g,A=N-_,C=k-g,z=S-_;return E*E+A*A>C*C+z*z&&(T=k,N=S),{cx:T,cy:N,x01:-f,y01:-l,x11:T*(i/b-1),y11:N*(i/b-1)}}function ic(t){this._context=t}function oc(t){return new ic(t)}function uc(t){return t[0]}function ac(t){return t[1]}function cc(){function t(t){var a,c,s,f=t.length,l=!1;for(null==i&&(u=o(s=ee())),a=0;a<=f;++a)!(a<f&&r(c=t[a],a,t))===l&&((l=!l)?u.lineStart():u.lineEnd()),l&&u.point(+n(c,a,t),+e(c,a,t));if(s)return u=null,s+""||null}var n=uc,e=ac,r=Ga(!0),i=null,o=oc,u=null;return t.x=function(e){return arguments.length?(n="function"==typeof e?e:Ga(+e),t):n},t.y=function(n){return arguments.length?(e="function"==typeof n?n:Ga(+n),t):e},t.defined=function(n){return arguments.length?(r="function"==typeof n?n:Ga(!!n),t):r},t.curve=function(n){return arguments.length?(o=n,null!=i&&(u=o(i)),t):o},t.context=function(n){return arguments.length?(null==n?i=u=null:u=o(i=n),t):i},t}function sc(){function t(t){var n,f,l,h,p,d=t.length,v=!1,g=new Array(d),_=new Array(d);for(null==a&&(s=c(p=ee())),n=0;n<=d;++n){if(!(n<d&&u(h=t[n],n,t))===v)if(v=!v)f=n,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),l=n-1;l>=f;--l)s.point(g[l],_[l]);s.lineEnd(),s.areaEnd()}v&&(g[n]=+e(h,n,t),_[n]=+i(h,n,t),s.point(r?+r(h,n,t):g[n],o?+o(h,n,t):_[n]))}if(p)return s=null,p+""||null}function n(){return cc().defined(u).curve(c).context(a)}var e=uc,r=null,i=Ga(0),o=ac,u=Ga(!0),a=null,c=oc,s=null;return t.x=function(n){return arguments.length?(e="function"==typeof n?n:Ga(+n),r=null,t):e},t.x0=function(n){return arguments.length?(e="function"==typeof n?n:Ga(+n),t):e},t.x1=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:Ga(+n),t):r},t.y=function(n){return arguments.length?(i="function"==typeof n?n:Ga(+n),o=null,t):i},t.y0=function(n){return arguments.length?(i="function"==typeof n?n:Ga(+n),t):i},t.y1=function(n){return arguments.length?(o=null==n?null:"function"==typeof n?n:Ga(+n),t):o},t.lineX0=t.lineY0=function(){return n().x(e).y(i)},t.lineY1=function(){return n().x(e).y(o)},t.lineX1=function(){return n().x(r).y(i)},t.defined=function(n){return arguments.length?(u="function"==typeof n?n:Ga(!!n),t):u},t.curve=function(n){return arguments.length?(c=n,null!=a&&(s=c(a)),t):c},t.context=function(n){return arguments.length?(null==n?a=s=null:s=c(a=n),t):a},t}function fc(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function lc(t){return t}function hc(t){this._curve=t}function pc(t){function n(n){return new hc(t(n))}return n._curve=t,n}function dc(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(pc(t)):n()._curve},t}function vc(){return dc(cc().curve(u_))}function gc(){var t=sc().curve(u_),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return dc(e())},delete t.lineX0,t.lineEndAngle=function(){return dc(r())},delete t.lineX1,t.lineInnerRadius=function(){return dc(i())},delete t.lineY0,t.lineOuterRadius=function(){return dc(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(pc(t)):n()._curve},t}function _c(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}function yc(t){return t.source}function mc(t){return t.target}function xc(t){function n(){var n,a=a_.call(arguments),c=e.apply(this,a),s=r.apply(this,a);if(u||(u=n=ee()),t(u,+i.apply(this,(a[0]=c,a)),+o.apply(this,a),+i.apply(this,(a[0]=s,a)),+o.apply(this,a)),n)return u=null,n+""||null}var e=yc,r=mc,i=uc,o=ac,u=null;return n.source=function(t){return arguments.length?(e=t,n):e},n.target=function(t){return arguments.length?(r=t,n):r},n.x=function(t){return arguments.length?(i="function"==typeof t?t:Ga(+t),n):i},n.y=function(t){return arguments.length?(o="function"==typeof t?t:Ga(+t),n):o},n.context=function(t){return arguments.length?(u=null==t?null:t,n):u},n}function bc(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function wc(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function Mc(t,n,e,r,i){var o=_c(n,e),u=_c(n,e=(e+i)/2),a=_c(r,e),c=_c(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(u[0],u[1],a[0],a[1],c[0],c[1])}function Tc(){}function Nc(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function kc(t){this._context=t}function Sc(t){this._context=t}function Ec(t){this._context=t}function Ac(t,n){this._basis=new kc(t),this._beta=n}function Cc(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function zc(t,n){this._context=t,this._k=(1-n)/6}function Pc(t,n){this._context=t,this._k=(1-n)/6}function Rc(t,n){this._context=t,this._k=(1-n)/6}function Lc(t,n,e){var r=t._x1,i=t._y1,o=t._x2,u=t._y2;if(t._l01_a>e_){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>e_){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-n*t._l12_2a)/f,u=(u*s+t._y1*t._l23_2a-e*t._l12_2a)/f}t._context.bezierCurveTo(r,i,o,u,t._x2,t._y2)}function qc(t,n){this._context=t,this._alpha=n}function Dc(t,n){this._context=t,this._alpha=n}function Uc(t,n){this._context=t,this._alpha=n}function Oc(t){this._context=t}function Fc(t){return t<0?-1:1}function Ic(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),a=(o*i+u*r)/(r+i);return(Fc(o)+Fc(u))*Math.min(Math.abs(o),Math.abs(u),.5*Math.abs(a))||0}function Yc(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function Bc(t,n,e){var r=t._x0,i=t._y0,o=t._x1,u=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,i+a*n,o-a,u-a*e,o,u)}function Hc(t){this._context=t}function jc(t){this._context=new Xc(t)}function Xc(t){this._context=t}function Vc(t){this._context=t}function $c(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),u=new Array(r);for(i[0]=0,o[0]=2,u[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,u[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,u[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,u[n]-=e*u[n-1];for(i[r-1]=u[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(u[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function Wc(t,n){this._context=t,this._t=n}function Zc(t,n){if((i=t.length)>1)for(var e,r,i,o=1,u=t[n[0]],a=u.length;o<i;++o)for(r=u,u=t[n[o]],e=0;e<a;++e)u[e][1]+=u[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function Gc(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function Qc(t,n){return t[n]}function Jc(t){var n=t.map(Kc);return Gc(t).sort(function(t,e){return n[t]-n[e]})}function Kc(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}function ts(t){return function(){return t}}function ns(t){return t[0]}function es(t){return t[1]}function rs(){this._=null}function is(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function os(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function us(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function as(t){for(;t.L;)t=t.L;return t}function cs(t,n,e,r){var i=[null,null],o=D_.push(i)-1;return i.left=t,i.right=n,e&&fs(i,t,n,e),r&&fs(i,n,t,r),L_[t.index].halfedges.push(o),L_[n.index].halfedges.push(o),i}function ss(t,n,e){var r=[n,e];return r.left=t,r}function fs(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function ls(t,n,e,r,i){var o,u=t[0],a=t[1],c=u[0],s=u[1],f=0,l=1,h=a[0]-c,p=a[1]-s;if(o=n-c,h||!(o>0)){if(o/=h,h<0){if(o<f)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>f&&(f=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>f&&(f=o)}else if(h>0){if(o<f)return;o<l&&(l=o)}if(o=e-s,p||!(o>0)){if(o/=p,p<0){if(o<f)return;o<l&&(l=o)}else if(p>0){if(o>l)return;o>f&&(f=o)}if(o=i-s,p||!(o<0)){if(o/=p,p<0){if(o>l)return;o>f&&(f=o)}else if(p>0){if(o<f)return;o<l&&(l=o)}return!(f>0||l<1)||(f>0&&(t[0]=[c+f*h,s+f*p]),l<1&&(t[1]=[c+l*h,s+l*p]),!0)}}}}}function hs(t,n,e,r,i){var o=t[1];if(o)return!0;var u,a,c=t[0],s=t.left,f=t.right,l=s[0],h=s[1],p=f[0],d=f[1],v=(l+p)/2,g=(h+d)/2;if(d===h){if(v<n||v>=r)return;if(l>p){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]<e)return}else c=[v,i];o=[v,e]}}else if(u=(l-p)/(d-h),a=g-u*v,u<-1||u>1)if(l>p){if(c){if(c[1]>=i)return}else c=[(e-a)/u,e];o=[(i-a)/u,i]}else{if(c){if(c[1]<e)return}else c=[(i-a)/u,i];o=[(e-a)/u,e]}else if(h<d){if(c){if(c[0]>=r)return}else c=[n,u*n+a];o=[r,u*r+a]}else{if(c){if(c[0]<n)return}else c=[r,u*r+a];o=[n,u*n+a]}return t[0]=c,t[1]=o,!0}function ps(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function ds(t,n){return n[+(n.left!==t.site)]}function vs(t,n){return n[+(n.left===t.site)]}function gs(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var u=i[0],a=i[1],c=r[0]-u,s=r[1]-a,f=o[0]-u,l=o[1]-a,h=2*(c*l-s*f);if(!(h>=-I_)){var p=c*c+s*s,d=f*f+l*l,v=(l*p-s*d)/h,g=(c*d-f*p)/h,_=U_.pop()||new function(){is(this),this.x=this.y=this.arc=this.site=this.cy=null};_.arc=t,_.site=i,_.x=v+u,_.y=(_.cy=g+a)+Math.sqrt(v*v+g*g),t.circle=_;for(var y=null,m=q_._;m;)if(_.y<m.y||_.y===m.y&&_.x<=m.x){if(!m.L){y=m.P;break}m=m.L}else{if(!m.R){y=m;break}m=m.R}q_.insert(y,_),y||(P_=_)}}}}function _s(t){var n=t.circle;n&&(n.P||(P_=n.N),q_.remove(n),U_.push(n),is(n),t.circle=null)}function ys(t){var n=O_.pop()||new function(){is(this),this.edge=this.site=this.circle=null};return n.site=t,n}function ms(t){_s(t),R_.remove(t),O_.push(t),is(t)}function xs(t){var n=t.circle,e=n.x,r=n.cy,i=[e,r],o=t.P,u=t.N,a=[t];ms(t);for(var c=o;c.circle&&Math.abs(e-c.circle.x)<F_&&Math.abs(r-c.circle.cy)<F_;)o=c.P,a.unshift(c),ms(c),c=o;a.unshift(c),_s(c);for(var s=u;s.circle&&Math.abs(e-s.circle.x)<F_&&Math.abs(r-s.circle.cy)<F_;)u=s.N,a.push(s),ms(s),s=u;a.push(s),_s(s);var f,l=a.length;for(f=1;f<l;++f)s=a[f],c=a[f-1],fs(s.edge,c.site,s.site,i);c=a[0],(s=a[l-1]).edge=cs(c.site,s.site,null,i),gs(c),gs(s)}function bs(t){for(var n,e,r,i,o=t[0],u=t[1],a=R_._;a;)if((r=ws(a,u)-o)>F_)a=a.L;else{if(!((i=o-function(t,n){var e=t.N;if(e)return ws(e,n);var r=t.site;return r[1]===n?r[0]:1/0}(a,u))>F_)){r>-F_?(n=a.P,e=a):i>-F_?(n=a,e=a.N):n=e=a;break}if(!a.R){n=a;break}a=a.R}(function(t){L_[t.index]={site:t,halfedges:[]}})(t);var c=ys(t);if(R_.insert(n,c),n||e){if(n===e)return _s(n),e=ys(n.site),R_.insert(c,e),c.edge=e.edge=cs(n.site,c.site),gs(n),void gs(e);if(e){_s(n),_s(e);var s=n.site,f=s[0],l=s[1],h=t[0]-f,p=t[1]-l,d=e.site,v=d[0]-f,g=d[1]-l,_=2*(h*g-p*v),y=h*h+p*p,m=v*v+g*g,x=[(g*y-p*m)/_+f,(h*m-v*y)/_+l];fs(e.edge,s,d,x),c.edge=cs(s,t,null,x),e.edge=cs(t,d,null,x),gs(n),gs(e)}else c.edge=cs(n.site,c.site)}}function ws(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var u=t.P;if(!u)return-1/0;var a=(e=u.site)[0],c=e[1],s=c-n;if(!s)return a;var f=a-r,l=1/o-1/s,h=f/s;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*s)-c+s/2+i-o/2)))/l+r:(r+a)/2}function Ms(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function Ts(t,n){return n[1]-t[1]||n[0]-t[0]}function Ns(t,n){var e,r,i,o=t.sort(Ts).pop();for(D_=[],L_=new Array(t.length),R_=new rs,q_=new rs;;)if(i=P_,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===e&&o[1]===r||(bs(o),e=o[0],r=o[1]),o=t.pop();else{if(!i)break;xs(i.arc)}if(function(){for(var t,n,e,r,i=0,o=L_.length;i<o;++i)if((t=L_[i])&&(r=(n=t.halfedges).length)){var u=new Array(r),a=new Array(r);for(e=0;e<r;++e)u[e]=e,a[e]=ps(t,D_[n[e]]);for(u.sort(function(t,n){return a[n]-a[t]}),e=0;e<r;++e)a[e]=n[u[e]];for(e=0;e<r;++e)n[e]=a[e]}}(),n){var u=+n[0][0],a=+n[0][1],c=+n[1][0],s=+n[1][1];(function(t,n,e,r){for(var i,o=D_.length;o--;)hs(i=D_[o],t,n,e,r)&&ls(i,t,n,e,r)&&(Math.abs(i[0][0]-i[1][0])>F_||Math.abs(i[0][1]-i[1][1])>F_)||delete D_[o]})(u,a,c,s),function(t,n,e,r){var i,o,u,a,c,s,f,l,h,p,d,v,g=L_.length,_=!0;for(i=0;i<g;++i)if(o=L_[i]){for(u=o.site,a=(c=o.halfedges).length;a--;)D_[c[a]]||c.splice(a,1);for(a=0,s=c.length;a<s;)d=(p=vs(o,D_[c[a]]))[0],v=p[1],l=(f=ds(o,D_[c[++a%s]]))[0],h=f[1],(Math.abs(d-l)>F_||Math.abs(v-h)>F_)&&(c.splice(a,0,D_.push(ss(u,p,Math.abs(d-t)<F_&&r-v>F_?[t,Math.abs(l-t)<F_?h:r]:Math.abs(v-r)<F_&&e-d>F_?[Math.abs(h-r)<F_?l:e,r]:Math.abs(d-e)<F_&&v-n>F_?[e,Math.abs(l-e)<F_?h:n]:Math.abs(v-n)<F_&&d-t>F_?[Math.abs(h-n)<F_?l:t,n]:null))-1),++s);s&&(_=!1)}if(_){var y,m,x,b=1/0;for(i=0,_=null;i<g;++i)(o=L_[i])&&(x=(y=(u=o.site)[0]-t)*y+(m=u[1]-n)*m)<b&&(b=x,_=o);if(_){var w=[t,n],M=[t,r],T=[e,r],N=[e,n];_.halfedges.push(D_.push(ss(u=_.site,w,M))-1,D_.push(ss(u,M,T))-1,D_.push(ss(u,T,N))-1,D_.push(ss(u,N,w))-1)}}for(i=0;i<g;++i)(o=L_[i])&&(o.halfedges.length||delete L_[i])}(u,a,c,s)}this.edges=D_,this.cells=L_,R_=q_=D_=L_=null}function ks(t){return function(){return t}}function Ss(t,n,e){this.k=t,this.x=n,this.y=e}function Es(t){return t.__zoom||Y_}function As(){t.event.stopImmediatePropagation()}function Cs(){t.event.preventDefault(),t.event.stopImmediatePropagation()}function zs(){return!t.event.button}function Ps(){var t,n,e=this;return e instanceof SVGElement?(t=(e=e.ownerSVGElement||e).width.baseVal.value,n=e.height.baseVal.value):(t=e.clientWidth,n=e.clientHeight),[[0,0],[t,n]]}function Rs(){return this.__zoom||Y_}function Ls(){return-t.event.deltaY*(t.event.deltaMode?120:1)/500}function qs(){return"ontouchstart"in this}function Ds(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],u=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),u>o?(o+u)/2:Math.min(0,o)||Math.max(0,u))}var Us=e(n),Os=Us.right,Fs=Us.left,Is=Array.prototype,Ys=Is.slice,Bs=Is.map,Hs=Math.sqrt(50),js=Math.sqrt(10),Xs=Math.sqrt(2),Vs=Array.prototype.slice,$s=1,Ws=2,Zs=3,Gs=4,Qs=1e-6,Js={value:function(){}};k.prototype=N.prototype={constructor:k,on:function(t,n){var e,r=this._,i=function(t,n){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}(t+"",r),o=-1,u=i.length;{if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=S(r[e],t.name,n);else if(null==n)for(e in r)r[e]=S(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=function(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}(r[e],t.name)))return e}},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new k(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var Ks="http://www.w3.org/1999/xhtml",tf={svg:"http://www.w3.org/2000/svg",xhtml:Ks,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},nf=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var ef=document.documentElement;if(!ef.matches){var rf=ef.webkitMatchesSelector||ef.msMatchesSelector||ef.mozMatchesSelector||ef.oMatchesSelector;nf=function(t){return function(){return rf.call(this,t)}}}}var of=nf;q.prototype={constructor:q,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var uf="$";H.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var af={};if(t.event=null,"undefined"!=typeof document){"onmouseenter"in document.documentElement||(af={mouseenter:"mouseover",mouseleave:"mouseout"})}var cf=[null];ut.prototype=at.prototype={constructor:ut,select:function(t){"function"!=typeof t&&(t=z(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u,a=n[i],c=a.length,s=r[i]=new Array(c),f=0;f<c;++f)(o=a[f])&&(u=t.call(o,o.__data__,f,a))&&("__data__"in o&&(u.__data__=o.__data__),s[f]=u);return new ut(r,this._parents)},selectAll:function(t){"function"!=typeof t&&(t=R(t));for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var u,a=n[o],c=a.length,s=0;s<c;++s)(u=a[s])&&(r.push(t.call(u,u.__data__,s,a)),i.push(u));return new ut(r,i)},filter:function(t){"function"!=typeof t&&(t=of(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],a=u.length,c=r[i]=[],s=0;s<a;++s)(o=u[s])&&t.call(o,o.__data__,s,u)&&c.push(o);return new ut(r,this._parents)},data:function(t,n){if(!t)return p=new Array(this.size()),s=-1,this.each(function(t){p[++s]=t}),p;var e=n?U:D,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,u=new Array(o),a=new Array(o),c=new Array(o),s=0;s<o;++s){var f=r[s],l=i[s],h=l.length,p=t.call(f,f&&f.__data__,s,r),d=p.length,v=a[s]=new Array(d),g=u[s]=new Array(d);e(f,l,v,g,c[s]=new Array(h),p,n);for(var _,y,m=0,x=0;m<d;++m)if(_=v[m]){for(m>=x&&(x=m+1);!(y=g[x])&&++x<d;);_._next=y||null}}return u=new ut(u,r),u._enter=a,u._exit=c,u},enter:function(){return new ut(this._enter||this._groups.map(L),this._parents)},exit:function(){return new ut(this._exit||this._groups.map(L),this._parents)},merge:function(t){for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var c,s=n[a],f=e[a],l=s.length,h=u[a]=new Array(l),p=0;p<l;++p)(c=s[p]||f[p])&&(h[p]=c);for(;a<r;++a)u[a]=n[a];return new ut(u,this._parents)},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&u!==r.nextSibling&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=O);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],c=a.length,s=i[o]=new Array(c),f=0;f<c;++f)(u=a[f])&&(s[f]=u);s.sort(n)}return new ut(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),n=-1;return this.each(function(){t[++n]=this}),t},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,a=o.length;u<a;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},attr:function(t,n){var e=E(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:"function"==typeof n?e.local?function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}:function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}:e.local?function(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}:function(t,n){return function(){this.setAttribute(t,n)}})(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):I(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=Y(t+"");if(arguments.length<2){for(var r=B(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?function(t,n){return function(){(n.apply(this,arguments)?j:X)(this,t)}}:n?function(t){return function(){j(this,t)}}:function(t){return function(){X(this,t)}})(e,n))},text:function(t){return arguments.length?this.each(null==t?V:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?$:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(W)},lower:function(){return this.each(Z)},append:function(t){var n="function"==typeof t?t:A(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e="function"==typeof t?t:A(t),r=null==n?G:"function"==typeof n?n:z(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(Q)},clone:function(t){return this.select(t?K:J)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?rt:et,null==e&&(e=!1),r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var c,s=0,f=a.length;s<f;++s)for(r=0,c=a[s];r<u;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?function(t,n){return function(){return ot(this,t,n.apply(this,arguments))}}:function(t,n){return function(){return ot(this,t,n)}})(t,n))}};var sf=0;ft.prototype=st.prototype={constructor:ft,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}},xt.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ff="\\s*([+-]?\\d+)\\s*",lf="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",hf="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",pf=/^#([0-9a-f]{3})$/,df=/^#([0-9a-f]{6})$/,vf=new RegExp("^rgb\\("+[ff,ff,ff]+"\\)$"),gf=new RegExp("^rgb\\("+[hf,hf,hf]+"\\)$"),_f=new RegExp("^rgba\\("+[ff,ff,ff,lf]+"\\)$"),yf=new RegExp("^rgba\\("+[hf,hf,hf,lf]+"\\)$"),mf=new RegExp("^hsl\\("+[lf,hf,hf]+"\\)$"),xf=new RegExp("^hsla\\("+[lf,hf,hf,lf]+"\\)$"),bf={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Nt(St,Et,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),Nt(Rt,Pt,kt(St,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Rt(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Rt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Nt(Dt,qt,kt(St,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Dt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Dt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Rt(Ut(t>=240?t-240:t+120,i,r),Ut(t,i,r),Ut(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var wf=Math.PI/180,Mf=180/Math.PI,Tf=.95047,Nf=1,kf=1.08883,Sf=4/29,Ef=6/29,Af=3*Ef*Ef,Cf=Ef*Ef*Ef;Nt(It,Ft,kt(St,{brighter:function(t){return new It(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new It(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=Nf*Bt(t),n=Tf*Bt(n),e=kf*Bt(e),new Rt(Ht(3.2404542*n-1.5371385*t-.4985314*e),Ht(-.969266*n+1.8760108*t+.041556*e),Ht(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),Nt(Vt,Xt,kt(St,{brighter:function(t){return new Vt(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Vt(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Ot(this).rgb()}}));var zf=-.29227,Pf=-.90649,Rf=1.97294,Lf=Rf*Pf,qf=1.78277*Rf,Df=1.78277*zf- -.14861*Pf;Nt(Wt,$t,kt(St,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Wt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Wt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*wf,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new Rt(255*(n+e*(-.14861*r+1.78277*i)),255*(n+e*(zf*r+Pf*i)),255*(n+e*(Rf*r)),this.opacity)}}));var Uf,Of,Ff,If,Yf,Bf,Hf=function t(n){function e(t,n){var e=r((t=Pt(t)).r,(n=Pt(n)).r),i=r(t.g,n.g),o=r(t.b,n.b),u=en(t.opacity,n.opacity);return function(n){return t.r=e(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}var r=nn(n);return e.gamma=t,e}(1),jf=rn(Gt),Xf=rn(Qt),Vf=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,$f=new RegExp(Vf.source,"g"),Wf=180/Math.PI,Zf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},Gf=pn(function(t){return"none"===t?Zf:(Uf||(Uf=document.createElement("DIV"),Of=document.documentElement,Ff=document.defaultView),Uf.style.transform=t,t=Ff.getComputedStyle(Of.appendChild(Uf),null).getPropertyValue("transform"),Of.removeChild(Uf),t=t.slice(7,-1).split(","),hn(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),Qf=pn(function(t){return null==t?Zf:(If||(If=document.createElementNS("http://www.w3.org/2000/svg","g")),If.setAttribute("transform",t),(t=If.transform.baseVal.consolidate())?(t=t.matrix,hn(t.a,t.b,t.c,t.d,t.e,t.f)):Zf)},", ",")",")"),Jf=Math.SQRT2,Kf=2,tl=4,nl=1e-12,el=gn(tn),rl=gn(en),il=_n(tn),ol=_n(en),ul=yn(tn),al=yn(en),cl=0,sl=0,fl=0,ll=1e3,hl=0,pl=0,dl=0,vl="object"==typeof performance&&performance.now?performance:Date,gl="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};bn.prototype=wn.prototype={constructor:bn,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?mn():+e)+(null==n?0:+n),this._next||Bf===this||(Bf?Bf._next=this:Yf=this,Bf=this),this._call=t,this._time=e,kn()},stop:function(){this._call&&(this._call=null,this._time=1/0,kn())}};var _l=N("start","end","interrupt"),yl=[],ml=0,xl=1,bl=2,wl=3,Ml=4,Tl=5,Nl=6,kl=at.prototype.constructor,Sl=0,El=at.prototype;qn.prototype=Dn.prototype={constructor:qn,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=z(t));for(var r=this._groups,i=r.length,o=new Array(i),u=0;u<i;++u)for(var a,c,s=r[u],f=s.length,l=o[u]=new Array(f),h=0;h<f;++h)(a=s[h])&&(c=t.call(a,a.__data__,h,s))&&("__data__"in a&&(c.__data__=a.__data__),l[h]=c,En(l[h],n,e,h,l,zn(a,e)));return new qn(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=R(t));for(var r=this._groups,i=r.length,o=[],u=[],a=0;a<i;++a)for(var c,s=r[a],f=s.length,l=0;l<f;++l)if(c=s[l]){for(var h,p=t.call(c,c.__data__,l,s),d=zn(c,e),v=0,g=p.length;v<g;++v)(h=p[v])&&En(h,n,e,v,p,d);o.push(p),u.push(c)}return new qn(o,u,n,e)},filter:function(t){"function"!=typeof t&&(t=of(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],a=u.length,c=r[i]=[],s=0;s<a;++s)(o=u[s])&&t.call(o,o.__data__,s,u)&&c.push(o);return new qn(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var c,s=n[a],f=e[a],l=s.length,h=u[a]=new Array(l),p=0;p<l;++p)(c=s[p]||f[p])&&(h[p]=c);for(;a<r;++a)u[a]=n[a];return new qn(u,this._parents,this._name,this._id)},selection:function(){return new kl(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=Un(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],c=a.length,s=0;s<c;++s)if(u=a[s]){var f=zn(u,n);En(u,t,e,s,a,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new qn(r,this._parents,t,e)},call:El.call,nodes:El.nodes,node:El.node,size:El.size,empty:El.empty,each:El.each,on:function(t,n){var e=this._id;return arguments.length<2?zn(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?An:Cn;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}(e,t,n))},attr:function(t,n){var e=E(t),r="transform"===e?Qf:Ln;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var u,a=e(this);if(null!=a)return(u=this.getAttributeNS(t.space,t.local))===a?null:u===r&&a===i?o:o=n(r=u,i=a);this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var u,a=e(this);if(null!=a)return(u=this.getAttribute(t))===a?null:u===r&&a===i?o:o=n(r=u,i=a);this.removeAttribute(t)}})(e,r,Rn(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i;return function(){var o=this.getAttributeNS(t.space,t.local);return o===e?null:o===r?i:i=n(r=o,e)}}:function(t,n,e){var r,i;return function(){var o=this.getAttribute(t);return o===e?null:o===r?i:i=n(r=o,e)}})(e,r,n+""))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=E(t);return this.tween(e,(r.local?function(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttributeNS(t.space,t.local,r(n))}}return e._value=n,e}:function(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttribute(t,r(n))}}return e._value=n,e})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Gf:Ln;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=I(this,t),u=(this.style.removeProperty(t),I(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,function(t){return function(){this.style.removeProperty(t)}}(t)):this.styleTween(t,"function"==typeof n?function(t,n,e){var r,i,o;return function(){var u=I(this,t),a=e(this);return null==a&&(this.style.removeProperty(t),a=I(this,t)),u===a?null:u===r&&a===i?o:o=n(r=u,i=a)}}(t,r,Rn(this,"style."+t,n)):function(t,n,e){var r,i;return function(){var o=I(this,t);return o===e?null:o===r?i:i=n(r=o,e)}}(t,r,n+""),e)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Rn(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=zn(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?function(t,n){var e,r;return function(){var i=Cn(this,t),o=i.tween;if(o!==e)for(var u=0,a=(r=e=o).length;u<a;++u)if(r[u].name===n){(r=r.slice()).splice(u,1);break}i.tween=r}}:function(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Cn(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},c=0,s=i.length;c<s;++c)if(i[c].name===n){i[c]=a;break}c===s&&i.push(a)}o.tween=i}})(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){An(this,t).delay=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){An(this,t).delay=n}})(n,t)):zn(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){Cn(this,t).duration=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){Cn(this,t).duration=n}})(n,t)):zn(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){Cn(this,t).ease=n}}(n,t)):zn(this.node(),n).ease}};var Al=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),Cl=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),zl=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Pl=Math.PI,Rl=Pl/2,Ll=4/11,ql=6/11,Dl=8/11,Ul=.75,Ol=9/11,Fl=10/11,Il=.9375,Yl=21/22,Bl=63/64,Hl=1/Ll/Ll,jl=function t(n){function e(t){return t*t*((n+1)*t-n)}return n=+n,e.overshoot=t,e}(1.70158),Xl=function t(n){function e(t){return--t*t*((n+1)*t+n)+1}return n=+n,e.overshoot=t,e}(1.70158),Vl=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(1.70158),$l=2*Math.PI,Wl=function t(n,e){function r(t){return n*Math.pow(2,10*--t)*Math.sin((i-t)/e)}var i=Math.asin(1/(n=Math.max(1,n)))*(e/=$l);return r.amplitude=function(n){return t(n,e*$l)},r.period=function(e){return t(n,e)},r}(1,.3),Zl=function t(n,e){function r(t){return 1-n*Math.pow(2,-10*(t=+t))*Math.sin((t+i)/e)}var i=Math.asin(1/(n=Math.max(1,n)))*(e/=$l);return r.amplitude=function(n){return t(n,e*$l)},r.period=function(e){return t(n,e)},r}(1,.3),Gl=function t(n,e){function r(t){return((t=2*t-1)<0?n*Math.pow(2,10*t)*Math.sin((i-t)/e):2-n*Math.pow(2,-10*t)*Math.sin((i+t)/e))/2}var i=Math.asin(1/(n=Math.max(1,n)))*(e/=$l);return r.amplitude=function(n){return t(n,e*$l)},r.period=function(e){return t(n,e)},r}(1,.3),Ql={time:null,delay:0,duration:250,ease:Fn};at.prototype.interrupt=function(t){return this.each(function(){Pn(this,t)})},at.prototype.transition=function(t){var n,e;t instanceof qn?(n=t._id,t=t._name):(n=Un(),(e=Ql).time=mn(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],c=a.length,s=0;s<c;++s)(u=a[s])&&En(u,t,n,s,a,e||jn(u,n));return new qn(r,this._parents,t,n)};var Jl=[null],Kl={name:"drag"},th={name:"space"},nh={name:"handle"},eh={name:"center"},rh={name:"x",handles:["e","w"].map(Wn),input:function(t,n){return t&&[[t[0],n[0][1]],[t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ih={name:"y",handles:["n","s"].map(Wn),input:function(t,n){return t&&[[n[0][0],t[0]],[n[1][0],t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},oh={name:"xy",handles:["n","e","s","w","nw","ne","se","sw"].map(Wn),input:function(t){return t},output:function(t){return t}},uh={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},ah={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},ch={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},sh={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},fh={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1},lh=Math.cos,hh=Math.sin,ph=Math.PI,dh=ph/2,vh=2*ph,gh=Math.max,_h=Array.prototype.slice,yh=Math.PI,mh=2*yh,xh=mh-1e-6;ne.prototype=ee.prototype={constructor:ne,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,u=this._y1,a=e-t,c=r-n,s=o-t,f=u-n,l=s*s+f*f;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>1e-6)if(Math.abs(f*a-c*s)>1e-6&&i){var h=e-o,p=r-u,d=a*a+c*c,v=h*h+p*p,g=Math.sqrt(d),_=Math.sqrt(l),y=i*Math.tan((yh-Math.acos((d+l-v)/(2*g*_)))/2),m=y/_,x=y/g;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*s)+","+(n+m*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>s*p)+","+(this._x1=t+x*a)+","+(this._y1=n+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var u=(e=+e)*Math.cos(r),a=e*Math.sin(r),c=t+u,s=n+a,f=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+s:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-s)>1e-6)&&(this._+="L"+c+","+s),e&&(l<0&&(l=l%mh+mh),l>xh?this._+="A"+e+","+e+",0,1,"+f+","+(t-u)+","+(n-a)+"A"+e+","+e+",0,1,"+f+","+(this._x1=c)+","+(this._y1=s):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=yh)+","+f+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};ce.prototype=se.prototype={constructor:ce,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var bh=se.prototype;de.prototype=ve.prototype={constructor:de,has:bh.has,add:function(t){return t+="",this["$"+t]=t,this},remove:bh.remove,clear:bh.clear,values:bh.keys,size:bh.size,empty:bh.empty,each:bh.each};var wh={},Mh={},Th=34,Nh=10,kh=13,Sh=_e(","),Eh=Sh.parse,Ah=Sh.parseRows,Ch=Sh.format,zh=Sh.formatRows,Ph=_e("\t"),Rh=Ph.parse,Lh=Ph.parseRows,qh=Ph.format,Dh=Ph.formatRows,Uh=Te.prototype=Ne.prototype;Uh.copy=function(){var t,n,e=new Ne(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=ke(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=ke(n));return e},Uh.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return xe(this.cover(n,e),n,e,t)},Uh.addAll=function(t){var n,e,r,i,o=t.length,u=new Array(o),a=new Array(o),c=1/0,s=1/0,f=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(u[e]=r,a[e]=i,r<c&&(c=r),r>f&&(f=r),i<s&&(s=i),i>l&&(l=i));for(f<c&&(c=this._x0,f=this._x1),l<s&&(s=this._y0,l=this._y1),this.cover(c,s).cover(f,l),e=0;e<o;++e)xe(this,u[e],a[e],t[e]);return this},Uh.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{if(!(e>t||t>i||r>n||n>o))return this;var u,a,c=i-e,s=this._root;switch(a=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,o=r+c,t>i||n>o);break;case 1:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,o=r+c,e>t||n>o);break;case 2:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,r=o-c,t>i||r>n);break;case 3:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,r=o-c,e>t||r>n)}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Uh.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},Uh.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Uh.find=function(t,n,e){var r,i,o,u,a,c,s,f=this._x0,l=this._y0,h=this._x1,p=this._y1,d=[],v=this._root;for(v&&d.push(new be(v,f,l,h,p)),null==e?e=1/0:(f=t-e,l=n-e,h=t+e,p=n+e,e*=e);c=d.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>p||(u=c.x1)<f||(a=c.y1)<l))if(v.length){var g=(i+u)/2,_=(o+a)/2;d.push(new be(v[3],g,_,u,a),new be(v[2],i,_,g,a),new be(v[1],g,o,u,_),new be(v[0],i,o,g,_)),(s=(n>=_)<<1|t>=g)&&(c=d[d.length-1],d[d.length-1]=d[d.length-1-s],d[d.length-1-s]=c)}else{var y=t-+this._x.call(null,v.data),m=n-+this._y.call(null,v.data),x=y*y+m*m;if(x<e){var b=Math.sqrt(e=x);f=t-b,l=n-b,h=t+b,p=n+b,r=v.data}}return r},Uh.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(u=+this._y.call(null,t)))return this;var n,e,r,i,o,u,a,c,s,f,l,h,p=this._root,d=this._x0,v=this._y0,g=this._x1,_=this._y1;if(!p)return this;if(p.length)for(;;){if((s=o>=(a=(d+g)/2))?d=a:g=a,(f=u>=(c=(v+_)/2))?v=c:_=c,n=p,!(p=p[l=f<<1|s]))return this;if(!p.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[h]=p:this._root=p),this):(this._root=i,this)},Uh.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Uh.root=function(){return this._root},Uh.size=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},Uh.visit=function(t){var n,e,r,i,o,u,a=[],c=this._root;for(c&&a.push(new be(c,this._x0,this._y0,this._x1,this._y1));n=a.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,u=n.y1)&&c.length){var s=(r+o)/2,f=(i+u)/2;(e=c[3])&&a.push(new be(e,s,f,o,u)),(e=c[2])&&a.push(new be(e,r,f,s,u)),(e=c[1])&&a.push(new be(e,s,i,o,f)),(e=c[0])&&a.push(new be(e,r,i,s,f))}return this},Uh.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new be(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,u=n.x0,a=n.y0,c=n.x1,s=n.y1,f=(u+c)/2,l=(a+s)/2;(o=i[0])&&e.push(new be(o,u,a,f,l)),(o=i[1])&&e.push(new be(o,f,a,c,l)),(o=i[2])&&e.push(new be(o,u,l,f,s)),(o=i[3])&&e.push(new be(o,f,l,c,s))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Uh.x=function(t){return arguments.length?(this._x=t,this):this._x},Uh.y=function(t){return arguments.length?(this._y=t,this):this._y};var Oh,Fh=10,Ih=Math.PI*(3-Math.sqrt(5)),Yh={"":function(t,n){t:for(var e,r=(t=t.toPrecision(n)).length,i=1,o=-1;i<r;++i)switch(t[i]){case".":o=e=i;break;case"0":0===o&&(o=i),e=i;break;case"e":break t;default:o>0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return qe(100*t,n)},r:qe,s:function(t,n){var e=Re(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Oh=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Re(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Bh=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;De.prototype=Ue.prototype,Ue.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Hh,jh=["y","z","a","f","p","n","Âµ","m","","k","M","G","T","P","E","Z","Y"];Ie({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),Xe.prototype={constructor:Xe,reset:function(){this.s=this.t=0},add:function(t){Ve(wp,t,this.t),Ve(this,wp.s,this.s),this.s?this.t+=wp.t:this.s=wp.t},valueOf:function(){return this.s}};var Xh,Vh,$h,Wh,Zh,Gh,Qh,Jh,Kh,tp,np,ep,rp,ip,op,up,ap,cp,sp,fp,lp,hp,pp,dp,vp,gp,_p,yp,mp,xp,bp,wp=new Xe,Mp=1e-6,Tp=1e-12,Np=Math.PI,kp=Np/2,Sp=Np/4,Ep=2*Np,Ap=180/Np,Cp=Np/180,zp=Math.abs,Pp=Math.atan,Rp=Math.atan2,Lp=Math.cos,qp=Math.ceil,Dp=Math.exp,Up=Math.log,Op=Math.pow,Fp=Math.sin,Ip=Math.sign||function(t){return t>0?1:t<0?-1:0},Yp=Math.sqrt,Bp=Math.tan,Hp={Feature:function(t,n){Qe(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Qe(e[r].geometry,n)}},jp={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Je(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Je(e[r],n,0)},Polygon:function(t,n){Ke(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Ke(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Qe(e[r],n)}},Xp=je(),Vp=je(),$p={point:Ge,lineStart:Ge,lineEnd:Ge,polygonStart:function(){Xp.reset(),$p.lineStart=nr,$p.lineEnd=er},polygonEnd:function(){var t=+Xp;Vp.add(t<0?Ep+t:t),this.lineStart=this.lineEnd=this.point=Ge},sphere:function(){Vp.add(Ep)}},Wp=je(),Zp={point:hr,lineStart:dr,lineEnd:vr,polygonStart:function(){Zp.point=gr,Zp.lineStart=_r,Zp.lineEnd=yr,Wp.reset(),$p.polygonStart()},polygonEnd:function(){$p.polygonEnd(),Zp.point=hr,Zp.lineStart=dr,Zp.lineEnd=vr,Xp<0?(Gh=-(Jh=180),Qh=-(Kh=90)):Wp>Mp?Kh=90:Wp<-Mp&&(Qh=-90),op[0]=Gh,op[1]=Jh}},Gp={sphere:Ge,point:wr,lineStart:Tr,lineEnd:Sr,polygonStart:function(){Gp.lineStart=Er,Gp.lineEnd=Ar},polygonEnd:function(){Gp.lineStart=Tr,Gp.lineEnd=Sr}};Lr.invert=Lr;var Qp,Jp,Kp,td,nd,ed,rd,id,od,ud,ad,cd=je(),sd=Wr(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,u){var a=o>0?Np:-Np,c=zp(o-e);zp(c-Np)<Mp?(t.point(e,r=(r+u)/2>0?kp:-kp),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),n=0):i!==a&&c>=Np&&(zp(e-i)<Mp&&(e-=i*Mp),zp(o-a)<Mp&&(o-=a*Mp),r=function(t,n,e,r){var i,o,u=Fp(t-e);return zp(u)>Mp?Pp((Fp(n)*(o=Lp(r))*Fp(e)-Fp(r)*(i=Lp(n))*Fp(t))/(i*o*u)):(n+r)/2}(e,r,o,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),n=0),t.point(e=o,r=u),i=a},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*kp,r.point(-Np,i),r.point(0,i),r.point(Np,i),r.point(Np,0),r.point(Np,-i),r.point(0,-i),r.point(-Np,-i),r.point(-Np,0),r.point(-Np,i);else if(zp(t[0]-n[0])>Mp){var o=t[0]<n[0]?Np:-Np;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])},[-Np,-kp]),fd=1e9,ld=-fd,hd=je(),pd={sphere:Ge,point:Ge,lineStart:function(){pd.point=ti,pd.lineEnd=Kr},lineEnd:Ge,polygonStart:Ge,polygonEnd:Ge},dd=[null,null],vd={type:"LineString",coordinates:dd},gd={Feature:function(t,n){return ii(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(ii(e[r].geometry,n))return!0;return!1}},_d={Sphere:function(){return!0},Point:function(t,n){return oi(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(oi(e[r],n))return!0;return!1},LineString:function(t,n){return ui(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(ui(e[r],n))return!0;return!1},Polygon:function(t,n){return ai(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(ai(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(ii(e[r],n))return!0;return!1}},yd=je(),md=je(),xd={point:Ge,lineStart:Ge,lineEnd:Ge,polygonStart:function(){xd.lineStart=di,xd.lineEnd=_i},polygonEnd:function(){xd.lineStart=xd.lineEnd=xd.point=Ge,yd.add(zp(md)),md.reset()},result:function(){var t=yd/2;return yd.reset(),t}},bd=1/0,wd=bd,Md=-bd,Td=Md,Nd={point:function(t,n){t<bd&&(bd=t),t>Md&&(Md=t),n<wd&&(wd=n),n>Td&&(Td=n)},lineStart:Ge,lineEnd:Ge,polygonStart:Ge,polygonEnd:Ge,result:function(){var t=[[bd,wd],[Md,Td]];return Md=Td=-(wd=bd=1/0),t}},kd=0,Sd=0,Ed=0,Ad=0,Cd=0,zd=0,Pd=0,Rd=0,Ld=0,qd={point:yi,lineStart:mi,lineEnd:wi,polygonStart:function(){qd.lineStart=Mi,qd.lineEnd=Ti},polygonEnd:function(){qd.point=yi,qd.lineStart=mi,qd.lineEnd=wi},result:function(){var t=Ld?[Pd/Ld,Rd/Ld]:zd?[Ad/zd,Cd/zd]:Ed?[kd/Ed,Sd/Ed]:[NaN,NaN];return kd=Sd=Ed=Ad=Cd=zd=Pd=Rd=Ld=0,t}};Si.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Ep)}},result:Ge};var Dd,Ud,Od,Fd,Id,Yd=je(),Bd={point:Ge,lineStart:function(){Bd.point=Ei},lineEnd:function(){Dd&&Ai(Ud,Od),Bd.point=Ge},polygonStart:function(){Dd=!0},polygonEnd:function(){Dd=null},result:function(){var t=+Yd;return Yd.reset(),t}};Ci.prototype={_radius:4.5,_circle:zi(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=zi(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},Ri.prototype={constructor:Ri,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Hd=16,jd=Lp(30*Cp),Xd=Pi({point:function(t,n){this.stream.point(t*Cp,n*Cp)}}),Vd=Vi(function(t){return Yp(2/(1+t))});Vd.invert=$i(function(t){return 2*We(t/2)});var $d=Vi(function(t){return(t=$e(t))&&t/Fp(t)});$d.invert=$i(function(t){return t}),Wi.invert=function(t,n){return[t,2*Pp(Dp(n))-kp]},Ji.invert=Ji,to.invert=$i(Pp),eo.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,u=o*o;r-=e=(r*(1.007226+o*(.015085+u*(.028874*o-.044475-.005916*u)))-n)/(1.007226+o*(.045255+u*(.259866*o-.311325-.005916*11*u)))}while(zp(e)>Mp&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},ro.invert=$i(We),io.invert=$i(function(t){return 2*Pp(t)}),oo.invert=function(t,n){return[-n,2*Pp(Dp(t))-kp]},vo.prototype=fo.prototype={constructor:vo,count:function(){return this.eachAfter(so)},each:function(t){var n,e,r,i,o=this,u=[o];do{for(n=u.reverse(),u=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r<i;++r)u.push(e[r])}while(u.length);return this},eachAfter:function(t){for(var n,e,r,i=this,o=[i],u=[];i=o.pop();)if(u.push(i),n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e]);for(;i=u.pop();)t(i);return this},eachBefore:function(t){for(var n,e,r=this,i=[r];r=i.pop();)if(t(r),n=r.children)for(e=n.length-1;e>=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return fo(this).eachBefore(ho)}};var Wd=Array.prototype.slice,Zd="$",Gd={depth:-1},Qd={};Ho.prototype=Object.create(vo.prototype);var Jd=(1+Math.sqrt(5))/2,Kd=function t(n){function e(t,e,r,i,o){Xo(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Jd),tv=function t(n){function e(t,e,r,i,o){if((u=t._squarify)&&u.ratio===n)for(var u,a,c,s,f,l=-1,h=u.length,p=t.value;++l<h;){for(c=(a=u[l]).children,s=a.value=0,f=c.length;s<f;++s)a.value+=c[s].value;a.dice?qo(a,e,r,i,r+=(o-r)*a.value/p):jo(a,e,r,e+=(i-e)*a.value/p,o),p-=a.value}else t._squarify=u=Xo(n,t,e,r,i,o),u.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Jd),nv=[].slice,ev={};Zo.prototype=Ko.prototype={constructor:Zo,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var n=nv.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),Go(this),this},abort:function(){return null==this._error&&Qo(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(n,e){t.apply(null,[n].concat(e))},Jo(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,Jo(this),this}};var rv=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(tu),iv=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(tu),ov=function t(n){function e(){var t=iv.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(tu),uv=function t(n){function e(t){return function(){for(var e=0,r=0;r<t;++r)e+=n();return e}}return e.source=t,e}(tu),av=function t(n){function e(t){var e=uv.source(n)(t);return function(){return e()/t}}return e.source=t,e}(tu),cv=function t(n){function e(t){return function(){return-Math.log(1-n())/t}}return e.source=t,e}(tu),sv=eu("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)}),fv=eu("application/json",function(t){return JSON.parse(t.responseText)}),lv=eu("text/plain",function(t){return t.responseText}),hv=eu("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n}),pv=ru("text/csv",Eh),dv=ru("text/tab-separated-values",Rh),vv=Array.prototype,gv=vv.map,_v=vv.slice,yv={name:"implicit"},mv=[0,1],xv=new Date,bv=new Date,wv=Cu(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});wv.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Cu(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):wv:null};var Mv=wv.range,Tv=6e4,Nv=6048e5,kv=Cu(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),Sv=kv.range,Ev=Cu(function(t){t.setTime(Math.floor(t/Tv)*Tv)},function(t,n){t.setTime(+t+n*Tv)},function(t,n){return(n-t)/Tv},function(t){return t.getMinutes()}),Av=Ev.range,Cv=Cu(function(t){var n=t.getTimezoneOffset()*Tv%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),zv=Cv.range,Pv=Cu(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Tv)/864e5},function(t){return t.getDate()-1}),Rv=Pv.range,Lv=zu(0),qv=zu(1),Dv=zu(2),Uv=zu(3),Ov=zu(4),Fv=zu(5),Iv=zu(6),Yv=Lv.range,Bv=qv.range,Hv=Dv.range,jv=Uv.range,Xv=Ov.range,Vv=Fv.range,$v=Iv.range,Wv=Cu(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),Zv=Wv.range,Gv=Cu(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Gv.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Cu(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var Qv=Gv.range,Jv=Cu(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Tv)},function(t,n){return(n-t)/Tv},function(t){return t.getUTCMinutes()}),Kv=Jv.range,tg=Cu(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),ng=tg.range,eg=Cu(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),rg=eg.range,ig=Pu(0),og=Pu(1),ug=Pu(2),ag=Pu(3),cg=Pu(4),sg=Pu(5),fg=Pu(6),lg=ig.range,hg=og.range,pg=ug.range,dg=ag.range,vg=cg.range,gg=sg.range,_g=fg.range,yg=Cu(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),mg=yg.range,xg=Cu(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});xg.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Cu(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var bg,wg=xg.range,Mg={"-":"",_:" ",0:"0"},Tg=/^\s*\d+/,Ng=/^%/,kg=/[\\^$*+?|[\]().{}]/g;Ha({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Sg="%Y-%m-%dT%H:%M:%S.%LZ",Eg=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(Sg),Ag=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(Sg),Cg=1e3,zg=60*Cg,Pg=60*zg,Rg=24*Pg,Lg=7*Rg,qg=30*Rg,Dg=365*Rg,Ug=$a("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Og=$a("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),Fg=$a("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),Ig=$a("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),Yg=al($t(300,.5,0),$t(-240,.5,1)),Bg=al($t(-100,.75,.35),$t(80,1.5,.8)),Hg=al($t(260,.75,.35),$t(80,1.5,.8)),jg=$t(),Xg=Wa($a("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Vg=Wa($a("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),$g=Wa($a("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Wg=Wa($a("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),Zg=Math.abs,Gg=Math.atan2,Qg=Math.cos,Jg=Math.max,Kg=Math.min,t_=Math.sin,n_=Math.sqrt,e_=1e-12,r_=Math.PI,i_=r_/2,o_=2*r_;ic.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var u_=pc(oc);hc.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var a_=Array.prototype.slice,c_={draw:function(t,n){var e=Math.sqrt(n/r_);t.moveTo(e,0),t.arc(0,0,e,0,o_)}},s_={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},f_=Math.sqrt(1/3),l_=2*f_,h_={draw:function(t,n){var e=Math.sqrt(n/l_),r=e*f_;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},p_=Math.sin(r_/10)/Math.sin(7*r_/10),d_=Math.sin(o_/10)*p_,v_=-Math.cos(o_/10)*p_,g_={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=d_*e,i=v_*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var u=o_*o/5,a=Math.cos(u),c=Math.sin(u);t.lineTo(c*e,-a*e),t.lineTo(a*r-c*i,c*r+a*i)}t.closePath()}},__={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},y_=Math.sqrt(3),m_={draw:function(t,n){var e=-Math.sqrt(n/(3*y_));t.moveTo(0,2*e),t.lineTo(-y_*e,-e),t.lineTo(y_*e,-e),t.closePath()}},x_=Math.sqrt(3)/2,b_=1/Math.sqrt(12),w_=3*(b_/2+1),M_={draw:function(t,n){var e=Math.sqrt(n/w_),r=e/2,i=e*b_,o=r,u=e*b_+e,a=-o,c=u;t.moveTo(r,i),t.lineTo(o,u),t.lineTo(a,c),t.lineTo(-.5*r-x_*i,x_*r+-.5*i),t.lineTo(-.5*o-x_*u,x_*o+-.5*u),t.lineTo(-.5*a-x_*c,x_*a+-.5*c),t.lineTo(-.5*r+x_*i,-.5*i-x_*r),t.lineTo(-.5*o+x_*u,-.5*u-x_*o),t.lineTo(-.5*a+x_*c,-.5*c-x_*a),t.closePath()}},T_=[c_,s_,h_,__,g_,m_,M_];kc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Nc(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Nc(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Sc.prototype={areaStart:Tc,areaEnd:Tc,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Nc(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ec.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Nc(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ac.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],u=t[e]-i,a=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*u),this._beta*n[c]+(1-this._beta)*(o+r*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var N_=function t(n){function e(t){return 1===n?new kc(t):new Ac(t,n)}return e.beta=function(n){return t(+n)},e}(.85);zc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Cc(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Cc(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var k_=function t(n){function e(t){return new zc(t,n)}return e.tension=function(n){return t(+n)},e}(0);Pc.prototype={areaStart:Tc,areaEnd:Tc,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Cc(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var S_=function t(n){function e(t){return new Pc(t,n)}return e.tension=function(n){return t(+n)},e}(0);Rc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Cc(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var E_=function t(n){function e(t){return new Rc(t,n)}return e.tension=function(n){return t(+n)},e}(0);qc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Lc(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var A_=function t(n){function e(t){return n?new qc(t,n):new zc(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Dc.prototype={areaStart:Tc,areaEnd:Tc,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Lc(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var C_=function t(n){function e(t){return n?new Dc(t,n):new Pc(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Uc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Lc(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var z_=function t(n){function e(t){return n?new Uc(t,n):new Rc(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Oc.prototype={areaStart:Tc,areaEnd:Tc,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},Hc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Bc(this,this._t0,Yc(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(t=+t,n=+n,t!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,Bc(this,Yc(this,e=Ic(this,t,n)),e);break;default:Bc(this,this._t0,e=Ic(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(jc.prototype=Object.create(Hc.prototype)).point=function(t,n){Hc.prototype.point.call(this,n,t)},Xc.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},Vc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=$c(t),i=$c(n),o=0,u=1;u<e;++o,++u)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[u],n[u]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},Wc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},rs.prototype={constructor:rs,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=as(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(os(this,e),e=(t=e).U),e.C=!1,r.C=!0,us(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(us(this,e),e=(t=e).U),e.C=!1,r.C=!0,os(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,u=t.R;if(e=o?u?as(u):o:u,i?i.L===t?i.L=e:i.R=e:this._=e,o&&u?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==u?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=u,u.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,os(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,us(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,os(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,us(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,os(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,us(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var P_,R_,L_,q_,D_,U_=[],O_=[],F_=1e-6,I_=1e-12;Ns.prototype={constructor:Ns,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return ds(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,u,a=e.site,c=-1,s=n[i[o-1]],f=s.left===a?s.right:s.left;++c<o;)u=f,f=(s=n[i[c]]).left===a?s.right:s.left,u&&f&&r<u.index&&r<f.index&&Ms(a,u,f)<0&&t.push([a.data,u.data,f.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,n,e){for(var r,i,o=this,u=o._found||0,a=o.cells.length;!(i=o.cells[u]);)if(++u>=a)return null;var c=t-i.site[0],s=n-i.site[1],f=c*c+s*s;do{i=o.cells[r=u],u=null,i.halfedges.forEach(function(e){var r=o.edges[e],a=r.left;if(a!==i.site&&a||(a=r.right)){var c=t-a[0],s=n-a[1],l=c*c+s*s;l<f&&(f=l,u=a.index)}})}while(null!==u);return o._found=r,null==e||f<=e*e?i.site:null}},Ss.prototype={constructor:Ss,scale:function(t){return 1===t?this:new Ss(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new Ss(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Y_=new Ss(1,0,0);Es.prototype=Ss.prototype,t.version="4.13.0",t.bisect=Os,t.bisectRight=Os,t.bisectLeft=Fs,t.ascending=n,t.bisector=e,t.cross=function(t,n,e){var i,o,u,a,c=t.length,s=n.length,f=new Array(c*s);for(null==e&&(e=r),i=u=0;i<c;++i)for(a=t[i],o=0;o<s;++o,++u)f[u]=e(a,n[o]);return f},t.descending=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN},t.deviation=u,t.extent=a,t.histogram=function(){function t(t){var i,o,u=t.length,a=new Array(u);for(i=0;i<u;++i)a[i]=n(t[i],i,t);var c=e(a),s=c[0],l=c[1],h=r(a,s,l);Array.isArray(h)||(h=p(s,l,h),h=f(Math.ceil(s/h)*h,Math.floor(l/h)*h,h));for(var d=h.length;h[0]<=s;)h.shift(),--d;for(;h[d-1]>l;)h.pop(),--d;var v,g=new Array(d+1);for(i=0;i<=d;++i)(v=g[i]=[]).x0=i>0?h[i-1]:s,v.x1=i<d?h[i]:l;for(i=0;i<u;++i)s<=(o=a[i])&&o<=l&&g[Os(h,o,0,d)].push(t[i]);return g}var n=s,e=a,r=d;return t.value=function(e){return arguments.length?(n="function"==typeof e?e:c(e),t):n},t.domain=function(n){return arguments.length?(e="function"==typeof n?n:c([n[0],n[1]]),t):e},t.thresholds=function(n){return arguments.length?(r="function"==typeof n?n:Array.isArray(n)?c(Ys.call(n)):c(n),t):r},t},t.thresholdFreedmanDiaconis=function(t,e,r){return t=Bs.call(t,i).sort(n),Math.ceil((r-e)/(2*(v(t,.75)-v(t,.25))*Math.pow(t.length,-1/3)))},t.thresholdScott=function(t,n,e){return Math.ceil((e-n)/(3.5*u(t)*Math.pow(t.length,-1/3)))},t.thresholdSturges=d,t.max=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&e>r&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&e>r&&(r=e);return r},t.mean=function(t,n){var e,r=t.length,o=r,u=-1,a=0;if(null==n)for(;++u<r;)isNaN(e=i(t[u]))?--o:a+=e;else for(;++u<r;)isNaN(e=i(n(t[u],u,t)))?--o:a+=e;if(o)return a/o},t.median=function(t,e){var r,o=t.length,u=-1,a=[];if(null==e)for(;++u<o;)isNaN(r=i(t[u]))||a.push(r);else for(;++u<o;)isNaN(r=i(e(t[u],u,t)))||a.push(r);return v(a.sort(n),.5)},t.merge=g,t.min=_,t.pairs=function(t,n){null==n&&(n=r);for(var e=0,i=t.length-1,o=t[0],u=new Array(i<0?0:i);e<i;)u[e]=n(o,o=t[++e]);return u},t.permute=function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r},t.quantile=v,t.range=f,t.scan=function(t,e){if(r=t.length){var r,i,o=0,u=0,a=t[u];for(null==e&&(e=n);++o<r;)(e(i=t[o],a)<0||0!==e(a,a))&&(a=i,u=o);return 0===e(a,a)?u:void 0}},t.shuffle=function(t,n,e){for(var r,i,o=(null==e?t.length:e)-(n=null==n?0:+n);o;)i=Math.random()*o--|0,r=t[o+n],t[o+n]=t[i+n],t[i+n]=r;return t},t.sum=function(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i<r;)(e=+t[i])&&(o+=e);else for(;++i<r;)(e=+n(t[i],i,t))&&(o+=e);return o},t.ticks=l,t.tickIncrement=h,t.tickStep=p,t.transpose=y,t.variance=o,t.zip=function(){return y(arguments)},t.axisTop=function(t){return T($s,t)},t.axisRight=function(t){return T(Ws,t)},t.axisBottom=function(t){return T(Zs,t)},t.axisLeft=function(t){return T(Gs,t)},t.brush=function(){return Kn(oh)},t.brushX=function(){return Kn(rh)},t.brushY=function(){return Kn(ih)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.chord=function(){function t(t){var o,u,a,c,s,l,h=t.length,p=[],d=f(h),v=[],g=[],_=g.groups=new Array(h),y=new Array(h*h);for(o=0,s=-1;++s<h;){for(u=0,l=-1;++l<h;)u+=t[s][l];p.push(u),v.push(f(h)),o+=u}for(e&&d.sort(function(t,n){return e(p[t],p[n])}),r&&v.forEach(function(n,e){n.sort(function(n,i){return r(t[e][n],t[e][i])})}),c=(o=gh(0,vh-n*h)/o)?n:vh/h,u=0,s=-1;++s<h;){for(a=u,l=-1;++l<h;){var m=d[s],x=v[m][l],b=t[m][x],w=u,M=u+=b*o;y[x*h+m]={index:m,subindex:x,startAngle:w,endAngle:M,value:b}}_[m]={index:m,startAngle:a,endAngle:u,value:p[m]},u+=c}for(s=-1;++s<h;)for(l=s-1;++l<h;){var T=y[l*h+s],N=y[s*h+l];(T.value||N.value)&&g.push(T.value<N.value?{source:N,target:T}:{source:T,target:N})}return i?g.sort(i):g}var n=0,e=null,r=null,i=null;return t.padAngle=function(e){return arguments.length?(n=gh(0,e),t):n},t.sortGroups=function(n){return arguments.length?(e=n,t):e},t.sortSubgroups=function(n){return arguments.length?(r=n,t):r},t.sortChords=function(n){return arguments.length?(null==n?i=null:(i=function(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}(n))._=n,t):i&&i._},t},t.ribbon=function(){function t(){var t,a=_h.call(arguments),c=n.apply(this,a),s=e.apply(this,a),f=+r.apply(this,(a[0]=c,a)),l=i.apply(this,a)-dh,h=o.apply(this,a)-dh,p=f*lh(l),d=f*hh(l),v=+r.apply(this,(a[0]=s,a)),g=i.apply(this,a)-dh,_=o.apply(this,a)-dh;if(u||(u=t=ee()),u.moveTo(p,d),u.arc(0,0,f,l,h),l===g&&h===_||(u.quadraticCurveTo(0,0,v*lh(g),v*hh(g)),u.arc(0,0,v,g,_)),u.quadraticCurveTo(0,0,p,d),u.closePath(),t)return u=null,t+""||null}var n=re,e=ie,r=oe,i=ue,o=ae,u=null;return t.radius=function(n){return arguments.length?(r="function"==typeof n?n:te(+n),t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:te(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:te(+n),t):o},t.source=function(e){return arguments.length?(n=e,t):n},t.target=function(n){return arguments.length?(e=n,t):e},t.context=function(n){return arguments.length?(u=null==n?null:n,t):u},t},t.nest=function(){function t(n,i,u,a){if(i>=o.length)return null!=e&&n.sort(e),null!=r?r(n):n;for(var c,s,f,l=-1,h=n.length,p=o[i++],d=se(),v=u();++l<h;)(f=d.get(c=p(s=n[l])+""))?f.push(s):d.set(c,[s]);return d.each(function(n,e){a(v,e,t(n,i,u,a))}),v}function n(t,e){if(++e>o.length)return t;var i,a=u[e-1];return null!=r&&e>=o.length?i=t.entries():(i=[],t.each(function(t,r){i.push({key:r,values:n(t,e)})})),null!=a?i.sort(function(t,n){return a(t.key,n.key)}):i}var e,r,i,o=[],u=[];return i={object:function(n){return t(n,0,fe,le)},map:function(n){return t(n,0,he,pe)},entries:function(e){return n(t(e,0,he,pe),0)},key:function(t){return o.push(t),i},sortKeys:function(t){return u[o.length-1]=t,i},sortValues:function(t){return e=t,i},rollup:function(t){return r=t,i}}},t.set=ve,t.map=se,t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.color=Et,t.rgb=Pt,t.hsl=qt,t.lab=Ft,t.hcl=Xt,t.cubehelix=$t,t.dispatch=N,t.drag=function(){function n(t){t.on("mousedown.drag",e).filter(g).on("touchstart.drag",o).on("touchmove.drag",u).on("touchend.drag touchcancel.drag",a).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(){if(!h&&p.apply(this,arguments)){var n=c("mouse",d.apply(this,arguments),pt,this,arguments);n&&(ct(t.event.view).on("mousemove.drag",r,!0).on("mouseup.drag",i,!0),_t(t.event.view),vt(),l=!1,s=t.event.clientX,f=t.event.clientY,n("start"))}}function r(){if(gt(),!l){var n=t.event.clientX-s,e=t.event.clientY-f;l=n*n+e*e>x}_.mouse("drag")}function i(){ct(t.event.view).on("mousemove.drag mouseup.drag",null),yt(t.event.view,l),gt(),_.mouse("end")}function o(){if(p.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=d.apply(this,arguments),o=r.length;for(n=0;n<o;++n)(e=c(r[n].identifier,i,dt,this,arguments))&&(vt(),e("start"))}}function u(){var n,e,r=t.event.changedTouches,i=r.length;for(n=0;n<i;++n)(e=_[r[n].identifier])&&(gt(),e("drag"))}function a(){var n,e,r=t.event.changedTouches,i=r.length;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),n=0;n<i;++n)(e=_[r[n].identifier])&&(vt(),e("end"))}function c(e,r,i,o,u){var a,c,s,f=i(r,e),l=y.copy();if(it(new xt(n,"beforestart",a,e,m,f[0],f[1],0,0,l),function(){return null!=(t.event.subject=a=v.apply(o,u))&&(c=a.x-f[0]||0,s=a.y-f[1]||0,!0)}))return function t(h){var p,d=f;switch(h){case"start":_[e]=t,p=m++;break;case"end":delete _[e],--m;case"drag":f=i(r,e),p=m}it(new xt(n,h,a,e,p,f[0]+c,f[1]+s,f[0]-d[0],f[1]-d[1],l),l.apply,l,[h,o,u])}}var s,f,l,h,p=bt,d=wt,v=Mt,g=Tt,_={},y=N("start","drag","end"),m=0,x=0;return n.filter=function(t){return arguments.length?(p="function"==typeof t?t:mt(!!t),n):p},n.container=function(t){return arguments.length?(d="function"==typeof t?t:mt(t),n):d},n.subject=function(t){return arguments.length?(v="function"==typeof t?t:mt(t),n):v},n.touchable=function(t){return arguments.length?(g="function"==typeof t?t:mt(!!t),n):g},n.on=function(){var t=y.on.apply(y,arguments);return t===y?n:t},n.clickDistance=function(t){return arguments.length?(x=(t=+t)*t,n):Math.sqrt(x)},n},t.dragDisable=_t,t.dragEnable=yt,t.dsvFormat=_e,t.csvParse=Eh,t.csvParseRows=Ah,t.csvFormat=Ch,t.csvFormatRows=zh,t.tsvParse=Rh,t.tsvParseRows=Lh,t.tsvFormat=qh,t.tsvFormatRows=Dh,t.easeLinear=function(t){return+t},t.easeQuad=On,t.easeQuadIn=function(t){return t*t},t.easeQuadOut=function(t){return t*(2-t)},t.easeQuadInOut=On,t.easeCubic=Fn,t.easeCubicIn=function(t){return t*t*t},t.easeCubicOut=function(t){return--t*t*t+1},t.easeCubicInOut=Fn,t.easePoly=zl,t.easePolyIn=Al,t.easePolyOut=Cl,t.easePolyInOut=zl,t.easeSin=In,t.easeSinIn=function(t){return 1-Math.cos(t*Rl)},t.easeSinOut=function(t){return Math.sin(t*Rl)},t.easeSinInOut=In,t.easeExp=Yn,t.easeExpIn=function(t){return Math.pow(2,10*t-10)},t.easeExpOut=function(t){return 1-Math.pow(2,-10*t)},t.easeExpInOut=Yn,t.easeCircle=Bn,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCircleInOut=Bn,t.easeBounce=Hn,t.easeBounceIn=function(t){return 1-Hn(1-t)},t.easeBounceOut=Hn,t.easeBounceInOut=function(t){return((t*=2)<=1?1-Hn(1-t):Hn(t-1)+1)/2},t.easeBack=Vl,t.easeBackIn=jl,t.easeBackOut=Xl,t.easeBackInOut=Vl,t.easeElastic=Zl,t.easeElasticIn=Wl,t.easeElasticOut=Zl,t.easeElasticInOut=Gl,t.forceCenter=function(t,n){function e(){var e,i,o=r.length,u=0,a=0;for(e=0;e<o;++e)u+=(i=r[e]).x,a+=i.y;for(u=u/o-t,a=a/o-n,e=0;e<o;++e)(i=r[e]).x-=u,i.y-=a}var r;return null==t&&(t=0),null==n&&(n=0),e.initialize=function(t){r=t},e.x=function(n){return arguments.length?(t=+n,e):t},e.y=function(t){return arguments.length?(n=+t,e):n},e},t.forceCollide=function(t){function n(){for(var t,n,r,c,s,f,l,h=i.length,p=0;p<a;++p)for(n=Te(i,Se,Ee).visitAfter(e),t=0;t<h;++t)r=i[t],f=o[r.index],l=f*f,c=r.x+r.vx,s=r.y+r.vy,n.visit(function(t,n,e,i,o){var a=t.data,h=t.r,p=f+h;if(!a)return n>c+p||i<c-p||e>s+p||o<s-p;if(a.index>r.index){var d=c-a.x-a.vx,v=s-a.y-a.vy,g=d*d+v*v;g<p*p&&(0===d&&(d=me(),g+=d*d),0===v&&(v=me(),g+=v*v),g=(p-(g=Math.sqrt(g)))/g*u,r.vx+=(d*=g)*(p=(h*=h)/(l+h)),r.vy+=(v*=g)*p,a.vx-=d*(p=1-p),a.vy-=v*p)}})}function e(t){if(t.data)return t.r=o[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function r(){if(i){var n,e,r=i.length;for(o=new Array(r),n=0;n<r;++n)e=i[n],o[e.index]=+t(e,n,i)}}var i,o,u=1,a=1;return"function"!=typeof t&&(t=ye(null==t?1:+t)),n.initialize=function(t){i=t,r()},n.iterations=function(t){return arguments.length?(a=+t,n):a},n.strength=function(t){return arguments.length?(u=+t,n):u},n.radius=function(e){return arguments.length?(t="function"==typeof e?e:ye(+e),r(),n):t},n},t.forceLink=function(t){function n(n){for(var e=0,r=t.length;e<p;++e)for(var i,a,c,f,l,h,d,v=0;v<r;++v)a=(i=t[v]).source,f=(c=i.target).x+c.vx-a.x-a.vx||me(),l=c.y+c.vy-a.y-a.vy||me(),f*=h=((h=Math.sqrt(f*f+l*l))-u[v])/h*n*o[v],l*=h,c.vx-=f*(d=s[v]),c.vy-=l*d,a.vx+=f*(d=1-d),a.vy+=l*d}function e(){if(a){var n,e,l=a.length,h=t.length,p=se(a,f);for(n=0,c=new Array(l);n<h;++n)(e=t[n]).index=n,"object"!=typeof e.source&&(e.source=Ce(p,e.source)),"object"!=typeof e.target&&(e.target=Ce(p,e.target)),c[e.source.index]=(c[e.source.index]||0)+1,c[e.target.index]=(c[e.target.index]||0)+1;for(n=0,s=new Array(h);n<h;++n)e=t[n],s[n]=c[e.source.index]/(c[e.source.index]+c[e.target.index]);o=new Array(h),r(),u=new Array(h),i()}}function r(){if(a)for(var n=0,e=t.length;n<e;++n)o[n]=+l(t[n],n,t)}function i(){if(a)for(var n=0,e=t.length;n<e;++n)u[n]=+h(t[n],n,t)}var o,u,a,c,s,f=Ae,l=function(t){return 1/Math.min(c[t.source.index],c[t.target.index])},h=ye(30),p=1;return null==t&&(t=[]),n.initialize=function(t){a=t,e()},n.links=function(r){return arguments.length?(t=r,e(),n):t},n.id=function(t){return arguments.length?(f=t,n):f},n.iterations=function(t){return arguments.length?(p=+t,n):p},n.strength=function(t){return arguments.length?(l="function"==typeof t?t:ye(+t),r(),n):l},n.distance=function(t){return arguments.length?(h="function"==typeof t?t:ye(+t),i(),n):h},n},t.forceManyBody=function(){function t(t){var n,a=i.length,c=Te(i,ze,Pe).visitAfter(e);for(u=t,n=0;n<a;++n)o=i[n],c.visit(r)}function n(){if(i){var t,n,e=i.length;for(a=new Array(e),t=0;t<e;++t)n=i[t],a[n.index]=+c(n,t,i)}}function e(t){var n,e,r,i,o,u=0,c=0;if(t.length){for(r=i=o=0;o<4;++o)(n=t[o])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,r+=e*n.x,i+=e*n.y);t.x=r/c,t.y=i/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=a[n.data.index]}while(n=n.next)}t.value=u}function r(t,n,e,r){if(!t.value)return!0;var i=t.x-o.x,c=t.y-o.y,h=r-n,p=i*i+c*c;if(h*h/l<p)return p<f&&(0===i&&(i=me(),p+=i*i),0===c&&(c=me(),p+=c*c),p<s&&(p=Math.sqrt(s*p)),o.vx+=i*t.value*u/p,o.vy+=c*t.value*u/p),!0;if(!(t.length||p>=f)){(t.data!==o||t.next)&&(0===i&&(i=me(),p+=i*i),0===c&&(c=me(),p+=c*c),p<s&&(p=Math.sqrt(s*p)));do{t.data!==o&&(h=a[t.data.index]*u/p,o.vx+=i*h,o.vy+=c*h)}while(t=t.next)}}var i,o,u,a,c=ye(-30),s=1,f=1/0,l=.81;return t.initialize=function(t){i=t,n()},t.strength=function(e){return arguments.length?(c="function"==typeof e?e:ye(+e),n(),t):c},t.distanceMin=function(n){return arguments.length?(s=n*n,t):Math.sqrt(s)},t.distanceMax=function(n){return arguments.length?(f=n*n,t):Math.sqrt(f)},t.theta=function(n){return arguments.length?(l=n*n,t):Math.sqrt(l)},t},t.forceRadial=function(t,n,e){function r(t){for(var r=0,i=o.length;r<i;++r){var c=o[r],s=c.x-n||1e-6,f=c.y-e||1e-6,l=Math.sqrt(s*s+f*f),h=(a[r]-l)*u[r]*t/l;c.vx+=s*h,c.vy+=f*h}}function i(){if(o){var n,e=o.length;for(u=new Array(e),a=new Array(e),n=0;n<e;++n)a[n]=+t(o[n],n,o),u[n]=isNaN(a[n])?0:+c(o[n],n,o)}}var o,u,a,c=ye(.1);return"function"!=typeof t&&(t=ye(+t)),null==n&&(n=0),null==e&&(e=0),r.initialize=function(t){o=t,i()},r.strength=function(t){return arguments.length?(c="function"==typeof t?t:ye(+t),i(),r):c},r.radius=function(n){return arguments.length?(t="function"==typeof n?n:ye(+n),i(),r):t},r.x=function(t){return arguments.length?(n=+t,r):n},r.y=function(t){return arguments.length?(e=+t,r):e},r},t.forceSimulation=function(t){function n(){e(),p.call("tick",o),u<a&&(h.stop(),p.call("end",o))}function e(){var n,e,r=t.length;for(u+=(s-u)*c,l.each(function(t){t(u)}),n=0;n<r;++n)null==(e=t[n]).fx?e.x+=e.vx*=f:(e.x=e.fx,e.vx=0),null==e.fy?e.y+=e.vy*=f:(e.y=e.fy,e.vy=0)}function r(){for(var n,e=0,r=t.length;e<r;++e){if(n=t[e],n.index=e,isNaN(n.x)||isNaN(n.y)){var i=Fh*Math.sqrt(e),o=e*Ih;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function i(n){return n.initialize&&n.initialize(t),n}var o,u=1,a=.001,c=1-Math.pow(a,1/300),s=0,f=.6,l=se(),h=wn(n),p=N("tick","end");return null==t&&(t=[]),r(),o={tick:e,restart:function(){return h.restart(n),o},stop:function(){return h.stop(),o},nodes:function(n){return arguments.length?(t=n,r(),l.each(i),o):t},alpha:function(t){return arguments.length?(u=+t,o):u},alphaMin:function(t){return arguments.length?(a=+t,o):a},alphaDecay:function(t){return arguments.length?(c=+t,o):+c},alphaTarget:function(t){return arguments.length?(s=+t,o):s},velocityDecay:function(t){return arguments.length?(f=1-t,o):1-f},force:function(t,n){return arguments.length>1?(null==n?l.remove(t):l.set(t,i(n)),o):l.get(t)},find:function(n,e,r){var i,o,u,a,c,s=0,f=t.length;for(null==r?r=1/0:r*=r,s=0;s<f;++s)(u=(i=n-(a=t[s]).x)*i+(o=e-a.y)*o)<r&&(c=a,r=u);return c},on:function(t,n){return arguments.length>1?(p.on(t,n),o):p.on(t)}}},t.forceX=function(t){function n(t){for(var n,e=0,u=r.length;e<u;++e)(n=r[e]).vx+=(o[e]-n.x)*i[e]*t}function e(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)i[n]=isNaN(o[n]=+t(r[n],n,r))?0:+u(r[n],n,r)}}var r,i,o,u=ye(.1);return"function"!=typeof t&&(t=ye(null==t?0:+t)),n.initialize=function(t){r=t,e()},n.strength=function(t){return arguments.length?(u="function"==typeof t?t:ye(+t),e(),n):u},n.x=function(r){return arguments.length?(t="function"==typeof r?r:ye(+r),e(),n):t},n},t.forceY=function(t){function n(t){for(var n,e=0,u=r.length;e<u;++e)(n=r[e]).vy+=(o[e]-n.y)*i[e]*t}function e(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)i[n]=isNaN(o[n]=+t(r[n],n,r))?0:+u(r[n],n,r)}}var r,i,o,u=ye(.1);return"function"!=typeof t&&(t=ye(null==t?0:+t)),n.initialize=function(t){r=t,e()},n.strength=function(t){return arguments.length?(u="function"==typeof t?t:ye(+t),e(),n):u},n.y=function(r){return arguments.length?(t="function"==typeof r?r:ye(+r),e(),n):t},n},t.formatDefaultLocale=Ie,t.formatLocale=Fe,t.formatSpecifier=De,t.precisionFixed=Ye,t.precisionPrefix=Be,t.precisionRound=He,t.geoArea=function(t){return Vp.reset(),tr(t,$p),2*Vp},t.geoBounds=function(t){var n,e,r,i,o,u,a;if(Kh=Jh=-(Gh=Qh=1/0),ip=[],tr(t,Zp),e=ip.length){for(ip.sort(xr),n=1,o=[r=ip[0]];n<e;++n)br(r,(i=ip[n])[0])||br(r,i[1])?(mr(r[0],i[1])>mr(r[0],r[1])&&(r[1]=i[1]),mr(i[0],r[1])>mr(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(u=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(a=mr(r[1],i[0]))>u&&(u=a,Gh=i[0],Jh=r[1])}return ip=op=null,Gh===1/0||Qh===1/0?[[NaN,NaN],[NaN,NaN]]:[[Gh,Qh],[Jh,Kh]]},t.geoCentroid=function(t){up=ap=cp=sp=fp=lp=hp=pp=dp=vp=gp=0,tr(t,Gp);var n=dp,e=vp,r=gp,i=n*n+e*e+r*r;return i<Tp&&(n=lp,e=hp,r=pp,ap<Mp&&(n=cp,e=sp,r=fp),(i=n*n+e*e+r*r)<Tp)?[NaN,NaN]:[Rp(e,n)*Ap,We(r/Yp(i))*Ap]},t.geoCircle=function(){function t(){var t=r.apply(this,arguments),a=i.apply(this,arguments)*Cp,c=o.apply(this,arguments)*Cp;return n=[],e=qr(-t[0]*Cp,-t[1]*Cp,0).invert,Ir(u,a,c,1),t={type:"Polygon",coordinates:[n]},n=e=null,t}var n,e,r=Pr([0,0]),i=Pr(90),o=Pr(6),u={point:function(t,r){n.push(t=e(t,r)),t[0]*=Ap,t[1]*=Ap}};return t.center=function(n){return arguments.length?(r="function"==typeof n?n:Pr([+n[0],+n[1]]),t):r},t.radius=function(n){return arguments.length?(i="function"==typeof n?n:Pr(+n),t):i},t.precision=function(n){return arguments.length?(o="function"==typeof n?n:Pr(+n),t):o},t},t.geoClipAntimeridian=sd,t.geoClipCircle=Qr,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,u=500;return e={stream:function(e){return t&&n===e?t:t=Jr(r,i,o,u)(n=e)},extent:function(a){return arguments.length?(r=+a[0][0],i=+a[0][1],o=+a[1][0],u=+a[1][1],t=n=null,e):[[r,i],[o,u]]}}},t.geoClipRectangle=Jr,t.geoContains=function(t,n){return(t&&gd.hasOwnProperty(t.type)?gd[t.type]:ii)(t,n)},t.geoDistance=ri,t.geoGraticule=hi,t.geoGraticule10=function(){return hi()()},t.geoInterpolate=function(t,n){var e=t[0]*Cp,r=t[1]*Cp,i=n[0]*Cp,o=n[1]*Cp,u=Lp(r),a=Fp(r),c=Lp(o),s=Fp(o),f=u*Lp(e),l=u*Fp(e),h=c*Lp(i),p=c*Fp(i),d=2*We(Yp(Ze(o-r)+u*c*Ze(i-e))),v=Fp(d),g=d?function(t){var n=Fp(t*=d)/v,e=Fp(d-t)/v,r=e*f+n*h,i=e*l+n*p,o=e*a+n*s;return[Rp(i,r)*Ap,Rp(o,Yp(r*r+i*i))*Ap]}:function(){return[e*Ap,r*Ap]};return g.distance=d,g},t.geoLength=ei,t.geoPath=function(t,n){function e(t){return t&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),tr(t,r(i))),i.result()}var r,i,o=4.5;return e.area=function(t){return tr(t,r(xd)),xd.result()},e.measure=function(t){return tr(t,r(Bd)),Bd.result()},e.bounds=function(t){return tr(t,r(Nd)),Nd.result()},e.centroid=function(t){return tr(t,r(qd)),qd.result()},e.projection=function(n){return arguments.length?(r=null==n?(t=null,pi):(t=n).stream,e):t},e.context=function(t){return arguments.length?(i=null==t?(n=null,new Ci):new Si(n=t),"function"!=typeof o&&i.pointRadius(o),e):n},e.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),e):o},e.projection(t).context(n)},t.geoAlbers=Xi,t.geoAlbersUsa=function(){function t(t){var n=t[0],e=t[1];return a=null,i.point(n,e),a||(o.point(n,e),a)||(u.point(n,e),a)}function n(){return e=r=null,t}var e,r,i,o,u,a,c=Xi(),s=ji().rotate([154,0]).center([-2,58.5]).parallels([55,65]),f=ji().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){a=[t,n]}};return t.invert=function(t){var n=c.scale(),e=c.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?f:c).invert(t)},t.stream=function(t){return e&&r===t?e:e=function(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i<n;)t[i].point(e,r)},sphere:function(){for(var e=-1;++e<n;)t[e].sphere()},lineStart:function(){for(var e=-1;++e<n;)t[e].lineStart()},lineEnd:function(){for(var e=-1;++e<n;)t[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<n;)t[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<n;)t[e].polygonEnd()}}}([c.stream(r=t),s.stream(t),f.stream(t)])},t.precision=function(t){return arguments.length?(c.precision(t),s.precision(t),f.precision(t),n()):c.precision()},t.scale=function(n){return arguments.length?(c.scale(n),s.scale(.35*n),f.scale(n),t.translate(c.translate())):c.scale()},t.translate=function(t){if(!arguments.length)return c.translate();var e=c.scale(),r=+t[0],a=+t[1];return i=c.translate(t).clipExtent([[r-.455*e,a-.238*e],[r+.455*e,a+.238*e]]).stream(l),o=s.translate([r-.307*e,a+.201*e]).clipExtent([[r-.425*e+Mp,a+.12*e+Mp],[r-.214*e-Mp,a+.234*e-Mp]]).stream(l),u=f.translate([r-.205*e,a+.212*e]).clipExtent([[r-.214*e+Mp,a+.166*e+Mp],[r-.115*e-Mp,a+.234*e-Mp]]).stream(l),n()},t.fitExtent=function(n,e){return qi(t,n,e)},t.fitSize=function(n,e){return Di(t,n,e)},t.fitWidth=function(n,e){return Ui(t,n,e)},t.fitHeight=function(n,e){return Oi(t,n,e)},t.scale(1070)},t.geoAzimuthalEqualArea=function(){return Ii(Vd).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=Vd,t.geoAzimuthalEquidistant=function(){return Ii($d).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=$d,t.geoConicConformal=function(){return Bi(Qi).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=Qi,t.geoConicEqualArea=ji,t.geoConicEqualAreaRaw=Hi,t.geoConicEquidistant=function(){return Bi(Ki).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Ki,t.geoEquirectangular=function(){return Ii(Ji).scale(152.63)},t.geoEquirectangularRaw=Ji,t.geoGnomonic=function(){return Ii(to).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=to,t.geoIdentity=function(){function t(){return i=o=null,u}var n,e,r,i,o,u,a=1,c=0,s=0,f=1,l=1,h=pi,p=null,d=pi;return u={stream:function(t){return i&&o===t?i:i=h(d(o=t))},postclip:function(i){return arguments.length?(d=i,p=n=e=r=null,t()):d},clipExtent:function(i){return arguments.length?(d=null==i?(p=n=e=r=null,pi):Jr(p=+i[0][0],n=+i[0][1],e=+i[1][0],r=+i[1][1]),t()):null==p?null:[[p,n],[e,r]]},scale:function(n){return arguments.length?(h=no((a=+n)*f,a*l,c,s),t()):a},translate:function(n){return arguments.length?(h=no(a*f,a*l,c=+n[0],s=+n[1]),t()):[c,s]},reflectX:function(n){return arguments.length?(h=no(a*(f=n?-1:1),a*l,c,s),t()):f<0},reflectY:function(n){return arguments.length?(h=no(a*f,a*(l=n?-1:1),c,s),t()):l<0},fitExtent:function(t,n){return qi(u,t,n)},fitSize:function(t,n){return Di(u,t,n)},fitWidth:function(t,n){return Ui(u,t,n)},fitHeight:function(t,n){return Oi(u,t,n)}}},t.geoProjection=Ii,t.geoProjectionMutator=Yi,t.geoMercator=function(){return Zi(Wi).scale(961/Ep)},t.geoMercatorRaw=Wi,t.geoNaturalEarth1=function(){return Ii(eo).scale(175.295)},t.geoNaturalEarth1Raw=eo,t.geoOrthographic=function(){return Ii(ro).scale(249.5).clipAngle(90+Mp)},t.geoOrthographicRaw=ro,t.geoStereographic=function(){return Ii(io).scale(250).clipAngle(142)},t.geoStereographicRaw=io,t.geoTransverseMercator=function(){var t=Zi(oo),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):(t=n(),[t[1],-t[0]])},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):(t=e(),[t[0],t[1],t[2]-90])},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=oo,t.geoRotation=Fr,t.geoStream=tr,t.geoTransform=function(t){return{stream:Pi(t)}},t.cluster=function(){function t(t){var o,u=0;t.eachAfter(function(t){var e=t.children;e?(t.x=function(t){return t.reduce(ao,0)/t.length}(e),t.y=function(t){return 1+t.reduce(co,0)}(e)):(t.x=o?u+=n(t,o):0,t.y=0,o=t)});var a=function(t){for(var n;n=t.children;)t=n[0];return t}(t),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(t),s=a.x-n(a,c)/2,f=c.x+n(c,a)/2;return t.eachAfter(i?function(n){n.x=(n.x-t.x)*e,n.y=(t.y-n.y)*r}:function(n){n.x=(n.x-s)/(f-s)*e,n.y=(1-(t.y?n.y/t.y:1))*r})}var n=uo,e=1,r=1,i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(n){return arguments.length?(i=!1,e=+n[0],r=+n[1],t):i?null:[e,r]},t.nodeSize=function(n){return arguments.length?(i=!0,e=+n[0],r=+n[1],t):i?[e,r]:null},t},t.hierarchy=fo,t.pack=function(){function t(t){return t.x=e/2,t.y=r/2,n?t.eachBefore(zo(n)).eachAfter(Po(i,.5)).eachBefore(Ro(1)):t.eachBefore(zo(Co)).eachAfter(Po(Eo,1)).eachAfter(Po(i,t.r/Math.min(e,r))).eachBefore(Ro(Math.min(e,r)/(2*t.r))),t}var n=null,e=1,r=1,i=Eo;return t.radius=function(e){return arguments.length?(n=function(t){return null==t?null:So(t)}(e),t):n},t.size=function(n){return arguments.length?(e=+n[0],r=+n[1],t):[e,r]},t.padding=function(n){return arguments.length?(i="function"==typeof n?n:Ao(+n),t):i},t},t.packSiblings=function(t){return ko(t),t},t.packEnclose=go,t.partition=function(){function t(t){var o=t.height+1;return t.x0=t.y0=r,t.x1=n,t.y1=e/o,t.eachBefore(function(t,n){return function(e){e.children&&qo(e,e.x0,t*(e.depth+1)/n,e.x1,t*(e.depth+2)/n);var i=e.x0,o=e.y0,u=e.x1-r,a=e.y1-r;u<i&&(i=u=(i+u)/2),a<o&&(o=a=(o+a)/2),e.x0=i,e.y0=o,e.x1=u,e.y1=a}}(e,o)),i&&t.eachBefore(Lo),t}var n=1,e=1,r=0,i=!1;return t.round=function(n){return arguments.length?(i=!!n,t):i},t.size=function(r){return arguments.length?(n=+r[0],e=+r[1],t):[n,e]},t.padding=function(n){return arguments.length?(r=+n,t):r},t},t.stratify=function(){function t(t){var r,i,o,u,a,c,s,f=t.length,l=new Array(f),h={};for(i=0;i<f;++i)r=t[i],a=l[i]=new vo(r),null!=(c=n(r,i,t))&&(c+="")&&(h[s=Zd+(a.id=c)]=s in h?Qd:a);for(i=0;i<f;++i)if(a=l[i],null!=(c=e(t[i],i,t))&&(c+="")){if(!(u=h[Zd+c]))throw new Error("missing: "+c);if(u===Qd)throw new Error("ambiguous: "+c);u.children?u.children.push(a):u.children=[a],a.parent=u}else{if(o)throw new Error("multiple roots");o=a}if(!o)throw new Error("no root");if(o.parent=Gd,o.eachBefore(function(t){t.depth=t.parent.depth+1,--f}).eachBefore(po),o.parent=null,f>0)throw new Error("cycle");return o}var n=Do,e=Uo;return t.id=function(e){return arguments.length?(n=So(e),t):n},t.parentId=function(n){return arguments.length?(e=So(n),t):e},t},t.tree=function(){function t(t){var c=function(t){for(var n,e,r,i,o,u=new Ho(t,0),a=[u];n=a.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)a.push(e=n.children[i]=new Ho(r[i],i)),e.parent=n;return(u.parent=new Ho(null,0)).children=[u],u}(t);if(c.eachAfter(n),c.parent.m=-c.z,c.eachBefore(e),a)t.eachBefore(r);else{var s=t,f=t,l=t;t.eachBefore(function(t){t.x<s.x&&(s=t),t.x>f.x&&(f=t),t.depth>l.depth&&(l=t)});var h=s===f?1:i(s,f)/2,p=h-s.x,d=o/(f.x+h+p),v=u/(l.depth||1);t.eachBefore(function(t){t.x=(t.x+p)*d,t.y=t.depth*v})}return t}function n(t){var n=t.children,e=t.parent.children,r=t.i?e[t.i-1]:null;if(n){(function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)})(t);var o=(n[0].z+n[n.length-1].z)/2;r?(t.z=r.z+i(t._,r._),t.m=t.z-o):t.z=o}else r&&(t.z=r.z+i(t._,r._));t.parent.A=function(t,n,e){if(n){for(var r,o=t,u=t,a=n,c=o.parent.children[0],s=o.m,f=u.m,l=a.m,h=c.m;a=Io(a),o=Fo(o),a&&o;)c=Fo(c),(u=Io(u)).a=t,(r=a.z+l-o.z-s+i(a._,o._))>0&&(Yo(Bo(a,t,e),t,r),s+=r,f+=r),l+=a.m,s+=o.m,h+=c.m,f+=u.m;a&&!Io(u)&&(u.t=a,u.m+=l-f),o&&!Fo(c)&&(c.t=o,c.m+=s-h,e=t)}return e}(t,r,t.parent.A||e[0])}function e(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t){t.x*=o,t.y=t.depth*u}var i=Oo,o=1,u=1,a=null;return t.separation=function(n){return arguments.length?(i=n,t):i},t.size=function(n){return arguments.length?(a=!1,o=+n[0],u=+n[1],t):a?null:[o,u]},t.nodeSize=function(n){return arguments.length?(a=!0,o=+n[0],u=+n[1],t):a?[o,u]:null},t},t.treemap=function(){function t(t){return t.x0=t.y0=0,t.x1=i,t.y1=o,t.eachBefore(n),u=[0],r&&t.eachBefore(Lo),t}function n(t){var n=u[t.depth],r=t.x0+n,i=t.y0+n,o=t.x1-n,h=t.y1-n;o<r&&(r=o=(r+o)/2),h<i&&(i=h=(i+h)/2),t.x0=r,t.y0=i,t.x1=o,t.y1=h,t.children&&(n=u[t.depth+1]=a(t)/2,r+=l(t)-n,i+=c(t)-n,o-=s(t)-n,h-=f(t)-n,o<r&&(r=o=(r+o)/2),h<i&&(i=h=(i+h)/2),e(t,r,i,o,h))}var e=Kd,r=!1,i=1,o=1,u=[0],a=Eo,c=Eo,s=Eo,f=Eo,l=Eo;return t.round=function(n){return arguments.length?(r=!!n,t):r},t.size=function(n){return arguments.length?(i=+n[0],o=+n[1],t):[i,o]},t.tile=function(n){return arguments.length?(e=So(n),t):e},t.padding=function(n){return arguments.length?t.paddingInner(n).paddingOuter(n):t.paddingInner()},t.paddingInner=function(n){return arguments.length?(a="function"==typeof n?n:Ao(+n),t):a},t.paddingOuter=function(n){return arguments.length?t.paddingTop(n).paddingRight(n).paddingBottom(n).paddingLeft(n):t.paddingTop()},t.paddingTop=function(n){return arguments.length?(c="function"==typeof n?n:Ao(+n),t):c},t.paddingRight=function(n){return arguments.length?(s="function"==typeof n?n:Ao(+n),t):s},t.paddingBottom=function(n){return arguments.length?(f="function"==typeof n?n:Ao(+n),t):f},t.paddingLeft=function(n){return arguments.length?(l="function"==typeof n?n:Ao(+n),t):l},t},t.treemapBinary=function(t,n,e,r,i){function o(t,n,e,r,i,u,a){if(t>=n-1){var s=c[t];return s.x0=r,s.y0=i,s.x1=u,void(s.y1=a)}for(var l=f[t],h=e/2+l,p=t+1,d=n-1;p<d;){var v=p+d>>>1;f[v]<h?p=v+1:d=v}h-f[p-1]<f[p]-h&&t+1<p&&--p;var g=f[p]-l,_=e-g;if(u-r>a-i){var y=(r*_+u*g)/e;o(t,p,g,r,i,y,a),o(p,n,_,y,i,u,a)}else{var m=(i*_+a*g)/e;o(t,p,g,r,i,u,m),o(p,n,_,r,m,u,a)}}var u,a,c=t.children,s=c.length,f=new Array(s+1);for(f[0]=a=u=0;u<s;++u)f[u+1]=a+=c[u].value;o(0,s,t.value,n,e,r,i)},t.treemapDice=qo,t.treemapSlice=jo,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?jo:qo)(t,n,e,r,i)},t.treemapSquarify=Kd,t.treemapResquarify=tv,t.interpolate=fn,t.interpolateArray=on,t.interpolateBasis=Gt,t.interpolateBasisClosed=Qt,t.interpolateDate=un,t.interpolateNumber=an,t.interpolateObject=cn,t.interpolateRound=ln,t.interpolateString=sn,t.interpolateTransformCss=Gf,t.interpolateTransformSvg=Qf,t.interpolateZoom=vn,t.interpolateRgb=Hf,t.interpolateRgbBasis=jf,t.interpolateRgbBasisClosed=Xf,t.interpolateHsl=el,t.interpolateHslLong=rl,t.interpolateLab=function(t,n){var e=en((t=Ft(t)).l,(n=Ft(n)).l),r=en(t.a,n.a),i=en(t.b,n.b),o=en(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateHcl=il,t.interpolateHclLong=ol,t.interpolateCubehelix=ul,t.interpolateCubehelixLong=al,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.path=ee,t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,u=0,a=t[i-1],c=0;++r<i;)n=a,a=t[r],c+=e=n[0]*a[1]-a[0]*n[1],o+=(n[0]+a[0])*e,u+=(n[1]+a[1])*e;return c*=3,[o/c,u/c]},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort($o),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=Wo(r),u=Wo(i),a=u[0]===o[0],c=u[u.length-1]===o[o.length-1],s=[];for(n=o.length-1;n>=0;--n)s.push(t[r[o[n]][2]]);for(n=+a;n<u.length-c;++n)s.push(t[r[u[n]][2]]);return s},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],u=n[0],a=n[1],c=o[0],s=o[1],f=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>a!=s>a&&u<(c-e)*(a-r)/(s-r)+e&&(f=!f),c=e,s=r;return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],u=o[0],a=o[1],c=0;++r<i;)n=u,e=a,n-=u=(o=t[r])[0],e-=a=o[1],c+=Math.sqrt(n*n+e*e);return c},t.quadtree=Te,t.queue=Ko,t.randomUniform=rv,t.randomNormal=iv,t.randomLogNormal=ov,t.randomBates=av,t.randomIrwinHall=uv,t.randomExponential=cv,t.request=nu,t.html=sv,t.json=fv,t.text=lv,t.xml=hv,t.csv=pv,t.tsv=dv,t.scaleBand=ou,t.scalePoint=function(){return uu(ou().paddingInner(1))},t.scaleIdentity=gu,t.scaleLinear=vu,t.scaleLog=Tu,t.scaleOrdinal=iu,t.scaleImplicit=yv,t.scalePow=ku,t.scaleSqrt=function(){return ku().exponent(.5)},t.scaleQuantile=Su,t.scaleQuantize=Eu,t.scaleThreshold=Au,t.scaleTime=function(){return Va(Gv,Wv,Lv,Pv,Cv,Ev,kv,wv,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)])},t.scaleUtc=function(){return Va(xg,yg,ig,eg,tg,Jv,kv,wv,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])},t.schemeCategory10=Ug,t.schemeCategory20b=Og,t.schemeCategory20c=Fg,t.schemeCategory20=Ig,t.interpolateCubehelixDefault=Yg,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return jg.h=360*t-100,jg.s=1.5-1.5*n,jg.l=.8-.9*n,jg+""},t.interpolateWarm=Bg,t.interpolateCool=Hg,t.interpolateViridis=Xg,t.interpolateMagma=Vg,t.interpolateInferno=$g,t.interpolatePlasma=Wg,t.scaleSequential=Za,t.create=function(t){return ct(A(t).call(document.documentElement))},t.creator=A,t.local=st,t.matcher=of,t.mouse=pt,t.namespace=E,t.namespaces=tf,t.clientPoint=ht,t.select=ct,t.selectAll=function(t){return"string"==typeof t?new ut([document.querySelectorAll(t)],[document.documentElement]):new ut([null==t?[]:t],cf)},t.selection=at,t.selector=z,t.selectorAll=R,t.style=I,t.touch=dt,t.touches=function(t,n){null==n&&(n=lt().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e<r;++e)i[e]=ht(t,n[e]);return i},t.window=F,t.customEvent=it,t.arc=function(){function t(){var t,s,f=+n.apply(this,arguments),l=+e.apply(this,arguments),h=o.apply(this,arguments)-i_,p=u.apply(this,arguments)-i_,d=Zg(p-h),v=p>h;if(c||(c=t=ee()),l<f&&(s=l,l=f,f=s),l>e_)if(d>o_-e_)c.moveTo(l*Qg(h),l*t_(h)),c.arc(0,0,l,h,p,!v),f>e_&&(c.moveTo(f*Qg(p),f*t_(p)),c.arc(0,0,f,p,h,v));else{var g,_,y=h,m=p,x=h,b=p,w=d,M=d,T=a.apply(this,arguments)/2,N=T>e_&&(i?+i.apply(this,arguments):n_(f*f+l*l)),k=Kg(Zg(l-f)/2,+r.apply(this,arguments)),S=k,E=k;if(N>e_){var A=Qa(N/f*t_(T)),C=Qa(N/l*t_(T));(w-=2*A)>e_?(A*=v?1:-1,x+=A,b-=A):(w=0,x=b=(h+p)/2),(M-=2*C)>e_?(C*=v?1:-1,y+=C,m-=C):(M=0,y=m=(h+p)/2)}var z=l*Qg(y),P=l*t_(y),R=f*Qg(b),L=f*t_(b);if(k>e_){var q=l*Qg(m),D=l*t_(m),U=f*Qg(x),O=f*t_(x);if(d<r_){var F=w>e_?function(t,n,e,r,i,o,u,a){var c=e-t,s=r-n,f=u-i,l=a-o,h=(f*(n-o)-l*(t-i))/(l*c-f*s);return[t+h*c,n+h*s]}(z,P,U,O,q,D,R,L):[R,L],I=z-F[0],Y=P-F[1],B=q-F[0],H=D-F[1],j=1/t_(function(t){return t>1?0:t<-1?r_:Math.acos(t)}((I*B+Y*H)/(n_(I*I+Y*Y)*n_(B*B+H*H)))/2),X=n_(F[0]*F[0]+F[1]*F[1]);S=Kg(k,(f-X)/(j-1)),E=Kg(k,(l-X)/(j+1))}}M>e_?E>e_?(g=rc(U,O,z,P,l,E,v),_=rc(q,D,R,L,l,E,v),c.moveTo(g.cx+g.x01,g.cy+g.y01),E<k?c.arc(g.cx,g.cy,E,Gg(g.y01,g.x01),Gg(_.y01,_.x01),!v):(c.arc(g.cx,g.cy,E,Gg(g.y01,g.x01),Gg(g.y11,g.x11),!v),c.arc(0,0,l,Gg(g.cy+g.y11,g.cx+g.x11),Gg(_.cy+_.y11,_.cx+_.x11),!v),c.arc(_.cx,_.cy,E,Gg(_.y11,_.x11),Gg(_.y01,_.x01),!v))):(c.moveTo(z,P),c.arc(0,0,l,y,m,!v)):c.moveTo(z,P),f>e_&&w>e_?S>e_?(g=rc(R,L,q,D,f,-S,v),_=rc(z,P,U,O,f,-S,v),c.lineTo(g.cx+g.x01,g.cy+g.y01),S<k?c.arc(g.cx,g.cy,S,Gg(g.y01,g.x01),Gg(_.y01,_.x01),!v):(c.arc(g.cx,g.cy,S,Gg(g.y01,g.x01),Gg(g.y11,g.x11),!v),c.arc(0,0,f,Gg(g.cy+g.y11,g.cx+g.x11),Gg(_.cy+_.y11,_.cx+_.x11),v),c.arc(_.cx,_.cy,S,Gg(_.y11,_.x11),Gg(_.y01,_.x01),!v))):c.arc(0,0,f,b,x,v):c.lineTo(R,L)}else c.moveTo(0,0);if(c.closePath(),t)return c=null,t+""||null}var n=Ja,e=Ka,r=Ga(0),i=null,o=tc,u=nc,a=ec,c=null;return t.centroid=function(){var t=(+n.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+o.apply(this,arguments)+ +u.apply(this,arguments))/2-r_/2;return[Qg(r)*t,t_(r)*t]},t.innerRadius=function(e){return arguments.length?(n="function"==typeof e?e:Ga(+e),t):n},t.outerRadius=function(n){return arguments.length?(e="function"==typeof n?n:Ga(+n),t):e},t.cornerRadius=function(n){return arguments.length?(r="function"==typeof n?n:Ga(+n),t):r},t.padRadius=function(n){return arguments.length?(i=null==n?null:"function"==typeof n?n:Ga(+n),t):i},t.startAngle=function(n){return arguments.length?(o="function"==typeof n?n:Ga(+n),t):o},t.endAngle=function(n){return arguments.length?(u="function"==typeof n?n:Ga(+n),t):u},t.padAngle=function(n){return arguments.length?(a="function"==typeof n?n:Ga(+n),t):a},t.context=function(n){return arguments.length?(c=null==n?null:n,t):c},t},t.area=sc,t.line=cc,t.pie=function(){function t(t){var a,c,s,f,l,h=t.length,p=0,d=new Array(h),v=new Array(h),g=+i.apply(this,arguments),_=Math.min(o_,Math.max(-o_,o.apply(this,arguments)-g)),y=Math.min(Math.abs(_)/h,u.apply(this,arguments)),m=y*(_<0?-1:1);for(a=0;a<h;++a)(l=v[d[a]=a]=+n(t[a],a,t))>0&&(p+=l);for(null!=e?d.sort(function(t,n){return e(v[t],v[n])}):null!=r&&d.sort(function(n,e){return r(t[n],t[e])}),a=0,s=p?(_-h*m)/p:0;a<h;++a,g=f)c=d[a],f=g+((l=v[c])>0?l*s:0)+m,v[c]={data:t[c],index:a,value:l,startAngle:g,endAngle:f,padAngle:y};return v}var n=lc,e=fc,r=null,i=Ga(0),o=Ga(o_),u=Ga(0);return t.value=function(e){return arguments.length?(n="function"==typeof e?e:Ga(+e),t):n},t.sortValues=function(n){return arguments.length?(e=n,r=null,t):e},t.sort=function(n){return arguments.length?(r=n,e=null,t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:Ga(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:Ga(+n),t):o},t.padAngle=function(n){return arguments.length?(u="function"==typeof n?n:Ga(+n),t):u},t},t.areaRadial=gc,t.radialArea=gc,t.lineRadial=vc,t.radialLine=vc,t.pointRadial=_c,t.linkHorizontal=function(){return xc(bc)},t.linkVertical=function(){return xc(wc)},t.linkRadial=function(){var t=xc(Mc);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.symbol=function(){function t(){var t;if(r||(r=t=ee()),n.apply(this,arguments).draw(r,+e.apply(this,arguments)),t)return r=null,t+""||null}var n=Ga(c_),e=Ga(64),r=null;return t.type=function(e){return arguments.length?(n="function"==typeof e?e:Ga(e),t):n},t.size=function(n){return arguments.length?(e="function"==typeof n?n:Ga(+n),t):e},t.context=function(n){return arguments.length?(r=null==n?null:n,t):r},t},t.symbols=T_,t.symbolCircle=c_,t.symbolCross=s_,t.symbolDiamond=h_,t.symbolSquare=__,t.symbolStar=g_,t.symbolTriangle=m_,t.symbolWye=M_,t.curveBasisClosed=function(t){return new Sc(t)},t.curveBasisOpen=function(t){return new Ec(t)},t.curveBasis=function(t){return new kc(t)},t.curveBundle=N_,t.curveCardinalClosed=S_,t.curveCardinalOpen=E_,t.curveCardinal=k_,t.curveCatmullRomClosed=C_,t.curveCatmullRomOpen=z_,t.curveCatmullRom=A_,t.curveLinearClosed=function(t){return new Oc(t)},t.curveLinear=oc,t.curveMonotoneX=function(t){return new Hc(t)},t.curveMonotoneY=function(t){return new jc(t)},t.curveNatural=function(t){return new Vc(t)},t.curveStep=function(t){return new Wc(t,.5)},t.curveStepAfter=function(t){return new Wc(t,1)},t.curveStepBefore=function(t){return new Wc(t,0)},t.stack=function(){function t(t){var o,u,a=n.apply(this,arguments),c=t.length,s=a.length,f=new Array(s);for(o=0;o<s;++o){for(var l,h=a[o],p=f[o]=new Array(c),d=0;d<c;++d)p[d]=l=[0,+i(t[d],h,d,t)],l.data=t[d];p.key=h}for(o=0,u=e(f);o<s;++o)f[u[o]].index=o;return r(f,u),f}var n=Ga([]),e=Gc,r=Zc,i=Qc;return t.keys=function(e){return arguments.length?(n="function"==typeof e?e:Ga(a_.call(e)),t):n},t.value=function(n){return arguments.length?(i="function"==typeof n?n:Ga(+n),t):i},t.order=function(n){return arguments.length?(e=null==n?Gc:"function"==typeof n?n:Ga(a_.call(n)),t):e},t.offset=function(n){return arguments.length?(r=null==n?Zc:n,t):r},t},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,u=t[0].length;o<u;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}Zc(t,n)}},t.stackOffsetDiverging=function(t,n){if((a=t.length)>1)for(var e,r,i,o,u,a,c=0,s=t[n[0]].length;c<s;++c)for(o=u=0,e=0;e<a;++e)(i=(r=t[n[e]][c])[1]-r[0])>=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=u,r[0]=u+=i):r[0]=o},t.stackOffsetNone=Zc,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var u=0,a=0;u<e;++u)a+=t[u][r][1]||0;i[r][1]+=i[r][0]=-a/2}Zc(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,u=1;u<r;++u){for(var a=0,c=0,s=0;a<i;++a){for(var f=t[n[a]],l=f[u][1]||0,h=(l-(f[u-1][1]||0))/2,p=0;p<a;++p){var d=t[n[p]];h+=(d[u][1]||0)-(d[u-1][1]||0)}c+=l,s+=h*l}e[u-1][1]+=e[u-1][0]=o,c&&(o-=s/c)}e[u-1][1]+=e[u-1][0]=o,Zc(t,n)}},t.stackOrderAscending=Jc,t.stackOrderDescending=function(t){return Jc(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(Kc),o=Gc(t).sort(function(t,n){return i[n]-i[t]}),u=0,a=0,c=[],s=[];for(n=0;n<r;++n)e=o[n],u<a?(u+=i[e],c.push(e)):(a+=i[e],s.push(e));return s.reverse().concat(c)},t.stackOrderNone=Gc,t.stackOrderReverse=function(t){return Gc(t).reverse()},t.timeInterval=Cu,t.timeMillisecond=wv,t.timeMilliseconds=Mv,t.utcMillisecond=wv,t.utcMilliseconds=Mv,t.timeSecond=kv,t.timeSeconds=Sv,t.utcSecond=kv,t.utcSeconds=Sv,t.timeMinute=Ev,t.timeMinutes=Av,t.timeHour=Cv,t.timeHours=zv,t.timeDay=Pv,t.timeDays=Rv,t.timeWeek=Lv,t.timeWeeks=Yv,t.timeSunday=Lv,t.timeSundays=Yv,t.timeMonday=qv,t.timeMondays=Bv,t.timeTuesday=Dv,t.timeTuesdays=Hv,t.timeWednesday=Uv,t.timeWednesdays=jv,t.timeThursday=Ov,t.timeThursdays=Xv,t.timeFriday=Fv,t.timeFridays=Vv,t.timeSaturday=Iv,t.timeSaturdays=$v,t.timeMonth=Wv,t.timeMonths=Zv,t.timeYear=Gv,t.timeYears=Qv,t.utcMinute=Jv,t.utcMinutes=Kv,t.utcHour=tg,t.utcHours=ng,t.utcDay=eg,t.utcDays=rg,t.utcWeek=ig,t.utcWeeks=lg,t.utcSunday=ig,t.utcSundays=lg,t.utcMonday=og,t.utcMondays=hg,t.utcTuesday=ug,t.utcTuesdays=pg,t.utcWednesday=ag,t.utcWednesdays=dg,t.utcThursday=cg,t.utcThursdays=vg,t.utcFriday=sg,t.utcFridays=gg,t.utcSaturday=fg,t.utcSaturdays=_g,t.utcMonth=yg,t.utcMonths=mg,t.utcYear=xg,t.utcYears=wg,t.timeFormatDefaultLocale=Ha,t.timeFormatLocale=Du,t.isoFormat=Eg,t.isoParse=Ag,t.now=mn,t.timer=wn,t.timerFlush=Mn,t.timeout=Sn,t.interval=function(t,n,e){var r=new bn,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?mn():+e,r.restart(function o(u){u+=i,r.restart(o,i+=n,e),t(u)},n,e),r)},t.transition=Dn,t.active=function(t,n){var e,r,i=t.__transition;if(i){n=null==n?null:n+"";for(r in i)if((e=i[r]).state>xl&&e.name===n)return new qn([[t]],Jl,n,+r)}return null},t.interrupt=Pn,t.voronoi=function(){function t(t){return new Ns(t.map(function(r,i){var o=[Math.round(n(r,i,t)/F_)*F_,Math.round(e(r,i,t)/F_)*F_];return o.index=i,o.data=r,o}),r)}var n=ns,e=es,r=null;return t.polygons=function(n){return t(n).polygons()},t.links=function(n){return t(n).links()},t.triangles=function(n){return t(n).triangles()},t.x=function(e){return arguments.length?(n="function"==typeof e?e:ts(+e),t):n},t.y=function(n){return arguments.length?(e="function"==typeof n?n:ts(+n),t):e},t.extent=function(n){return arguments.length?(r=null==n?null:[[+n[0][0],+n[0][1]],[+n[1][0],+n[1][1]]],t):r&&[[r[0][0],r[0][1]],[r[1][0],r[1][1]]]},t.size=function(n){return arguments.length?(r=null==n?null:[[0,0],[+n[0],+n[1]]],t):r&&[r[1][0]-r[0][0],r[1][1]-r[0][1]]},t},t.zoom=function(){function n(t){t.property("__zoom",Rs).on("wheel.zoom",c).on("mousedown.zoom",s).on("dblclick.zoom",f).filter(x).on("touchstart.zoom",l).on("touchmove.zoom",h).on("touchend.zoom touchcancel.zoom",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(t,n){return(n=Math.max(b[0],Math.min(b[1],n)))===t.k?t:new Ss(n,t.x,t.y)}function r(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Ss(t.k,r,i)}function i(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function o(t,n,e){t.on("start.zoom",function(){u(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){u(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=u(this,t),o=_.apply(this,t),a=e||i(o),c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),s=this.__zoom,f="function"==typeof n?n.apply(this,t):n,l=T(s.invert(a).concat(c/s.k),f.invert(a).concat(c/f.k));return function(t){if(1===t)t=f;else{var n=l(t),e=c/n[2];t=new Ss(e,a[0]-n[0]*e,a[1]-n[1]*e)}r.zoom(null,t)}})}function u(t,n){for(var e,r=0,i=k.length;r<i;++r)if((e=k[r]).that===t)return e;return new a(t,n)}function a(t,n){this.that=t,this.args=n,this.index=-1,this.active=0,this.extent=_.apply(t,n)}function c(){if(g.apply(this,arguments)){var t=u(this,arguments),n=this.__zoom,i=Math.max(b[0],Math.min(b[1],n.k*Math.pow(2,m.apply(this,arguments)))),o=pt(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=n.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(n.k===i)return;t.mouse=[o,n.invert(o)],Pn(this),t.start()}Cs(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},A),t.zoom("mouse",y(r(e(n,i),t.mouse[0],t.mouse[1]),t.extent,w))}}function s(){if(!v&&g.apply(this,arguments)){var n=u(this,arguments),e=ct(t.event.view).on("mousemove.zoom",function(){if(Cs(),!n.moved){var e=t.event.clientX-o,i=t.event.clientY-a;n.moved=e*e+i*i>C}n.zoom("mouse",y(r(n.that.__zoom,n.mouse[0]=pt(n.that),n.mouse[1]),n.extent,w))},!0).on("mouseup.zoom",function(){e.on("mousemove.zoom mouseup.zoom",null),yt(t.event.view,n.moved),Cs(),n.end()},!0),i=pt(this),o=t.event.clientX,a=t.event.clientY;_t(t.event.view),As(),n.mouse=[i,this.__zoom.invert(i)],Pn(this),n.start()}}function f(){if(g.apply(this,arguments)){var i=this.__zoom,u=pt(this),a=i.invert(u),c=i.k*(t.event.shiftKey?.5:2),s=y(r(e(i,c),u,a),_.apply(this,arguments),w);Cs(),M>0?ct(this).transition().duration(M).call(o,s,u):ct(this).call(n.transform,s)}}function l(){if(g.apply(this,arguments)){var n,e,r,i,o=u(this,arguments),a=t.event.changedTouches,c=a.length;for(As(),e=0;e<c;++e)i=[i=dt(this,a,(r=a[e]).identifier),this.__zoom.invert(i),r.identifier],o.touch0?o.touch1||(o.touch1=i):(o.touch0=i,n=!0);if(d&&(d=clearTimeout(d),!o.touch1))return o.end(),void((i=ct(this).on("dblclick.zoom"))&&i.apply(this,arguments));n&&(d=setTimeout(function(){d=null},E),Pn(this),o.start())}}function h(){var n,i,o,a,c=u(this,arguments),s=t.event.changedTouches,f=s.length;for(Cs(),d&&(d=clearTimeout(d)),n=0;n<f;++n)o=dt(this,s,(i=s[n]).identifier),c.touch0&&c.touch0[2]===i.identifier?c.touch0[0]=o:c.touch1&&c.touch1[2]===i.identifier&&(c.touch1[0]=o);if(i=c.that.__zoom,c.touch1){var l=c.touch0[0],h=c.touch0[1],p=c.touch1[0],v=c.touch1[1],g=(g=p[0]-l[0])*g+(g=p[1]-l[1])*g,_=(_=v[0]-h[0])*_+(_=v[1]-h[1])*_;i=e(i,Math.sqrt(g/_)),o=[(l[0]+p[0])/2,(l[1]+p[1])/2],a=[(h[0]+v[0])/2,(h[1]+v[1])/2]}else{if(!c.touch0)return;o=c.touch0[0],a=c.touch0[1]}c.zoom("touch",y(r(i,o,a),c.extent,w))}function p(){var n,e,r=u(this,arguments),i=t.event.changedTouches,o=i.length;for(As(),v&&clearTimeout(v),v=setTimeout(function(){v=null},E),n=0;n<o;++n)e=i[n],r.touch0&&r.touch0[2]===e.identifier?delete r.touch0:r.touch1&&r.touch1[2]===e.identifier&&delete r.touch1;r.touch1&&!r.touch0&&(r.touch0=r.touch1,delete r.touch1),r.touch0?r.touch0[1]=this.__zoom.invert(r.touch0[0]):r.end()}var d,v,g=zs,_=Ps,y=Ds,m=Ls,x=qs,b=[0,1/0],w=[[-1/0,-1/0],[1/0,1/0]],M=250,T=vn,k=[],S=N("start","zoom","end"),E=500,A=150,C=0;return n.transform=function(t,n){var e=t.selection?t.selection():t;e.property("__zoom",Rs),t!==e?o(t,n):e.interrupt().each(function(){u(this,arguments).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()})},n.scaleBy=function(t,e){n.scaleTo(t,function(){return this.__zoom.k*("function"==typeof e?e.apply(this,arguments):e)})},n.scaleTo=function(t,o){n.transform(t,function(){var t=_.apply(this,arguments),n=this.__zoom,u=i(t),a=n.invert(u),c="function"==typeof o?o.apply(this,arguments):o;return y(r(e(n,c),u,a),t,w)})},n.translateBy=function(t,e,r){n.transform(t,function(){return y(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof r?r.apply(this,arguments):r),_.apply(this,arguments),w)})},n.translateTo=function(t,e,r){n.transform(t,function(){var t=_.apply(this,arguments),n=this.__zoom,o=i(t);return y(Y_.translate(o[0],o[1]).scale(n.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof r?-r.apply(this,arguments):-r),t,w)})},a.prototype={start:function(){return 1==++this.active&&(this.index=k.push(this)-1,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(k.splice(this.index,1),this.index=-1,this.emit("end")),this},emit:function(t){it(new function(t,n,e){this.target=t,this.type=n,this.transform=e}(n,t,this.that.__zoom),S.apply,S,[t,this.that,this.args])}},n.wheelDelta=function(t){return arguments.length?(m="function"==typeof t?t:ks(+t),n):m},n.filter=function(t){return arguments.length?(g="function"==typeof t?t:ks(!!t),n):g},n.touchable=function(t){return arguments.length?(x="function"==typeof t?t:ks(!!t),n):x},n.extent=function(t){return arguments.length?(_="function"==typeof t?t:ks([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),n):_},n.scaleExtent=function(t){return arguments.length?(b[0]=+t[0],b[1]=+t[1],n):[b[0],b[1]]},n.translateExtent=function(t){return arguments.length?(w[0][0]=+t[0][0],w[1][0]=+t[1][0],w[0][1]=+t[0][1],w[1][1]=+t[1][1],n):[[w[0][0],w[0][1]],[w[1][0],w[1][1]]]},n.constrain=function(t){return arguments.length?(y=t,n):y},n.duration=function(t){return arguments.length?(M=+t,n):M},n.interpolate=function(t){return arguments.length?(T=t,n):T},n.on=function(){var t=S.on.apply(S,arguments);return t===S?n:t},n.clickDistance=function(t){return arguments.length?(C=(t=+t)*t,n):Math.sqrt(C)},n},t.zoomTransform=Es,t.zoomIdentity=Y_,Object.defineProperty(t,"__esModule",{value:!0})});</script>

</head>
<body>
<div id="htmlwidget_container">
  <div id="widget-5d22e0ba8702fa9436bcd6a5d79e01ec" style="width:1090px;height:900px;" class="r2d3 html-widget"></div>
</div>
<script type="application/json" data-for="widget-5d22e0ba8702fa9436bcd6a5d79e01ec">{"x":{"data":[{"2136":[{"x":[{"variable":"intercept","contribution":0,"variable_name":"intercept","variable_value":"1","cumulative":0.32,"sign":"X","position":9,"label":"keras","barStart":0.3204,"barSupport":0.3204,"tooltipText":"Average response: 0.32<br>Prediction: 0.02"},{"variable":"gender = male","contribution":-0.11,"variable_name":"gender","variable_value":"male","cumulative":0.211,"sign":"-1","position":8,"label":"keras","barStart":0.2108,"barSupport":0.3204,"tooltipText":"gender = male<br>decreases average response <br>by 0.11"},{"variable":"class = restaurant staff","contribution":-0.155,"variable_name":"class","variable_value":"restaurant staff","cumulative":0.056,"sign":"-1","position":7,"label":"keras","barStart":0.0557,"barSupport":0.2108,"tooltipText":"class = restaurant staff<br>decreases average response <br>by 0.155"},{"variable":"age = 21","contribution":0.007,"variable_name":"age","variable_value":"21","cumulative":0.063,"sign":"1","position":6,"label":"keras","barStart":0.0557,"barSupport":0.0625,"tooltipText":"age = 21<br>increases average response <br>by 0.007"},{"variable":"fare = 0","contribution":0.005,"variable_name":"fare","variable_value":"0","cumulative":0.068,"sign":"1","position":5,"label":"keras","barStart":0.0625,"barSupport":0.0675,"tooltipText":"fare = 0<br>increases average response <br>by 0.005"},{"variable":"embarked = Southampton","contribution":-0.037,"variable_name":"embarked","variable_value":"Southampton","cumulative":0.031,"sign":"-1","position":4,"label":"keras","barStart":0.0308,"barSupport":0.0675,"tooltipText":"embarked = Southampton<br>decreases average response <br>by 0.037"},{"variable":"parch = 0","contribution":-0.008,"variable_name":"parch","variable_value":"0","cumulative":0.023,"sign":"-1","position":3,"label":"keras","barStart":0.0228,"barSupport":0.0308,"tooltipText":"parch = 0<br>decreases average response <br>by 0.008"},{"variable":"sibsp = 0","contribution":-0.002,"variable_name":"sibsp","variable_value":"0","cumulative":0.02,"sign":"-1","position":2,"label":"keras","barStart":0.0203,"barSupport":0.0228,"tooltipText":"sibsp = 0<br>decreases average response <br>by 0.002"},{"variable":"prediction","contribution":-0.3,"variable_name":"prediction","variable_value":"","cumulative":0.02,"sign":"X","position":1,"label":"keras","barStart":0.0203,"barSupport":0.3204,"tooltipText":"Average response: 0.32<br>Prediction: 0.02"}],"m":9,"x_min_max":[-0.04,0.38],"desc":[{"type":"desc","text":"Keras predicts, that the prediction for the selected instance is 0.02 which is lower than the average model prediction 0.32.<\/br><\/br>The most important variable is class (= restaurant staff). It decreases the prediction by 0.155.<\/br>The second most important variable is gender (= male). It decreases the prediction by 0.11.<\/br>The third most important variable is embarked (= Southampton). It decreases the prediction by 0.037.<\/br><\/br>Other variables are with less importance. The contribution of all other variables is 0.001."}]},{"observation":[{"observation.id":"2136","model":"keras","yhat":[0.0203],"gender":"male","age":21,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0}],"x":{"gender":[{"xhat":"female","yhat":0.8937,"vname":"gender"},{"xhat":"male","yhat":0.0203,"vname":"gender"}],"age":[{"xhat":0.5833,"yhat":0.058,"id":"2136","vname":"age"},{"xhat":3,"yhat":0.0474,"id":"2136","vname":"age"},{"xhat":5,"yhat":0.0399,"id":"2136","vname":"age"},{"xhat":9,"yhat":0.0283,"id":"2136","vname":"age"},{"xhat":11.04,"yhat":0.0237,"id":"2136","vname":"age"},{"xhat":15,"yhat":0.0182,"id":"2136","vname":"age"},{"xhat":17,"yhat":0.0176,"id":"2136","vname":"age"},{"xhat":18,"yhat":0.0178,"id":"2136","vname":"age"},{"xhat":19,"yhat":0.0182,"id":"2136","vname":"age"},{"xhat":20,"yhat":0.0191,"id":"2136","vname":"age"},{"xhat":21,"yhat":0.0203,"id":"2136","vname":"age"},{"xhat":22,"yhat":0.0216,"id":"2136","vname":"age"},{"xhat":23,"yhat":0.023,"id":"2136","vname":"age"},{"xhat":23.75,"yhat":0.0241,"id":"2136","vname":"age"},{"xhat":24,"yhat":0.0244,"id":"2136","vname":"age"},{"xhat":24.3,"yhat":0.0249,"id":"2136","vname":"age"},{"xhat":25,"yhat":0.0259,"id":"2136","vname":"age"},{"xhat":26,"yhat":0.0259,"id":"2136","vname":"age"},{"xhat":27,"yhat":0.0256,"id":"2136","vname":"age"},{"xhat":28,"yhat":0.0253,"id":"2136","vname":"age"},{"xhat":29,"yhat":0.025,"id":"2136","vname":"age"},{"xhat":30,"yhat":0.0247,"id":"2136","vname":"age"},{"xhat":31,"yhat":0.0247,"id":"2136","vname":"age"},{"xhat":32,"yhat":0.0248,"id":"2136","vname":"age"},{"xhat":33,"yhat":0.025,"id":"2136","vname":"age"},{"xhat":33.62,"yhat":0.0252,"id":"2136","vname":"age"},{"xhat":34,"yhat":0.0252,"id":"2136","vname":"age"},{"xhat":34.64,"yhat":0.0254,"id":"2136","vname":"age"},{"xhat":35,"yhat":0.0254,"id":"2136","vname":"age"},{"xhat":35.66,"yhat":0.0256,"id":"2136","vname":"age"},{"xhat":36,"yhat":0.0256,"id":"2136","vname":"age"},{"xhat":37,"yhat":0.0258,"id":"2136","vname":"age"},{"xhat":38,"yhat":0.0259,"id":"2136","vname":"age"},{"xhat":39,"yhat":0.0257,"id":"2136","vname":"age"},{"xhat":40,"yhat":0.0245,"id":"2136","vname":"age"},{"xhat":41,"yhat":0.0227,"id":"2136","vname":"age"},{"xhat":42,"yhat":0.0211,"id":"2136","vname":"age"},{"xhat":43,"yhat":0.0196,"id":"2136","vname":"age"},{"xhat":44,"yhat":0.0181,"id":"2136","vname":"age"},{"xhat":45,"yhat":0.0167,"id":"2136","vname":"age"},{"xhat":45.39,"yhat":0.0162,"id":"2136","vname":"age"},{"xhat":46,"yhat":0.0154,"id":"2136","vname":"age"},{"xhat":47,"yhat":0.0141,"id":"2136","vname":"age"},{"xhat":48,"yhat":0.013,"id":"2136","vname":"age"},{"xhat":50,"yhat":0.011,"id":"2136","vname":"age"},{"xhat":51,"yhat":0.0101,"id":"2136","vname":"age"},{"xhat":54,"yhat":0.0078,"id":"2136","vname":"age"},{"xhat":56.96,"yhat":0.006,"id":"2136","vname":"age"},{"xhat":59,"yhat":0.005,"id":"2136","vname":"age"},{"xhat":61,"yhat":0.0041,"id":"2136","vname":"age"},{"xhat":63,"yhat":0.0034,"id":"2136","vname":"age"},{"xhat":74,"yhat":0.0012,"id":"2136","vname":"age"}],"class":[{"xhat":"1st","yhat":0.5061,"vname":"class"},{"xhat":"2nd","yhat":0.166,"vname":"class"},{"xhat":"3rd","yhat":0.1369,"vname":"class"},{"xhat":"deck crew","yhat":0.4757,"vname":"class"},{"xhat":"engineering crew","yhat":0.3206,"vname":"class"},{"xhat":"restaurant staff","yhat":0.0203,"vname":"class"},{"xhat":"victualling crew","yhat":0.1939,"vname":"class"}],"embarked":[{"xhat":"Belfast","yhat":0.0305,"vname":"embarked"},{"xhat":"Cherbourg","yhat":0.1636,"vname":"embarked"},{"xhat":"Queenstown","yhat":0.0876,"vname":"embarked"},{"xhat":"Southampton","yhat":0.0203,"vname":"embarked"}],"fare":[{"xhat":0,"yhat":0.0203,"id":"2136","vname":"fare"},{"xhat":6.1902,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.0101,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.0406,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.0407,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.05,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.1452,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.15,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.15,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.151,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.1707,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.1711,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":7.1764,"yhat":0.0206,"id":"2136","vname":"fare"},{"xhat":8.0007,"yhat":0.0207,"id":"2136","vname":"fare"},{"xhat":8.01,"yhat":0.0207,"id":"2136","vname":"fare"},{"xhat":8.1303,"yhat":0.0207,"id":"2136","vname":"fare"},{"xhat":8.6846,"yhat":0.0208,"id":"2136","vname":"fare"},{"xhat":9.1109,"yhat":0.0208,"id":"2136","vname":"fare"},{"xhat":10.1,"yhat":0.021,"id":"2136","vname":"fare"},{"xhat":11.7143,"yhat":0.0213,"id":"2136","vname":"fare"},{"xhat":13,"yhat":0.0216,"id":"2136","vname":"fare"},{"xhat":13.1357,"yhat":0.0216,"id":"2136","vname":"fare"},{"xhat":14.0821,"yhat":0.0219,"id":"2136","vname":"fare"},{"xhat":14.1,"yhat":0.0219,"id":"2136","vname":"fare"},{"xhat":15.0546,"yhat":0.0221,"id":"2136","vname":"fare"},{"xhat":15.1396,"yhat":0.0221,"id":"2136","vname":"fare"},{"xhat":16.05,"yhat":0.0224,"id":"2136","vname":"fare"},{"xhat":19.088,"yhat":0.0231,"id":"2136","vname":"fare"},{"xhat":21,"yhat":0.0236,"id":"2136","vname":"fare"},{"xhat":22,"yhat":0.0239,"id":"2136","vname":"fare"},{"xhat":22.3614,"yhat":0.024,"id":"2136","vname":"fare"},{"xhat":24.03,"yhat":0.0245,"id":"2136","vname":"fare"},{"xhat":26,"yhat":0.0251,"id":"2136","vname":"fare"},{"xhat":26.11,"yhat":0.0252,"id":"2136","vname":"fare"},{"xhat":26.8576,"yhat":0.0254,"id":"2136","vname":"fare"},{"xhat":28.4484,"yhat":0.026,"id":"2136","vname":"fare"},{"xhat":30.874,"yhat":0.0268,"id":"2136","vname":"fare"},{"xhat":35.1,"yhat":0.0284,"id":"2136","vname":"fare"},{"xhat":39,"yhat":0.0298,"id":"2136","vname":"fare"},{"xhat":41.1107,"yhat":0.0306,"id":"2136","vname":"fare"},{"xhat":46.18,"yhat":0.0328,"id":"2136","vname":"fare"},{"xhat":52,"yhat":0.0354,"id":"2136","vname":"fare"},{"xhat":55.0745,"yhat":0.0369,"id":"2136","vname":"fare"},{"xhat":61.9305,"yhat":0.0394,"id":"2136","vname":"fare"},{"xhat":72.974,"yhat":0.0431,"id":"2136","vname":"fare"},{"xhat":77.1136,"yhat":0.0445,"id":"2136","vname":"fare"},{"xhat":83.0302,"yhat":0.0467,"id":"2136","vname":"fare"},{"xhat":101.1233,"yhat":0.0548,"id":"2136","vname":"fare"},{"xhat":134.1,"yhat":0.0659,"id":"2136","vname":"fare"},{"xhat":187.1467,"yhat":0.1217,"id":"2136","vname":"fare"},{"xhat":262.0706,"yhat":0.2417,"id":"2136","vname":"fare"}],"sibsp":[{"xhat":0,"yhat":0.0203,"id":"2136","vname":"sibsp"},{"xhat":1,"yhat":0.0348,"id":"2136","vname":"sibsp"},{"xhat":2,"yhat":0.046,"id":"2136","vname":"sibsp"},{"xhat":3,"yhat":0.04,"id":"2136","vname":"sibsp"},{"xhat":8,"yhat":0.0054,"id":"2136","vname":"sibsp"}],"parch":[{"xhat":0,"yhat":0.0203,"id":"2136","vname":"parch"},{"xhat":0.86,"yhat":0.0714,"id":"2136","vname":"parch"},{"xhat":1,"yhat":0.0799,"id":"2136","vname":"parch"},{"xhat":2,"yhat":0.1129,"id":"2136","vname":"parch"},{"xhat":3,"yhat":0.0978,"id":"2136","vname":"parch"},{"xhat":9,"yhat":0.0286,"id":"2136","vname":"parch"}]},"y_min_max":[-0.0881,0.9829],"x_min_max_list":{"age":[0.5833,74],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true},"desc":{"gender":[{"type":"desc","text":"Keras predicts that for the selected instance (gender = male), prediction is equal to 0.02<\/br><\/br>The most important change in Keras's prediction would occur for gender = \"female\". It increases the prediction by 0.873. <\/br> <\/br><\/br><\/br>All variables are being displayed."}],"age":[{"type":"desc","text":"Keras predicts that for the selected instance (age = 21), prediction is equal to 0.02<\/br><\/br>The highest prediction occurs for (age = 0.5833333333), while the lowest for (age = 74).<\/br>Breakpoint is identified at (age = 3).<\/br><\/br>Average model responses are *higher* for variable values *lower* than breakpoint (= 3)."}],"class":[{"type":"desc","text":"Keras predicts that for the selected instance (class = restaurant staff), prediction is equal to 0.02<\/br><\/br>The most important change in Keras's prediction would occur for class = \"1st\". It increases the prediction by 0.486. <\/br>The second most important change in the prediction would occur for class = \"deck crew\". It increases the prediction by 0.455. <\/br>The third most important change in the prediction would occur for class = \"engineering crew\". It increases the prediction by 0.3.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.174."}],"embarked":[{"type":"desc","text":"Keras predicts that for the selected instance (embarked = Southampton), prediction is equal to 0.02<\/br><\/br>The most important change in Keras's prediction would occur for embarked = \"Cherbourg\". It increases the prediction by 0.143. <\/br>The second most important change in the prediction would occur for embarked = \"Queenstown\". It increases the prediction by 0.067. <\/br>The third most important change in the prediction would occur for embarked = \"Belfast\". It increases the prediction by 0.01.<\/br><\/br>All variables are being displayed."}],"fare":[{"type":"desc","text":"Keras predicts that for the selected instance (fare = 0), prediction is equal to 0.02<\/br><\/br>The highest prediction occurs for (fare = 262.0706), while the lowest for (fare = 0).<\/br>Breakpoint is identified at (fare = 134.1).<\/br><\/br>Average model responses are *higher* for variable values *higher* than breakpoint (= 134.1)."}],"sibsp":[{"type":"desc","text":"Keras predicts that for the selected instance (sibsp = 0), prediction is equal to 0.02<\/br><\/br>The highest prediction occurs for (sibsp = 2), while the lowest for (sibsp = 8).<\/br>Breakpoints are identified at (sibsp = 0 and sibsp = 0).<\/br><\/br>Average model responses are *higher* for variable values *higher* than breakpoint (= 0)."}],"parch":[{"type":"desc","text":"Keras predicts that for the selected instance (parch = 0), prediction is equal to 0.02<\/br><\/br>The highest prediction occurs for (parch = 2), while the lowest for (parch = 0).<\/br>Breakpoint is identified at (parch = 0.86).<\/br><\/br>Average model responses are *higher* for variable values *higher* than breakpoint (= 0.86)."}]}},{"x":[{"variable_name":"gender","variable":"gender = male","contribution":-0.161,"variable_value":"male","sign":"-1","label":"keras","barStart":0.1591,"barSupport":0.3204,"tooltipText":"gender = male<br>decreases average response <br>by 0.161","min":0.1179,"q1":0.1197,"q3":0.2104,"max":0.2255},{"variable_name":"class","variable":"class = restaurant staff","contribution":-0.137,"variable_value":"restaurant staff","sign":"-1","label":"keras","barStart":0.1834,"barSupport":0.3204,"tooltipText":"class = restaurant staff<br>decreases average response <br>by 0.137","min":0.0832,"q1":0.151,"q3":0.2198,"max":0.2324},{"variable_name":"embarked","variable":"embarked = Southampton","contribution":-0.018,"variable_value":"Southampton","sign":"-1","label":"keras","barStart":0.3024,"barSupport":0.3204,"tooltipText":"embarked = Southampton<br>decreases average response <br>by 0.018","min":0.2849,"q1":0.2969,"q3":0.3094,"max":0.3112},{"variable_name":"fare","variable":"fare = 0","contribution":0.013,"variable_value":"0","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.3338,"tooltipText":"fare = 0<br>increases average response <br>by 0.013","min":0.3164,"q1":0.3188,"q3":0.3388,"max":0.369},{"variable_name":"age","variable":"age = 21","contribution":0.013,"variable_value":"21","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.3332,"tooltipText":"age = 21<br>increases average response <br>by 0.013","min":0.3184,"q1":0.3279,"q3":0.34,"max":0.3477},{"variable_name":"parch","variable":"parch = 0","contribution":-0.01,"variable_value":"0","sign":"-1","label":"keras","barStart":0.3108,"barSupport":0.3204,"tooltipText":"parch = 0<br>decreases average response <br>by 0.01","min":0.3027,"q1":0.3085,"q3":0.314,"max":0.317},{"variable_name":"sibsp","variable":"sibsp = 0","contribution":-0,"variable_value":"0","sign":"-1","label":"keras","barStart":0.3201,"barSupport":0.3204,"tooltipText":"sibsp = 0<br>decreases average response <br>by 0","min":0.3144,"q1":0.3179,"q3":0.3214,"max":0.3265}],"m":7,"x_min_max":[0.0867,0.3731],"desc":[{"type":"desc","text":"Keras predicts, that the prediction for the selected instance is 0.02 which is lower than the average model prediction 0.32. For the selected instance model's prediction is lower, than for 98% of all observations.<\/br><\/br>The most important variable is gender (= male). It decreases the prediction by 0.161.<\/br>The second most important variable is class (= restaurant staff). It decreases the prediction by 0.137.<\/br>The third most important variable is embarked (= Southampton). It decreases the prediction by 0.018.<\/br>The average contribution of all the above variables is significant.<\/br><\/br>Other variables are with less importance. The contribution of all other variables is 0.016."}]}],"1866":[{"x":[{"variable":"intercept","contribution":0,"variable_name":"intercept","variable_value":"1","cumulative":0.32,"sign":"X","position":9,"label":"keras","barStart":0.3204,"barSupport":0.3204,"tooltipText":"Average response: 0.32<br>Prediction: 0.61"},{"variable":"class = deck crew","contribution":0.329,"variable_name":"class","variable_value":"deck crew","cumulative":0.65,"sign":"1","position":8,"label":"keras","barStart":0.3204,"barSupport":0.6496,"tooltipText":"class = deck crew<br>increases average response <br>by 0.329"},{"variable":"gender = male","contribution":-0.087,"variable_name":"gender","variable_value":"male","cumulative":0.563,"sign":"-1","position":7,"label":"keras","barStart":0.5628,"barSupport":0.6496,"tooltipText":"gender = male<br>decreases average response <br>by 0.087"},{"variable":"fare = 0","contribution":0.056,"variable_name":"fare","variable_value":"0","cumulative":0.619,"sign":"1","position":6,"label":"keras","barStart":0.5628,"barSupport":0.6193,"tooltipText":"fare = 0<br>increases average response <br>by 0.056"},{"variable":"embarked = Southampton","contribution":-0.032,"variable_name":"embarked","variable_value":"Southampton","cumulative":0.587,"sign":"-1","position":5,"label":"keras","barStart":0.5871,"barSupport":0.6193,"tooltipText":"embarked = Southampton<br>decreases average response <br>by 0.032"},{"variable":"parch = 0","contribution":-0.023,"variable_name":"parch","variable_value":"0","cumulative":0.564,"sign":"-1","position":4,"label":"keras","barStart":0.5638,"barSupport":0.5871,"tooltipText":"parch = 0<br>decreases average response <br>by 0.023"},{"variable":"age = 32","contribution":0.05,"variable_name":"age","variable_value":"32","cumulative":0.614,"sign":"1","position":3,"label":"keras","barStart":0.5638,"barSupport":0.6137,"tooltipText":"age = 32<br>increases average response <br>by 0.05"},{"variable":"sibsp = 0","contribution":-0.003,"variable_name":"sibsp","variable_value":"0","cumulative":0.61,"sign":"-1","position":2,"label":"keras","barStart":0.6104,"barSupport":0.6137,"tooltipText":"sibsp = 0<br>decreases average response <br>by 0.003"},{"variable":"prediction","contribution":0.29,"variable_name":"prediction","variable_value":"","cumulative":0.61,"sign":"X","position":1,"label":"keras","barStart":0.3204,"barSupport":0.6104,"tooltipText":"Average response: 0.32<br>Prediction: 0.61"}],"m":9,"x_min_max":[0.254,0.716],"desc":[{"type":"desc","text":"Keras predicts, that the prediction for the selected instance is 0.61 which is higher than the average model prediction 0.32.<\/br><\/br>The most important variable is class (= deck crew). It increases the prediction by 0.329.<\/br>The second most important variable is gender (= male). It decreases the prediction by 0.087.<\/br>The third most important variable is fare (= 0). It increases the prediction by 0.056.<\/br><\/br>Other variables are with less importance. The contribution of all other variables is -0.009."}]},{"observation":[{"observation.id":"1866","model":"keras","yhat":[0.6104],"gender":"male","age":32,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0}],"x":{"gender":[{"xhat":"female","yhat":0.956,"vname":"gender"},{"xhat":"male","yhat":0.6104,"vname":"gender"}],"age":[{"xhat":0.5833,"yhat":0.4954,"id":"1866","vname":"age"},{"xhat":3,"yhat":0.4785,"id":"1866","vname":"age"},{"xhat":5,"yhat":0.4709,"id":"1866","vname":"age"},{"xhat":9,"yhat":0.4573,"id":"1866","vname":"age"},{"xhat":11.04,"yhat":0.4498,"id":"1866","vname":"age"},{"xhat":15,"yhat":0.4452,"id":"1866","vname":"age"},{"xhat":17,"yhat":0.4445,"id":"1866","vname":"age"},{"xhat":18,"yhat":0.4442,"id":"1866","vname":"age"},{"xhat":19,"yhat":0.446,"id":"1866","vname":"age"},{"xhat":20,"yhat":0.4583,"id":"1866","vname":"age"},{"xhat":21,"yhat":0.4757,"id":"1866","vname":"age"},{"xhat":22,"yhat":0.4927,"id":"1866","vname":"age"},{"xhat":23,"yhat":0.5084,"id":"1866","vname":"age"},{"xhat":23.75,"yhat":0.5203,"id":"1866","vname":"age"},{"xhat":24,"yhat":0.5242,"id":"1866","vname":"age"},{"xhat":24.3,"yhat":0.529,"id":"1866","vname":"age"},{"xhat":25,"yhat":0.54,"id":"1866","vname":"age"},{"xhat":26,"yhat":0.5506,"id":"1866","vname":"age"},{"xhat":27,"yhat":0.5587,"id":"1866","vname":"age"},{"xhat":28,"yhat":0.5668,"id":"1866","vname":"age"},{"xhat":29,"yhat":0.5749,"id":"1866","vname":"age"},{"xhat":30,"yhat":0.5859,"id":"1866","vname":"age"},{"xhat":31,"yhat":0.5977,"id":"1866","vname":"age"},{"xhat":32,"yhat":0.6104,"id":"1866","vname":"age"},{"xhat":33,"yhat":0.622,"id":"1866","vname":"age"},{"xhat":33.62,"yhat":0.6258,"id":"1866","vname":"age"},{"xhat":34,"yhat":0.6281,"id":"1866","vname":"age"},{"xhat":34.64,"yhat":0.6317,"id":"1866","vname":"age"},{"xhat":35,"yhat":0.6336,"id":"1866","vname":"age"},{"xhat":35.66,"yhat":0.637,"id":"1866","vname":"age"},{"xhat":36,"yhat":0.6388,"id":"1866","vname":"age"},{"xhat":37,"yhat":0.644,"id":"1866","vname":"age"},{"xhat":38,"yhat":0.6492,"id":"1866","vname":"age"},{"xhat":39,"yhat":0.6543,"id":"1866","vname":"age"},{"xhat":40,"yhat":0.66,"id":"1866","vname":"age"},{"xhat":41,"yhat":0.666,"id":"1866","vname":"age"},{"xhat":42,"yhat":0.6721,"id":"1866","vname":"age"},{"xhat":43,"yhat":0.678,"id":"1866","vname":"age"},{"xhat":44,"yhat":0.6813,"id":"1866","vname":"age"},{"xhat":45,"yhat":0.6846,"id":"1866","vname":"age"},{"xhat":45.39,"yhat":0.6859,"id":"1866","vname":"age"},{"xhat":46,"yhat":0.6817,"id":"1866","vname":"age"},{"xhat":47,"yhat":0.6612,"id":"1866","vname":"age"},{"xhat":48,"yhat":0.6396,"id":"1866","vname":"age"},{"xhat":50,"yhat":0.5895,"id":"1866","vname":"age"},{"xhat":51,"yhat":0.5607,"id":"1866","vname":"age"},{"xhat":54,"yhat":0.4631,"id":"1866","vname":"age"},{"xhat":56.96,"yhat":0.3574,"id":"1866","vname":"age"},{"xhat":59,"yhat":0.291,"id":"1866","vname":"age"},{"xhat":61,"yhat":0.2335,"id":"1866","vname":"age"},{"xhat":63,"yhat":0.1849,"id":"1866","vname":"age"},{"xhat":74,"yhat":0.0522,"id":"1866","vname":"age"}],"class":[{"xhat":"1st","yhat":0.5343,"vname":"class"},{"xhat":"2nd","yhat":0.0961,"vname":"class"},{"xhat":"3rd","yhat":0.2051,"vname":"class"},{"xhat":"deck crew","yhat":0.6104,"vname":"class"},{"xhat":"engineering crew","yhat":0.2343,"vname":"class"},{"xhat":"restaurant staff","yhat":0.0248,"vname":"class"},{"xhat":"victualling crew","yhat":0.1834,"vname":"class"}],"embarked":[{"xhat":"Belfast","yhat":0.7307,"vname":"embarked"},{"xhat":"Cherbourg","yhat":0.777,"vname":"embarked"},{"xhat":"Queenstown","yhat":0.652,"vname":"embarked"},{"xhat":"Southampton","yhat":0.6104,"vname":"embarked"}],"fare":[{"xhat":0,"yhat":0.6104,"id":"1866","vname":"fare"},{"xhat":6.1902,"yhat":0.5816,"id":"1866","vname":"fare"},{"xhat":7.0101,"yhat":0.5778,"id":"1866","vname":"fare"},{"xhat":7.0406,"yhat":0.5776,"id":"1866","vname":"fare"},{"xhat":7.0407,"yhat":0.5776,"id":"1866","vname":"fare"},{"xhat":7.05,"yhat":0.5776,"id":"1866","vname":"fare"},{"xhat":7.1452,"yhat":0.5771,"id":"1866","vname":"fare"},{"xhat":7.15,"yhat":0.5771,"id":"1866","vname":"fare"},{"xhat":7.15,"yhat":0.5771,"id":"1866","vname":"fare"},{"xhat":7.151,"yhat":0.5771,"id":"1866","vname":"fare"},{"xhat":7.1707,"yhat":0.577,"id":"1866","vname":"fare"},{"xhat":7.1711,"yhat":0.577,"id":"1866","vname":"fare"},{"xhat":7.1764,"yhat":0.577,"id":"1866","vname":"fare"},{"xhat":8.0007,"yhat":0.5731,"id":"1866","vname":"fare"},{"xhat":8.01,"yhat":0.5731,"id":"1866","vname":"fare"},{"xhat":8.1303,"yhat":0.5725,"id":"1866","vname":"fare"},{"xhat":8.6846,"yhat":0.5699,"id":"1866","vname":"fare"},{"xhat":9.1109,"yhat":0.5679,"id":"1866","vname":"fare"},{"xhat":10.1,"yhat":0.5632,"id":"1866","vname":"fare"},{"xhat":11.7143,"yhat":0.5557,"id":"1866","vname":"fare"},{"xhat":13,"yhat":0.5501,"id":"1866","vname":"fare"},{"xhat":13.1357,"yhat":0.5495,"id":"1866","vname":"fare"},{"xhat":14.0821,"yhat":0.5453,"id":"1866","vname":"fare"},{"xhat":14.1,"yhat":0.5452,"id":"1866","vname":"fare"},{"xhat":15.0546,"yhat":0.5412,"id":"1866","vname":"fare"},{"xhat":15.1396,"yhat":0.5408,"id":"1866","vname":"fare"},{"xhat":16.05,"yhat":0.537,"id":"1866","vname":"fare"},{"xhat":19.088,"yhat":0.524,"id":"1866","vname":"fare"},{"xhat":21,"yhat":0.5159,"id":"1866","vname":"fare"},{"xhat":22,"yhat":0.5116,"id":"1866","vname":"fare"},{"xhat":22.3614,"yhat":0.5101,"id":"1866","vname":"fare"},{"xhat":24.03,"yhat":0.5029,"id":"1866","vname":"fare"},{"xhat":26,"yhat":0.4945,"id":"1866","vname":"fare"},{"xhat":26.11,"yhat":0.4941,"id":"1866","vname":"fare"},{"xhat":26.8576,"yhat":0.4909,"id":"1866","vname":"fare"},{"xhat":28.4484,"yhat":0.4841,"id":"1866","vname":"fare"},{"xhat":30.874,"yhat":0.4737,"id":"1866","vname":"fare"},{"xhat":35.1,"yhat":0.4596,"id":"1866","vname":"fare"},{"xhat":39,"yhat":0.4473,"id":"1866","vname":"fare"},{"xhat":41.1107,"yhat":0.4407,"id":"1866","vname":"fare"},{"xhat":46.18,"yhat":0.4245,"id":"1866","vname":"fare"},{"xhat":52,"yhat":0.405,"id":"1866","vname":"fare"},{"xhat":55.0745,"yhat":0.3948,"id":"1866","vname":"fare"},{"xhat":61.9305,"yhat":0.3722,"id":"1866","vname":"fare"},{"xhat":72.974,"yhat":0.345,"id":"1866","vname":"fare"},{"xhat":77.1136,"yhat":0.3391,"id":"1866","vname":"fare"},{"xhat":83.0302,"yhat":0.331,"id":"1866","vname":"fare"},{"xhat":101.1233,"yhat":0.3156,"id":"1866","vname":"fare"},{"xhat":134.1,"yhat":0.281,"id":"1866","vname":"fare"},{"xhat":187.1467,"yhat":0.2223,"id":"1866","vname":"fare"},{"xhat":262.0706,"yhat":0.297,"id":"1866","vname":"fare"}],"sibsp":[{"xhat":0,"yhat":0.6104,"id":"1866","vname":"sibsp"},{"xhat":1,"yhat":0.6723,"id":"1866","vname":"sibsp"},{"xhat":2,"yhat":0.5958,"id":"1866","vname":"sibsp"},{"xhat":3,"yhat":0.4646,"id":"1866","vname":"sibsp"},{"xhat":8,"yhat":0.0538,"id":"1866","vname":"sibsp"}],"parch":[{"xhat":0,"yhat":0.6104,"id":"1866","vname":"parch"},{"xhat":0.86,"yhat":0.7764,"id":"1866","vname":"parch"},{"xhat":1,"yhat":0.7673,"id":"1866","vname":"parch"},{"xhat":2,"yhat":0.6833,"id":"1866","vname":"parch"},{"xhat":3,"yhat":0.5873,"id":"1866","vname":"parch"},{"xhat":9,"yhat":0.2318,"id":"1866","vname":"parch"}]},"y_min_max":[-0.0683,1.0492],"x_min_max_list":{"age":[0.5833,74],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true},"desc":{"gender":[{"type":"desc","text":"Keras predicts that for the selected instance (gender = male), prediction is equal to 0.61<\/br><\/br>The most important change in Keras's prediction would occur for gender = \"female\". It increases the prediction by 0.346. <\/br> <\/br><\/br><\/br>All variables are being displayed."}],"age":[{"type":"desc","text":"Keras predicts that for the selected instance (age = 32), prediction is equal to 0.61<\/br><\/br>The highest prediction occurs for (age = 45.39), while the lowest for (age = 74).<\/br>Breakpoint is identified at (age = 56.96).<\/br><\/br>Average model responses are *lower* for variable values *higher* than breakpoint (= 56.96)."}],"class":[{"type":"desc","text":"Keras predicts that for the selected instance (class = deck crew), prediction is equal to 0.61<\/br><\/br>The most important change in Keras's prediction would occur for class = \"restaurant staff\". It decreases the prediction by 0.586. <\/br>The second most important change in the prediction would occur for class = \"2nd\". It decreases the prediction by 0.514. <\/br>The third most important change in the prediction would occur for class = \"victualling crew\". It decreases the prediction by 0.427.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.405."}],"embarked":[{"type":"desc","text":"Keras predicts that for the selected instance (embarked = Southampton), prediction is equal to 0.61<\/br><\/br>The most important change in Keras's prediction would occur for embarked = \"Cherbourg\". It increases the prediction by 0.167. <\/br>The second most important change in the prediction would occur for embarked = \"Belfast\". It increases the prediction by 0.12. <\/br>The third most important change in the prediction would occur for embarked = \"Queenstown\". It increases the prediction by 0.042.<\/br><\/br>All variables are being displayed."}],"fare":[{"type":"desc","text":"Keras predicts that for the selected instance (fare = 0), prediction is equal to 0.61<\/br><\/br>The highest prediction occurs for (fare = 0), while the lowest for (fare = 187.146745).<\/br>Breakpoint is identified at (fare = 46.18).<\/br><\/br>Average model responses are *lower* for variable values *higher* than breakpoint (= 46.18)."}],"sibsp":[{"type":"desc","text":"Keras predicts that for the selected instance (sibsp = 0), prediction is equal to 0.61<\/br><\/br>The highest prediction occurs for (sibsp = 1), while the lowest for (sibsp = 8).<\/br>Breakpoint is identified at (sibsp = 2).<\/br><\/br>Average model responses are *lower* for variable values *higher* than breakpoint (= 2)."}],"parch":[{"type":"desc","text":"Keras predicts that for the selected instance (parch = 0), prediction is equal to 0.61<\/br><\/br>The highest prediction occurs for (parch = 0.860000000000014), while the lowest for (parch = 9).<\/br>Breakpoint is identified at (parch = 2).<\/br><\/br>Average model responses are *lower* for variable values *higher* than breakpoint (= 2)."}]}},{"x":[{"variable_name":"class","variable":"class = deck crew","contribution":0.348,"variable_value":"deck crew","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.6684,"tooltipText":"class = deck crew<br>increases average response <br>by 0.348","min":0.6462,"q1":0.6572,"q3":0.6731,"max":0.6969},{"variable_name":"gender","variable":"gender = male","contribution":-0.082,"variable_value":"male","sign":"-1","label":"keras","barStart":0.2385,"barSupport":0.3204,"tooltipText":"gender = male<br>decreases average response <br>by 0.082","min":0.2131,"q1":0.2275,"q3":0.2495,"max":0.257},{"variable_name":"fare","variable":"fare = 0","contribution":0.029,"variable_value":"0","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.3499,"tooltipText":"fare = 0<br>increases average response <br>by 0.029","min":0.337,"q1":0.3388,"q3":0.357,"max":0.3827},{"variable_name":"age","variable":"age = 32","contribution":0.028,"variable_value":"32","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.3484,"tooltipText":"age = 32<br>increases average response <br>by 0.028","min":0.3275,"q1":0.3307,"q3":0.3599,"max":0.3764},{"variable_name":"embarked","variable":"embarked = Southampton","contribution":-0.021,"variable_value":"Southampton","sign":"-1","label":"keras","barStart":0.2998,"barSupport":0.3204,"tooltipText":"embarked = Southampton<br>decreases average response <br>by 0.021","min":0.2851,"q1":0.2897,"q3":0.3078,"max":0.3186},{"variable_name":"parch","variable":"parch = 0","contribution":-0.013,"variable_value":"0","sign":"-1","label":"keras","barStart":0.3078,"barSupport":0.3204,"tooltipText":"parch = 0<br>decreases average response <br>by 0.013","min":0.2974,"q1":0.3047,"q3":0.3113,"max":0.3196},{"variable_name":"sibsp","variable":"sibsp = 0","contribution":-0,"variable_value":"0","sign":"-1","label":"keras","barStart":0.3201,"barSupport":0.3204,"tooltipText":"sibsp = 0<br>decreases average response <br>by 0","min":0.3149,"q1":0.3177,"q3":0.322,"max":0.3253}],"m":7,"x_min_max":[0.1606,0.7399],"desc":[{"type":"desc","text":"Keras predicts, that the prediction for the selected instance is 0.61 which is higher than the average model prediction 0.32.For the selected instance model's prediction is higher, than for 83% of all observations.<\/br><\/br>The most important variable is class (= deck crew). It increases the prediction by 0.348.<\/br>The second most important variable is gender (= male). It decreases the prediction by 0.082.<\/br>The third most important variable is fare (= 0). It increases the prediction by 0.029.<\/br>The average contribution of all the above variables is significant.<\/br><\/br>Other variables are with less importance. The contribution of all other variables is -0.006."}]}],"102":[{"x":[{"variable":"intercept","contribution":0,"variable_name":"intercept","variable_value":"1","cumulative":0.32,"sign":"X","position":9,"label":"keras","barStart":0.3204,"barSupport":0.3204,"tooltipText":"Average response: 0.32<br>Prediction: 0.043"},{"variable":"gender = male","contribution":-0.11,"variable_name":"gender","variable_value":"male","cumulative":0.211,"sign":"-1","position":8,"label":"keras","barStart":0.2108,"barSupport":0.3204,"tooltipText":"gender = male<br>decreases average response <br>by 0.11"},{"variable":"age = 44","contribution":-0.069,"variable_name":"age","variable_value":"44","cumulative":0.142,"sign":"-1","position":7,"label":"keras","barStart":0.1421,"barSupport":0.2108,"tooltipText":"age = 44<br>decreases average response <br>by 0.069"},{"variable":"class = 2nd","contribution":-0.092,"variable_name":"class","variable_value":"2nd","cumulative":0.05,"sign":"-1","position":6,"label":"keras","barStart":0.0499,"barSupport":0.1421,"tooltipText":"class = 2nd<br>decreases average response <br>by 0.092"},{"variable":"embarked = Southampton","contribution":0.001,"variable_name":"embarked","variable_value":"Southampton","cumulative":0.051,"sign":"1","position":5,"label":"keras","barStart":0.0499,"barSupport":0.0509,"tooltipText":"embarked = Southampton<br>increases average response <br>by 0.001"},{"variable":"parch = 0","contribution":-0.004,"variable_name":"parch","variable_value":"0","cumulative":0.047,"sign":"-1","position":4,"label":"keras","barStart":0.0473,"barSupport":0.0509,"tooltipText":"parch = 0<br>decreases average response <br>by 0.004"},{"variable":"fare = 26","contribution":-0.002,"variable_name":"fare","variable_value":"26","cumulative":0.045,"sign":"-1","position":3,"label":"keras","barStart":0.0452,"barSupport":0.0473,"tooltipText":"fare = 26<br>decreases average response <br>by 0.002"},{"variable":"sibsp = 0","contribution":-0.002,"variable_name":"sibsp","variable_value":"0","cumulative":0.043,"sign":"-1","position":2,"label":"keras","barStart":0.0432,"barSupport":0.0452,"tooltipText":"sibsp = 0<br>decreases average response <br>by 0.002"},{"variable":"prediction","contribution":-0.277,"variable_name":"prediction","variable_value":"","cumulative":0.043,"sign":"X","position":1,"label":"keras","barStart":0.0432,"barSupport":0.3204,"tooltipText":"Average response: 0.32<br>Prediction: 0.043"}],"m":9,"x_min_max":[-0.0124,0.3754],"desc":[{"type":"desc","text":"Keras predicts, that the prediction for the selected instance is 0.043 which is lower than the average model prediction 0.32.<\/br><\/br>The most important variable is gender (= male). It decreases the prediction by 0.11.<\/br>The second most important variable is class (= 2nd). It decreases the prediction by 0.092.<\/br>The third most important variable is age (= 44). It decreases the prediction by 0.069.<\/br><\/br>Other variables are with less importance. The contribution of all other variables is -0.007."}]},{"observation":[{"observation.id":"102","model":"keras","yhat":[0.0432],"gender":"male","age":44,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":0,"parch":0}],"x":{"gender":[{"xhat":"female","yhat":0.8669,"vname":"gender"},{"xhat":"male","yhat":0.0432,"vname":"gender"}],"age":[{"xhat":0.5833,"yhat":0.2953,"id":"102","vname":"age"},{"xhat":3,"yhat":0.2627,"id":"102","vname":"age"},{"xhat":5,"yhat":0.2375,"id":"102","vname":"age"},{"xhat":9,"yhat":0.1895,"id":"102","vname":"age"},{"xhat":11.04,"yhat":0.1673,"id":"102","vname":"age"},{"xhat":15,"yhat":0.1307,"id":"102","vname":"age"},{"xhat":17,"yhat":0.1155,"id":"102","vname":"age"},{"xhat":18,"yhat":0.1082,"id":"102","vname":"age"},{"xhat":19,"yhat":0.1012,"id":"102","vname":"age"},{"xhat":20,"yhat":0.0949,"id":"102","vname":"age"},{"xhat":21,"yhat":0.0896,"id":"102","vname":"age"},{"xhat":22,"yhat":0.0847,"id":"102","vname":"age"},{"xhat":23,"yhat":0.0799,"id":"102","vname":"age"},{"xhat":23.75,"yhat":0.0766,"id":"102","vname":"age"},{"xhat":24,"yhat":0.0755,"id":"102","vname":"age"},{"xhat":24.3,"yhat":0.0744,"id":"102","vname":"age"},{"xhat":25,"yhat":0.0739,"id":"102","vname":"age"},{"xhat":26,"yhat":0.0732,"id":"102","vname":"age"},{"xhat":27,"yhat":0.0727,"id":"102","vname":"age"},{"xhat":28,"yhat":0.0723,"id":"102","vname":"age"},{"xhat":29,"yhat":0.0716,"id":"102","vname":"age"},{"xhat":30,"yhat":0.0707,"id":"102","vname":"age"},{"xhat":31,"yhat":0.07,"id":"102","vname":"age"},{"xhat":32,"yhat":0.0693,"id":"102","vname":"age"},{"xhat":33,"yhat":0.0688,"id":"102","vname":"age"},{"xhat":33.62,"yhat":0.0687,"id":"102","vname":"age"},{"xhat":34,"yhat":0.0685,"id":"102","vname":"age"},{"xhat":34.64,"yhat":0.0684,"id":"102","vname":"age"},{"xhat":35,"yhat":0.0679,"id":"102","vname":"age"},{"xhat":35.66,"yhat":0.0661,"id":"102","vname":"age"},{"xhat":36,"yhat":0.0652,"id":"102","vname":"age"},{"xhat":37,"yhat":0.0623,"id":"102","vname":"age"},{"xhat":38,"yhat":0.0593,"id":"102","vname":"age"},{"xhat":39,"yhat":0.056,"id":"102","vname":"age"},{"xhat":40,"yhat":0.053,"id":"102","vname":"age"},{"xhat":41,"yhat":0.0504,"id":"102","vname":"age"},{"xhat":42,"yhat":0.0476,"id":"102","vname":"age"},{"xhat":43,"yhat":0.0453,"id":"102","vname":"age"},{"xhat":44,"yhat":0.0432,"id":"102","vname":"age"},{"xhat":45,"yhat":0.0408,"id":"102","vname":"age"},{"xhat":45.39,"yhat":0.0397,"id":"102","vname":"age"},{"xhat":46,"yhat":0.0378,"id":"102","vname":"age"},{"xhat":47,"yhat":0.035,"id":"102","vname":"age"},{"xhat":48,"yhat":0.0325,"id":"102","vname":"age"},{"xhat":50,"yhat":0.028,"id":"102","vname":"age"},{"xhat":51,"yhat":0.0262,"id":"102","vname":"age"},{"xhat":54,"yhat":0.0217,"id":"102","vname":"age"},{"xhat":56.96,"yhat":0.0183,"id":"102","vname":"age"},{"xhat":59,"yhat":0.0163,"id":"102","vname":"age"},{"xhat":61,"yhat":0.0145,"id":"102","vname":"age"},{"xhat":63,"yhat":0.0129,"id":"102","vname":"age"},{"xhat":74,"yhat":0.0046,"id":"102","vname":"age"}],"class":[{"xhat":"1st","yhat":0.3822,"vname":"class"},{"xhat":"2nd","yhat":0.0432,"vname":"class"},{"xhat":"3rd","yhat":0.1157,"vname":"class"},{"xhat":"deck crew","yhat":0.5739,"vname":"class"},{"xhat":"engineering crew","yhat":0.1422,"vname":"class"},{"xhat":"restaurant staff","yhat":0.0213,"vname":"class"},{"xhat":"victualling crew","yhat":0.1442,"vname":"class"}],"embarked":[{"xhat":"Belfast","yhat":0.0154,"vname":"embarked"},{"xhat":"Cherbourg","yhat":0.0326,"vname":"embarked"},{"xhat":"Queenstown","yhat":0.0218,"vname":"embarked"},{"xhat":"Southampton","yhat":0.0432,"vname":"embarked"}],"fare":[{"xhat":0,"yhat":0.0471,"id":"102","vname":"fare"},{"xhat":6.1902,"yhat":0.0455,"id":"102","vname":"fare"},{"xhat":7.0101,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.0406,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.0407,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.05,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.1452,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.15,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.15,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.151,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":7.1707,"yhat":0.0452,"id":"102","vname":"fare"},{"xhat":7.1711,"yhat":0.0452,"id":"102","vname":"fare"},{"xhat":7.1764,"yhat":0.0452,"id":"102","vname":"fare"},{"xhat":8.0007,"yhat":0.045,"id":"102","vname":"fare"},{"xhat":8.01,"yhat":0.045,"id":"102","vname":"fare"},{"xhat":8.1303,"yhat":0.045,"id":"102","vname":"fare"},{"xhat":8.6846,"yhat":0.0448,"id":"102","vname":"fare"},{"xhat":9.1109,"yhat":0.0447,"id":"102","vname":"fare"},{"xhat":10.1,"yhat":0.0444,"id":"102","vname":"fare"},{"xhat":11.7143,"yhat":0.0439,"id":"102","vname":"fare"},{"xhat":13,"yhat":0.0435,"id":"102","vname":"fare"},{"xhat":13.1357,"yhat":0.0435,"id":"102","vname":"fare"},{"xhat":14.0821,"yhat":0.0432,"id":"102","vname":"fare"},{"xhat":14.1,"yhat":0.0432,"id":"102","vname":"fare"},{"xhat":15.0546,"yhat":0.0429,"id":"102","vname":"fare"},{"xhat":15.1396,"yhat":0.0429,"id":"102","vname":"fare"},{"xhat":16.05,"yhat":0.0427,"id":"102","vname":"fare"},{"xhat":19.088,"yhat":0.0425,"id":"102","vname":"fare"},{"xhat":21,"yhat":0.0426,"id":"102","vname":"fare"},{"xhat":22,"yhat":0.0426,"id":"102","vname":"fare"},{"xhat":22.3614,"yhat":0.0426,"id":"102","vname":"fare"},{"xhat":24.03,"yhat":0.0428,"id":"102","vname":"fare"},{"xhat":26,"yhat":0.0432,"id":"102","vname":"fare"},{"xhat":26.11,"yhat":0.0432,"id":"102","vname":"fare"},{"xhat":26.8576,"yhat":0.0433,"id":"102","vname":"fare"},{"xhat":28.4484,"yhat":0.0435,"id":"102","vname":"fare"},{"xhat":30.874,"yhat":0.0436,"id":"102","vname":"fare"},{"xhat":35.1,"yhat":0.0442,"id":"102","vname":"fare"},{"xhat":39,"yhat":0.0449,"id":"102","vname":"fare"},{"xhat":41.1107,"yhat":0.0453,"id":"102","vname":"fare"},{"xhat":46.18,"yhat":0.0461,"id":"102","vname":"fare"},{"xhat":52,"yhat":0.0473,"id":"102","vname":"fare"},{"xhat":55.0745,"yhat":0.0478,"id":"102","vname":"fare"},{"xhat":61.9305,"yhat":0.0491,"id":"102","vname":"fare"},{"xhat":72.974,"yhat":0.0493,"id":"102","vname":"fare"},{"xhat":77.1136,"yhat":0.0496,"id":"102","vname":"fare"},{"xhat":83.0302,"yhat":0.0507,"id":"102","vname":"fare"},{"xhat":101.1233,"yhat":0.0515,"id":"102","vname":"fare"},{"xhat":134.1,"yhat":0.0484,"id":"102","vname":"fare"},{"xhat":187.1467,"yhat":0.0446,"id":"102","vname":"fare"},{"xhat":262.0706,"yhat":0.0818,"id":"102","vname":"fare"}],"sibsp":[{"xhat":0,"yhat":0.0432,"id":"102","vname":"sibsp"},{"xhat":1,"yhat":0.0537,"id":"102","vname":"sibsp"},{"xhat":2,"yhat":0.0675,"id":"102","vname":"sibsp"},{"xhat":3,"yhat":0.0738,"id":"102","vname":"sibsp"},{"xhat":8,"yhat":0.0127,"id":"102","vname":"sibsp"}],"parch":[{"xhat":0,"yhat":0.0432,"id":"102","vname":"parch"},{"xhat":0.86,"yhat":0.0698,"id":"102","vname":"parch"},{"xhat":1,"yhat":0.0766,"id":"102","vname":"parch"},{"xhat":2,"yhat":0.0926,"id":"102","vname":"parch"},{"xhat":3,"yhat":0.0796,"id":"102","vname":"parch"},{"xhat":9,"yhat":0.0278,"id":"102","vname":"parch"}]},"y_min_max":[-0.0816,0.9532],"x_min_max_list":{"age":[0.5833,74],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true},"desc":{"gender":[{"type":"desc","text":"Keras predicts that for the selected instance (gender = male), prediction is equal to 0.043<\/br><\/br>The most important change in Keras's prediction would occur for gender = \"female\". It increases the prediction by 0.824. <\/br> <\/br><\/br><\/br>All variables are being displayed."}],"age":[{"type":"desc","text":"Keras predicts that for the selected instance (age = 44), prediction is equal to 0.043<\/br><\/br>The highest prediction occurs for (age = 0.5833333333), while the lowest for (age = 74).<\/br>Breakpoint is identified at (age = 5).<\/br><\/br>Average model responses are *higher* for variable values *lower* than breakpoint (= 5)."}],"class":[{"type":"desc","text":"Keras predicts that for the selected instance (class = 2nd), prediction is equal to 0.043<\/br><\/br>The most important change in Keras's prediction would occur for class = \"deck crew\". It increases the prediction by 0.531. <\/br>The second most important change in the prediction would occur for class = \"1st\". It increases the prediction by 0.339. <\/br>The third most important change in the prediction would occur for class = \"victualling crew\". It increases the prediction by 0.101.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.099."}],"embarked":[{"type":"desc","text":"Keras predicts that for the selected instance (embarked = Southampton), prediction is equal to 0.043<\/br><\/br>The most important change in Keras's prediction would occur for embarked = \"Belfast\". It decreases the prediction by 0.028. <\/br>The second most important change in the prediction would occur for embarked = \"Queenstown\". It decreases the prediction by 0.021. <\/br>The third most important change in the prediction would occur for embarked = \"Cherbourg\". It decreases the prediction by 0.011.<\/br><\/br>All variables are being displayed."}],"fare":[{"type":"desc","text":"Keras predicts that for the selected instance (fare = 26), prediction is equal to 0.043<\/br><\/br>The highest prediction occurs for (fare = 262.0706), while the lowest for (fare = 19.088048).<\/br>Breakpoint is identified at (fare = 46.18).<\/br><\/br>Average model responses are *higher* for variable values *higher* than breakpoint (= 46.18)."}],"sibsp":[{"type":"desc","text":"Keras predicts that for the selected instance (sibsp = 0), prediction is equal to 0.043<\/br><\/br>The highest prediction occurs for (sibsp = 3), while the lowest for (sibsp = 8).<\/br>Breakpoints are identified at (sibsp = 1 and sibsp = 0).<\/br><\/br>Average model responses are *higher* for variable values *higher* than breakpoint (= 0)."}],"parch":[{"type":"desc","text":"Keras predicts that for the selected instance (parch = 0), prediction is equal to 0.043<\/br><\/br>The highest prediction occurs for (parch = 2), while the lowest for (parch = 9).<\/br>Breakpoints are identified at (parch = 0 and parch = 0).<\/br><\/br>Average model responses are *higher* for variable values *higher* than breakpoint (= 0)."}]}},{"x":[{"variable_name":"gender","variable":"gender = male","contribution":-0.136,"variable_value":"male","sign":"-1","label":"keras","barStart":0.1848,"barSupport":0.3204,"tooltipText":"gender = male<br>decreases average response <br>by 0.136","min":0.1294,"q1":0.1571,"q3":0.2094,"max":0.2108},{"variable_name":"class","variable":"class = 2nd","contribution":-0.086,"variable_value":"2nd","sign":"-1","label":"keras","barStart":0.2343,"barSupport":0.3204,"tooltipText":"class = 2nd<br>decreases average response <br>by 0.086","min":0.1925,"q1":0.2068,"q3":0.2575,"max":0.3088},{"variable_name":"age","variable":"age = 44","contribution":-0.058,"variable_value":"44","sign":"-1","label":"keras","barStart":0.2627,"barSupport":0.3204,"tooltipText":"age = 44<br>decreases average response <br>by 0.058","min":0.2461,"q1":0.2547,"q3":0.2693,"max":0.2792},{"variable_name":"fare","variable":"fare = 26","contribution":0.005,"variable_value":"26","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.3256,"tooltipText":"fare = 26<br>increases average response <br>by 0.005","min":0.3159,"q1":0.3175,"q3":0.3302,"max":0.3436},{"variable_name":"parch","variable":"parch = 0","contribution":-0.004,"variable_value":"0","sign":"-1","label":"keras","barStart":0.3159,"barSupport":0.3204,"tooltipText":"parch = 0<br>decreases average response <br>by 0.004","min":0.3093,"q1":0.3157,"q3":0.32,"max":0.3236},{"variable_name":"embarked","variable":"embarked = Southampton","contribution":0.002,"variable_value":"Southampton","sign":"1","label":"keras","barStart":0.3204,"barSupport":0.3225,"tooltipText":"embarked = Southampton<br>increases average response <br>by 0.002","min":0.3078,"q1":0.3188,"q3":0.3285,"max":0.3318},{"variable_name":"sibsp","variable":"sibsp = 0","contribution":-0.001,"variable_value":"0","sign":"-1","label":"keras","barStart":0.3196,"barSupport":0.3204,"tooltipText":"sibsp = 0<br>decreases average response <br>by 0.001","min":0.3162,"q1":0.3188,"q3":0.321,"max":0.3217}],"m":7,"x_min_max":[0.1311,0.3561],"desc":[{"type":"desc","text":"Keras predicts, that the prediction for the selected instance is 0.043 which is lower than the average model prediction 0.32. For the selected instance model's prediction is lower, than for 92% of all observations.<\/br><\/br>The most important variable is gender (= male). It decreases the prediction by 0.136.<\/br>The second most important variable is class (= 2nd). It decreases the prediction by 0.086.<\/br>The third most important variable is age (= 44). It decreases the prediction by 0.058.<\/br>The average contribution of all the above variables is significant.<\/br><\/br>Other variables are with less importance. The contribution of all other variables is 0.002."}]}]},{"x":[{"variable":"gender","label":"sklearn.pipeline.Pipeline","dropout_loss":0.5,"full_model":0.367,"min":0.4859,"q1":0.4925,"q3":0.5077,"max":0.5116},{"variable":"class","label":"sklearn.pipeline.Pipeline","dropout_loss":0.436,"full_model":0.367,"min":0.4222,"q1":0.4303,"q3":0.4439,"max":0.4453},{"variable":"age","label":"sklearn.pipeline.Pipeline","dropout_loss":0.386,"full_model":0.367,"min":0.3769,"q1":0.3833,"q3":0.3896,"max":0.3933},{"variable":"parch","label":"sklearn.pipeline.Pipeline","dropout_loss":0.376,"full_model":0.367,"min":0.372,"q1":0.3755,"q3":0.3778,"max":0.3788},{"variable":"fare","label":"sklearn.pipeline.Pipeline","dropout_loss":0.374,"full_model":0.367,"min":0.3708,"q1":0.373,"q3":0.3758,"max":0.3772},{"variable":"sibsp","label":"sklearn.pipeline.Pipeline","dropout_loss":0.372,"full_model":0.367,"min":0.3676,"q1":0.3712,"q3":0.3738,"max":0.3759},{"variable":"embarked","label":"sklearn.pipeline.Pipeline","dropout_loss":0.371,"full_model":0.367,"min":0.366,"q1":0.3693,"q3":0.3726,"max":0.3757}],"m":7,"x_min_max":[0.3459,0.5288],"desc":[{"type":"desc","text":"The number of important variables for sklearn.pipeline.Pipeline's prediction is 2 out of 7. <\/br> Variables gender, class have the highest importantance."}]},{"y_mean":0.32,"x":{"gender":[{"xhat":"female","yhat":0.7343,"vname":"gender","label":"sklearn.pipeline.Pipeline"},{"xhat":"male","yhat":0.2089,"vname":"gender","label":"sklearn.pipeline.Pipeline"}],"age":[{"xhat":0.5833,"yhat":0.4004,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":3,"yhat":0.3869,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":5,"yhat":0.3763,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":9,"yhat":0.3603,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":11.04,"yhat":0.3535,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":15,"yhat":0.3448,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":17,"yhat":0.3429,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":18,"yhat":0.3433,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":19,"yhat":0.344,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":20,"yhat":0.3448,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":21,"yhat":0.3457,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":22,"yhat":0.3467,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":23,"yhat":0.3474,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":23.75,"yhat":0.3465,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":24,"yhat":0.3461,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":24.3,"yhat":0.3457,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":25,"yhat":0.3446,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":26,"yhat":0.3433,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":27,"yhat":0.3416,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":28,"yhat":0.3403,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":29,"yhat":0.3389,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":30,"yhat":0.3352,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":31,"yhat":0.3303,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":32,"yhat":0.325,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":33,"yhat":0.3197,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":33.62,"yhat":0.3161,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":34,"yhat":0.3138,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":34.64,"yhat":0.3097,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":35,"yhat":0.3071,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":35.66,"yhat":0.3021,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":36,"yhat":0.2996,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":37,"yhat":0.2925,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":38,"yhat":0.2857,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":39,"yhat":0.2792,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":40,"yhat":0.2729,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":41,"yhat":0.2668,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":42,"yhat":0.261,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":43,"yhat":0.2555,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":44,"yhat":0.2501,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":45,"yhat":0.2449,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":45.39,"yhat":0.2429,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":46,"yhat":0.2399,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":47,"yhat":0.2346,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":48,"yhat":0.2294,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":50,"yhat":0.2193,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":51,"yhat":0.2141,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":54,"yhat":0.1978,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":56.96,"yhat":0.1819,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":59,"yhat":0.17,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":61,"yhat":0.1564,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":63,"yhat":0.1433,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":74,"yhat":0.0882,"vname":"age","label":"sklearn.pipeline.Pipeline"}],"class":[{"xhat":"1st","yhat":0.5994,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"2nd","yhat":0.3183,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"3rd","yhat":0.2245,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"deck crew","yhat":0.6547,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"engineering crew","yhat":0.3753,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"restaurant staff","yhat":0.247,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"victualling crew","yhat":0.3706,"vname":"class","label":"sklearn.pipeline.Pipeline"}],"embarked":[{"xhat":"Belfast","yhat":0.2546,"vname":"embarked","label":"sklearn.pipeline.Pipeline"},{"xhat":"Cherbourg","yhat":0.4103,"vname":"embarked","label":"sklearn.pipeline.Pipeline"},{"xhat":"Queenstown","yhat":0.3107,"vname":"embarked","label":"sklearn.pipeline.Pipeline"},{"xhat":"Southampton","yhat":0.3117,"vname":"embarked","label":"sklearn.pipeline.Pipeline"}],"fare":[{"xhat":0,"yhat":0.3361,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":6.1902,"yhat":0.3314,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.0101,"yhat":0.3308,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.0406,"yhat":0.3308,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.0407,"yhat":0.3308,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.05,"yhat":0.3308,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1452,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.15,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.15,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.151,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1707,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1711,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1764,"yhat":0.3307,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.0007,"yhat":0.3301,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.01,"yhat":0.3301,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.1303,"yhat":0.33,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.6846,"yhat":0.3296,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":9.1109,"yhat":0.3293,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":10.1,"yhat":0.3286,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":11.7143,"yhat":0.3276,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":13,"yhat":0.3268,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":13.1357,"yhat":0.3267,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":14.0821,"yhat":0.3262,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":14.1,"yhat":0.3262,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":15.0546,"yhat":0.3257,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":15.1396,"yhat":0.3256,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":16.05,"yhat":0.3252,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":19.088,"yhat":0.3237,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":21,"yhat":0.3229,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":22,"yhat":0.3225,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":22.3614,"yhat":0.3223,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":24.03,"yhat":0.3216,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":26,"yhat":0.3209,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":26.11,"yhat":0.3209,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":26.8576,"yhat":0.3206,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":28.4484,"yhat":0.3201,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":30.874,"yhat":0.3193,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":35.1,"yhat":0.3181,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":39,"yhat":0.3174,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":41.1107,"yhat":0.3171,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":46.18,"yhat":0.3167,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":52,"yhat":0.3164,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":55.0745,"yhat":0.3162,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":61.9305,"yhat":0.3152,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":72.974,"yhat":0.3133,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":77.1136,"yhat":0.3125,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":83.0302,"yhat":0.3112,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":101.1233,"yhat":0.3076,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":134.1,"yhat":0.3028,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":187.1467,"yhat":0.3175,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":262.0706,"yhat":0.3895,"vname":"fare","label":"sklearn.pipeline.Pipeline"}],"sibsp":[{"xhat":0,"yhat":0.3233,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":1,"yhat":0.353,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":2,"yhat":0.3339,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":3,"yhat":0.2958,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":8,"yhat":0.1148,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"}],"parch":[{"xhat":0,"yhat":0.3056,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":0.86,"yhat":0.4031,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":1,"yhat":0.4051,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":2,"yhat":0.377,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":3,"yhat":0.3267,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":9,"yhat":0.1481,"vname":"parch","label":"sklearn.pipeline.Pipeline"}]},"y_min_max":[0.0236,0.7989],"x_min_max_list":{"age":[0.5833,74],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true},"desc":{"gender":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for gender = \"female\". It increases the prediction by 0.415. <\/br>The second most important change in the prediction would occur for gender = \"male\". It decreases the prediction by 0.111. <\/br><\/br><\/br>All variables are being displayed."}],"age":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for age = \"74\". It decreases the prediction by 0.231. <\/br>The second most important change in the prediction would occur for age = \"63\". It decreases the prediction by 0.176. <\/br>The third most important change in the prediction would occur for age = \"61\". It decreases the prediction by 0.163.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.15."}],"class":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for class = \"deck crew\". It increases the prediction by 0.335. <\/br>The second most important change in the prediction would occur for class = \"1st\". It increases the prediction by 0.28. <\/br>The third most important change in the prediction would occur for class = \"3rd\". It decreases the prediction by 0.095.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.073."}],"embarked":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for embarked = \"Cherbourg\". It increases the prediction by 0.091. <\/br>The second most important change in the prediction would occur for embarked = \"Belfast\". It decreases the prediction by 0.065. <\/br>The third most important change in the prediction would occur for embarked = \"Queenstown\". It decreases the prediction by 0.009.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.008."}],"fare":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for fare = \"262.0706\". It increases the prediction by 0.07. <\/br>The second most important change in the prediction would occur for fare = \"134.1\". It decreases the prediction by 0.017. <\/br>The third most important change in the prediction would occur for fare = \"0\". It increases the prediction by 0.016.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.012."}],"sibsp":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for sibsp = \"8\". It decreases the prediction by 0.205. <\/br>The second most important change in the prediction would occur for sibsp = \"1\". It increases the prediction by 0.033. <\/br>The third most important change in the prediction would occur for sibsp = \"3\". It decreases the prediction by 0.024.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.014."}],"parch":[{"type":"desc","text":"Sklearn.pipeline.Pipeline's mean prediction is equal to 0.32<\/br><\/br>The most important change in Sklearn.pipeline.Pipeline's prediction would occur for parch = \"9\". It decreases the prediction by 0.171. <\/br>The second most important change in the prediction would occur for parch = \"1\". It increases the prediction by 0.085. <\/br>The third most important change in the prediction would occur for parch = \"0.860000000000014\". It increases the prediction by 0.083.<\/br><\/br>Other variable values are with less importance. They do not change the prediction by more than 0.057."}]}},{"y_mean":0.335,"x":{"gender":[{"xhat":"female","yhat":0,"vname":"gender","label":"sklearn.pipeline.Pipeline"},{"xhat":"male","yhat":-0.5466,"vname":"gender","label":"sklearn.pipeline.Pipeline"}],"age":[{"xhat":0.5833,"yhat":0,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":3,"yhat":-0.0123,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":5,"yhat":-0.0218,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":9,"yhat":-0.0356,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":11.04,"yhat":-0.0412,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":15,"yhat":-0.0471,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":17,"yhat":-0.0475,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":18,"yhat":-0.0465,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":19,"yhat":-0.0453,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":20,"yhat":-0.0439,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":21,"yhat":-0.0424,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":22,"yhat":-0.0409,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":23,"yhat":-0.0396,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":23.75,"yhat":-0.0401,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":24,"yhat":-0.0404,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":24.3,"yhat":-0.0407,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":25,"yhat":-0.0416,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":26,"yhat":-0.0428,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":27,"yhat":-0.0444,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":28,"yhat":-0.0457,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":29,"yhat":-0.0469,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":30,"yhat":-0.0503,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":31,"yhat":-0.0548,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":32,"yhat":-0.0597,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":33,"yhat":-0.0648,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":33.62,"yhat":-0.0683,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":34,"yhat":-0.0705,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":34.64,"yhat":-0.0744,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":35,"yhat":-0.0769,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":35.66,"yhat":-0.0817,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":36,"yhat":-0.0842,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":37,"yhat":-0.091,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":38,"yhat":-0.0974,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":39,"yhat":-0.1035,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":40,"yhat":-0.1096,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":41,"yhat":-0.1154,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":42,"yhat":-0.121,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":43,"yhat":-0.1264,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":44,"yhat":-0.1316,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":45,"yhat":-0.1367,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":45.39,"yhat":-0.1387,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":46,"yhat":-0.1419,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":47,"yhat":-0.1474,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":48,"yhat":-0.1529,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":50,"yhat":-0.1638,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":51,"yhat":-0.1695,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":54,"yhat":-0.1878,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":56.96,"yhat":-0.2063,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":59,"yhat":-0.2202,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":61,"yhat":-0.2354,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":63,"yhat":-0.25,"vname":"age","label":"sklearn.pipeline.Pipeline"},{"xhat":74,"yhat":-0.3199,"vname":"age","label":"sklearn.pipeline.Pipeline"}],"class":[{"xhat":"1st","yhat":0,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"2nd","yhat":-0.2394,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"3rd","yhat":-0.4264,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"deck crew","yhat":0.0635,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"engineering crew","yhat":-0.341,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"restaurant staff","yhat":-0.6064,"vname":"class","label":"sklearn.pipeline.Pipeline"},{"xhat":"victualling crew","yhat":-0.4559,"vname":"class","label":"sklearn.pipeline.Pipeline"}],"embarked":[{"xhat":"Belfast","yhat":0,"vname":"embarked","label":"sklearn.pipeline.Pipeline"},{"xhat":"Cherbourg","yhat":0.1613,"vname":"embarked","label":"sklearn.pipeline.Pipeline"},{"xhat":"Queenstown","yhat":0.0555,"vname":"embarked","label":"sklearn.pipeline.Pipeline"},{"xhat":"Southampton","yhat":0.0626,"vname":"embarked","label":"sklearn.pipeline.Pipeline"}],"fare":[{"xhat":0,"yhat":0,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":6.1902,"yhat":-0.0045,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.0101,"yhat":-0.0051,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.0406,"yhat":-0.0051,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.0407,"yhat":-0.0051,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.05,"yhat":-0.0051,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1452,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.15,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.15,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.151,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1707,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1711,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":7.1764,"yhat":-0.0052,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.0007,"yhat":-0.0057,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.01,"yhat":-0.0057,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.1303,"yhat":-0.0058,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":8.6846,"yhat":-0.0062,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":9.1109,"yhat":-0.0065,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":10.1,"yhat":-0.0071,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":11.7143,"yhat":-0.008,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":13,"yhat":-0.0088,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":13.1357,"yhat":-0.0088,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":14.0821,"yhat":-0.0093,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":14.1,"yhat":-0.0093,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":15.0546,"yhat":-0.0098,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":15.1396,"yhat":-0.0099,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":16.05,"yhat":-0.0103,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":19.088,"yhat":-0.0116,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":21,"yhat":-0.0124,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":22,"yhat":-0.0128,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":22.3614,"yhat":-0.0129,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":24.03,"yhat":-0.0136,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":26,"yhat":-0.0143,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":26.11,"yhat":-0.0143,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":26.8576,"yhat":-0.0146,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":28.4484,"yhat":-0.0151,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":30.874,"yhat":-0.0159,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":35.1,"yhat":-0.017,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":39,"yhat":-0.0177,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":41.1107,"yhat":-0.018,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":46.18,"yhat":-0.0184,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":52,"yhat":-0.0187,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":55.0745,"yhat":-0.019,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":61.9305,"yhat":-0.0201,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":72.974,"yhat":-0.0224,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":77.1136,"yhat":-0.0233,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":83.0302,"yhat":-0.0247,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":101.1233,"yhat":-0.0296,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":134.1,"yhat":-0.0375,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":187.1467,"yhat":-0.0451,"vname":"fare","label":"sklearn.pipeline.Pipeline"},{"xhat":262.0706,"yhat":-0.0157,"vname":"fare","label":"sklearn.pipeline.Pipeline"}],"sibsp":[{"xhat":0,"yhat":0,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":1,"yhat":0.0301,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":2,"yhat":0.0139,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":3,"yhat":-0.0216,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"},{"xhat":8,"yhat":-0.2011,"vname":"sibsp","label":"sklearn.pipeline.Pipeline"}],"parch":[{"xhat":0,"yhat":0,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":0.86,"yhat":0.0917,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":1,"yhat":0.0935,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":2,"yhat":0.0676,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":3,"yhat":0.0195,"vname":"parch","label":"sklearn.pipeline.Pipeline"},{"xhat":9,"yhat":-0.0458,"vname":"parch","label":"sklearn.pipeline.Pipeline"}]},"y_min_max":[-0.6832,0.238],"x_min_max_list":{"age":[0.5833,74],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true},"desc":{"gender":[{"type":"desc","text":"Under development"}],"age":[{"type":"desc","text":"Under development"}],"class":[{"type":"desc","text":"Under development"}],"embarked":[{"type":"desc","text":"Under development"}],"fare":[{"type":"desc","text":"Under development"}],"sibsp":[{"type":"desc","text":"Under development"}],"parch":[{"type":"desc","text":"Under development"}]}},{"x":[{"gender":"male","age":40,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":33,"class":"3rd","embarked":"Southampton","fare":22.1006,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"3rd","embarked":"Southampton","fare":7.1506,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":16,"class":"3rd","embarked":"Southampton","fare":7.1806,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":19,"class":"3rd","embarked":"Southampton","fare":7.1806,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":1,"class":"2nd","embarked":"Cherbourg","fare":41.1107,"sibsp":1,"parch":2,"_target_":1},{"gender":"female","age":50,"class":"1st","embarked":"Cherbourg","fare":39.08,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":45,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":29,"class":"1st","embarked":"Cherbourg","fare":25.141,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":9,"class":"3rd","embarked":"Southampton","fare":46.18,"sibsp":5,"parch":2,"_target_":0},{"gender":"female","age":63,"class":"3rd","embarked":"Southampton","fare":8.0203,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":47,"class":"1st","embarked":"Southampton","fare":42.08,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"2nd","embarked":"Cherbourg","fare":30.0105,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":17,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":4,"class":"2nd","embarked":"Southampton","fare":39,"sibsp":2,"parch":1,"_target_":1},{"gender":"male","age":31,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":33,"class":"1st","embarked":"Southampton","fare":86.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":31,"class":"2nd","embarked":"Southampton","fare":26.05,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":18,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":58,"class":"1st","embarked":"Cherbourg","fare":76.051,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":39,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":63,"class":"3rd","embarked":"Southampton","fare":9.1109,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":40,"class":"2nd","embarked":"Southampton","fare":39,"sibsp":1,"parch":1,"_target_":1},{"gender":"male","age":55,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"2nd","embarked":"Southampton","fare":21,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":54,"class":"1st","embarked":"Southampton","fare":77.0509,"sibsp":0,"parch":1,"_target_":0},{"gender":"male","age":26,"class":"3rd","embarked":"Cherbourg","fare":7.0406,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":38,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":17,"class":"1st","embarked":"Cherbourg","fare":57.1907,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":35,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"3rd","embarked":"Southampton","fare":6.1904,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":15,"class":"3rd","embarked":"Southampton","fare":39.1309,"sibsp":4,"parch":1,"_target_":0},{"gender":"female","age":39,"class":"3rd","embarked":"Queenstown","fare":29.0206,"sibsp":0,"parch":5,"_target_":0},{"gender":"male","age":22,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":2,"class":"3rd","embarked":"Southampton","fare":27.18,"sibsp":3,"parch":2,"_target_":0},{"gender":"female","age":23,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":39,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":62,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"1st","embarked":"Southampton","fare":31,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"2nd","embarked":"Southampton","fare":11.1,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":8.1303,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":28,"class":"3rd","embarked":"Queenstown","fare":24.03,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":27,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":18,"class":"3rd","embarked":"Southampton","fare":9.161,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":36,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":57,"class":"1st","embarked":"Southampton","fare":164.1704,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":47,"class":"1st","embarked":"Southampton","fare":61.0306,"sibsp":1,"parch":0,"_target_":1},{"gender":"female","age":3,"class":"2nd","embarked":"Cherbourg","fare":41.1107,"sibsp":1,"parch":2,"_target_":1},{"gender":"male","age":31,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":46,"class":"3rd","embarked":"Southampton","fare":9,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":8,"class":"3rd","embarked":"Queenstown","fare":29.0206,"sibsp":4,"parch":1,"_target_":0},{"gender":"male","age":29,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":39,"class":"1st","embarked":"Cherbourg","fare":134.1,"sibsp":1,"parch":1,"_target_":1},{"gender":"female","age":4,"class":"3rd","embarked":"Southampton","fare":16.14,"sibsp":1,"parch":1,"_target_":1},{"gender":"female","age":17,"class":"3rd","embarked":"Queenstown","fare":7.1408,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":8,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":1,"parch":1,"_target_":1},{"gender":"male","age":33,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"3rd","embarked":"Southampton","fare":9.0406,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":46,"class":"1st","embarked":"Cherbourg","fare":79,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":10,"class":"3rd","embarked":"Southampton","fare":14.1,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":24,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":64,"class":"1st","embarked":"Cherbourg","fare":83.0302,"sibsp":0,"parch":2,"_target_":1},{"gender":"male","age":36,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":3,"class":"3rd","embarked":"Southampton","fare":25.0904,"sibsp":3,"parch":1,"_target_":0},{"gender":"male","age":33,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":18,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":18,"class":"3rd","embarked":"Southampton","fare":6.0911,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":23,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":49,"class":"1st","embarked":"Southampton","fare":133.13,"sibsp":2,"parch":0,"_target_":1},{"gender":"female","age":30,"class":"2nd","embarked":"Cherbourg","fare":13.1702,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":61,"class":"1st","embarked":"Cherbourg","fare":262.0706,"sibsp":1,"parch":3,"_target_":0},{"gender":"male","age":36,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":55,"class":"1st","embarked":"Southampton","fare":93.1,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":19,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":31,"class":"3rd","embarked":"Southampton","fare":20.1006,"sibsp":1,"parch":1,"_target_":1},{"gender":"male","age":43,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":39,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":32,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":38,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"3rd","embarked":"Southampton","fare":7.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":18,"class":"3rd","embarked":"Southampton","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":35,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":42,"class":"2nd","embarked":"Cherbourg","fare":15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":43,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":26,"class":"3rd","embarked":"Southampton","fare":22,"sibsp":1,"parch":1,"_target_":1},{"gender":"male","age":19,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":47,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":44,"class":"1st","embarked":"Southampton","fare":51.1703,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":10,"class":"3rd","embarked":"Cherbourg","fare":15.0411,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":25,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"3rd","embarked":"Southampton","fare":6.1904,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"3rd","embarked":"Southampton","fare":7.17,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":33,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":3,"class":"3rd","embarked":"Southampton","fare":15.18,"sibsp":1,"parch":1,"_target_":1},{"gender":"male","age":33,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":20,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":58,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":0.9167,"class":"1st","embarked":"Southampton","fare":151.16,"sibsp":1,"parch":2,"_target_":1},{"gender":"male","age":48,"class":"1st","embarked":"Southampton","fare":52,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":24,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"3rd","embarked":"Southampton","fare":7.1511,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":25,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":16,"class":"3rd","embarked":"Southampton","fare":46.18,"sibsp":5,"parch":2,"_target_":0},{"gender":"male","age":25,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":31,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":9,"class":"3rd","embarked":"Southampton","fare":3.0305,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":36,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":5,"class":"3rd","embarked":"Southampton","fare":12.0906,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":26,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":41,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"3rd","embarked":"Queenstown","fare":15.1,"sibsp":1,"parch":0,"_target_":0},{"gender":"female","age":19,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":47,"class":"1st","embarked":"Southampton","fare":30.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":37,"class":"2nd","embarked":"Southampton","fare":12.1706,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":32,"class":"2nd","embarked":"Southampton","fare":21,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":19,"class":"1st","embarked":"Southampton","fare":153.0903,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":26,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"1st","embarked":"Cherbourg","fare":79.04,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":59,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":46,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":22,"class":"1st","embarked":"Southampton","fare":55,"sibsp":0,"parch":1,"_target_":1},{"gender":"female","age":56,"class":"1st","embarked":"Cherbourg","fare":83.0302,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":24,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":57,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":45,"class":"3rd","embarked":"Southampton","fare":69.11,"sibsp":1,"parch":9,"_target_":0},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":24.03,"sibsp":2,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"3rd","embarked":"Southampton","fare":7.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":30,"class":"1st","embarked":"Southampton","fare":86.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":18,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":53,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":17,"class":"3rd","embarked":"Queenstown","fare":8,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":47,"class":"3rd","embarked":"Southampton","fare":7,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":50,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"3rd","embarked":"Cherbourg","fare":7.0406,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":36,"class":"3rd","embarked":"Southampton","fare":17.08,"sibsp":1,"parch":0,"_target_":1},{"gender":"female","age":20,"class":"3rd","embarked":"Southampton","fare":34.0706,"sibsp":2,"parch":2,"_target_":0},{"gender":"male","age":44,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":74,"class":"3rd","embarked":"Southampton","fare":7.1506,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":29,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":45,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":43,"class":"1st","embarked":"Cherbourg","fare":27.1405,"sibsp":1,"parch":0,"_target_":1},{"gender":"female","age":30,"class":"2nd","embarked":"Queenstown","fare":12.07,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":22,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"2nd","embarked":"Southampton","fare":13.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":17,"class":"3rd","embarked":"Southampton","fare":7.0206,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":12,"class":"3rd","embarked":"Southampton","fare":25.0904,"sibsp":3,"parch":1,"_target_":0},{"gender":"male","age":41,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":31,"class":"1st","embarked":"Cherbourg","fare":52,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":19,"class":"3rd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":31,"class":"3rd","embarked":"Queenstown","fare":15.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":71,"class":"1st","embarked":"Cherbourg","fare":34.1301,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"3rd","embarked":"Southampton","fare":7.1806,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":53,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":70,"class":"1st","embarked":"Southampton","fare":71,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":21,"class":"2nd","embarked":"Southampton","fare":73.1,"sibsp":2,"parch":0,"_target_":0},{"gender":"female","age":16,"class":"1st","embarked":"Cherbourg","fare":39.08,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":20,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":44,"class":"1st","embarked":"Cherbourg","fare":27.1405,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":29,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":45,"class":"1st","embarked":"Cherbourg","fare":247.1006,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":17,"class":"3rd","embarked":"Queenstown","fare":7.1707,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"1st","embarked":"Cherbourg","fare":247.1005,"sibsp":0,"parch":1,"_target_":0},{"gender":"male","age":26,"class":"3rd","embarked":"Cherbourg","fare":14.0901,"sibsp":1,"parch":0,"_target_":0},{"gender":"female","age":19,"class":"3rd","embarked":"Queenstown","fare":7.1707,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":31,"class":"1st","embarked":"Cherbourg","fare":134.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":31,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":43,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":18,"class":"3rd","embarked":"Southampton","fare":9.07,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":26,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":29,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":35,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":61,"class":"1st","embarked":"Southampton","fare":32.0605,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":15,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":36,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":36,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":36,"class":"1st","embarked":"Southampton","fare":151.16,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":40,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"1st","embarked":"Southampton","fare":35.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":7,"class":"3rd","embarked":"Southampton","fare":34.0706,"sibsp":2,"parch":2,"_target_":0},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":17,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":19,"class":"3rd","embarked":"Cherbourg","fare":14.0901,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":17,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":46,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"3rd","embarked":"Southampton","fare":24.03,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":43,"class":"3rd","embarked":"Southampton","fare":6.09,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":65,"class":"1st","embarked":"Cherbourg","fare":26.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":32,"class":"1st","embarked":"Cherbourg","fare":56.1807,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":31,"class":"3rd","embarked":"Queenstown","fare":7.1508,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":20,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":40,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":40,"class":"3rd","embarked":"Cherbourg","fare":21.1307,"sibsp":2,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":51,"class":"1st","embarked":"Cherbourg","fare":61.0707,"sibsp":0,"parch":1,"_target_":0},{"gender":"male","age":28,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":25,"class":"3rd","embarked":"Cherbourg","fare":15.0411,"sibsp":0,"parch":2,"_target_":1},{"gender":"male","age":25,"class":"3rd","embarked":"Cherbourg","fare":14.0901,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":49,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":22,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":20,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":46,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"2nd","embarked":"Southampton","fare":16,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":33,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":17,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":13,"class":"3rd","embarked":"Southampton","fare":7.1511,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":44,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":23,"class":"2nd","embarked":"Cherbourg","fare":13.151,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":17,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":52,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":24,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":31,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":40,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":20,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":22,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":35,"class":"2nd","embarked":"Southampton","fare":39,"sibsp":0,"parch":3,"_target_":1},{"gender":"male","age":39,"class":"1st","embarked":"Cherbourg","fare":29.14,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":9.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"3rd","embarked":"Southampton","fare":9.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":21,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":38,"class":"3rd","embarked":"Southampton","fare":8.1303,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":9,"class":"3rd","embarked":"Southampton","fare":20.1006,"sibsp":0,"parch":2,"_target_":1},{"gender":"male","age":11,"class":"3rd","embarked":"Cherbourg","fare":11.041,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":33,"class":"3rd","embarked":"Southampton","fare":20.1006,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":15,"class":"3rd","embarked":"Southampton","fare":18,"sibsp":2,"parch":0,"_target_":0},{"gender":"male","age":26,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":45,"class":"3rd","embarked":"Cherbourg","fare":14.0901,"sibsp":0,"parch":1,"_target_":0},{"gender":"male","age":25,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":46,"class":"1st","embarked":"Southampton","fare":35.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":28,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":26,"class":"2nd","embarked":"Southampton","fare":21,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":34,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":38,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":25,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":45,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":44,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":21,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":40,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":45,"class":"3rd","embarked":"Southampton","fare":14.0202,"sibsp":1,"parch":0,"_target_":1},{"gender":"female","age":41,"class":"1st","embarked":"Cherbourg","fare":134.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":48,"class":"3rd","embarked":"Southampton","fare":7.0101,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"1st","embarked":"Cherbourg","fare":83.0302,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":40,"class":"2nd","embarked":"Southampton","fare":15.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":42,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":25,"class":"3rd","embarked":"Southampton","fare":7.1506,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":24,"class":"3rd","embarked":"Southampton","fare":8.17,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":18,"class":"2nd","embarked":"Southampton","fare":23,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":36,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":21,"class":"3rd","embarked":"Southampton","fare":7.1506,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":45,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":60,"class":"2nd","embarked":"Southampton","fare":39,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":43,"class":"1st","embarked":"Southampton","fare":211.0609,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":24,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"3rd","embarked":"Southampton","fare":22.1006,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":62,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":48,"class":"3rd","embarked":"Queenstown","fare":6.19,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":61,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"3rd","embarked":"Cherbourg","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":35,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":23,"class":"3rd","embarked":"Southampton","fare":8.1303,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":33,"class":"3rd","embarked":"Southampton","fare":7.1701,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":18,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":55,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":24,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":34,"class":"2nd","embarked":"Southampton","fare":23,"sibsp":0,"parch":1,"_target_":1},{"gender":"female","age":25,"class":"3rd","embarked":"Southampton","fare":7.1806,"sibsp":1,"parch":0,"_target_":0},{"gender":"female","age":36,"class":"2nd","embarked":"Southampton","fare":21,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":27,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":20,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":42,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":39,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":34,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":26,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":27,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"3rd","embarked":"Southampton","fare":7.1701,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":45,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":9,"class":"3rd","embarked":"Southampton","fare":15.18,"sibsp":1,"parch":1,"_target_":1},{"gender":"female","age":18,"class":"3rd","embarked":"Queenstown","fare":15.1,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"3rd","embarked":"Southampton","fare":14.08,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":39,"class":"1st","embarked":"Cherbourg","fare":247.1006,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":48,"class":"1st","embarked":"Southampton","fare":55,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":26,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":48,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":21,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":35,"class":"3rd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"2nd","embarked":"Southampton","fare":22,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"3rd","embarked":"Southampton","fare":7.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"1st","embarked":"Southampton","fare":51.1703,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":38,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":21,"class":"3rd","embarked":"Southampton","fare":7.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":24,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":25,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":0.5833,"class":"2nd","embarked":"Southampton","fare":14.1,"sibsp":1,"parch":1,"_target_":1},{"gender":"male","age":39,"class":"2nd","embarked":"Belfast","fare":22,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":54,"class":"1st","embarked":"Cherbourg","fare":55.081,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":30,"class":"3rd","embarked":"Cherbourg","fare":6.0809,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":27,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":31,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":3,"class":"2nd","embarked":"Southampton","fare":18.15,"sibsp":1,"parch":1,"_target_":1},{"gender":"female","age":41,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":23,"class":"3rd","embarked":"Southampton","fare":8.1303,"sibsp":2,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":24,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":39,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":2,"_target_":1},{"gender":"male","age":18,"class":"3rd","embarked":"Southampton","fare":69.11,"sibsp":8,"parch":2,"_target_":0},{"gender":"male","age":24,"class":"2nd","embarked":"Southampton","fare":13.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":43,"class":"3rd","embarked":"Southampton","fare":16.02,"sibsp":0,"parch":1,"_target_":0},{"gender":"male","age":37,"class":"1st","embarked":"Southampton","fare":53.02,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":23,"class":"3rd","embarked":"Southampton","fare":7.1806,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":35,"class":"2nd","embarked":"Queenstown","fare":12.07,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":50,"class":"1st","embarked":"Cherbourg","fare":28.1403,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":59,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"2nd","embarked":"Cherbourg","fare":13.1702,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":43,"class":"2nd","embarked":"Southampton","fare":21,"sibsp":0,"parch":1,"_target_":0},{"gender":"female","age":25,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":35,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":45,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":39,"class":"1st","embarked":"Cherbourg","fare":55.18,"sibsp":1,"parch":0,"_target_":1},{"gender":"female","age":43,"class":"3rd","embarked":"Southampton","fare":46.18,"sibsp":1,"parch":6,"_target_":0},{"gender":"male","age":21,"class":"3rd","embarked":"Queenstown","fare":7.1707,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":33,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":21,"class":"3rd","embarked":"Southampton","fare":7.13,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":23,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":21,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":59,"class":"1st","embarked":"Southampton","fare":51.0907,"sibsp":2,"parch":0,"_target_":1},{"gender":"female","age":30,"class":"3rd","embarked":"Southampton","fare":15.11,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":39,"class":"3rd","embarked":"Southampton","fare":7.05,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":0.75,"class":"3rd","embarked":"Cherbourg","fare":19.0502,"sibsp":2,"parch":1,"_target_":1},{"gender":"male","age":62,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":35,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":32,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":44,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":24,"class":"1st","embarked":"Cherbourg","fare":49.1001,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":30,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":44,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":45,"class":"3rd","embarked":"Southampton","fare":69.11,"sibsp":1,"parch":9,"_target_":0},{"gender":"male","age":26,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":53,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":33,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":50,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":47,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":27,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":41,"class":"3rd","embarked":"Southampton","fare":7.0206,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":43,"class":"engineering crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":43,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":39,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":35,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":62,"class":"1st","embarked":"Cherbourg","fare":77.1902,"sibsp":1,"parch":0,"_target_":1},{"gender":"male","age":34,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":47,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":43,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":32,"class":"3rd","embarked":"Queenstown","fare":15.1,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":30,"class":"3rd","embarked":"Southampton","fare":8.1303,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":21,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":19,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":15,"class":"2nd","embarked":"Southampton","fare":39,"sibsp":0,"parch":2,"_target_":1},{"gender":"male","age":46,"class":"1st","embarked":"Southampton","fare":75.041,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":59,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":32,"class":"deck crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":50,"class":"1st","embarked":"Cherbourg","fare":247.1005,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":28,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":39,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":17,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":33,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":24,"class":"1st","embarked":"Cherbourg","fare":26,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":37,"class":"3rd","embarked":"Southampton","fare":9.1109,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":24,"class":"2nd","embarked":"Southampton","fare":27,"sibsp":2,"parch":1,"_target_":1},{"gender":"male","age":31,"class":"2nd","embarked":"Queenstown","fare":10.1402,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":39,"class":"1st","embarked":"Cherbourg","fare":63.0702,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":17,"class":"2nd","embarked":"Southampton","fare":10.1,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":26,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":26,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":18,"class":"2nd","embarked":"Southampton","fare":13,"sibsp":1,"parch":1,"_target_":0},{"gender":"female","age":27,"class":"3rd","embarked":"Cherbourg","fare":15.0411,"sibsp":0,"parch":2,"_target_":1},{"gender":"female","age":21,"class":"3rd","embarked":"Queenstown","fare":7.1408,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":45,"class":"1st","embarked":"Southampton","fare":83.0906,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":42,"class":"3rd","embarked":"Southampton","fare":46.18,"sibsp":1,"parch":6,"_target_":0},{"gender":"male","age":28,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":29,"class":"3rd","embarked":"Southampton","fare":7.1711,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":45,"class":"1st","embarked":"Southampton","fare":164.1704,"sibsp":1,"parch":1,"_target_":1},{"gender":"female","age":33,"class":"1st","embarked":"Cherbourg","fare":27.1405,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":39,"class":"1st","embarked":"Southampton","fare":80,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":28,"class":"3rd","embarked":"Southampton","fare":15.17,"sibsp":1,"parch":0,"_target_":0},{"gender":"female","age":5,"class":"3rd","embarked":"Cherbourg","fare":13.0804,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":21,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":20,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":36,"class":"3rd","embarked":"Southampton","fare":12.0308,"sibsp":0,"parch":2,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":28,"class":"3rd","embarked":"Southampton","fare":14.08,"sibsp":1,"parch":1,"_target_":0},{"gender":"male","age":39,"class":"2nd","embarked":"Cherbourg","fare":15.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":18,"class":"3rd","embarked":"Southampton","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"1st","embarked":"Cherbourg","fare":76.1407,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":30,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"2nd","embarked":"Southampton","fare":22,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":42,"class":"2nd","embarked":"Southampton","fare":19.1,"sibsp":0,"parch":1,"_target_":1},{"gender":"male","age":26,"class":"3rd","embarked":"Cherbourg","fare":7.0406,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":29,"class":"2nd","embarked":"Southampton","fare":26,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"1st","embarked":"Southampton","fare":52,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"3rd","embarked":"Queenstown","fare":24.03,"sibsp":1,"parch":0,"_target_":0},{"gender":"male","age":36,"class":"1st","embarked":"Southampton","fare":40.0206,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":23,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":21,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":17,"class":"1st","embarked":"Cherbourg","fare":110.1708,"sibsp":0,"parch":2,"_target_":1},{"gender":"male","age":40,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":40,"class":"victualling crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":28,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":40,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"female","age":32,"class":"1st","embarked":"Cherbourg","fare":76.051,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":40,"class":"3rd","embarked":"Cherbourg","fare":7.0406,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":51,"class":"1st","embarked":"Southampton","fare":26.11,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":22,"class":"3rd","embarked":"Queenstown","fare":7.15,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":31,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":37,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":35,"class":"3rd","embarked":"Cherbourg","fare":7.0407,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":21,"class":"2nd","embarked":"Southampton","fare":22,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":25,"class":"restaurant staff","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":34,"class":"3rd","embarked":"Southampton","fare":8.01,"sibsp":0,"parch":0,"_target_":0},{"gender":"male","age":27,"class":"engineering crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":29,"class":"deck crew","embarked":"Belfast","fare":0,"sibsp":0,"parch":0,"_target_":0},{"gender":"female","age":42,"class":"1st","embarked":"Cherbourg","fare":110.1708,"sibsp":0,"parch":0,"_target_":1},{"gender":"male","age":17,"class":"victualling crew","embarked":"Southampton","fare":0,"sibsp":0,"parch":0,"_target_":0}],"x_min_max_list":{"gender":["female","male"],"age":[0.5833,74],"class":["1st","2nd","3rd","deck crew","engineering crew","restaurant staff","victualling crew"],"embarked":["Belfast","Cherbourg","Queenstown","Southampton"],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"y_min_max":[-0.1,1.1],"x_max_list":{"gender":424,"class":179,"embarked":396},"nbin":{"age":11,"fare":11,"sibsp":11,"parch":11},"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true}},{"x":{"gender":[{"y":"female","x0":0.7109,"sign":1},{"y":"male","x0":0.1863,"sign":-1}],"age":[{"x0":4.2515,"x1":11.61,"y0":0.7857,"y1":0.4667},{"x0":11.61,"x1":18.95,"y0":0.4667,"y1":0.3111},{"x0":18.95,"x1":26.25,"y0":0.3111,"y1":0.2432},{"x0":26.25,"x1":33.6,"y0":0.2432,"y1":0.2632},{"x0":33.6,"x1":40.95,"y0":0.2632,"y1":0.3846},{"x0":40.95,"x1":48.3,"y0":0.3846,"y1":0.3659},{"x0":48.3,"x1":55.65,"y0":0.3659,"y1":0.2222},{"x0":55.65,"x1":63,"y0":0.2222,"y1":0.3333},{"x0":63,"x1":70.35,"y0":0.3333,"y1":0}],"class":[{"y":"1st","x0":0.5974,"sign":1},{"y":"2nd","x0":0.3333,"sign":1},{"y":"3rd","x0":0.2626,"sign":-1},{"y":"deck crew","x0":0.7368,"sign":1},{"y":"engineering crew","x0":0.2083,"sign":-1},{"y":"restaurant staff","x0":0,"sign":-1},{"y":"victualling crew","x0":0.2155,"sign":-1}],"embarked":[{"y":"Belfast","x0":0.2157,"sign":-1},{"y":"Cherbourg","x0":0.5352,"sign":1},{"y":"Queenstown","x0":0.4706,"sign":1},{"y":"Southampton","x0":0.2652,"sign":-1}],"fare":[{"x0":13.1,"x1":39.3,"y0":0.2635,"y1":0.439},{"x0":39.3,"x1":65.5,"y0":0.439,"y1":0.5714},{"x0":65.5,"x1":91.8,"y0":0.5714,"y1":0.5},{"x0":91.8,"x1":118,"y0":0.5,"y1":1},{"x0":118,"x1":144,"y0":1,"y1":1},{"x0":144,"x1":170,"y0":1,"y1":0.5},{"x0":170,"x1":223,"y0":0.5,"y1":1},{"x0":223,"x1":249,"y0":1,"y1":0.4}],"sibsp":[{"x0":0.4,"x1":1.2,"y0":0.3009,"y1":0.3714},{"x0":1.2,"x1":2,"y0":0.3714,"y1":0.4167},{"x0":2,"x1":2.8,"y0":0.4167,"y1":0},{"x0":2.8,"x1":3.6,"y0":0,"y1":0},{"x0":3.6,"x1":5.2,"y0":0,"y1":0},{"x0":5.2,"x1":7.6,"y0":0,"y1":0}],"parch":[{"x0":0.45,"x1":1.35,"y0":0.2764,"y1":0.5185},{"x0":1.35,"x1":2.25,"y0":0.5185,"y1":0.5882},{"x0":2.25,"x1":3.15,"y0":0.5882,"y1":0.5},{"x0":3.15,"x1":4.95,"y0":0.5,"y1":0},{"x0":4.95,"x1":5.85,"y0":0,"y1":0},{"x0":5.85,"x1":8.55,"y0":0,"y1":0}]},"x_min_max_list":{"gender":["female","male"],"age":[0.5833,74],"class":["1st","2nd","3rd","deck crew","engineering crew","restaurant staff","victualling crew"],"embarked":["Belfast","Cherbourg","Queenstown","Southampton"],"fare":[0,262.0706],"sibsp":[0,8],"parch":[0,9]},"y_min_max_list":{"gender":[0.1339,0.7634],"age":[-0.0786,0.8643],"class":[-0.0737,0.8105],"embarked":[0.1837,0.5672],"fare":[0.1898,1.0737],"sibsp":[-0.0417,0.4583],"parch":[-0.0588,0.6471]},"y_mean":0.308,"is_numeric":{"gender":false,"age":true,"class":false,"embarked":false,"fare":true,"sibsp":true,"parch":true}}],"type":"json","container":"svg","options":{"time":500,"model_name":"keras","variable_names":["gender","age","class","embarked","fare","sibsp","parch"],"facet_dim":[2,2],"footer_text":"Site built with modelStudio v1.1.0 on 2020-05-08 17:21:25","drop_down_data":[{"id":"2136","text":"2136"},{"id":"1866","text":"1866"},{"id":"102","text":"102"}],"eda":true,"widget_id":"widget-5d22e0ba8702fa9436bcd6a5d79e01ec","scale_plot":true,"show_boxplot":true,"show_subtitle":false,"subtitle":null,"ms_title":"Interactive Studio for keras Model","margin_top":50,"margin_right":20,"margin_bottom":70,"margin_left":105,"margin_inner":40,"margin_small":5,"margin_big":10,"margin_ytitle":40,"w":420,"h":280,"bar_width":16,"line_size":2,"point_size":2,"bar_color":"#46bac2","line_color":"#46bac2","point_color":"#46bac2","positive_color":"#8bdcbe","negative_color":"#f05a71","default_color":"#371ea3","bd_title":"Break Down","bd_subtitle":null,"bd_bar_width":null,"bd_positive_color":null,"bd_negative_color":null,"bd_default_color":null,"sv_title":"Shapley Values","sv_subtitle":null,"sv_bar_width":null,"sv_positive_color":null,"sv_negative_color":null,"sv_default_color":null,"cp_title":"Ceteris Paribus","cp_subtitle":null,"cp_bar_width":null,"cp_line_size":null,"cp_point_size":3,"cp_bar_color":null,"cp_line_color":null,"cp_point_color":"#371ea3","fi_title":"Feature Importance","fi_subtitle":null,"fi_bar_width":null,"fi_bar_color":null,"pd_title":"Partial Dependence","pd_subtitle":null,"pd_bar_width":null,"pd_line_size":null,"pd_bar_color":null,"pd_line_color":null,"ad_title":"Accumulated Dependence","ad_subtitle":null,"ad_bar_width":null,"ad_line_size":null,"ad_bar_color":null,"ad_line_color":null,"fd_title":"Feature Distribution","fd_subtitle":null,"fd_bar_width":null,"fd_bar_color":null,"tv_title":"Target vs Feature","tv_subtitle":null,"tv_point_size":null,"tv_point_color":null,"at_title":"Average Target vs Feature","at_subtitle":null,"at_bar_width":null,"at_line_size":null,"at_point_size":3,"at_bar_color":null,"at_line_color":null,"at_point_color":"#371ea3"},"script":"var d3Script = function(d3, r2d3, data, svg, width, height, options, theme, console) {\nthis.d3 = d3;\n/* R2D3 Source File:   */\n// SPECIAL CAUTION NEEDED WHEN EDITING THIS FILE; MAY CAUSE FATAL ERROR\n\nfunction addCssToDocument(css) {\n  // this function adds custom css to document head\n  var style = document.createElement('style');\n  style.innerText = css;\n  document.head.appendChild(style);\n}\n\n// load tip:after related css (for triangle)\naddCssToDocument(\"d3-tip:after{box-sizing:border-box;display:inline;font-size:10px;width:inherit;\"+\n\"height:inherit;line-height:1;color:rgba(0,0,0,0.8);content:'\\\\25BC';position:absolute;text-align: center;}\"+\n\".d3-tip.n:after{content:'\\\\25BC';position:absolute;margin:0 0 0 0;top:100%;left:50%;text-align:center;transform:translate(-7px,-15px)}\"+\n\".d3-tip.e:after{content:'\\\\25C0';position:absolute;margin:0 0 0 0;top:50%;left:0%;text-align:center;transform:translate(0px,-7px)}\"+\n\".d3-tip.s:after{content:'\\\\25B2';position:absolute;margin:0 0 0 0;top:0%;left:50%;text-align:center;transform:translate(-7px,0px)}\"+\n\".d3-tip.w:after{content:'\\\\25B6';position:absolute;margin:0 0 0 0;top:50%;left:100%;text-align:center;transform:translate(-15px,-7px)}\"+\n\".d3-tip.se:after{content:'\\\\25E4';position:absolute;margin:0 0 0 0;top:0%;left:0%;text-align:center;transform:translate(1px,1px)}\"+\n\".d3-tip.ne:after{content:'\\\\25E3';position:absolute;margin:0 0 0 0;top:100%;left:0%;text-align:center;transform:translate(1px,-15px)}\"+\n\".d3-tip.sw:after{content:'\\\\25E5';position:absolute;margin:0 0 0 0;top:0%;left:100%;text-align:center;transform:translate(-15px,1px)}\"+\n\".d3-tip.nw:after{content:'\\\\25E2';position:absolute;margin:0 0 0 0;top:100%;left:100%;text-align:center;transform:translate(-14px,-16px)};\");\n\n// load Fira Sans fonts from googleapis\naddCssToDocument(\"@font-face{font-family:'Fira Sans';font-style:normal;font-weight:400;font-display:swap;src:local('Fira Sans Regular'),local('FiraSans-Regular'),url(https://fonts.gstatic.com/s/firasans/v10/va9E4kDNxMZdWfMOD5VvmYjLeTY.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:400;font-display:swap;src:local('Fira Sans Regular'),local('FiraSans-Regular'),url(https://fonts.gstatic.com/s/firasans/v10/va9E4kDNxMZdWfMOD5Vvl4jL.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:500;font-display:swap;src:local('Fira Sans Medium'),local('FiraSans-Medium'),url(https://fonts.gstatic.com/s/firasans/v10/va9B4kDNxMZdWfMOD5VnZKveSBf6TF0.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:500;font-display:swap;src:local('Fira Sans Medium'),local('FiraSans-Medium'),url(https://fonts.gstatic.com/s/firasans/v10/va9B4kDNxMZdWfMOD5VnZKveRhf6.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:600;font-display:swap;src:local('Fira Sans SemiBold'),local('FiraSans-SemiBold'),url(https://fonts.gstatic.com/s/firasans/v10/va9B4kDNxMZdWfMOD5VnSKzeSBf6TF0.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:600;font-display:swap;src:local('Fira Sans SemiBold'),local('FiraSans-SemiBold'),url(https://fonts.gstatic.com/s/firasans/v10/va9B4kDNxMZdWfMOD5VnSKzeRhf6.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:700;font-display:swap;src:local('Fira Sans Bold'),local('FiraSans-Bold'),url(https://fonts.gstatic.com/s/firasans/v10/va9B4kDNxMZdWfMOD5VnLK3eSBf6TF0.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:700;font-display:swap;src:local('Fira Sans Bold'),local('FiraSans-Bold'),url(https://fonts.gstatic.com/s/firasans/v10/va9B4kDNxMZdWfMOD5VnLK3eRhf6.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\");\n\n/*function ga() {\n  var script = document.createElement('script');\n  script.setAttribute('src', 'https://www.googletagmanager.com/gtag/js?id=UA-160640242-1');\n  script.setAttribute('async', '');\n  document.head.appendChild(script);\n\n  var script2 = document.createElement('script');\n  script2.innerText =   \"window.dataLayer = window.dataLayer || [];\" +\n  \"function gtag(){dataLayer.push(arguments);}\" +\n  \"gtag('js', new Date()); gtag('config', 'UA-160640242-1');\";\n  document.head.appendChild(script2);\n}*/\n\n\n/* R2D3 Source File:   */\n//:\\\\\\ usefull functions //:\\\\\\\n\nfunction getColors(n, type) {\n  // get drWhy palette\n\n  var temp = [\"#8bdcbe\", \"#f05a71\", \"#371ea3\", \"#46bac2\", \"#ae2c87\", \"#ffa58c\", \"#4378bf\"];\n  var ret = [];\n\n  if (type == \"bar\") {\n    switch (n) {\n      case 1:\n        return [\"#46bac2\"];\n      case 2:\n        return [\"#46bac2\", \"#4378bf\"];\n      case 3:\n        return [\"#8bdcbe\", \"#4378bf\", \"#46bac2\"];\n      case 4:\n        return [\"#46bac2\", \"#371ea3\", \"#8bdcbe\", \"#4378bf\"];\n      case 5:\n        return [\"#8bdcbe\", \"#f05a71\", \"#371ea3\", \"#46bac2\", \"#ffa58c\"];\n      case 6:\n        return [\"#8bdcbe\", \"#f05a71\", \"#371ea3\", \"#46bac2\", \"#ae2c87\", \"#ffa58c\"];\n      case 7:\n        return temp;\n      default:\n        for (var i = 0; i <= n%7; i++) {\n          ret = ret.concat(temp);\n        }\n        return ret;\n    }\n  } else if (type == \"line\") {\n    switch (n) {\n      case 1:\n        return [\"#46bac2\"];\n      case 2:\n        return [\"#8bdcbe\", \"#4378bf\"];\n      case 3:\n        return [\"#8bdcbe\", \"#f05a71\", \"#4378bf\"];\n      case 4:\n        return [\"#8bdcbe\", \"#f05a71\", \"#4378bf\", \"#ffa58c\"];\n      case 5:\n        return [\"#8bdcbe\", \"#f05a71\", \"#4378bf\", \"#ae2c87\", \"#ffa58c\"];\n      case 6:\n        return [\"#8bdcbe\", \"#f05a71\", \"#46bac2\", \"#ae2c87\", \"#ffa58c\", \"#4378bf\"];\n      case 7:\n        return temp;\n      default:\n        for (var j = 0; j <= n%7; j++) {\n          ret = ret.concat(temp);\n        }\n        return ret;\n    }\n  } else if (type == \"point\") {\n    switch (n) {\n      default:\n        return [\"#371ea3\", \"#46bac2\", \"#ceced9\"];\n    }\n  } else if (type == \"breakDown\") {\n    switch (n) {\n      default:\n        return [\"#8bdcbe\", \"#f05a71\", \"#371ea3\"];\n    }\n  }\n}\n\nfunction getTickValues(domain) {\n  // find 5 nice ticks with max and min - do better than d3\n\n  var tickValues = d3.ticks(domain[0], domain[1],5);\n\n  switch (tickValues.length) {\n    case 3:\n      tickValues.unshift(domain[0]);\n      tickValues.push(domain[1]);\n      break;\n\n    case 4:\n      if(Math.abs(domain[0] - tickValues[0]) < Math.abs(domain[1] - tickValues[3])){\n        tickValues.shift();\n        tickValues.unshift(domain[0]);\n        tickValues.push(domain[1]);\n      } else {\n        tickValues.pop();\n        tickValues.push(domain[1]);\n        tickValues.unshift(domain[0]);\n      }\n      break;\n\n    case 5:\n      tickValues.pop();\n      tickValues.shift();\n      tickValues.push(domain[1]);\n      tickValues.unshift(domain[0]);\n      break;\n\n    case 6:\n      if(Math.abs(domain[0] - tickValues[0]) < Math.abs(domain[1] - tickValues[5])){\n        tickValues.pop();\n        tickValues.shift();\n        tickValues.shift();\n        tickValues.push(domain[1]);\n        tickValues.unshift(domain[0]);\n      } else {\n        tickValues.pop();\n        tickValues.pop();\n        tickValues.shift();\n        tickValues.push(domain[1]);\n        tickValues.unshift(domain[0]);\n      }\n      break;\n\n    case 7:\n      tickValues.pop();\n      tickValues.pop();\n      tickValues.shift();\n      tickValues.shift();\n      tickValues.push(domain[1]);\n      tickValues.unshift(domain[0]);\n      break;\n\n    case 8:\n      if(Math.abs(domain[0] - tickValues[0]) < Math.abs(domain[1] - tickValues[7])){\n        tickValues.pop();\n        tickValues.pop();\n        tickValues.shift();\n        tickValues.shift();\n        tickValues.shift();\n        tickValues.push(domain[1]);\n        tickValues.unshift(domain[0]);\n      } else {\n        tickValues.pop();\n        tickValues.pop();\n        tickValues.pop();\n        tickValues.shift();\n        tickValues.shift();\n        tickValues.push(domain[1]);\n        tickValues.unshift(domain[0]);\n      }\n      break;\n    }\n\n  return tickValues;\n}\n\nfunction calculateTextWidth(text) {\n  // calculate max width of 11px text array\n\n  var temp = svg.selectAll()\n                .data(text)\n                .enter();\n\n  var textWidth = [];\n\n  temp.append(\"text\")\n      .attr(\"class\", \"toRemove\")\n      .text(function(d) { return d;})\n      .style(\"font-size\", \"11px\")\n      .style('font-family', 'Fira Sans, sans-serif')\n      .each(function(d,i) {\n          var thisWidth = this.getComputedTextLength();\n          textWidth.push(thisWidth);\n      });\n\n  svg.selectAll('.toRemove').remove();\n  temp.remove();\n\n  var maxLength = d3.max(textWidth);\n\n  return maxLength;\n}\n\nfunction getTextWidth(text, fontSize, fontFace) {\n  // calculate width of single text\n\n  var canvas = document.createElement('canvas');\n  var context = canvas.getContext('2d');\n  context.font = fontSize + 'px ' + fontFace;\n  return context.measureText(text).width;\n}\n\nfunction wrapText(text, width) {\n  // this function wraps text\n  text.each(function () {\n      var text = d3.select(this).style('font-family', 'Fira Sans, sans-serif'),\n          words = text.text().split(/\\s+/).reverse(),\n          word,\n          line = [],\n          lineNumber = 0,\n          lineHeight = 1.05, // ems\n          x = text.attr(\"x\"),\n          y = text.attr(\"y\"),\n          dy = 0, //parseFloat(text.attr(\"dy\")),\n          tspan = text.text(null)\n                      .append(\"tspan\")\n                      .attr(\"x\", x)\n                      .attr(\"y\", y)\n                      .attr(\"dy\", dy + \"em\");\n      while (word = words.pop()) {\n          line.push(word);\n          tspan.text(line.join(\" \"));\n          if (tspan.node().getComputedTextLength() > width) {\n              line.pop();\n              tspan.text(line.join(\" \"));\n              line = [word];\n              tspan = text.append(\"tspan\")\n                          .attr(\"x\", x)\n                          .attr(\"y\", y)\n                          .attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\")\n                          .text(word);\n          }\n      }\n  });\n}\n\nfunction wrapHtmlOutput(text) {\n  var output = \"\";\n  text.replace(/\\(?[A-Z][^\\.]+[\\.!\\?]\\)?/g, function (sentence) {\n      output += (sentence + '<br>');\n  });\n  return output;\n}\n\n/* R2D3 Source File:   */\n/* d3.tip Copyright (c) 2013 Justin Palmer Tooltips for d3.js SVG visualizations */\n/// MADE SOME CHANGES\n\nd3.functor = function functor(v) {\n  return typeof v === \"function\" ? v : function() {\n    return v;\n  };\n};\n\nd3.tip = function(widget_id) {\n\n  var direction = d3_tip_direction,\n      offset    = d3_tip_offset,\n      html      = d3_tip_html,\n      node      = initNode(),\n      svg       = null,\n      point     = null,\n      target    = null,\n      widget_id = widget_id;\n\n  function tip(vis) {\n    svg = getSVGNode(vis)\n    point = svg.createSVGPoint()\n    document.getElementById(widget_id).appendChild(node)\n  }\n\n  // Public - show the tooltip on the screen\n  //\n  // Returns a tip\n  tip.show = function() {\n    var args = Array.prototype.slice.call(arguments)\n    if(args[args.length - 1] instanceof SVGElement) target = args.pop()\n\n    var content = html.apply(this, args),\n        poffset = offset.apply(this, args),\n        dir     = direction.apply(this, args),\n        nodel   = getNodeEl(),\n        i       = directions.length,\n        coords,\n        scrollTop  = document.documentElement.scrollTop || document.body.scrollTop,\n        scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft\n\n    /// unclass all directions\n    while(i--) nodel.classed(directions[i], false)\n\n    ////////////////////////////////:::::::::////////////////////////////////\n    // make sure that tip is pointing right direction (not outside of svg) \\\\\n    // 'n' means that tooltip will go north from pointer\n\n    // do not move this code V\n    nodel.html(content)\n          .style('position', 'fixed')\n          .style('opacity', .8)\n          .style('pointer-events', 'all')\n    // do not move this code ^\n\n    var tdir = dir;\n\n    var divDim = node.getBoundingClientRect(),\n        svgDim = svg.getBBox();\n\n    // 20 is for 2x r2d3 margin and 7 was added empiricaly\n    var sh = 20 + svgDim.height;// + 7; // this is modelStudio plotHeight\n    var sw = 20 + svgDim.width;\n    var dh = divDim.height;\n    var dw = divDim.width;\n    var py = d3.event.pageY;\n    var px = d3.event.pageX;\n\n    // by default put tooltip 'n'\n    var ttop = py - dh - 5;\n    var tleft = px - dw/2;\n    var tdir = \"n\";\n    var tpdd = '6px 6px 13px 6px';\n\n    if (px - dw/2 < 10) {\n      tleft = px + 5;\n      tdir = \"ne\";\n      tpdd = '6px 6px 11px 11px';\n      if (py - dh/2 < 10) {\n        ttop = py - dh/2;\n        tdir = \"e\";\n        tpdd = '6px 6px 6px 13px';\n      } else if (py - dh < 10) {\n        ttop = py + 5;\n        tdir = \"se\";\n        tpdd = '11px 6px 6px 11px';\n      }\n    } else if (px + dw/2 > sw - 10) {\n      tleft = px - dw - 5;\n      ttop = py - dh - 5;\n      tdir = \"nw\";\n      tpdd = '6px 11px 11px 6px';\n      if (py - dh/2 < 10) {\n        ttop = py - dh/2;\n        tdir = \"w\"\n        tpdd = '6px 13px 6px 6px';\n      } else if (py - dh < 10) {\n        ttop = py + 5;\n        tdir = \"sw\";\n        tpdd = '11px 11px 6px 6px';\n      }\n      // because description is to long FIXME/TODO: more cases\n      if (tleft < 5) {\n        ttop = py + 5;\n        tleft = px - dw/2;\n        tdir = \"s\";\n        tpdd = '13px 6px 6px 6px';\n      }\n    } else if (py - dh < 10) {\n      ttop = py + 5;\n      tleft = px - dw/2;\n      tdir = \"s\";\n      tpdd = '13px 6px 6px 6px';\n    }\n\n    nodel.classed(tdir, true)\n          .style('top', (ttop - scrollTop) + 'px')\n          .style('left', (tleft - scrollLeft) + 'px')\n          .style('padding', tpdd);\n\n    ////////////////////////////////::::::::://///////////////////////////////\n\n    //safeguard\n    if (dw == 0) {\n      return tip.hide()\n    } else {\n      return tip\n    }\n  }\n\n  // Public - hide the tooltip\n  //\n  // Returns a tip\n  tip.hide = function() {\n    var nodel = getNodeEl()\n    nodel\n      .style('opacity', 0)\n      .style('pointer-events', 'none')\n    return tip\n  }\n\n  // Public: Proxy attr calls to the d3 tip container.  Sets or gets attribute value.\n  //\n  // n - name of the attribute\n  // v - value of the attribute\n  //\n  // Returns tip or attribute value\n  tip.attr = function(n, v) {\n    if (arguments.length < 2 && typeof n === 'string') {\n      return getNodeEl().attr(n)\n    } else {\n      var args =  Array.prototype.slice.call(arguments)\n      d3.selection.prototype.attr.apply(getNodeEl(), args)\n    }\n\n    return tip\n  }\n\n  // Public: Proxy style calls to the d3 tip container.  Sets or gets a style value.\n  //\n  // n - name of the property\n  // v - value of the property\n  //\n  // Returns tip or style property value\n  tip.style = function(n, v) {\n    // debugger;\n    if (arguments.length < 2 && typeof n === 'string') {\n      return getNodeEl().style(n)\n    } else {\n      var args = Array.prototype.slice.call(arguments);\n      if (args.length === 1) {\n        var styles = args[0];\n        Object.keys(styles).forEach(function(key) {\n          return d3.selection.prototype.style.apply(getNodeEl(), [key, styles[key]]);\n        });\n      }\n    }\n\n    return tip\n  }\n\n  // Public: Set or get the direction of the tooltip\n  //\n  // v - One of n(north), s(south), e(east), or w(west), nw(northwest),\n  //     sw(southwest), ne(northeast) or se(southeast)\n  //\n  // Returns tip or direction\n  tip.direction = function(v) {\n    if (!arguments.length) return direction\n    direction = v == null ? v : d3.functor(v)\n\n    return tip\n  }\n\n  // Public: Sets or gets the offset of the tip\n  //\n  // v - Array of [x, y] offset\n  //\n  // Returns offset or\n  tip.offset = function(v) {\n    if (!arguments.length) return offset\n    offset = v == null ? v : d3.functor(v)\n\n    return tip\n  }\n\n  // Public: sets or gets the html value of the tooltip\n  //\n  // v - String value of the tip\n  //\n  // Returns html value or tip\n  tip.html = function(v) {\n    if (!arguments.length) return html\n    html = v == null ? v : d3.functor(v)\n\n    return tip\n  }\n\n  // Public: destroys the tooltip and removes it from the DOM\n  //\n  // Returns a tip\n  tip.destroy = function() {\n    if(node) {\n      getNodeEl().remove();\n      node = null;\n    }\n    return tip;\n  }\n\n  function d3_tip_direction() { return 'n' }\n  function d3_tip_offset() { return [0, 0] }\n  function d3_tip_html() { return ' ' }\n\n  var direction_callbacks = {\n    n:  direction_n,\n    s:  direction_s,\n    e:  direction_e,\n    w:  direction_w,\n    nw: direction_nw,\n    ne: direction_ne,\n    sw: direction_sw,\n    se: direction_se\n  };\n\n  var directions = Object.keys(direction_callbacks);\n\n  function direction_n() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.n.y - node.offsetHeight,\n      left: bbox.n.x - node.offsetWidth / 2\n    }\n  }\n\n  function direction_s() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.s.y,\n      left: bbox.s.x - node.offsetWidth / 2\n    }\n  }\n\n  function direction_e() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.e.y - node.offsetHeight / 2,\n      left: bbox.e.x\n    }\n  }\n\n  function direction_w() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.w.y - node.offsetHeight / 2,\n      left: bbox.w.x - node.offsetWidth\n    }\n  }\n\n  function direction_nw() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.nw.y - node.offsetHeight,\n      left: bbox.nw.x - node.offsetWidth\n    }\n  }\n\n  function direction_ne() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.ne.y - node.offsetHeight,\n      left: bbox.ne.x\n    }\n  }\n\n  function direction_sw() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.sw.y,\n      left: bbox.sw.x - node.offsetWidth\n    }\n  }\n\n  function direction_se() {\n    var bbox = getScreenBBox()\n    return {\n      top:  bbox.se.y,\n      left: bbox.e.x\n    }\n  }\n\n  function initNode() {\n    var node = d3.select(document.createElement('div'))\n    node\n      .style('position', 'fixed')\n      .style('top', 0)\n      .style('opacity', 0)\n      .style('pointer-events', 'none')\n      .style('box-sizing', 'border-box')\n      .style('line-height', 1.1)\n      .style('background', \"#000000\")\n      .style('color', '#fff')\n      .style('font-size', '14px')\n      .style('font-family', \"'Roboto Condensed', sans-serif\");\n\n    return node.node()\n  }\n\n\n  function getSVGNode(el) {\n    el = el.node()\n    if(el.tagName.toLowerCase() === 'svg')\n      return el\n\n    return el.ownerSVGElement\n  }\n\n  function getNodeEl() {\n    if(node === null) {\n      node = initNode();\n      // re-add node to DOM\n      document.getElementById(widget_id).appendChild(node);\n    };\n    return d3.select(node);\n  }\n\n  // Returns an Object {n, s, e, w, nw, sw, ne, se}\n  function getScreenBBox() {\n    var targetel   = target || d3.event.target;\n\n    while ('undefined' === typeof targetel.getScreenCTM && 'undefined' === targetel.parentNode) {\n        targetel = targetel.parentNode;\n    }\n\n    var bbox       = {},\n        matrix     = targetel.getScreenCTM(),\n        tbbox      = targetel.getBBox(),\n        width      = tbbox.width,\n        height     = tbbox.height,\n        x          = tbbox.x,\n        y          = tbbox.y\n\n    point.x = x\n    point.y = y\n    bbox.nw = point.matrixTransform(matrix)\n    point.x += width\n    bbox.ne = point.matrixTransform(matrix)\n    point.y += height\n    bbox.se = point.matrixTransform(matrix)\n    point.x -= width\n    bbox.sw = point.matrixTransform(matrix)\n    point.y -= height / 2\n    bbox.w  = point.matrixTransform(matrix)\n    point.x += width\n    bbox.e = point.matrixTransform(matrix)\n    point.x -= width / 2\n    point.y -= height / 2\n    bbox.n = point.matrixTransform(matrix)\n    point.y += height\n    bbox.s = point.matrixTransform(matrix)\n\n    return bbox\n  }\n\n  return tip\n};\n\n/* R2D3 Source File:   */\n// https://github.com/johnwalley/d3-simple-slider v1.5.4 Copyright 2019 John Walley\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports,require(\"d3-array\"),require(\"d3-axis\"),require(\"d3-dispatch\"),require(\"d3-drag\"),require(\"d3-ease\"),require(\"d3-scale\"),require(\"d3-selection\"),require(\"d3-transition\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"d3-array\",\"d3-axis\",\"d3-dispatch\",\"d3-drag\",\"d3-ease\",\"d3-scale\",\"d3-selection\",\"d3-transition\"],e):e((t=t||self).d3=t.d3||{},t.d3,t.d3,t.d3,t.d3,t.d3,t.d3,t.d3)}(this,function(t,e,a,r,n,l,i,u){\"use strict\";var s=200,c=8,o=100,d=1,f=2,m=3,p=4;function v(t){return\"translate(\"+t+\",0)\"}function g(t){return\"translate(0,\"+t+\")\"}function h(t,h){h=void 0!==h?h:null;var k=[0],x=[0],y=[0,10],w=100,A=100,b=!0,D=\"M-5.5,-5.5v10l6,5.5l6,-5.5v-10z\",M=null,q=null,z=null,L=null,F=null,V=null,O=null,P=r.dispatch(\"onchange\",\"start\",\"end\",\"drag\"),R=null,T=null,j=null,B=t===d||t===p?-1:1,H=t===p||t===f?\"y\":\"x\",Q=t===p||t===f?\"x\":\"y\",U=t===d||t===m?v:g,_=t===d||t===m?g:v,E=null;switch(t){case d:E=a.axisTop;break;case f:E=a.axisRight;break;case m:E=a.axisBottom;break;case p:E=a.axisLeft}var C=null,G=null;function I(a){R=a.selection?a.selection():a,h=h?h.range([e.min(h.range()),e.min(h.range())+(t===d||t===m?w:A)]):(h=y[0]instanceof Date?i.scaleTime():i.scaleLinear()).domain(y).range(t===d||t===m?[0,w]:[A,0]).clamp(!0),T=i.scaleLinear().range(h.range()).domain(h.range()).clamp(!0),k=k.map(function(t){return i.scaleLinear().range(y).domain(y).clamp(!0)(t)}),L=L||h.tickFormat(),V=V||L||h.tickFormat(),R.selectAll(\".axis\").data([null]).enter().append(\"g\").attr(\"transform\",_(7*B)).attr(\"class\",\"axis\");var r=R.selectAll(\".slider\").data([null]),l=r.enter().append(\"g\").attr(\"class\",\"slider\").attr(\"cursor\",t===d||t===m?\"ew-resize\":\"ns-resize\").call(n.drag().on(\"start\",function(){u.select(this).classed(\"active\",!0);var a=T(t===m||t===d?u.event.x:u.event.y);j=k[0]===y[0]&&k[1]===y[0]?1:k[0]===y[1]&&k[1]===y[1]?0:e.scan(k.map(function(t){return Math.abs(t-K(h.invert(a)))}));var n=k.map(function(t,e){return e===j?K(h.invert(a)):t});S(n),P.call(\"start\",r,1===n.length?n[0]:n),N(n,!0)}).on(\"drag\",function(){var e=v(T(t===m||t===d?u.event.x:u.event.y));S(e),P.call(\"drag\",r,1===e.length?e[0]:e),N(e,!0)}).on(\"end\",function(){u.select(this).classed(\"active\",!1);var e=v(T(t===m||t===d?u.event.x:u.event.y));S(e),P.call(\"end\",r,1===e.length?e[0]:e),N(e,!0),j=null}));l.append(\"line\").attr(\"class\",\"track\").attr(H+\"1\",h.range()[0]-B*c).attr(\"stroke\",\"#bbb\").attr(\"stroke-width\",6).attr(\"stroke-linecap\",\"round\"),l.append(\"line\").attr(\"class\",\"track-inset\").attr(H+\"1\",h.range()[0]-B*c).attr(\"stroke\",\"#eee\").attr(\"stroke-width\",4).attr(\"stroke-linecap\",\"round\"),O&&l.append(\"line\").attr(\"class\",\"track-fill\").attr(H+\"1\",1===k.length?h.range()[0]-B*c:h(k[0])).attr(\"stroke\",O).attr(\"stroke-width\",4).attr(\"stroke-linecap\",\"round\"),l.append(\"line\").attr(\"class\",\"track-overlay\").attr(H+\"1\",h.range()[0]-B*c).attr(\"stroke\",\"transparent\").attr(\"stroke-width\",40).attr(\"stroke-linecap\",\"round\").merge(r.select(\".track-overlay\"));var s=l.selectAll(\".parameter-value\").data(k).enter().append(\"g\").attr(\"class\",\"parameter-value\").attr(\"transform\",function(t){return U(h(t))}).attr(\"font-family\",\"sans-serif\").attr(\"text-anchor\",t===f?\"start\":t===p?\"end\":\"middle\");function v(t){var e=K(h.invert(t));return k.map(function(t,a){return 2===k.length?a===j?0===j?Math.min(e,K(k[1])):Math.max(e,K(k[0])):t:a===j?e:t})}s.append(\"path\").attr(\"transform\",\"rotate(\"+90*(t+1)+\")\").attr(\"d\",D).attr(\"class\",\"handle\").attr(\"aria-label\",\"handle\").attr(\"aria-valuemax\",y[1]).attr(\"aria-valuemin\",y[0]).attr(\"aria-valuenow\",k).attr(\"aria-orientation\",t===p||t===f?\"vertical\":\"horizontal\").attr(\"focusable\",\"true\").attr(\"tabindex\",0).attr(\"fill\",\"white\").attr(\"stroke\",\"#777\").on(\"keydown\",function(t,e){var a=M||(y[1]-y[0])/o;function r(t){return k.map(function(a,r){return 2===k.length?r===e?0===e?Math.min(t,K(k[1])):Math.max(t,K(k[0])):a:r===e?t:a})}switch(u.event.key){case\"ArrowLeft\":case\"ArrowDown\":I.value(r(+k[e]-a)),u.event.preventDefault();break;case\"PageDown\":I.value(r(+k[e]-2*a)),u.event.preventDefault();break;case\"ArrowRight\":case\"ArrowUp\":I.value(r(+k[e]+a)),u.event.preventDefault();break;case\"PageUp\":I.value(r(+k[e]+2*a)),u.event.preventDefault();break;case\"Home\":I.value(r(y[0])),u.event.preventDefault();break;case\"End\":I.value(r(y[1])),u.event.preventDefault()}}),b&&1===k.length&&s.append(\"text\").attr(\"font-size\",10).attr(Q,27*B).attr(\"dy\",t===d?\"0em\":t===m?\".71em\":\".32em\").text(L(k[0])),a.select(\".track\").attr(H+\"2\",h.range()[1]+B*c),a.select(\".track-inset\").attr(H+\"2\",h.range()[1]+B*c),O&&a.select(\".track-fill\").attr(H+\"2\",1===k.length?h(k[0]):h(k[1])),a.select(\".track-overlay\").attr(H+\"2\",h.range()[1]+B*c),a.select(\".axis\").call(E(h).tickFormat(L).ticks(F).tickValues(q)),R.select(\".axis\").select(\".domain\").remove(),a.select(\".axis\").attr(\"transform\",_(7*B)),a.selectAll(\".axis text\").attr(\"fill\",\"#aaa\").attr(Q,20*B).attr(\"dy\",t===d?\"0em\":t===m?\".71em\":\".32em\").attr(\"text-anchor\",t===f?\"start\":t===p?\"end\":\"middle\"),a.selectAll(\".axis line\").attr(\"stroke\",\"#aaa\"),a.selectAll(\".parameter-value\").attr(\"transform\",function(t){return U(h(t))}),J(),G=R.select(\".parameter-value text\"),C=R.select(\".track-fill\")}function J(){if(R&&b&&1===k.length){var t=[];R.selectAll(\".axis .tick\").each(function(e){t.push(Math.abs(e-k[0]))});var a=e.scan(t);R.selectAll(\".axis .tick text\").attr(\"opacity\",function(t,e){return e===a?0:1})}}function K(t){if(M){var a=(t-y[0])%M,r=t-a;return 2*a>M&&(r+=M),t instanceof Date?new Date(r):r}if(z){var n=e.scan(z.map(function(e){return Math.abs(t-e)}));return z[n]}return t}function N(t,e){(k[0]!==t[0]||k.length>1&&k[1]!==t[1])&&(k=t,e&&P.call(\"onchange\",I,1===t.length?t[0]:t),J())}function S(t,e){R&&((e=void 0!==e&&e)?(R.selectAll(\".parameter-value\").data(t).transition().ease(l.easeQuadOut).duration(s).attr(\"transform\",function(t){return U(h(t))}).select(\".handle\").attr(\"aria-valuenow\",function(t){return t}),O&&C.transition().ease(l.easeQuadOut).duration(s).attr(H+\"1\",1===k.length?h.range()[0]-B*c:h(t[0])).attr(H+\"2\",1===k.length?h(t[0]):h(t[1]))):(R.selectAll(\".parameter-value\").data(t).attr(\"transform\",function(t){return U(h(t))}).select(\".handle\").attr(\"aria-valuenow\",function(t){return t}),O&&C.attr(H+\"1\",1===k.length?h.range()[0]-B*c:h(t[0])).attr(H+\"2\",1===k.length?h(t[0]):h(t[1]))),b&&G.text(V(t[0])))}return h&&(y=[e.min(h.domain()),e.max(h.domain())],t===d||t===m?w=e.max(h.range())-e.min(h.range()):A=e.max(h.range())-e.min(h.range()),h=h.clamp(!0)),I.min=function(t){return arguments.length?(y[0]=t,I):y[0]},I.max=function(t){return arguments.length?(y[1]=t,I):y[1]},I.domain=function(t){return arguments.length?(y=t,I):y},I.width=function(t){return arguments.length?(w=t,I):w},I.height=function(t){return arguments.length?(A=t,I):A},I.tickFormat=function(t){return arguments.length?(L=t,I):L},I.displayFormat=function(t){return arguments.length?(V=t,I):V},I.ticks=function(t){return arguments.length?(F=t,I):F},I.value=function(t){if(!arguments.length)return 1===k.length?k[0]:k;var e=Array.isArray(t)?t:[t];e.sort(function(t,e){return t-e});var a=e.map(h).map(T).map(h.invert).map(K);return S(a,!0),N(a,!0),I},I.silentValue=function(t){if(!arguments.length)return 1===k.length?k[0]:k;var e=Array.isArray(t)?t:[t];e.sort(function(t,e){return t-e});var a=e.map(h).map(T).map(h.invert).map(K);return S(a,!1),N(a,!1),I},I.default=function(t){if(!arguments.length)return 1===x.length?x[0]:x;var e=Array.isArray(t)?t:[t];return e.sort(function(t,e){return t-e}),x=e,k=e,I},I.step=function(t){return arguments.length?(M=t,I):M},I.tickValues=function(t){return arguments.length?(q=t,I):q},I.marks=function(t){return arguments.length?(z=t,I):z},I.handle=function(t){return arguments.length?(D=t,I):D},I.displayValue=function(t){return arguments.length?(b=t,I):b},I.fill=function(t){return arguments.length?(O=t,I):O},I.on=function(){var t=P.on.apply(P,arguments);return t===P?I:t},I}t.sliderHorizontal=function(t){return h(m,t)},t.sliderVertical=function(t){return h(p,t)},t.sliderTop=function(t){return h(d,t)},t.sliderRight=function(t){return h(f,t)},t.sliderBottom=function(t){return h(m,t)},t.sliderLeft=function(t){return h(p,t)},Object.defineProperty(t,\"__esModule\",{value:!0})});\n\n/* R2D3 Source File:   */\n/* https://github.com/pbeshai/d3-interpolate-path Copyright 2016, Peter Beshai */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).d3=t.d3||{})}(this,function(t){\"use strict\";function i(){return(i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function u(t){var e={};return 4===t.length&&(e.x2=t[2][0],e.y2=t[2][1]),3<=t.length&&(e.x1=t[1][0],e.y1=t[1][1]),e.x=t[t.length-1][0],e.y=t[t.length-1][1],4===t.length?e.type=\"C\":3===t.length?e.type=\"Q\":e.type=\"L\",e}var a=/[MLCSTQAHVmlcstqahv]|[\\d.-]+/g,j={M:[\"x\",\"y\"],L:[\"x\",\"y\"],H:[\"x\"],V:[\"y\"],C:[\"x1\",\"y1\",\"x2\",\"y2\",\"x\",\"y\"],S:[\"x2\",\"y2\",\"x\",\"y\"],Q:[\"x1\",\"y1\",\"x\",\"y\"],T:[\"x\",\"y\"],A:[\"rx\",\"ry\",\"xAxisRotation\",\"largeArcFlag\",\"sweepFlag\",\"x\",\"y\"]};function f(t,e){for(var n=Array(t),r=0;r<t;r++)n[r]=e;return n}function w(e){return\"\".concat(e.type).concat(j[e.type].map(function(t){return e[t]}).join(\",\"))}function o(t,e,n){var r=[];if(\"L\"===e.type||\"Q\"===e.type||\"C\"===e.type)r=r.concat(function(t,e,n){var r=[[t.x,t.y]];return null!=e.x1&&r.push([e.x1,e.y1]),null!=e.x2&&r.push([e.x2,e.y2]),r.push([e.x,e.y]),function(t,e){for(var n,r,u,l,o=[],a=t,i=1/(e=e||2),f=0;f<e-1;f++){var c=(r=i/(1-i*f),l=u=void 0,u=[],l=[],(n=a).length&&function t(e,n){if(1===e.length)u.push(e[0]),l.push(e[0]);else{for(var r=Array(e.length-1),o=0;o<r.length;o++)0===o&&u.push(e[0]),o===r.length-1&&l.push(e[o+1]),r[o]=[(1-n)*e[o][0]+n*e[o+1][0],(1-n)*e[o][1]+n*e[o+1][1]];t(r,n)}}(n,r),{left:u,right:l.reverse()});o.push(c.left),a=c.right}return o.push(a),o}(r,n).map(u)}(t,e,n));else{var o=i({},t);\"M\"===o.type&&(o.type=\"L\"),(r=r.concat(f(n-1).map(function(){return o}))).push(e)}return r}function n(u,t,l){var e=u.length-1,n=t.length-1,a=e/n,r=f(n).reduce(function(t,e,n){var r=Math.floor(a*n);if(l&&r<u.length-1&&l(u[r],u[r+1])){var o=a*n%1<.5;t[r]&&(o?0<r?r-=1:r<u.length-1&&(r+=1):r<u.length-1?r+=1:0<r&&(r-=1))}return t[r]=(t[r]||0)+1,t},[]).reduce(function(t,e,n){if(n!==u.length-1)return t.concat(o(u[n],u[n+1],e));var r=f(e,i({},u[u.length-1]));return\"M\"===r[0].type&&r.forEach(function(t){t.type=\"L\"}),t.concat(r)},[]);return r.unshift(u[0]),r}function r(t){for(var e,n,r=(t||\"\").match(a)||[],o=[],u=0;u<r.length;++u)if(e=j[r[u]]){n={type:r[u]};for(var l=0;l<e.length;++l)n[e[l]]=+r[u+l+1];u+=e.length,o.push(n)}return o}Object.keys(j).forEach(function(t){j[t.toLowerCase()]=j[t]}),t.interpolatePath=function(t,x,e){var d=r(t),b=r(x);if(!d.length&&!b.length)return function(){return\"\"};d.length?b.length||b.push(d[0]):d.push(b[0]),0!==Math.abs(b.length-d.length)&&(b.length>d.length?d=n(d,b,e):b.length<d.length&&(b=n(b,d,e)));var m=(d=d.map(function(t,e){return function(r,o){var u={x1:\"x\",y1:\"y\",x2:\"x\",y2:\"y\"},l=[\"xAxisRotation\",\"largeArcFlag\",\"sweepFlag\"];if(r.type!==o.type&&\"M\"!==o.type.toUpperCase()){var a={};Object.keys(o).forEach(function(t){var e=o[t],n=r[t];void 0===n&&(l.includes(t)?n=e:(void 0===n&&u[t]&&(n=r[u[t]]),void 0===n&&(n=0))),a[t]=n}),a.type=o.type,r=a}return r}(t,b[e])})).map(function(t){return function(o){for(var t=1;t<arguments.length;t++){var u=null!=arguments[t]?arguments[t]:{},e=Object.keys(u);\"function\"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(u).filter(function(t){return Object.getOwnPropertyDescriptor(u,t).enumerable}))),e.forEach(function(t){var e,n,r;e=o,r=u[n=t],n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r})}return o}({},t)}),O=!(null!=t&&\"Z\"!==t[t.length-1]||null!=x&&\"Z\"!==x[x.length-1]);return function(t){if(1===t)return null==x?\"\":x;if(0<t)for(var e=0;e<m.length;++e){var n=d[e],r=b[e],o=m[e],u=!0,l=!1,a=void 0;try{for(var i,f=j[o.type][Symbol.iterator]();!(u=(i=f.next()).done);u=!0){var c=i.value;o[c]=(1-t)*n[c]+t*r[c]}}catch(t){l=!0,a=t}finally{try{u||null==f.return||f.return()}finally{if(l)throw a}}}var y=\"\",h=!0,p=!1,g=void 0;try{for(var s,v=m[Symbol.iterator]();!(h=(s=v.next()).done);h=!0){y+=w(s.value)}}catch(t){p=!0,g=t}finally{try{h||null==v.return||v.return()}finally{if(p)throw g}}return O&&(y+=\"Z\"),y}},Object.defineProperty(t,\"__esModule\",{value:!0})});\n\n/* R2D3 Source File:   */\n//:\\\\\\ here are functions for modelStudio plots //:\\\\\\\n\n// model specific data and other variables come from modelStudio.js file\n// descriptions need to be IN plot functions because of tooltips\n\n/// initialize plots, select them if already there\nvar BD, SV, CP, FI, PD, AD, FD, TV, AT;\n\n/// later plot specific plotIds\nvar mapIdPlotFunction = {};\n\nif (svg.select(\"#BD\").empty()) {\n  BD = svg.append(\"g\")\n              .attr(\"class\",\"plot\")\n              .attr(\"id\", \"BD\")\n              .style(\"visibility\", \"hidden\");\n} else {\n  BD = svg.select(\"#BD\");\n}\nmapIdPlotFunction.BD = breakDown;\n\nif (svg.select(\"#SV\").empty()) {\n  SV = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"SV\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  SV = svg.select(\"#SV\");\n}\nmapIdPlotFunction.SV = shapleyValues;\n\nif (svg.select(\"#CP\").empty()) {\n  CP = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\", \"CP\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  CP = svg.select(\"#CP\");\n}\nmapIdPlotFunction.CP = ceterisParibus;\n\nif (svg.select(\"#FI\").empty()) {\n  FI = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"FI\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  FI = svg.select(\"#FI\");\n}\nmapIdPlotFunction.FI = featureImportance;\n\nif (svg.select(\"#PD\").empty()) {\n  PD = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"PD\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  PD = svg.select(\"#PD\");\n}\nmapIdPlotFunction.PD = partialDependence;\n\nif (svg.select(\"#AD\").empty()) {\n  AD = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"AD\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  AD = svg.select(\"#AD\");\n}\nmapIdPlotFunction.AD = accumulatedDependence;\n\nif (svg.select(\"#FD\").empty()) {\n  FD = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"FD\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  FD = svg.select(\"#FD\");\n}\nmapIdPlotFunction.FD = featureDistribution;\n\nif (svg.select(\"#TV\").empty()) {\n  TV = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"TV\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  TV = svg.select(\"#TV\");\n}\nmapIdPlotFunction.TV = targetVs;\n\nif (svg.select(\"#AT\").empty()) {\n  AT = svg.append(\"g\")\n          .attr(\"class\",\"plot\")\n          .attr(\"id\",\"AT\")\n          .style(\"visibility\", \"hidden\");\n} else {\n  AT = svg.select(\"#AT\");\n}\nmapIdPlotFunction.AT = averageTarget;\n\n/// general plot functions\n\nfunction breakDown() {\n\n  let tObservationId = CLICKED_OBSERVATION_ID,\n      tData = obsData[tObservationId];\n\n  if (tData[0].x === undefined) return null;\n\n  var bdData = tData[0],\n      bData = bdData.x;\n      bdBarCount = bdData.m,\n      xMinMax = bdData.x_min_max,\n      desc = bdData.desc;\n\n  var bdPlotHeight = SCALE_PLOT ? h : bdBarCount*bdBarWidth + (bdBarCount+1)*bdBarWidth/2,\n      bdPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left,  margin.left + bdPlotWidth])\n            .domain(xMinMax);\n\n  BD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + bdPlotWidth/2) + \" ,\" +\n                         (margin.top + bdPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"contribution\");\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = BD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + bdPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + bdPlotHeight])\n            .padding(0.33)\n            .domain(bData.map(d => d.variable));\n\n  var xGrid = BD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + bdPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-bdPlotHeight-additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = BD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-bdPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = BD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.select(\".tick:last-child\").select(\"text\").attr('font-weight', 600);\n\n  // wrap y label text\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  BD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(bdSubtitle);\n\n  BD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(bdTitle);\n\n  // add tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipBD\")\n                  .html(d => d.type === \"desc\"\n                             ? descTooltipHtml(d) : bdTooltipHtml(d));\n\n  BD.call(tooltip);\n\n  // find boundaries\n  let intercept = bData[0].contribution > 0\n                  ? bData[0].barStart\n                  : bData[0].barSupport;\n\n  // make dotted line from intercept to prediction\n  var dotLineData = [{\"x\": x(intercept), \"y\": y(\"intercept\")},\n                     {\"x\": x(intercept), \"y\": y(\"prediction\") + y.bandwidth()}];\n\n  var lineFunction = d3.line()\n                       .x(d => d.x)\n                       .y(d => d.y);\n\n  BD.append(\"path\")\n    .data([dotLineData])\n    .attr(\"class\", \"dotLine\")\n    .attr(\"d\", lineFunction)\n    .style(\"stroke-dasharray\", (\"1, 2\"));\n\n  // add bars\n  var bars = BD.selectAll()\n               .data(bData)\n               .enter()\n               .append(\"g\");\n\n  bars.append(\"rect\")\n      .attr(\"class\", \"BD-bars\")\n      .attr(\"id\", d => d.variable_name)\n      .attr(\"fill\", d => {\n        switch (d.sign) {\n          case \"-1\":\n            return bdNegativeColor;\n          case \"1\":\n            return bdPositiveColor;\n          default:\n            return defaultColor;\n        }\n      })\n      .attr(\"fill-opacity\", d => x(d.barSupport) - x(d.barStart) < 1.5\n                                 ? 0 : 1) //invisible bar for clicking purpose\n      .attr(\"y\", d => y(d.variable))\n      .attr(\"height\", y.bandwidth())\n      .attr(\"x\", d => d.contribution > 0 ? x(d.barStart) : x(d.barSupport))\n      .on('mouseover', tooltip.show)\n      .on('mouseout', tooltip.hide)\n      .on(\"click\", function() {\n        updatePlots(event = \"variableChange\",\n                    variableName = this.id,\n                    observationId = null,\n                    plotId = null);\n      })\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => x(d.barStart))\n      .attr(\"width\", d => x(d.barSupport) - x(d.barStart) < 1.5\n                          ? 5 : x(d.barSupport) - x(d.barStart));\n\n  // add labels to bars\n  var ctbLabel = BD.selectAll()\n                   .data(bData)\n                   .enter()\n                   .append(\"g\");\n\n  ctbLabel.append(\"text\")\n          .attr(\"class\", \"axisLabel\")\n          .attr(\"x\", d => {\n            switch (d.sign) {\n              case \"X\":\n                return d.contribution < 0\n                       ? x(d.barStart) - 5 : x(d.barSupport) + 5;\n              default:\n                return x(d.barSupport) + 5;\n            }\n          })\n          .attr(\"y\", d => y(d.variable) + y.bandwidth()/2)\n          .attr(\"dy\", \"0.4em\")\n          .attr(\"text-anchor\", d => d.sign == \"X\" && d.contribution < 0\n                               ? \"end\" : null)\n          .transition()\n          .duration(TIME)\n          .delay((d,i) => (i+1) * TIME)\n          .text(d => {\n            switch (d.variable) {\n              case \"intercept\":\n              case \"prediction\":\n                return d.cumulative;\n              default:\n                return d.sign === \"-1\" ? d.contribution : \"+\"+d.contribution;\n            }\n          });\n\n  // add lines to bars\n  var lines = BD.selectAll()\n                .data(bData)\n                .enter()\n                .append(\"g\");\n\n  lines.append(\"line\")\n       .attr(\"class\", \"interceptLine\")\n       .attr(\"x1\", d => d.contribution < 0 ? x(d.barStart) : x(d.barSupport))\n       .attr(\"y1\", d => y(d.variable))\n       .attr(\"x2\", d => d.contribution < 0 ? x(d.barStart) : x(d.barSupport))\n       .attr(\"y2\", d => y(d.variable))\n       .transition()\n       .duration(TIME)\n       .delay((d,i) => (i+1) * TIME)\n       .attr(\"y2\", d => d.variable == \"prediction\"\n                        ? y(d.variable) : y(d.variable) + y.bandwidth()*2.5);\n\n  var description = BD.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + bdPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction shapleyValues() {\n\n  let tObservationId = CLICKED_OBSERVATION_ID,\n      tData = obsData[tObservationId];\n\n  if (tData[2].x === undefined) return null;\n\n  var svData = tData[2],\n      bData = svData.x,\n      svBarCount = svData.m,\n      xMinMax = svData.x_min_max,\n      desc = svData.desc;\n\n  var svPlotHeight = SCALE_PLOT ? h : svBarCount*svBarWidth + (svBarCount+1)*svBarWidth/2,\n      svPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left,  margin.left + svPlotWidth])\n            .domain(xMinMax);\n\n  SV.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + svPlotWidth/2) + \" ,\" +\n                         (margin.top + svPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"contribution\");\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = SV.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + svPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + svPlotHeight])\n            .padding(0.33)\n            .domain(bData.map(d => d.variable));\n\n  var xGrid = SV.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + svPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-svPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = SV.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-svPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = SV.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  // wrap y label text\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  SV.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(svSubtitle);\n\n  SV.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(svTitle);\n\n  // add tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipSV\")\n                  .html(d => d.type === \"desc\"\n                             ? descTooltipHtml(d) : bdTooltipHtml(d));\n\n  SV.call(tooltip);\n\n  // add bars\n  var bars = SV.selectAll()\n               .data(bData)\n               .enter()\n               .append(\"g\");\n\n  bars.append(\"rect\")\n      .attr(\"class\", \"SV-bars\")\n      .attr(\"id\", (d) => d.variable_name)\n      .attr(\"fill\", function(d) {\n        switch (d.sign) {\n          case \"-1\":\n            return svNegativeColor;\n          case \"1\":\n            return svPositiveColor;\n          default:\n            return defaultColor;\n        }\n      })\n      .attr(\"fill-opacity\", d => x(d.barSupport) - x(d.barStart) < 1.5\n                                 ? 0 : 1) //invisible bar for clicking purpose\n      .attr(\"x\", d => d.contribution > 0 ? x(d.barStart) : x(d.barSupport))\n      .attr(\"y\", d => y(d.variable))\n      .attr(\"height\", y.bandwidth())\n      .on('mouseover', tooltip.show)\n      .on('mouseout', tooltip.hide)\n      .on(\"click\", function() {\n        updatePlots(event = \"variableChange\",\n                    variableName = this.id,\n                    observationId = null,\n                    plotId = null);\n      })\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => x(d.barStart))\n      .attr(\"width\", d => x(d.barSupport) - x(d.barStart) < 1.5\n                          ? 5 : x(d.barSupport) - x(d.barStart));\n\n  // add labels to bars\n  var ctbLabel = SV.selectAll()\n                   .data(bData)\n                   .enter()\n                   .append(\"g\");\n\n  ctbLabel.append(\"text\")\n          .attr(\"class\", \"axisLabel\")\n          .attr(\"x\", d => d.contribution > 0\n                          ? x(d.barStart) - 5 : x(d.barSupport) + 5)\n          .attr(\"y\", d => y(d.variable) + y.bandwidth()/2)\n          .attr(\"dy\", \"0.4em\")\n          .attr(\"text-anchor\", d => d.sign == \"1\" ? \"end\" : \"start\")\n          .transition()\n          .duration(TIME)\n          .delay((d,i) => (i+1) * TIME)\n          .text(d => d.sign == \"-1\" ? d.contribution : \"+\"+d.contribution);\n\n  // add lines to bars\n  var lines = SV.selectAll()\n                .data(bData)\n                .enter()\n                .append(\"g\");\n\n  lines.append(\"line\")\n        .attr(\"class\", \"interceptLine\")\n        .attr(\"x1\", d => d.contribution < 0 ? x(d.barSupport) : x(d.barStart))\n        .attr(\"y1\", d => y(d.variable))\n        .attr(\"x2\", d => d.contribution < 0 ? x(d.barSupport) : x(d.barStart))\n        .attr(\"y2\", d => y(d.variable))\n        .transition()\n        .duration(TIME)\n        .delay((d,i) => (i+1) * TIME)\n        .attr(\"y2\", (d,i) => i == svBarCount - 1\n                             ? y(d.variable) + y.bandwidth()\n                             : y(d.variable) + y.bandwidth()*2.5);\n\n\n  // boxplots\n  if (SHOW_BOXPLOT) {\n    // main horizontal line\n    bars.append(\"line\")\n        .attr(\"class\", \"interceptLine\")\n        .attr(\"x1\", d => d.contribution < 0 ? x(d.max) : x(d.min))\n        .attr(\"x2\", d => d.contribution < 0 ? x(d.max) : x(d.min))\n        .attr(\"y1\", d => y(d.variable) + y.bandwidth()/2)\n        .attr(\"y2\", d => y(d.variable) + y.bandwidth()/2)\n        .transition()\n        .duration(TIME)\n        .delay((d,i) => i * TIME)\n        .attr(\"x1\", d => x(d.min))\n        .attr(\"x2\", d => x(d.max));\n\n    // rectangle for the main box\n    bars.append(\"rect\")\n        .attr(\"x\", d => d.contribution < 0 ? x(d.q3) : x(d.q1))\n        .attr(\"y\", d => y(d.variable) + y.bandwidth()/3)\n        .attr(\"height\", y.bandwidth()/3)\n        .style(\"fill\", \"#371ea3\")\n        .transition()\n        .duration(TIME)\n        .delay((d,i) => i * TIME)\n        .attr(\"x\", d => x(d.q1))\n        .attr(\"width\", d => Math.abs(x(d.q3) - x(d.q1)));\n  }\n\n  // description\n  var description = SV.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + svPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction ceterisParibus() {\n\n  let tObservationId = CLICKED_OBSERVATION_ID,\n      tData = obsData[tObservationId];\n\n  if (tData[1].x === undefined) return null;\n\n  let cpData = tData[1],\n      profData = cpData.x,\n      xMinMax = cpData.x_min_max_list,\n      yMinMax = cpData.y_min_max,\n      pData = cpData.observation,\n      isNumeric = cpData.is_numeric\n      desc = cpData.desc;\n\n  let tVariableName = CLICKED_VARIABLE_NAME;\n\n  // lines or bars?\n  if (isNumeric[tVariableName]) {\n    cpNumericalPlot(tVariableName, profData[tVariableName],\n                    xMinMax[tVariableName], yMinMax, pData,\n                    desc[tVariableName]);\n  } else {\n    cpCategoricalPlot(tVariableName, profData[tVariableName],\n                      yMinMax, pData, desc[tVariableName]);\n  }\n}\n\nfunction featureImportance() {\n\n  if (fiData.x === undefined) return null;\n\n  var fiBarCount = fiData.m,\n      bData = fiData.x,\n      xMinMax = fiData.x_min_max,\n      desc = fiData.desc;\n\n  var fiPlotHeight = SCALE_PLOT ? h : fiBarCount*fiBarWidth + (fiBarCount+1)*fiBarWidth/2,\n      fiPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left, margin.left + fiPlotWidth])\n            .domain(xMinMax);\n\n  FI.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + fiPlotWidth/2) + \" ,\" +\n                         (margin.top + fiPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"drop-out loss\");\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = FI.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + fiPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + fiPlotHeight])\n            .padding(0.33)\n            .domain(bData.map(d => d.variable));\n\n  var xGrid = FI.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + fiPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-fiPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = FI.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-fiPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = FI.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  FI.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(fiSubtitle);\n\n  FI.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(fiTitle);\n\n  // tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipFI\")\n                  .html(d => d.type === \"desc\"\n                             ? descTooltipHtml(d)\n                             : fiStaticTooltipHtml(d));\n  FI.call(tooltip);\n\n  // bars\n  var bars = FI.selectAll()\n               .data(bData)\n               .enter()\n               .append(\"g\");\n\n  // find full model dropout_loss value\n  var fullModel = bData[0].full_model;\n\n  bars.append(\"rect\")\n      .attr(\"class\", \"FI-bars\")\n      .attr(\"fill\", fiBarColor)\n      .attr(\"x\", d => x(fullModel))\n      .attr(\"y\", d => y(d.variable))\n      .attr(\"height\", y.bandwidth())\n      .on('mouseover', tooltip.show)\n      .on('mouseout', tooltip.hide)\n      .attr(\"id\", (d) => d.variable)\n      .on(\"click\", function(){\n        updatePlots(event = \"variableChange\",\n                    variableName = this.id,\n                    observationId = null,\n                    plotId = null);\n      })\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => x(d.dropout_loss) < x(fullModel)\n                      ? x(d.dropout_loss) : x(fullModel))\n      .attr(\"width\", d => Math.abs(x(d.dropout_loss) - x(fullModel)));\n\n  // make the interceptLine\n  var minimumY = Number.MAX_VALUE;\n  var maximumY = Number.MIN_VALUE;\n  bars.selectAll(\".FI-bars\").each(function() {\n    if (+this.getAttribute('y') < minimumY) {\n      minimumY = +this.getAttribute('y');\n    }\n    if (+this.getAttribute('y') > maximumY) {\n      maximumY = +this.getAttribute('y');\n    }\n  });\n\n  FI.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(fullModel))\n    .attr(\"y1\", minimumY)\n    .attr(\"x2\", x(fullModel))\n    .attr(\"y2\", maximumY + y.bandwidth());\n\n  // boxplots\n  if (SHOW_BOXPLOT) {\n\n    // main horizontal line\n    bars.append(\"line\")\n        .attr(\"class\", \"interceptLine\")\n        .attr(\"x1\", d => x(d.dropout_loss) < x(fullModel) ? x(d.max) : x(d.min))\n        .attr(\"x2\", d => x(d.dropout_loss) < x(fullModel) ? x(d.max) : x(d.min))\n        .attr(\"y1\", d => y(d.variable) + y.bandwidth()/2)\n        .attr(\"y2\", d => y(d.variable) + y.bandwidth()/2)\n        .transition()\n        .duration(TIME)\n        .delay((d,i) => i * TIME)\n        .attr(\"x1\", d => x(d.min))\n        .attr(\"x2\", d => x(d.max));\n\n    // rectangle for the main box\n    bars.append(\"rect\")\n        .attr(\"x\", d => x(d.dropout_loss) < x(fullModel) ? x(d.q3) : x(d.q1))\n        .attr(\"y\", d => y(d.variable) + y.bandwidth()/3)\n        .attr(\"height\", y.bandwidth()/3)\n        .style(\"fill\", \"#371ea3\")\n        .transition()\n        .duration(TIME)\n        .delay((d,i) => i * TIME)\n        .attr(\"x\", d => x(d.q1))\n        .attr(\"width\", d => Math.abs(x(d.q3) - x(d.q1)));\n  }\n\n  // description\n  var description = FI.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + fiPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction partialDependence() {\n\n  if (pdData.x === undefined) return null;\n\n  let profData = pdData.x,\n      xMinMax = pdData.x_min_max_list,\n      yMinMax = pdData.y_min_max,\n      yMean = pdData.y_mean,\n      isNumeric = pdData.is_numeric,\n      desc = pdData.desc;\n\n  let tVariableName = CLICKED_VARIABLE_NAME;\n\n  // lines or bars?\n  if (isNumeric[tVariableName]) {\n    pdNumericalPlot(tVariableName, profData[tVariableName],\n                    xMinMax[tVariableName], yMinMax, yMean,\n                    desc[tVariableName]);\n  } else {\n    pdCategoricalPlot(tVariableName, profData[tVariableName],\n                      yMinMax, yMean, desc[tVariableName]);\n  }\n}\n\nfunction accumulatedDependence() {\n\n  if (adData.x === undefined) return null;\n\n  let profData = adData.x,\n      xMinMax = adData.x_min_max_list,\n      yMinMax = adData.y_min_max,\n      yMean = adData.y_mean,\n      isNumeric = adData.is_numeric,\n      desc = adData.desc;\n\n  let tVariableName = CLICKED_VARIABLE_NAME;\n\n  // lines or bars?\n  if (isNumeric[tVariableName]) {\n    adNumericalPlot(tVariableName, profData[tVariableName],\n                    xMinMax[tVariableName], yMinMax, yMean,\n                    desc[tVariableName]);\n  } else {\n    adCategoricalPlot(tVariableName, profData[tVariableName],\n                      yMinMax, yMean, desc[tVariableName]);\n  }\n}\n\nfunction featureDistribution() {\n\n  if (fdData.x === undefined) return null;\n\n  let dData = fdData.x,\n      xMinMax = fdData.x_min_max_list,\n      xMax = fdData.x_max_list,\n      nBin = fdData.nbin,\n      isNumeric = fdData.is_numeric;\n\n  let tVariableName = CLICKED_VARIABLE_NAME;\n\n  // histogram or bars?\n  if (isNumeric[tVariableName]) {\n    fdNumericalPlot(tVariableName, dData, xMinMax[tVariableName],\n                    nBin[tVariableName]);\n  } else {\n    fdCategoricalPlot(tVariableName, dData, xMinMax[tVariableName],\n                      xMax[tVariableName]);\n  }\n}\n\nfunction targetVs() {\n\n  if (tvData.x === undefined) return null;\n\n  let xData = tvData.x,\n      xMinMax = tvData.x_min_max_list,\n      yMinMax = tvData.y_min_max,\n      isNumeric = tvData.is_numeric;\n\n  let tVariableName = CLICKED_VARIABLE_NAME;\n\n  // scatterplot or violin?\n  if (isNumeric[tVariableName]) {\n    tvNumericalPlot(tVariableName, xData, xMinMax[tVariableName], yMinMax);\n  } else {\n    tvCategoricalPlot(tVariableName, xData, xMinMax[tVariableName], yMinMax);\n  }\n}\n\nfunction averageTarget() {\n\n  if (atData.x === undefined) return null;\n\n  let xData = atData.x,\n      xMinMax = atData.x_min_max_list,\n      yMinMax = atData.y_min_max_list,\n      yMean = atData.y_mean,\n      isNumeric = atData.is_numeric;\n\n  let tVariableName = CLICKED_VARIABLE_NAME;\n\n  // scatterplot or violin?\n  if (isNumeric[tVariableName]) {\n    atNumericalPlot(tVariableName, xData[tVariableName],\n                    xMinMax[tVariableName], yMinMax[tVariableName], yMean);\n  } else {\n    atCategoricalPlot(tVariableName, xData[tVariableName],\n                      xMinMax[tVariableName], yMinMax[tVariableName], yMean);\n  }\n}\n\n/// small plot functions\n\nfunction cpNumericalPlot(variableName, lData, mData, yMinMax, pData, desc) {\n\n  var cpPlotHeight = h,\n      cpPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left + 10, margin.left + cpPlotWidth - 10])\n            .domain(mData);\n\n  CP.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + cpPlotWidth/2) + \" ,\" +\n                         (margin.top + cpPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(variableName + \" = \" + pData[0][variableName]);\n\n  var y = d3.scaleLinear()\n            .range([margin.top + cpPlotHeight, margin.top - additionalHeight])\n            .domain(yMinMax);\n\n  var line = d3.line()\n               .x(d => x(d.xhat))\n               .y(d => y(d.yhat))\n               .curve(d3.curveMonotoneX);\n\n   CP.append(\"text\")\n     .attr(\"class\",\"smallTitle\")\n     .attr(\"x\", margin.left)\n     .attr(\"y\", margin.top - 15)\n     .text(cpSubtitle);\n\n  CP.append(\"text\")\n    .attr(\"class\", \"bigTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .text(cpTitle);\n\n  // find 5 nice ticks with max and min - do better than d3\n  var tickValues = getTickValues(x.domain());\n\n  var xAxis = d3.axisBottom(x)\n                .tickValues(tickValues)\n                .tickSizeInner(0)\n                .tickPadding(15);\n\n  xAxis = CP.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\"+ (margin.top + cpPlotHeight) + \")\")\n            .call(xAxis);\n\n  var yGrid = CP.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .ticks(10)\n                        .tickSize(-cpPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .ticks(5)\n                .tickSize(0);\n\n  yAxis = CP.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + margin.left + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  // make tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipCP\")\n                  .html((d, addData) => {\n\n                    if (d.type === \"desc\") {\n                      return descTooltipHtml(d)\n                    } else if (addData !== undefined) {\n                      return cpChangedTooltipHtml(d, addData);\n                    } else {\n                        return cpStaticTooltipHtml(d);\n                    }\n                   });\n  CP.call(tooltip);\n\n  // function to find nearest point on the line\n  var bisectXhat = d3.bisector(d => d.xhat).right;\n\n  // show tooltip with info nearest to mouseover\n  function showTooltip(hover) {\n    var x0 = x.invert(d3.mouse(d3.event.currentTarget)[0]),\n        i = bisectXhat(hover, x0),\n        d0 = hover[i - 1],\n        d1 = hover[i],\n        d = x0 - d0.xhat > d1.xhat - x0 ? d1 : d0;\n    let temp = pData.find(el => el[\"observation.id\"] === d.id);\n    tooltip.show(d, temp);\n  }\n\n  // add path\n  var p = CP.append(\"path\")\n            .attr(\"class\", \"CP-lines\")\n            .style(\"fill\", \"none\")\n            .style(\"stroke\", cpLineColor)\n            .style(\"stroke-width\", cpLineSize)\n            .on('mouseover', function(d) {\n\n              // make mouseover line more visible\n              d3.select(this)\n                .style(\"stroke\", defaultColor)\n                .style(\"stroke-width\", cpLineSize*1.5);\n\n              // make line and points appear on top\n              this.parentNode.appendChild(this);\n              d3.select(this.parentNode).selectAll(\".point\").each(function() {\n                               this.parentNode.appendChild(this);\n                          });\n\n              // show changed tooltip\n              showTooltip(d);\n            })\n            .on('mouseout', function(d) {\n\n              d3.select(this)\n                .style(\"stroke\", cpLineColor)\n                .style(\"stroke-width\", cpLineSize);\n\n              // hide changed tooltip\n              tooltip.hide(d);\n            });\n\n  // animate path\n  p.data([{\"xhat\":0, \"yhat\": 0}])\n   .attr(\"d\", line)\n   .transition()\n   .duration(TIME)\n   .attrTween(\"d\", function() {\n     var previous = d3.select(this).attr('d');\n     var current = line(lData);\n     return d3.interpolatePath(previous, current);\n   });\n\n  // add data for tooltip\n  p.data([lData]);\n\n  // add points\n  CP.selectAll()\n    .data(pData)\n    .enter()\n    .append(\"circle\")\n    .attr(\"class\", \"point\")\n    .attr(\"id\", d => d[\"observation.id\"])\n    .attr(\"cx\", d => x(d[variableName]))\n    .attr(\"cy\", d => y(d.yhat))\n    .attr(\"r\", 0)\n    .style(\"stroke-width\", 15)\n    .style(\"stroke\", \"red\")\n    .style(\"stroke-opacity\", 0)\n    .style(\"fill\", cpPointColor)\n    .on('mouseover', function(d) {\n      tooltip.show(d);\n  \t\td3.select(this)\n  \t\t\t.attr(\"r\", 2*cpPointSize);\n  \t})\n    .on('mouseout', function(d) {\n      tooltip.hide(d);\n  \t\td3.select(this)\n  \t\t\t.attr(\"r\", cpPointSize);\n  \t})\n    .transition()\n    .duration(TIME)\n    .delay(TIME)\n    .attr(\"r\", cpPointSize);\n\n  // add rugs\n  CP.selectAll()\n    .data(pData)\n    .enter()\n    .append(\"line\")\n    .attr(\"class\", \"rugLine\")\n    .style(\"stroke\", \"red\")\n    .style(\"stroke-width\", 2)\n    .attr(\"x1\", d => x(d[variableName]))\n    .attr(\"y1\", margin.top + cpPlotHeight)\n    .attr(\"x2\", d => x(d[variableName]))\n    .attr(\"y2\", margin.top + cpPlotHeight - 10);\n\n  CP.append(\"text\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"transform\", \"rotate(-90)\")\n    .attr(\"y\", margin.left - margin.ytitle)\n    .attr(\"x\", -(margin.top + cpPlotHeight/2))\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"prediction\");\n\n  var description = CP.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + cpPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction cpCategoricalPlot(variableName, bData, yMinMax, lData, desc) {\n\n  var cpBarCount = bData.map(d => d.xhat).length;\n\n  var cpPlotHeight = SCALE_PLOT ? h : cpBarCount*cpBarWidth + (cpBarCount+1)*cpBarWidth/2,\n      cpPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left,  margin.left + cpPlotWidth])\n            .domain(yMinMax); // because it is flipped\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = CP.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + cpPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + cpPlotHeight])\n            .padding(0.33)\n            .domain(bData.map(d => d.xhat));\n\n  var xGrid = CP.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + cpPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-cpPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = CP.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-cpPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = CP.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  CP.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(cpSubtitle);\n\n  CP.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(cpTitle);\n\n  var bars = CP.selectAll()\n               .data(bData)\n               .enter()\n               .append(\"g\");\n\n  var fullModel = lData[0].yhat;\n\n  // make tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipCP\")\n                  .html(d => d.type === \"desc\" ?\n                   descTooltipHtml(d) : cpChangedTooltipHtml(d, lData[0]));\n  CP.call(tooltip);\n\n  // add bars\n  bars.append(\"rect\")\n      .attr(\"class\", \"CP-bars\")\n      .attr(\"fill\", cpBarColor)\n      .attr(\"x\", d => x(fullModel))\n      .attr(\"y\", d => y(d.xhat))\n      .attr(\"height\", y.bandwidth())\n      .on('mouseover', tooltip.show)\n      .on('mouseout', tooltip.hide)\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => x(d.yhat) < x(fullModel) ? x(d.yhat) : x(fullModel))\n      .attr(\"width\", d => Math.abs(x(d.yhat) - x(fullModel)));\n\n  // add intercept line\n  var minimumY = Number.MAX_VALUE;\n  var maximumY = Number.MIN_VALUE;\n\n  bars.selectAll(\".CP-bars\").each(function() {\n      if (+this.getAttribute('y') < minimumY) {\n        minimumY = +this.getAttribute('y');\n      }\n      if (+this.getAttribute('y') > maximumY) {\n        maximumY = +this.getAttribute('y');\n      }\n    });\n\n  CP.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(fullModel))\n    .attr(\"y1\", minimumY)\n    .attr(\"x2\", x(fullModel))\n    .attr(\"y2\", maximumY + y.bandwidth());\n\n  CP.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + cpPlotWidth/2) + \" ,\" +\n                         (margin.top + cpPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"prediction\");\n\n  var description = CP.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + cpPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction pdNumericalPlot(variableName, lData, mData, yMinMax, yMean, desc) {\n\n  var pdPlotHeight = h,\n      pdPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left + 10, margin.left + pdPlotWidth - 10])\n            .domain(mData);\n\n  PD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + pdPlotWidth/2) + \" ,\" +\n                         (margin.top + pdPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(variableName);\n\n  var y = d3.scaleLinear()\n            .range([margin.top + pdPlotHeight, margin.top - additionalHeight])\n            .domain(yMinMax);\n\n  var line = d3.line()\n               .x(d => x(d.xhat))\n               .y(d => y(d.yhat))\n               .curve(d3.curveMonotoneX);\n\n   PD.append(\"text\")\n     .attr(\"class\",\"smallTitle\")\n     .attr(\"x\", margin.left)\n     .attr(\"y\", margin.top - 15)\n     .text(pdSubtitle); // variableName\n\n  PD.append(\"text\")\n    .attr(\"class\", \"bigTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .text(pdTitle);\n\n  // find 5 nice ticks with max and min - do better than d3\n  var tickValues = getTickValues(x.domain());\n\n  var xAxis = d3.axisBottom(x)\n                .tickValues(tickValues)\n                .tickSizeInner(0)\n                .tickPadding(15);\n\n  xAxis = PD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\"+ (margin.top + pdPlotHeight) + \")\")\n            .call(xAxis);\n\n  var yGrid = PD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .ticks(10)\n                        .tickSize(-pdPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .ticks(5)\n                .tickSize(0);\n\n  yAxis = PD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + margin.left + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  // make tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipPD\")\n                  .html(d => d.type === \"desc\" ?\n                   descTooltipHtml(d) : pdStaticTooltipHtml(d, variableName, yMean));\n  PD.call(tooltip);\n\n  // function to find nearest point on the line\n  var bisectXhat = d3.bisector(d => d.xhat).right;\n\n  // show tooltip with info nearest to mouseover\n  function showTooltip(hover) {\n    var x0 = x.invert(d3.mouse(d3.event.currentTarget)[0]),\n        i = bisectXhat(hover, x0),\n        d0 = hover[i - 1],\n        d1 = hover[i],\n        d = x0 - d0.xhat > d1.xhat - x0 ? d1 : d0;\n\n    tooltip.show(d);\n  }\n\n  // add lines\n  var p = PD.append(\"path\")\n            .attr(\"class\", \"PD-lines\")\n            .style(\"fill\", \"none\")\n            .style(\"stroke\", pdLineColor)\n            .style(\"stroke-width\", pdLineSize)\n            .on('mouseover', function(d) {\n\n              // make mouseover line more visible\n              d3.select(this)\n                .style(\"stroke\", defaultColor)\n                .style(\"stroke-width\", pdLineSize*1.5);\n\n              // make line appear on top\n              this.parentNode.appendChild(this);\n\n              // show changed tooltip\n              showTooltip(d);\n            })\n            .on('mouseout', function(d) {\n\n              d3.select(this)\n                .style(\"stroke\", pdLineColor)\n                .style(\"stroke-width\", pdLineSize);\n\n              // hide changed tooltip\n              tooltip.hide(d);\n            });\n\n  // animate path\n  p.data([{\"xhat\":0, \"yhat\": 0}])\n   .attr(\"d\", line)\n   .transition()\n   .duration(TIME)\n   .attrTween(\"d\", function() {\n     var previous = d3.select(this).attr('d');\n     var current = line(lData);\n     return d3.interpolatePath(previous, current);\n   });\n\n  // add data for tooltip\n  p.data([lData]);\n\n  PD.append(\"text\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"transform\", \"rotate(-90)\")\n    .attr(\"y\", margin.left - margin.ytitle)\n    .attr(\"x\", -(margin.top + pdPlotHeight/2))\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"average prediction\");\n\n  var description = PD.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + pdPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction pdCategoricalPlot(variableName, bData, yMinMax, yMean, desc) {\n\n  var pdBarCount = bData.map(d => d.xhat).length;\n\n  var pdPlotHeight = SCALE_PLOT ? h : pdBarCount*pdBarWidth + (pdBarCount+1)*pdBarWidth/2,\n      pdPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left,  margin.left + pdPlotWidth])\n            .domain(yMinMax); // because it is flipped\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = PD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + pdPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + pdPlotHeight])\n            .padding(0.33)\n            .domain(bData.map(d => d.xhat));\n\n  var xGrid = PD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + pdPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-pdPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = PD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-pdPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = PD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 8) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  PD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(pdSubtitle); // variableName\n\n  PD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(pdTitle);\n\n  var bars = PD.selectAll()\n               .data(bData)\n               .enter()\n               .append(\"g\");\n\n  var fullModel = yMean;\n\n  // make tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipPD\")\n                  .html(d => d.type === \"desc\" ?\n                   descTooltipHtml(d) : pdStaticTooltipHtml(d, variableName, yMean));\n  PD.call(tooltip);\n\n  // add bars\n  bars.append(\"rect\")\n      .attr(\"class\", \"PD-bars\")\n      .attr(\"fill\", pdBarColor)\n      .attr(\"x\", d => x(fullModel))\n      .attr(\"y\", d => y(d.xhat))\n      .attr(\"height\", y.bandwidth())\n      .on('mouseover', tooltip.show)\n      .on('mouseout', tooltip.hide)\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => x(d.yhat) < x(fullModel) ? x(d.yhat) : x(fullModel))\n      .attr(\"width\", d => Math.abs(x(d.yhat) - x(fullModel)));\n\n  // add intercept line\n  var minimumY = Number.MAX_VALUE;\n  var maximumY = Number.MIN_VALUE;\n\n  bars.selectAll(\".PD-bars\").each(function() {\n      if (+this.getAttribute('y') < minimumY) {\n        minimumY = +this.getAttribute('y');\n      }\n      if (+this.getAttribute('y') > maximumY) {\n        maximumY = +this.getAttribute('y');\n      }\n    });\n\n  PD.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(fullModel))\n    .attr(\"y1\", minimumY)\n    .attr(\"x2\", x(fullModel))\n    .attr(\"y2\", maximumY + y.bandwidth());\n\n  PD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + pdPlotWidth/2) + \",\" +\n                         (margin.top + pdPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"average prediction\");\n\n  var description = PD.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + pdPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction adNumericalPlot(variableName, lData, mData, yMinMax, yMean, desc) {\n\n  var adPlotHeight = h,\n      adPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left + 10, margin.left + adPlotWidth - 10])\n            .domain(mData);\n\n  AD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + adPlotWidth/2) + \" ,\" +\n                         (margin.top + adPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(variableName);\n\n  var y = d3.scaleLinear()\n            .range([margin.top + adPlotHeight, margin.top - additionalHeight])\n            .domain(yMinMax);\n\n  var line = d3.line()\n               .x(d => x(d.xhat))\n               .y(d => y(d.yhat))\n               .curve(d3.curveMonotoneX);\n\n  AD.append(\"text\")\n    .attr(\"class\",\"smallTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .text(adSubtitle); // variableName\n\n  AD.append(\"text\")\n    .attr(\"class\", \"bigTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .text(adTitle);\n\n  // find 5 nice ticks with max and min - do better than d3\n  var tickValues = getTickValues(x.domain());\n\n  var xAxis = d3.axisBottom(x)\n                .tickValues(tickValues)\n                .tickSizeInner(0)\n                .tickPadding(15);\n\n  xAxis = AD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\"+ (margin.top + adPlotHeight) + \")\")\n            .call(xAxis);\n\n  var yGrid = AD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .ticks(10)\n                        .tickSize(-adPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .ticks(5)\n                .tickSize(0);\n\n  yAxis = AD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + margin.left + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  // make tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .attr(\"id\", \"tooltipPD\")\n                  .html(d => d.type === \"desc\" ?\n                   descTooltipHtml(d) : adStaticTooltipHtml(d, variableName, yMean));\n  AD.call(tooltip);\n\n  // function to find nearest point on the line\n  var bisectXhat = d3.bisector(d => d.xhat).right;\n\n  // show tooltip with info nearest to mouseover\n  function showTooltip(hover) {\n    var x0 = x.invert(d3.mouse(d3.event.currentTarget)[0]),\n        i = bisectXhat(hover, x0),\n        d0 = hover[i - 1],\n        d1 = hover[i],\n        d = x0 - d0.xhat > d1.xhat - x0 ? d1 : d0;\n\n    tooltip.show(d);\n  }\n\n  // add lines\n  var p = AD.append(\"path\")\n            .attr(\"class\", \"AD-lines\")\n            .style(\"fill\", \"none\")\n            .style(\"stroke\", adLineColor)\n            .style(\"stroke-width\", adLineSize)\n            .on('mouseover', function(d) {\n\n              // make mouseover line more visible\n              d3.select(this)\n                .style(\"stroke\", defaultColor)\n                .style(\"stroke-width\", adLineSize*1.5);\n\n              // make line appear on top\n              this.parentNode.appendChild(this);\n\n              // show changed tooltip\n              showTooltip(d);\n            })\n            .on('mouseout', function(d) {\n\n              d3.select(this)\n                .style(\"stroke\", adLineColor)\n                .style(\"stroke-width\", adLineSize);\n\n              // hide changed tooltip\n              tooltip.hide(d);\n            });\n\n  // animate path\n  p.data([{\"xhat\":0, \"yhat\": 0}])\n   .attr(\"d\", line)\n   .transition()\n   .duration(TIME)\n   .attrTween(\"d\", function() {\n     var previous = d3.select(this).attr('d');\n     var current = line(lData);\n     return d3.interpolatePath(previous, current);\n   });\n\n  // add data for tooltip\n  p.data([lData]);\n\n  AD.append(\"text\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"transform\", \"rotate(-90)\")\n    .attr(\"y\", margin.left - margin.ytitle)\n    .attr(\"x\", -(margin.top + adPlotHeight/2))\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"accumulated prediction\");\n\n  var description = AD.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + adPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction adCategoricalPlot(variableName, bData, yMinMax, yMean, desc) {\n\n  var adBarCount = bData.map(d => d.xhat).length;\n\n  var adPlotHeight = SCALE_PLOT ? h : adBarCount*adBarWidth + (adBarCount+1)*adBarWidth/2,\n      adPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left,  margin.left + adPlotWidth])\n            .domain(yMinMax); // because it is flipped\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = AD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + adPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + adPlotHeight])\n            .padding(0.33)\n            .domain(bData.map(d => d.xhat));\n\n  var xGrid = AD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + adPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-adPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = AD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-adPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = AD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  AD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(adSubtitle); // variableName\n\n  AD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(adTitle);\n\n  var bars = AD.selectAll()\n               .data(bData)\n               .enter()\n               .append(\"g\");\n\n  var fullModel = 0; //yMean;\n    // make tooltip\n  var tooltip = d3.tip(WIDGET_ID)\n                  .attr(\"class\", \"d3-tip\")\n                  .html(d => d.type === \"desc\" ?\n                   descTooltipHtml(d) : adStaticTooltipHtml(d, variableName, yMean));\n  AD.call(tooltip);\n\n  // add bars\n  bars.append(\"rect\")\n      .attr(\"class\", \"AD-bars\")\n      .attr(\"fill\", adBarColor)\n      .attr(\"x\", d => x(fullModel))\n      .attr(\"y\", d => y(d.xhat))\n      .attr(\"height\", y.bandwidth())\n      .on('mouseover', tooltip.show)\n      .on('mouseout', tooltip.hide)\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => x(d.yhat) < x(fullModel) ? x(d.yhat) : x(fullModel))\n      .attr(\"width\", d => Math.abs(x(d.yhat) - x(fullModel)));;\n\n  // add intercept line\n  var minimumY = Number.MAX_VALUE;\n  var maximumY = Number.MIN_VALUE;\n\n  bars.selectAll(\".AD-bars\").each(function() {\n      if (+this.getAttribute('y') < minimumY) {\n        minimumY = +this.getAttribute('y');\n      }\n      if (+this.getAttribute('y') > maximumY) {\n        maximumY = +this.getAttribute('y');\n      }\n    });\n\n  AD.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(fullModel))\n    .attr(\"y1\", minimumY)\n    .attr(\"x2\", x(fullModel))\n    .attr(\"y2\", maximumY + y.bandwidth());\n\n  AD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + adPlotWidth/2) + \",\" +\n                         (margin.top + adPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"accumulated prediction\");\n\n  var description = AD.append(\"g\")\n                      .attr(\"transform\", \"translate(\" +\n                            (margin.left + adPlotWidth - 4*margin.big - margin.small)\n                            + \",\" + (-margin.big) + \")\");\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"rect\")\n             .attr(\"class\", \"descriptionBox\")\n             .attr(\"width\", 2*margin.big)\n             .attr(\"height\", 2*margin.big)\n             .attr(\"rx\", 2*margin.big)\n             .attr(\"ry\", 2*margin.big)\n             .on('mouseover', tooltip.show)\n             .on('mouseout', tooltip.hide);\n\n  description.selectAll()\n             .data(desc)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"descriptionLabel\")\n             .attr(\"x\", 6)\n             .attr(\"dy\", \"1.05em\")\n             .text(\"D\")\n             .on('mouseover', function(d) {\n               tooltip.show(d);\n               d3.select(this).style(\"cursor\", \"default\");\n             })\n             .on('mouseout', tooltip.hide);\n}\n\nfunction fdNumericalPlot(variableName, dData, mData, nBin) {\n\n  var fdPlotHeight = h,\n      fdPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left + 10, margin.left + fdPlotWidth - 10])\n            .domain(mData);\n\n  FD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + fdPlotWidth/2) + \" ,\" +\n                         (margin.top + fdPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(variableName);\n\n  FD.append(\"text\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"transform\", \"rotate(-90)\")\n    .attr(\"y\", margin.left - margin.ytitle)\n    .attr(\"x\", -(margin.top + fdPlotHeight/2))\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"count\");\n\n  var y = d3.scaleLinear()\n        .range([margin.top + fdPlotHeight - 5, margin.top]);\n\n  FD.append(\"text\")\n    .attr(\"class\",\"smallTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .text(fdSubtitle);\n\n  FD.append(\"text\")\n    .attr(\"class\", \"bigTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .text(fdTitle);\n\n  // find 5 nice ticks with max and min - do better than d3\n  var tickValues = getTickValues(x.domain());\n\n  var xAxis = d3.axisBottom(x)\n                .tickValues(tickValues)\n                .tickSizeInner(0)\n                .tickPadding(15);\n\n  xAxis = FD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\"+ (margin.top + fdPlotHeight) + \")\")\n            .call(xAxis);\n\n  var yAxis = FD.append(\"g\")\n                .attr(\"class\", \"axisLabel\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\");\n\n  var yGrid = FD.append(\"g\")\n                  .attr(\"class\", \"grid\")\n                  .attr(\"transform\", \"translate(\" + margin.left + \",0)\");\n\n  var slider = d3.sliderBottom()\n                 .min(d3.max([+nBin-10,2]))\n                 .max(d3.max([+nBin+10,12]))\n                 .width(fdPlotWidth/2 - 40) // fit exit button\n                 .ticks(8)\n                 .step(1)\n                 .default(nBin)\n                 .fill(fdBarColor)\n                 .on('onchange', val => updateHist(val));\n\n  var sliderg = FD.append(\"g\").call(slider);\n\n  sliderg.attr(\"transform\", \"translate(\" + (margin.left + fdPlotWidth/2 - margin.small)\n                            + \",\" + margin.small + \")\");\n\n  updateHist(+nBin);\n\n  function updateHist(nbin) {\n\n    var histogram = d3.histogram()\n                      .value(d => d[variableName])\n                      .domain(x.domain())\n                      .thresholds(nbin);\n\n    var bins = histogram(dData);\n\n    y.domain([0, d3.max(bins, d => d.length)]);\n\n    let yaF = d3.axisLeft(y)\n                .ticks(5)\n                .tickSize(0);\n\n    yAxis.call(yaF)\n         .call(g => g.select(\".domain\").remove());\n\n    yGrid.call(d3.axisLeft(y)\n                 .ticks(10)\n                 .tickSize(-fdPlotWidth)\n                 .tickFormat(\"\")\n               ).call(g => g.select(\".domain\").remove());\n\n    var bars = FD.selectAll(\"rect\")\n                 .data(bins);\n\n    bars.enter()\n        .append(\"rect\")\n        .attr(\"fill\", fdBarColor)\n        .merge(bars)\n        .attr(\"x\", d => x(d.x0))\n        .attr(\"y\", d => y(0))\n        .attr(\"height\", d => 0)\n        .attr(\"width\", d => x(d.x1) - x(d.x0))\n        .transition()\n        .duration(TIME)\n          .attr(\"y\", d => y(d.length))\n          .attr(\"height\", d => y(0) - y(d.length));\n\n    bars.exit()\n        .remove()\n  }\n}\n\nfunction fdCategoricalPlot(variableName, dData, xMinMax, mData) {\n\n  // equivalent of R table function\n  var tableData = d3.nest()\n                    .key(d => d[variableName])\n                    .rollup(v => v.length)\n                    .entries(dData);\n  // sort tableData\n  var tableDataSorted = [];\n  tableData.forEach(e => {\n    tableDataSorted[xMinMax.indexOf(e.key)] = e;\n  });\n\n  var fdBarCount = tableData.map(d => d.key).length;\n\n  var fdPlotHeight = SCALE_PLOT ? h : fdBarCount*fdBarWidth + (fdBarCount+1)*fdBarWidth/2,\n      fdPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left, margin.left + fdPlotWidth])\n            .domain([0, mData]);\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = FD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + fdPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + fdPlotHeight])\n            .padding(0.33)\n            .domain(xMinMax);\n\n  var xGrid = FD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + fdPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-fdPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = FD.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-fdPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = FD.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  FD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(fdSubtitle);\n\n  FD.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(fdTitle);\n\n  var bars = FD.selectAll()\n               .data(tableDataSorted)\n               .enter()\n               .append(\"g\");\n\n  // add bars\n  bars.append(\"rect\")\n      .attr(\"class\", \"FD-bars\")\n      .attr(\"fill\", fdBarColor)\n      .attr(\"x\", d => x(0))\n      .attr(\"y\", d => y(d.key))\n      .attr(\"height\", y.bandwidth())\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"width\", d => x(d.value)-x(0));\n\n  // add intercept line\n  var minimumY = Number.MAX_VALUE;\n  var maximumY = Number.MIN_VALUE;\n\n  bars.selectAll(\".FD-bars\").each(function() {\n      if (+this.getAttribute('y') < minimumY) {\n        minimumY = +this.getAttribute('y');\n      }\n      if (+this.getAttribute('y') > maximumY) {\n        maximumY = +this.getAttribute('y');\n      }\n    });\n\n  FD.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(0))\n    .attr(\"y1\", minimumY)\n    .attr(\"x2\", x(0))\n    .attr(\"y2\", maximumY + y.bandwidth());\n\n  FD.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + fdPlotWidth/2) + \",\" +\n                         (margin.top + fdPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"count\");\n}\n\nfunction tvNumericalPlot(variableName, xData, xMinMax, yMinMax) {\n\n  var tvPlotHeight = h,\n      tvPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left + 10, margin.left + tvPlotWidth - 10])\n            .domain(xMinMax);\n\n  TV.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + tvPlotWidth/2) + \" ,\" +\n                         (margin.top + tvPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(variableName);\n\n  var y = d3.scaleLinear()\n            .range([margin.top + tvPlotHeight, margin.top - additionalHeight])\n            .domain(yMinMax);\n\n  TV.append(\"text\")\n    .attr(\"class\",\"smallTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .text(tvSubtitle);\n\n  TV.append(\"text\")\n    .attr(\"class\", \"bigTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .text(tvTitle);\n\n  // find 5 nice ticks with max and min - do better than d3\n  var tickValues = getTickValues(x.domain());\n\n  var xAxis = d3.axisBottom(x)\n                .tickValues(tickValues)\n                .tickSizeInner(0)\n                .tickPadding(15);\n\n  xAxis = TV.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\"+ (margin.top + tvPlotHeight) + \")\")\n            .call(xAxis);\n\n  var yGrid = TV.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .ticks(10)\n                        .tickSize(-tvPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .ticks(5)\n                .tickSize(0);\n\n  yAxis = TV.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + margin.left + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  TV.append(\"text\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"transform\", \"rotate(-90)\")\n    .attr(\"y\", margin.left - margin.ytitle)\n    .attr(\"x\", -(margin.top + tvPlotHeight/2))\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"target\");\n\n  TV.selectAll()\n    .data(xData)\n    .enter()\n    .append(\"circle\")\n    .attr(\"class\", \"point\")\n    .attr(\"cx\", d => x(d[variableName]))\n    .attr(\"cy\", d => y(d[\"_target_\"]))\n    .attr(\"r\", 0)\n    .style(\"fill\", tvPointColor)\n    .transition()\n    .duration(TIME)\n    .attr(\"r\", tvPointSize);\n}\n\nfunction tvCategoricalPlot(variableName, xData, xMinMax, yMinMax) {\n\n  var tvPlotHeight = h,\n      tvPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left, margin.left + tvPlotWidth])\n            .domain(yMinMax);\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = TV.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + tvPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + tvPlotHeight])\n            .padding(0.33)\n            .domain(xMinMax);\n\n  var xGrid = TV.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + tvPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-tvPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = TV.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-tvPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = TV.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  TV.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(tvSubtitle);\n\n  TV.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(tvTitle);\n\n  TV.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + tvPlotWidth/2) + \" ,\" +\n                         (margin.top + tvPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"target\");\n\n  TV.selectAll()\n    .data(xData)\n    .enter()\n    .append(\"circle\")\n    .attr(\"class\", \"point\")\n    .attr(\"cx\", d => x(d[\"_target_\"]))\n    .attr(\"cy\", d => y(d[variableName]) + y.bandwidth()\n    - (0.1 + 0.8*Math.random()) * y.bandwidth())\n    .attr(\"r\", 0)\n    .style(\"fill\", tvPointColor)\n    .transition()\n    .duration(TIME)\n    .attr(\"r\", tvPointSize);\n}\n\nfunction atNumericalPlot(variableName, xData, xMinMax, yMinMax, yMean) {\n\n  var atPlotHeight = h,\n      atPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left + 10, margin.left + atPlotWidth - 10])\n            .domain(xMinMax);\n\n  AT.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + atPlotWidth/2) + \" ,\" +\n                         (margin.top + atPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(variableName);\n\n  var y = d3.scaleLinear()\n            .range([margin.top + atPlotHeight, margin.top - additionalHeight])\n            .domain(yMinMax);\n\n  AT.append(\"text\")\n    .attr(\"class\",\"smallTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .text(atSubtitle);\n\n  AT.append(\"text\")\n    .attr(\"class\", \"bigTitle\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .text(atTitle);\n\n  // find 5 nice ticks with max and min - do better than d3\n  var tickValues = getTickValues(x.domain());\n\n  var xAxis = d3.axisBottom(x)\n                .tickValues(tickValues)\n                .tickSizeInner(0)\n                .tickPadding(15);\n\n  xAxis = AT.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\"+ (margin.top + atPlotHeight) + \")\")\n            .call(xAxis);\n\n  var yGrid = AT.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .ticks(10)\n                        .tickSize(-atPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .ticks(5)\n                .tickSize(0);\n\n  yAxis = AT.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + margin.left + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  AT.append(\"text\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"transform\", \"rotate(-90)\")\n    .attr(\"y\", margin.left - margin.ytitle)\n    .attr(\"x\", -(margin.top + atPlotHeight/2))\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"average target\");\n\n  AT.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(x.domain()[0]))\n    .attr(\"y1\", y(yMean))\n    .attr(\"x2\", x(x.domain()[1]))\n    .attr(\"y2\", y(yMean));\n\n  var lines = AT.selectAll()\n                .data(xData)\n                .enter()\n                .append(\"g\");\n\n  lines.append(\"line\")\n       .style(\"stroke\", atLineColor)\n       .style(\"stroke-width\", atLineSize)\n       .attr(\"x1\", d => x(d.x0))\n       .attr(\"x2\", d => x(d.x0))\n       .attr(\"y1\", d => y(d.y0))\n       .attr(\"y2\", d => y(d.y0))\n       .transition()\n       .duration(TIME/2)\n       .delay((d,i) => (i+1) * TIME/2)\n       .attr(\"x2\", d => x(d.x1))\n       .attr(\"y2\", d => y(d.y1))\n\n  lines.append(\"circle\")\n       .attr(\"cx\", d => x(d.x0))\n       .attr(\"cy\", d => y(d.y0))\n       .attr(\"r\", 0)\n       .style(\"fill\", atPointColor)\n       .transition()\n       .duration(TIME/2)\n       .delay((d,i) => i * TIME/2)\n       .attr(\"r\", atPointSize);\n\n  let lastPoint = xData.slice(-1)[0]\n\n  AT.append(\"circle\")\n    .attr(\"cx\", x(lastPoint.x1))\n    .attr(\"cy\", y(lastPoint.y1))\n    .attr(\"r\", 0)\n    .style(\"fill\", atPointColor)\n    .transition()\n    .duration(TIME/2)\n    .delay(xData.length * TIME/2)\n    .attr(\"r\", atPointSize);\n}\n\nfunction atCategoricalPlot(variableName, xData, xMinMax, yMinMax, yMean) {\n\n  var atBarCount = xData.length;\n\n  var atPlotHeight = SCALE_PLOT ? h : atBarCount*atBarWidth + (atBarCount+1)*atBarWidth/2,\n      atPlotWidth = w;\n\n  var x = d3.scaleLinear()\n            .range([margin.left, margin.left + atPlotWidth])\n            .domain(yMinMax);\n\n  var xAxis = d3.axisBottom(x)\n                .ticks(5)\n                .tickSize(0);\n\n  xAxis = AT.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\", \"translate(0,\" + (margin.top + atPlotHeight) + \")\")\n            .call(xAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  var y = d3.scaleBand()\n            .rangeRound([margin.top - additionalHeight, margin.top + atPlotHeight])\n            .padding(0.33)\n            .domain(xMinMax);\n\n  var xGrid = AT.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(0,\" + (margin.top + atPlotHeight) + \")\")\n                .call(d3.axisBottom(x)\n                        .ticks(10)\n                        .tickSize(-atPlotHeight - additionalHeight)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yGrid = AT.append(\"g\")\n                .attr(\"class\", \"grid\")\n                .attr(\"transform\", \"translate(\" + margin.left + \",0)\")\n                .call(d3.axisLeft(y)\n                        .tickSize(-atPlotWidth)\n                        .tickFormat(\"\")\n                ).call(g => g.select(\".domain\").remove());\n\n  var yAxis = d3.axisLeft(y)\n                .tickSize(0);\n\n  yAxis = AT.append(\"g\")\n            .attr(\"class\", \"axisLabel\")\n            .attr(\"transform\",\"translate(\" + (margin.left - 10) + \",0)\")\n            .call(yAxis)\n            .call(g => g.select(\".domain\").remove());\n\n  yAxis.selectAll(\"text\").call(wrapText, margin.left - 15);\n\n  AT.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 15)\n    .attr(\"class\", \"smallTitle\")\n    .text(atSubtitle);\n\n  AT.append(\"text\")\n    .attr(\"x\", margin.left)\n    .attr(\"y\", margin.top - 40)\n    .attr(\"class\", \"bigTitle\")\n    .text(atTitle);\n\n  AT.append(\"text\")\n    .attr(\"transform\",\n          \"translate(\" + (margin.left + atPlotWidth/2) + \" ,\" +\n                         (margin.top + atPlotHeight + 45) + \")\")\n    .attr(\"class\", \"axisTitle\")\n    .attr(\"text-anchor\", \"middle\")\n    .text(\"average target\");\n\n  var bars = AT.selectAll()\n               .data(xData)\n               .enter()\n               .append(\"g\");\n\n  bars.append(\"rect\")\n      .attr(\"class\", \"AT-bars\")\n      .attr(\"fill\", atBarColor)\n      .attr(\"x\", d => x(yMean))\n      .attr(\"y\", d => y(d.y))\n      .attr(\"height\", y.bandwidth())\n      .transition()\n      .duration(TIME)\n      .delay((d,i) => i * TIME)\n      .attr(\"x\", d => d.sign == 1 ? x(yMean) : x(d.x0))\n      .attr(\"width\", d => Math.abs(x(d.x0) - x(yMean)));\n\n  // add intercept line\n  var minimumY = Number.MAX_VALUE;\n  var maximumY = Number.MIN_VALUE;\n\n  bars.selectAll(\".AT-bars\").each(function() {\n      if (+this.getAttribute('y') < minimumY) {\n        minimumY = +this.getAttribute('y');\n      }\n      if (+this.getAttribute('y') > maximumY) {\n        maximumY = +this.getAttribute('y');\n      }\n    });\n\n  AT.append(\"line\")\n    .attr(\"class\", \"interceptLine\")\n    .attr(\"x1\", x(yMean))\n    .attr(\"y1\", minimumY)\n    .attr(\"x2\", x(yMean))\n    .attr(\"y2\", maximumY + y.bandwidth());\n}\n\n/// event plot functions\n\nfunction updatePlots(event, variableName, observationId, plotId) {\n  /// main plot controller, not used arguments are passed as null\n\n  switch (event) {\n    case \"observationChange\":\n      CLICKED_OBSERVATION_ID = observationId;\n      removePlots([\"BD\", \"SV\", \"CP\"]);\n      generatePlots([\"BD\", \"SV\", \"CP\"]);\n      break;\n\n    case \"variableChange\":\n      // safeguard\n      if (variableName == \"prediction\" || variableName == \"intercept\" ||\n          variableName == \"other\") { return; }\n      CLICKED_VARIABLE_NAME = variableName;\n      removePlots([\"CP\", \"PD\", \"AD\", \"FD\", \"TV\", \"AT\"]);\n      generatePlots([\"CP\", \"PD\", \"AD\", \"FD\", \"TV\", \"AT\"]);\n      break;\n\n    case \"chosePlot\":\n      removePlots([plotId]);\n      generatePlots([plotId]);\n      break;\n\n    default:\n      console.log(\"Unknown event in updatePlots \" +\n                  [event,variableName, observationId, plotId]);\n      break;\n  }\n}\n\nfunction removePlots(arrPlotId) {\n  /// check if there is something to delete and get rid of it (with tooltip)\n  arrPlotId.forEach((id) => {\n    if (!svg.select(\"#\"+id).selectAll(\"*\").empty()) {\n      svg.select(\"#\"+id).selectAll(\"*\").remove();\n      d3.select(\"body\").select(\"#tooltip\"+id).remove();\n    }\n  });\n}\n\nfunction generatePlots(arrPlotId) {\n  /// check if the plot got removed and make new one\n  arrPlotId.forEach((id) => {\n    if (svg.select(\"#\"+id).selectAll(\"*\").empty()) {\n      // execute plot function\n      mapIdPlotFunction[id]();\n    }\n  });\n}\n\n/* R2D3 Source File:   */\n//:\\\\\\ here are functions for tooltips HTML //:\\\\\\\n\nfunction bdTooltipHtml(d) {\n  var temp = \"<center>\";\n  temp += d.tooltipText;\n  temp += \"<\/center>\";\n  return temp;\n}\n\nfunction cpStaticTooltipHtml(d) {\n  // function formats tooltip text\n  var temp = \"\";\n  for (var [k, v] of Object.entries(d)) {\n    if (k === \"yhat\") {\n      k = \"prediction\";\n      temp += \"<center>\" +  k + \": \" + v + \"<\/br>\";\n      temp += \"<\/br>\";\n    } else {\n      temp += \"<center>\" +  k + \": \" + v + \"<\/br>\";\n    }\n  }\n  return temp;\n}\n\nfunction cpChangedTooltipHtml(d, addData) {\n  // function formats tooltip text with update in red\n  var temp = \"<center>\";\n  for (var [k, v] of Object.entries(addData)) {\n    if (k === \"yhat\") {\n      temp += \"prediction:<\/br>\";\n      temp += \"- before\" + \": \" + v + \"<\/br>\";\n      temp += \"- after\" + \": \" + \"<font color = \\\"red\\\">\" + d.yhat + \"<\/br><\/font>\";\n      temp += \"<\/br>\";\n    } else if (k === d.vname) {\n      temp +=  k + \": \" + \"<font color = \\\"red\\\">\"  +  d.xhat + \"<\/br><\/font>\";\n    } else {\n      temp += k + \": \" + v + \"<\/br>\";\n    }\n  }\n  temp += \"<\/center>\";\n  return temp;\n}\n\nfunction fiStaticTooltipHtml(d) {\n    let sign;\n    if (d.dropout_loss > d.full_model) sign = \"+\"; else sign = \"\";\n    var temp =  \"<center>\" + \"model loss after feature \" + d.variable\n      + \"<\/br>\" + \"<center>\" +\n      \" is permuted: \" +  Math.round(d.dropout_loss * 1000)/1000\n      + \"<\/br>\" + \"<center>\" + \"drop-out loss change: \" +\n      sign + Math.round((d.dropout_loss-d.full_model)*1000)/1000;\n    return temp;\n}\n\nfunction pdStaticTooltipHtml(d, variableName, yMean) {\n  // function formats tooltip text\n  var temp = \"\";\n  for (var [k, v] of Object.entries(d)) {\n    switch(k){\n      case \"xhat\":\n        temp += \"<center>\" +  variableName  + \": \" + v + \"<\/br>\";\n        break;\n      case \"yhat\":\n        temp += \"<center>\" +  \"average prediction\"  + \": \" + v + \"<\/br>\";\n        break;\n      case \"vname\":\n        break;\n      default:\n        temp += \"<center>\" +  k  + \": \" + v + \"<\/br>\";\n        break;\n    }\n  }\n\n  temp += \"<\/br><center>\" +\n          \"mean observation prediction:\" +\n          \"<\/br>\" + yMean + \"<\/br>\";\n  return temp;\n}\n\nfunction adStaticTooltipHtml(d, variableName, yMean) {\n  // function formats tooltip text\n  var temp = \"\";\n  for (var [k, v] of Object.entries(d)) {\n    switch(k){\n      case \"xhat\":\n        temp += \"<center>\" +  variableName  + \": \" + v + \"<\/br>\";\n        break;\n      case \"yhat\":\n        temp += \"<center>\" +  \"accumulated prediction\"  + \": \" + v + \"<\/br>\";\n        break;\n      case \"vname\":\n        break;\n      default:\n        temp += \"<center>\" +  k  + \": \" + v + \"<\/br>\";\n        break;\n    }\n  }\n\n  temp += \"<\/br><center>\" +\n          \"mean observation prediction:\" +\n          \"<\/br>\" + yMean + \"<\/br>\";\n  return temp;\n}\n\nfunction descTooltipHtml(d) {\n  var temp = \"<center>\";\n  temp += d.text;\n  temp += \"<\/center>\";\n  return temp;\n}\nsvg = d3.select(svg.node());\n/* R2D3 Source File:   */\n///:\\\\\\ --------- main modelStudio file --------- ///:\\\\\\\n///:\\\\\\ (for myself to remember):                 ///:\\\\\\\n///:\\\\\\ use CAPITAL for global variables and 'g'  ///:\\\\\\\n///:\\\\\\ use let where possible                    ///:\\\\\\\n///:\\\\\\ use class for css and id for select       ///:\\\\\\\n///:\\\\\\ use lambdas and ifelse where possible     ///:\\\\\\\n///:\\\\\\ ----------------------------------------- ///:\\\\\\\n\n/// prevent modelStudio from reloading onResize\nr2d3.onResize(function() {\n  return;\n});\n\n/// load all data\nvar obsData = data[0],\n    fiData = data[1], pdData = data[2],\n    adData = data[3], fdData = data[4],\n    tvData = data[4], atData = data[5];\n\n/// load options\nvar TIME = options.time,\n    modelName = options.model_name,\n    variableNames = options.variable_names,\n    dim = options.facet_dim,\n    footerText = options.footer_text,\n    dropDownData = options.drop_down_data,\n    EDA = options.eda,\n    WIDGET_ID = options.widget_id,\n    SCALE_PLOT = options.scale_plot,\n    SHOW_BOXPLOT = options.show_boxplot,\n    SHOW_SUBTITLE = options.show_subtitle,\n    subTitle = options.subtitle || modelName,\n    msTitle = options.ms_title,\n    barWidth = options.bar_width,\n    lineSize = options.line_size,\n    pointSize = options.point_size,\n    barColor = options.bar_color,\n    lineColor = options.line_color,\n    pointColor = options.point_color,\n    positiveColor = options.positive_color,\n    negativeColor = options.negative_color,\n    defaultColor = options.default_color,\n    bdTitle = options.bd_title,\n    bdSubtitle = options.bd_subtitle || subTitle,\n    bdBarWidth = options.bd_bar_width || barWidth,\n    bdPositiveColor = options.bd_positive_color || positiveColor,\n    bdNegativeColor = options.bd_negative_color || negativeColor,\n    bdDefaultColor = options.bd_default_color || defaultColor,\n    svTitle = options.sv_title,\n    svSubtitle = options.sv_subtitle || subTitle,\n    svBarWidth = options.sv_bar_width || barWidth,\n    svPositiveColor = options.sv_positive_color || positiveColor,\n    svNegativeColor = options.sv_negative_color || negativeColor,\n    cpTitle = options.cp_title,\n    cpSubtitle = options.cp_subtitle || subTitle,\n    cpBarWidth = options.cp_bar_width || barWidth,\n    cpLineSize = options.cp_line_size || lineSize,\n    cpPointSize = options.cp_point_size || pointSize,\n    cpBarColor = options.cp_bar_color || barColor,\n    cpLineColor = options.cp_line_color || lineColor,\n    cpPointColor = options.cp_point_color || pointColor,\n    fiTitle = options.fi_title,\n    fiSubtitle = options.fi_subtitle || subTitle,\n    fiBarWidth = options.fi_bar_width || barWidth,\n    fiBarColor = options.fi_bar_color || barColor,\n    pdTitle = options.pd_title,\n    pdSubtitle = options.pd_subtitle || subTitle,\n    pdBarWidth = options.pd_bar_width || barWidth,\n    pdLineSize = options.pd_line_size || lineSize,\n    pdBarColor = options.pd_bar_color || barColor,\n    pdLineColor = options.pd_line_color || lineColor,\n    adTitle = options.ad_title,\n    adSubtitle = options.ad_subtitle || subTitle,\n    adBarWidth = options.ad_bar_width || barWidth,\n    adLineSize = options.ad_line_size || lineSize,\n    adBarColor = options.ad_bar_color || barColor,\n    adLineColor = options.ad_line_color || lineColor,\n    fdTitle = options.fd_title,\n    fdSubtitle = options.fd_subtitle || subTitle,\n    fdBarWidth = options.fd_bar_width || barWidth,\n    fdBarColor = options.fd_bar_color || barColor,\n    tvTitle = options.tv_title,\n    tvSubtitle = options.tv_subtitle || subTitle,\n    tvPointSize = options.tv_point_size || pointSize,\n    tvPointColor = options.tv_point_color || pointColor,\n    atTitle = options.at_title,\n    atSubtitle = options.at_subtitle || subTitle,\n    atBarWidth = options.at_bar_width || barWidth,\n    atLineSize = options.at_line_size || lineSize,\n    atPointSize = options.at_point_size || pointSize,\n    atBarColor = options.at_bar_color || barColor,\n    atLineColor = options.at_line_color || lineColor,\n    atPointColor = options.at_point_color || pointColor;\n\n/// for observation choice\nvar observationIds = Object.keys(obsData);\n\n/// set global variables\nvar CLICKED_VARIABLE_NAME = variableNames[0],\n    CLICKED_OBSERVATION_ID = observationIds[0],\n    IS_BUTTON_CLICKED = false;\n\n/// set dimensions\nvar margin = {top: options.margin_top, right: options.margin_right,\n              bottom: options.margin_bottom, left: options.margin_left,\n              inner: options.margin_inner,\n              small: options.margin_small, big: options.margin_big,\n              ytitle: options.margin_ytitle};\n\nvar w = options.w, h = options.h;\n\nvar plotWidth = w + margin.left + margin.right,\n    plotHeight = h + margin.top + margin.bottom;\n\nvar studioMargin = {top: 50, bottom: 50},\n    studioWidth = dim[1]*plotWidth,\n    studioHeight = studioMargin.top + dim[0]*plotHeight + studioMargin.bottom;\n\n/// should subtitle be displayed and plot height be extended\nvar additionalHeight = 0;\nif (!SHOW_SUBTITLE) {\n  additionalHeight = 25;\n  bdSubtitle = null;\n  svSubtitle = null;\n  cpSubtitle = null;\n  fiSubtitle = null;\n  pdSubtitle = null;\n  adSubtitle = null;\n  fdSubtitle = null;\n  tvSubtitle = null;\n  atSubtitle = null;\n}\n\n/// for plot chosing\nvar notVisiblePlots = EDA ?\n                       [{id:\"BD\", text: bdTitle + \" [Local]\"},\n                       {id:\"SV\", text: svTitle + \" [Local]\"},\n                       {id:\"CP\", text: cpTitle + \" [Local]\"},\n                       {id:\"FI\", text: fiTitle + \" [Global]\"},\n                       {id:\"PD\", text: pdTitle + \" [Global]\"},\n                       {id:\"AD\", text: adTitle + \" [Global]\"},\n                       {id:\"FD\", text: fdTitle + \" [EDA]\"},\n                       {id:\"TV\", text: tvTitle + \" [EDA]\"},\n                       {id:\"AT\", text: atTitle + \" [EDA]\"}] :\n                       [{id:\"BD\", text: bdTitle + \" [Local]\"},\n                       {id:\"SV\", text: svTitle + \" [Local]\"},\n                       {id:\"CP\", text: cpTitle + \" [Local]\"},\n                       {id:\"FI\", text: fiTitle + \" [Global]\"},\n                       {id:\"PD\", text: pdTitle + \" [Global]\"},\n                       {id:\"AD\", text: adTitle + \" [Global]\"}];\n\nvar visiblePlots = [];\n\n/// generate facet x,y coordinates with grid index\nvar facetData = [], id = 0;\nfor (let i = 0; i < dim[0]; i++) {\n  for (let j = 0; j < dim[1]; j++) {\n    facetData.push({x: 0 + j*plotWidth,\n                    y: studioMargin.top + i*plotHeight,\n                    index: id});\n    id++;\n  }\n}\n\n///:\\\\\\\ninitializeStudio();\n///:\\\\\\\n\nfunction initializeStudio() {\n  /// this function initializes modelStudio (used only once, at start)\n\n  // top decorations\n  var TOP_G = svg.append(\"g\")\n                 .attr(\"class\", \"TOP_G\");\n\n  TOP_G.append(\"text\")\n       .attr(\"class\", \"mainTitle\")\n       .attr(\"x\", 15)\n       .attr(\"y\", 30)\n       .text(msTitle);\n\n  TOP_G.append(\"line\")\n       .attr(\"class\", \"mainLine\")\n       .attr(\"x1\", 10)\n       .attr(\"x2\", studioWidth - 10)\n       .attr(\"y1\", studioMargin.top - margin.big)\n       .attr(\"y2\", studioMargin.top - margin.big);\n\n  ///:\\\\\\ add select observation input\n  let tempW = calculateTextWidth(dropDownData.map(e => e.text))*1.6 + 18; // 15px bold 600\n\n  // center the ms\n  d3.select(\"#\" + WIDGET_ID)\n    .style('position', 'absolute')\n    .style('left', 0)\n    .style('right', 0)\n    .style('margin', 'auto');\n\n  var input = d3.select(\"#\" + WIDGET_ID)\n                .append(\"select\")\n                .attr(\"id\",\"input\")\n                .style(\"position\", \"absolute\") // to make input appear on top\n                .style(\"left\", (studioWidth - margin.big - tempW)+\"px\")\n                .style(\"top\", -studioHeight + 180)\n                .style(\"font-size\", \"15px\")\n                .style(\"font-weight\", 600)\n                .style(\"color\", \"#371ea3\");\n\n  input.selectAll()\n       .data(dropDownData)\n       .enter()\n       .append(\"option\")\n       .attr(\"value\", d => d.id)\n       .text(d => d.text)\n       .style(\"font-size\", \"15px\")\n       .style(\"font-weight\", 600)\n       .style(\"color\", \"#371ea3\");\n\n  input.on(\"change\", function() {\n\n    // update observation specific plots\n    updatePlots(event = \"observationChange\",\n                variableName = null,\n                observationId = this.value,\n                plotId = null);\n  });\n  ///:\\\\\\\n\n  // bottom decorations\n  var BOTTOM_G = svg.append(\"g\")\n                    .attr(\"class\", \"BOTTOM_G\");\n\n  BOTTOM_G.append(\"text\")\n          .attr(\"class\", \"footerTitle\")\n          .attr(\"x\", studioWidth - 15 - getTextWidth(footerText, 12, 'Fira Sans, sans-serif'))\n          .attr(\"y\", studioHeight - studioMargin.bottom + 25)\n          .text(footerText);\n\n  BOTTOM_G.append(\"line\")\n          .attr(\"class\", \"footerLine\")\n          .attr(\"x1\", 10)\n          .attr(\"x2\", studioWidth - 10)\n          .attr(\"y1\", studioHeight - studioMargin.bottom + margin.big)\n          .attr(\"y2\", studioHeight - studioMargin.bottom + margin.big);\n\n  // middle buttons\n  var MIDDLE_G = svg.append(\"g\")\n                    .attr(\"class\", \"MIDDLE_G\");\n\n  var enterChoiceButtons = MIDDLE_G.selectAll()\n                                   .data(facetData)\n                                   .enter()\n                                   .append(\"rect\")\n                                   .attr(\"class\", \"enterChoiceButton\")\n                                   .attr(\"id\", (d,i) => \"enterChoiceButton\"+i)\n                                   .attr(\"width\", plotWidth)\n                                   .attr(\"height\", plotHeight)\n                                   .attr(\"x\", d => d.x)\n                                   .attr(\"y\", d => d.y);\n\n  // add `+` to buttons\n  MIDDLE_G.selectAll()\n          .data(facetData)\n          .enter()\n          .append(\"line\")\n          .attr(\"class\", \"mainLine\")\n          .attr(\"id\", (d,i) => \"enterChoiceButton\"+i)\n          .attr(\"x1\", d => d.x + plotWidth/2)\n          .attr(\"x2\", d => d.x + plotWidth/2)\n          .attr(\"y1\", d => d.y + plotHeight/2 - margin.big)\n          .attr(\"y2\", d => d.y + plotHeight/2 + margin.big);\n\n  MIDDLE_G.selectAll()\n          .data(facetData)\n          .enter()\n          .append(\"line\")\n          .attr(\"class\", \"mainLine\")\n          .attr(\"id\", (d,i) => \"enterChoiceButton\"+i)\n          .attr(\"x1\", d => d.x + plotWidth/2 - margin.big)\n          .attr(\"x2\", d => d.x + plotWidth/2 + margin.big)\n          .attr(\"y1\", d => d.y + plotHeight/2)\n          .attr(\"y2\", d => d.y + plotHeight/2);\n\n  // events\n  enterChoiceButtons.on('mouseover', function() { d3.select(this).style(\"opacity\", 1);})\n                    .on('mouseout', function() { d3.select(this).style(\"opacity\", 0.5);})\n                    .on(\"click\", function(d,i) {\n\n                      // block other buttons\n                      if (!IS_BUTTON_CLICKED) {\n                        IS_BUTTON_CLICKED = true;\n                        // allow for plot choice or exit choice\n                        showChoiceButtons(this, i);\n                      }\n                    });\n\n  var exitChoiceButtons = MIDDLE_G.selectAll()\n                                  .data(facetData)\n                                  .enter()\n                                  .append(\"rect\")\n                                  .attr(\"class\", \"exitChoiceButton\")\n                                  .attr(\"id\", (d,i) => \"exitChoiceButton\"+i)\n                                  .attr(\"width\", plotWidth - margin.big)\n                                  .attr(\"height\", plotHeight - margin.big)\n                                  .attr(\"x\", d => d.x + margin.small)\n                                  .attr(\"y\", d => d.y + margin.small)\n                                  .style(\"visibility\", \"hidden\");\n\n  // events\n  exitChoiceButtons.on(\"click\", function(d,i) {\n\n                     // delete chosePlotButtons\n                     svg.select(\"#chosePlotButton\"+i).remove();\n                     // hide this button\n                     svg.select(\"#exitChoiceButton\"+i).style(\"visibility\", \"hidden\");\n                     // show enterChoiceButton\n                     svg.selectAll(\"#enterChoiceButton\"+i).style(\"visibility\", \"visible\");\n                     // let the user click other buttons\n                     IS_BUTTON_CLICKED = false;\n                   });\n\n  var exitPlotButtons = MIDDLE_G.selectAll()\n                                .data(facetData)\n                                .enter()\n                                .append(\"g\")\n                                .attr(\"id\", (d,i) => \"exitPlotButton\"+i)\n                                .attr(\"transform\", d => \"translate(\" +\n                                (d.x + margin.left + w - 2*margin.big) + \",\" +\n                                (d.y + margin.small) + \")\")\n                                .style(\"visibility\", \"hidden\");\n\n  exitPlotButtons.append(\"rect\")\n                 .attr(\"class\", \"descriptionBox\")\n                 .attr(\"width\", 2*margin.big)\n                 .attr(\"height\", 2*margin.big)\n                 .attr(\"rx\", 2*margin.big)\n                 .attr(\"ry\", 2*margin.big);\n\n  exitPlotButtons.append(\"text\")\n                 .attr(\"class\", \"descriptionLabel\")\n                 .attr(\"dy\", \"1.05em\")\n                 .attr(\"x\", 6)\n                 .text(\"X\");\n\n  // events\n  exitPlotButtons.selectAll(\"*\")\n                 .on(\"mouseover\", function() { d3.select(this).style(\"cursor\", \"pointer\");})\n                 .on(\"mouseout\", function() { d3.select(this).style(\"cursor\", \"auto\");})\n                 .on(\"click\", function(d) {\n\n                   let j = d.index;\n                   // available only when no enterPlotButton clicked\n                   if (!IS_BUTTON_CLICKED) {\n                     // which plot is in this place?\n                     let temp = visiblePlots.filter(el => el.index == j)[0];\n                     // add this plot to not visible\n                     notVisiblePlots.push({text: temp.text, id: temp.id});\n                     // delete this plot from visible\n                     visiblePlots = visiblePlots.filter(el => el.id !== temp.id);\n                     // hide this button\n                     svg.select(\"#exitPlotButton\"+j).style(\"visibility\", \"hidden\");\n                     // hide plot\n                     svg.select(\"#\"+temp.id)\n                        .style(\"visibility\", \"hidden\");\n                     // show enterChoiceButton\n                     svg.selectAll(\"#enterChoiceButton\"+j).style(\"visibility\", \"visible\");\n                   }\n                 });\n\n  function showChoiceButtons(object, j) {\n    /// chosePlotButtons controller\n\n    // hide this button\n    svg.selectAll(\"#enterChoiceButton\"+j).style(\"visibility\", \"hidden\");\n    // show exitChoiceButton\n    svg.select(\"#exitChoiceButton\"+j).style(\"visibility\", \"visible\");\n\n    // where to place text?\n    let plotWidth = parseFloat(d3.select(object).attr(\"width\")),\n        plotHeight = parseFloat(d3.select(object).attr(\"height\")),\n        x = parseFloat(d3.select(object).attr(\"x\")),\n        y = parseFloat(d3.select(object).attr(\"y\"));\n\n    let chosePlotButtons = MIDDLE_G.append(\"g\")\n                                   .attr(\"id\",\"chosePlotButton\"+j);\n\n    chosePlotButtons.selectAll()\n             .data(notVisiblePlots)\n             .enter()\n             .append(\"text\")\n             .attr(\"class\", \"bigTitle\")\n             .attr(\"id\", d => d.id)\n             .attr(\"x\", x + plotWidth/2)\n             .attr(\"y\", (d,i) => y + plotHeight/2 + 25*i - (notVisiblePlots.length/2)*25)\n             .attr(\"text-anchor\", \"middle\")\n             .text(d => d.text)\n             .on(\"mouseover\", function() { d3.select(this).style(\"cursor\", \"pointer\");})\n             .on(\"mouseout\", function() { d3.select(this).style(\"cursor\", \"auto\");})\n             .on(\"click\", function(d) {\n\n               // when clicking on text, hide exitChoiceButton\n               svg.selectAll(\"#exitChoiceButton\"+j).style(\"visibility\", \"hidden\");\n               // delete chosePlotButtons\n               svg.select(\"#chosePlotButton\"+j).remove();\n               // add this plot to visible\n               visiblePlots.push({text: d.text, id: this.id, index: j });\n               // delete this plot from not visible\n               notVisiblePlots = notVisiblePlots.filter(el => el.id !== this.id);\n\n               updatePlots(event = \"chosePlot\",\n                           variableName = null,\n                           observationId = null,\n                           plotId = this.id);\n\n               // show plot and move it to the right place\n               // margin.big added because translate 0 is -10\n               svg.select(\"#\"+this.id)\n                  .attr(\"transform\",\"translate(\" + (x) + \",\" + (y + 1.5*margin.big) + \")\")\n                  .style(\"visibility\", \"visible\");\n\n               // make exit button visible\n               svg.select(\"#exitPlotButton\"+j).style(\"visibility\", \"visible\");\n\n               // let the user click other buttons\n               IS_BUTTON_CLICKED = false;\n             });\n  }\n\n  if (facetData.length >= 1) {\n    svg.selectAll('.enterChoiceButton').filter('#enterChoiceButton0').dispatch('click');\n    svg.select(\"#chosePlotButton0\").select(\"#BD\").dispatch('click');\n  }\n\n  if (facetData.length >= 2) {\n    svg.selectAll('.enterChoiceButton').filter('#enterChoiceButton1').dispatch('click');\n  }\n}\n};","style":"/* R2D3 Source File:   */\ntext {\n  font-family:'Fira Sans';\n  font-style:normal;\n  fill: #371ea3;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n}\n\n.bigTitle {\n  font-family:'Fira Sans';\n  font-style:normal;\n  font-weight: 700;\n  font-size: 18px;\n  text-align: left;\n}\n\n.smallTitle {\n  font-family:'Fira Sans';\n  font-style:normal;\n  font-weight: 700;\n  font-size: 13px;\n  text-align: left;\n}\n\n.axisTitle {\n  font-family:'Fira Sans';\n  font-style:normal;\n  font-weight: 700;\n  font-size: 13px;\n  text-align: center;\n}\n\n.axisLabel {\n  font-family:'Fira Sans';\n  font-style:normal;\n  font-weight: 500;\n  font-size: 11px;\n}\n\n.axisLabel .domain {\n    stroke: #371ea3;\n}\n\n.legendTitle {\n  font-family:'Fira Sans';\n  font-style: normal;\n  font-weight: 500;\n  font-size: 13px;\n  text-align: left;\n}\n\n.legendLabel {\n  font-family:'Fira Sans';\n  font-style: normal;\n  font-weight: 500;\n  font-size: 11px;\n  text-align: left;\n}\n\n.legendBox {\n  fill: #ceced9;\n  opacity: 0.5;\n}\n\n.interceptLine {\n  stroke: #371ea3;\n\tstroke-width: 1px;\n\tstroke-opacity: 1;\n\tstroke-linecap: \"butt\";\n}\n\n.dotLine {\n\tfill: none;\n\tstroke: #371ea3;\n\tstroke-width: 0.7px;\n}\n\n.grid .tick line {\n  /*stroke: #f0f0f4;*/\n  stroke: #ceced9;\n  opacity: 0.5;\n  stroke-width: 1px\n}\n\n.mainTitle {\n  font-family:'Fira Sans';\n  font-style: normal;\n  font-size: 25px;\n  font-weight: 500;\n}\n\n.mainLine {\n  stroke: #371ea3;\n  stroke-width: 1.5px;\n  stroke-opacity: 1;\n  stroke-linecap: butt;\n}\n\n.footerTitle {\n  font-family:'Fira Sans';\n  font-style: normal;\n  font-size: 12px;\n  font-weight: 400;\n}\n\n.footerLine {\n  stroke: #371ea3;\n  stroke-width: 1px;\n  stroke-opacity: 0.5;\n  stroke-linecap: butt;\n}\n\n\n.enterChoiceButton {\n  fill: #ceced9;\n  opacity: 0.5;\n  stroke:#371ea3;\n  stroke-width:2;\n}\n\n.exitChoiceButton {\n  fill: #FFFFFF;\n  stroke:#371ea3;\n  stroke-width:2;\n}\n\n.descriptionBox {\n  fill: #ceced9;\n  opacity: 0.5;\n}\n\n.descriptionLabel {\n  font-family:'Fira Sans';\n  font-style: normal;\n  fill: #371ea3;\n  font-weight: 700;\n  font-size: 14px;\n}","version":4,"theme":{"default":{"background":"#FFFFFF","foreground":"#000000"},"runtime":{"background":"#FFFFFF","foreground":"#000000"}},"useShadow":false},"evals":[],"jsHooks":[]}</script>
<script type="application/htmlwidget-sizing" data-for="widget-5d22e0ba8702fa9436bcd6a5d79e01ec">{"viewer":{"width":1090,"height":900,"padding":10,"fill":false},"browser":{"width":1090,"height":900,"padding":10,"fill":false}}</script>
</body>
</html>
