Metadata about the Augur implemntation status of CHAOSS metrics.
",
"success": {
"examples": [
{
"title": "Success-Response:",
"content": "[\n {\n \"groups\": [\n {\n \"diversity-inclusion\": \"Diversity and Inclusion\",\n \"growth-maturity-decline\": \"Growth, Maturity, and Decline\",\n \"risk\": \"Risk\",\n \"value\": \"Value\",\n \"activity\": \"Activity\",\n \"experimental\": \"Experimental\"\n }\n ],\n \"sources\": [\n \"ghtorrent\",\n \"ghtorrentplus\",\n \"githubapi\",\n \"downloads\",\n \"facade\",\n \"publicwww\",\n \"librariesio\",\n \"git\"\n ],\n \"metric_types\": [\n \"timeseries\",\n \"metric\",\n \"git\"\n ],\n \"tags\": {\n \"listening\": \"diversity-inclusion\",\n \"speaking\": \"diversity-inclusion\",\n ...\n }\n }\n]",
"type": "json"
}
]
},
"version": "0.0.0",
"filename": "../augur/datasources/metrics_status/routes.py",
"groupTitle": "Metrics_Status"
},
{
"type": "get",
"url": "/ghtorrent_range",
"title": "GHTorrent Date Range",
"name": "GhtorrentRange",
"group": "Utility",
"description": "Utility endpoint to show the range of dates GHTorrent covers.
",
"success": {
"examples": [
{
"title": "Success-Response:",
"content": "[\n {\n \"date\": \"2008-04-10T17:25:06-07:00\",\n \"release\": \"v0.9.1\"\n },\n {\n \"date\": \"2008-04-10T17:25:07-07:00\",\n \"release\": \"v0.9.2\"\n }\n]",
"type": "json"
}
]
},
"version": "0.0.0",
"filename": "../augur/datasources/ghtorrent/routes.py",
"groupTitle": "Utility"
}
]
diff --git a/frontend/public/api_docs/api_project.js b/frontend/public/api_docs/api_project.js
index 702aa839c5..36bb9c8acb 100644
--- a/frontend/public/api_docs/api_project.js
+++ b/frontend/public/api_docs/api_project.js
@@ -1 +1 @@
-define({
"name": "",
"version": "0.0.0",
"description": "",
"sampleUrl": false,
"defaultVersion": "0.0.0",
"apidoc": "0.3.0",
"generator": {
"name": "apidoc",
"time": "2019-02-26T00:49:12.194Z",
"url": "http://apidocjs.com",
"version": "0.17.7"
}
});
+define({
"name": "",
"version": "0.0.0",
"description": "",
"sampleUrl": false,
"defaultVersion": "0.0.0",
"apidoc": "0.3.0",
"generator": {
"name": "apidoc",
"time": "2019-03-11T04:08:47.058Z",
"url": "http://apidocjs.com",
"version": "0.17.7"
}
});
diff --git a/frontend/public/api_docs/api_project.json b/frontend/public/api_docs/api_project.json
index cb5733f27c..26a942e60d 100644
--- a/frontend/public/api_docs/api_project.json
+++ b/frontend/public/api_docs/api_project.json
@@ -1 +1 @@
-{
"name": "",
"version": "0.0.0",
"description": "",
"sampleUrl": false,
"defaultVersion": "0.0.0",
"apidoc": "0.3.0",
"generator": {
"name": "apidoc",
"time": "2019-02-26T00:49:12.194Z",
"url": "http://apidocjs.com",
"version": "0.17.7"
}
}
+{
"name": "",
"version": "0.0.0",
"description": "",
"sampleUrl": false,
"defaultVersion": "0.0.0",
"apidoc": "0.3.0",
"generator": {
"name": "apidoc",
"time": "2019-03-11T04:08:47.058Z",
"url": "http://apidocjs.com",
"version": "0.17.7"
}
}
diff --git a/frontend/public/app.css b/frontend/public/app.css
index 1431b9eaf5..4b0429949b 100644
--- a/frontend/public/app.css
+++ b/frontend/public/app.css
@@ -2598,6 +2598,43 @@ header .search {
background: #eaeaea;
border-bottom: 1px solid #eaeaea;
}
+.tabs li.active label {
+ color: #000 !important;
+ border-bottom: 3px solid #ddd !important;
+}
+.tabs li input {
+ visibility: hidden;
+}
+.tabs li label:hover {
+ background: #eaeaea;
+}
+@media (min-width: 1230px) {
+ .tabs ul {
+ border-bottom-style: none !important;
+ margin: 0px auto;
+ }
+}
+.linechart .tabs {
+ display: table;
+ margin: 0 auto;
+ transform: translateY(-50px);
+}
+.linechart .tabs ul {
+ list-style: none;
+}
+.linechart .tabs ul li {
+ display: inline;
+}
+.tabs li label {
+ position: relative;
+ top: 1px;
+ font-style: normal;
+ display: block;
+ padding: 0.5rem 1rem;
+ border: 1px solid transparent;
+ color: rgba(0,0,0,0.5);
+ text-decoration: none;
+}
section#landing h1 {
font-size: 25px;
}
@@ -2688,6 +2725,7 @@ section.status {
width: 100%;
margin: 10px auto;
padding: 0px 30px 0px 25px;
+ transform: translateY(-26px);
}
.section {
overflow: hidden;
@@ -3162,6 +3200,17 @@ input:focus {
text-transform: uppercase;
display: block;
}
+.limiter .forgot-password {
+ width: 100%;
+}
+.limiter .forgot-password-title {
+ font-size: 24px;
+ color: #fff;
+ line-height: 1.2;
+ text-align: center;
+ text-transform: uppercase;
+ display: block;
+}
.limiter .wrap-input {
width: 100%;
position: relative;
@@ -3339,6 +3388,56 @@ input:focus {
.limiter .login-form-btn:hover:before {
opacity: 0;
}
+.limiter .dashboard-btn {
+ font-size: 16px;
+ color: #fff;
+ line-height: 1.2;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 20px;
+ min-width: 120px;
+ height: 50px;
+ border-radius: 25px;
+ background: #9152f8;
+ background: -webkit-linear-gradient(bottom, #7579ff, #b224ef);
+ background: -o-linear-gradient(bottom, #7579ff, #b224ef);
+ background: -moz-linear-gradient(bottom, #7579ff, #b224ef);
+ background: linear-gradient(bottom, #7579ff, #b224ef);
+ position: relative;
+ z-index: 1;
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+ transition: all 0.4s;
+}
+.limiter .dashboard-btn::before {
+ content: "";
+ display: block;
+ position: absolute;
+ z-index: -1;
+ width: 100%;
+ height: 100%;
+ border-radius: 25px;
+ background-color: #000;
+ top: 0;
+ left: 0;
+ opacity: 1;
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+ transition: all 0.4s;
+}
+.limiter .dashboard-btn:hover {
+ color: #fff;
+}
+.limiter .dashboard-btn:hover:before {
+ opacity: 0;
+}
@media (max-width: 576px) {
.wrap-login {
padding: 55px 15px 37px 15px;
@@ -3471,6 +3570,9 @@ input:focus {
.inputGroup html {
box-sizing: border-box;
}
+.inputGroup #placehold::-webkit-input-placeholder {
+ color: #fff;
+}
.inputGroup code {
background-color: #9aa3ac;
padding: 0 8px;
@@ -3512,6 +3614,58 @@ input:focus {
justify-content: center;
padding-bottom: 14px;
}
+.switch {
+ position: relative;
+ margin: 10px auto;
+ width: 480px;
+ height: 40px;
+ color: #45f;
+ font-size: 25px;
+ border-radius: 10px;
+ transform: translateY(-30px);
+}
+.quality {
+ position: relative;
+ display: inline-block;
+ width: 33.33%;
+ height: 100%;
+ line-height: 40px;
+}
+.quality:first-child label {
+ border-radius: 5px 0 0 5px;
+}
+.quality:last-child label {
+ border-radius: 0 5px 5px 0;
+}
+.quality label {
+ border: 1px solid #000;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ cursor: pointer;
+ font-style: italic;
+ text-align: center;
+ transition: transform 0.4s, color 0.4s, background-color 0.4s;
+}
+.quality input[type="radio"] {
+ appearance: none;
+ width: 0;
+ height: 0;
+ opacity: 0;
+}
+.quality input[type="radio"]:focus {
+ outline: 0;
+ outline-offset: 0;
+}
+.quality input[type="radio"]:checked ~ label {
+ background-color: #ff838d;
+ color: #111;
+}
+.quality input[type="radio"]:active ~ label {
+ transform: scale(1.05);
+}
.fullwidth {
width: 100vw;
position: relative;
@@ -3520,6 +3674,11 @@ input:focus {
margin-left: -50vw;
margin-right: -50vw;
}
+.parent {
+ position: absolute;
+ z-index: 1 !important;
+ align-content: center;
+}
@-moz-keyframes spin {
0% {
transform: rotate(0deg);
diff --git a/frontend/public/app.css.map b/frontend/public/app.css.map
new file mode 100644
index 0000000000..b631c0d36f
--- /dev/null
+++ b/frontend/public/app.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["app/include/kube/kube.css","app/include/metricsgraphics.css","app/styles/ghdata.styl"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5mEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"public/app.css","sourcesContent":["/*\n\tKube. CSS & JS Framework\n\tVersion 6.5.2\n\tUpdated: February 2, 2017\n\n\thttp://imperavi.com/kube/\n\n\tCopyright (c) 2009-2017, Imperavi LLC.\n\tLicense: MIT\n*/\nhtml {\n box-sizing: border-box; }\n\n*,\n*:before,\n*:after {\n box-sizing: inherit; }\n\n* {\n margin: 0;\n padding: 0;\n outline: 0;\n -webkit-overflow-scrolling: touch; }\n\nimg,\nvideo,\naudio {\n max-width: 100%; }\n\nimg,\nvideo {\n height: auto; }\n\nsvg {\n max-height: 100%; }\n\niframe {\n border: none; }\n\n::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n position: relative;\n bottom: 0.15rem;\n font-size: 115%;\n margin-right: 3px; }\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; }\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button {\n -webkit-appearance: none; }\n\n.black {\n color: #0d0d0e; }\n\n.inverted {\n color: #fff; }\n\n.error {\n color: #f03c69; }\n\n.success {\n color: #35beb1; }\n\n.warning {\n color: #f7ba45; }\n\n.focus {\n color: #1c86f2; }\n\n.aluminum {\n color: #f8f8f8; }\n\n.silver {\n color: #e0e1e1; }\n\n.lightgray {\n color: #d4d4d4; }\n\n.gray {\n color: #bdbdbd; }\n\n.midgray {\n color: #676b72; }\n\n.darkgray {\n color: #313439; }\n\n.bg-black {\n background-color: #0d0d0e; }\n\n.bg-inverted {\n background-color: #fff; }\n\n.bg-error {\n background-color: #f03c69; }\n\n.bg-success {\n background-color: #35beb1; }\n\n.bg-warning {\n background-color: #f7ba45; }\n\n.bg-focus {\n background-color: #1c86f2; }\n\n.bg-aluminum {\n background-color: #f8f8f8; }\n\n.bg-silver {\n background-color: #e0e1e1; }\n\n.bg-lightgray {\n background-color: #d4d4d4; }\n\n.bg-gray {\n background-color: #bdbdbd; }\n\n.bg-midgray {\n background-color: #676b72; }\n\n.bg-darkgray {\n background-color: #313439; }\n\n.bg-highlight {\n background-color: #edf2ff; }\n\nhtml,\nbody {\n font-size: 16px;\n line-height: 24px; }\n\nbody {\n font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;\n color: #313439;\n background-color: transparent; }\n\na {\n color: #3794de; }\n\na:hover {\n color: #f03c69; }\n\nh1.title, h1, h2, h3, h4, h5, h6 {\n font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;\n font-weight: bold;\n color: #0d0d0e;\n text-rendering: optimizeLegibility;\n margin-bottom: 16px; }\n\nh1.title {\n font-size: 60px;\n line-height: 64px;\n margin-bottom: 8px; }\n\nh1,\n.h1 {\n font-size: 48px;\n line-height: 52px; }\n\nh2,\n.h2 {\n font-size: 36px;\n line-height: 40px; }\n\nh3,\n.h3 {\n font-size: 24px;\n line-height: 32px; }\n\nh4,\n.h4 {\n font-size: 21px;\n line-height: 32px; }\n\nh5,\n.h5 {\n font-size: 18px;\n line-height: 28px; }\n\nh6,\n.h6 {\n font-size: 16px;\n line-height: 24px; }\n\nh1 a, .h1 a,\nh2 a, .h2 a,\nh3 a, .h3 a,\nh4 a, .h4 a,\nh5 a, .h5 a,\nh6 a, .h6 a {\n color: inherit; }\n\np + h2,\np + h3,\np + h4,\np + h5,\np + h6,\nul + h2,\nul + h3,\nul + h4,\nul + h5,\nul + h6,\nol + h2,\nol + h3,\nol + h4,\nol + h5,\nol + h6,\ndl + h2,\ndl + h3,\ndl + h4,\ndl + h5,\ndl + h6,\nblockquote + h2,\nblockquote + h3,\nblockquote + h4,\nblockquote + h5,\nblockquote + h6,\nhr + h2,\nhr + h3,\nhr + h4,\nhr + h5,\nhr + h6,\npre + h2,\npre + h3,\npre + h4,\npre + h5,\npre + h6,\ntable + h2,\ntable + h3,\ntable + h4,\ntable + h5,\ntable + h6,\nform + h2,\nform + h3,\nform + h4,\nform + h5,\nform + h6,\nfigure + h2,\nfigure + h3,\nfigure + h4,\nfigure + h5,\nfigure + h6 {\n margin-top: 24px; }\n\nul,\nul ul,\nul ol,\nol,\nol ul,\nol ol {\n margin: 0 0 0 24px; }\n\nol ol li {\n list-style-type: lower-alpha; }\n\nol ol ol li {\n list-style-type: lower-roman; }\n\nnav ul,\nnav ol {\n margin: 0;\n list-style: none; }\n nav ul ul,\n nav ul ol,\n nav ol ul,\n nav ol ol {\n margin-left: 24px; }\n\ndl dt {\n font-weight: bold; }\n\ndd {\n margin-left: 24px; }\n\np, blockquote, hr, pre, ol, ul, dl, table, fieldset, figure, address, form {\n margin-bottom: 16px; }\n\nhr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n margin-top: -1px; }\n\nblockquote {\n padding-left: 1rem;\n border-left: 4px solid rgba(0, 0, 0, 0.1);\n font-style: italic;\n color: rgba(49, 52, 57, 0.65); }\n blockquote p {\n margin-bottom: .5rem; }\n\ntime, cite, small, figcaption {\n font-size: 87.5%; }\n\ncite {\n opacity: .6; }\n\nabbr[title], dfn[title] {\n border-bottom: 1px dotted rgba(0, 0, 0, 0.5);\n cursor: help; }\n\nvar {\n font-size: 16px;\n opacity: .6;\n font-style: normal; }\n\nmark, code, samp, kbd {\n position: relative;\n top: -1px;\n padding: 4px 4px 2px 4px;\n display: inline-block;\n line-height: 1;\n color: rgba(49, 52, 57, 0.85); }\n\ncode {\n background: #e0e1e1; }\n\nmark {\n background: #f7ba45; }\n\nsamp {\n color: #fff;\n background: #1c86f2; }\n\nkbd {\n border: 1px solid rgba(0, 0, 0, 0.1); }\n\nsub,\nsup {\n font-size: x-small;\n line-height: 0;\n margin-left: 1rem/4;\n position: relative; }\n\nsup {\n top: 0; }\n\nsub {\n bottom: 1px; }\n\npre, code, samp, var, kbd {\n font-family: Consolas, Monaco, \"Courier New\", monospace; }\n\npre, code, samp, var, kbd, mark {\n font-size: 87.5%; }\n\npre,\npre code {\n background: #f8f8f8;\n padding: 0;\n top: 0;\n display: block;\n line-height: 20px;\n color: rgba(49, 52, 57, 0.85);\n overflow: none;\n white-space: pre-wrap; }\n\npre {\n padding: 1rem; }\n\nfigcaption {\n opacity: .6; }\n\nfigure figcaption {\n position: relative;\n top: -1rem/2; }\n\nfigure pre {\n background: none;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 4px; }\n\nfigure .video-container,\nfigure pre {\n margin-bottom: 8px; }\n\n.text-left {\n text-align: left; }\n\n.text-center {\n text-align: center; }\n\n.text-right {\n text-align: right; }\n\nul.unstyled {\n margin-left: 0; }\n\nul.unstyled,\nul.unstyled ul {\n list-style: none; }\n\n.monospace {\n font-family: Consolas, Monaco, \"Courier New\", monospace; }\n\n.upper {\n text-transform: uppercase; }\n\n.lower {\n text-transform: lowercase; }\n\n.italic {\n font-style: italic !important; }\n\n.strong {\n font-weight: bold !important; }\n\n.normal {\n font-weight: normal !important; }\n\n.muted {\n opacity: .55; }\n\na.muted {\n color: #0d0d0e; }\n\na.muted:hover {\n opacity: 1; }\n\n.black {\n color: #0d0d0e; }\n\n.smaller {\n font-size: 12px;\n line-height: 20px; }\n\n.small {\n font-size: 14px;\n line-height: 20px; }\n\n.big {\n font-size: 18px;\n line-height: 28px; }\n\n.large {\n font-size: 20px;\n line-height: 32px; }\n\n.end {\n margin-bottom: 0 !important; }\n\n.highlight {\n background-color: #edf2ff; }\n\n.nowrap,\n.nowrap td {\n white-space: nowrap; }\n\n@media (min-width: 1230px) and (max-width: 1024px) {\n .columns-2,\n .columns-3,\n .columns-4 {\n column-gap: 24px; }\n .columns-2 {\n column-count: 2; }\n .columns-3 {\n column-count: 3; }\n .columns-4 {\n column-count: 4; } }\n\n.row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap; }\n @media (max-width: 1230px) {\n .row {\n flex-direction: column;\n flex-wrap: nowrap; } }\n .row.gutters,\n .row.gutters > .row {\n margin-left: -2%; }\n @media (max-width: 1230px) {\n .row.gutters,\n .row.gutters > .row {\n margin-left: 0; } }\n .row.gutters > .col,\n .row.gutters > .row > .col {\n margin-left: 2%; }\n @media (max-width: 1230px) {\n .row.gutters > .col,\n .row.gutters > .row > .col {\n margin-left: 0; } }\n .row.around {\n justify-content: space-around; }\n .row.between {\n justify-content: space-between; }\n .row.auto .col {\n flex-grow: 1; }\n\n.col-1 {\n width: 8.33333%; }\n\n.offset-1 {\n margin-left: 8.33333%; }\n\n.col-2 {\n width: 16.66667%; }\n\n.offset-2 {\n margin-left: 16.66667%; }\n\n.col-3 {\n width: 25%; }\n\n.offset-3 {\n margin-left: 25%; }\n\n.col-4 {\n width: 33.33333%; }\n\n.offset-4 {\n margin-left: 33.33333%; }\n\n.col-5 {\n width: 41.66667%; }\n\n.offset-5 {\n margin-left: 41.66667%; }\n\n.col-6 {\n width: 50%; }\n\n.offset-6 {\n margin-left: 50%; }\n\n.col-7 {\n width: 58.33333%; }\n\n.offset-7 {\n margin-left: 58.33333%; }\n\n.col-8 {\n width: 66.66667%; }\n\n.offset-8 {\n margin-left: 66.66667%; }\n\n.col-9 {\n width: 75%; }\n\n.offset-9 {\n margin-left: 75%; }\n\n.col-10 {\n width: 83.33333%; }\n\n.offset-10 {\n margin-left: 83.33333%; }\n\n.col-11 {\n width: 91.66667%; }\n\n.offset-11 {\n margin-left: 91.66667%; }\n\n.col-12 {\n width: 100%; }\n\n.offset-12 {\n margin-left: 100%; }\n\n.gutters > .col-1 {\n width: calc(8.33333% - 2%); }\n\n.gutters > .offset-1 {\n margin-left: calc(8.33333% + 2%) !important; }\n\n.gutters > .col-2 {\n width: calc(16.66667% - 2%); }\n\n.gutters > .offset-2 {\n margin-left: calc(16.66667% + 2%) !important; }\n\n.gutters > .col-3 {\n width: calc(25% - 2%); }\n\n.gutters > .offset-3 {\n margin-left: calc(25% + 2%) !important; }\n\n.gutters > .col-4 {\n width: calc(33.33333% - 2%); }\n\n.gutters > .offset-4 {\n margin-left: calc(33.33333% + 2%) !important; }\n\n.gutters > .col-5 {\n width: calc(41.66667% - 2%); }\n\n.gutters > .offset-5 {\n margin-left: calc(41.66667% + 2%) !important; }\n\n.gutters > .col-6 {\n width: calc(50% - 2%); }\n\n.gutters > .offset-6 {\n margin-left: calc(50% + 2%) !important; }\n\n.gutters > .col-7 {\n width: calc(58.33333% - 2%); }\n\n.gutters > .offset-7 {\n margin-left: calc(58.33333% + 2%) !important; }\n\n.gutters > .col-8 {\n width: calc(66.66667% - 2%); }\n\n.gutters > .offset-8 {\n margin-left: calc(66.66667% + 2%) !important; }\n\n.gutters > .col-9 {\n width: calc(75% - 2%); }\n\n.gutters > .offset-9 {\n margin-left: calc(75% + 2%) !important; }\n\n.gutters > .col-10 {\n width: calc(83.33333% - 2%); }\n\n.gutters > .offset-10 {\n margin-left: calc(83.33333% + 2%) !important; }\n\n.gutters > .col-11 {\n width: calc(91.66667% - 2%); }\n\n.gutters > .offset-11 {\n margin-left: calc(91.66667% + 2%) !important; }\n\n.gutters > .col-12 {\n width: calc(100% - 2%); }\n\n.gutters > .offset-12 {\n margin-left: calc(100% + 2%) !important; }\n\n@media (max-width: 1230px) {\n [class^='offset-'],\n [class*=' offset-'] {\n margin-left: 0; } }\n\n.first {\n order: -1; }\n\n.last {\n order: 1; }\n\n@media (max-width: 1230px) {\n .row .col {\n margin-left: 0;\n width: 100%; }\n .row.gutters .col {\n margin-bottom: 16px; }\n .first-sm {\n order: -1; }\n .last-sm {\n order: 1; } }\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n max-width: 100%;\n width: 100%;\n empty-cells: show;\n font-size: 15px;\n line-height: 24px; }\n\ntable caption {\n text-align: left;\n font-size: 14px;\n font-weight: 500;\n color: #676b72; }\n\nth {\n text-align: left;\n font-weight: 700;\n vertical-align: bottom; }\n\ntd {\n vertical-align: top; }\n\ntr.align-middle td,\ntd.align-middle {\n vertical-align: middle; }\n\nth,\ntd {\n padding: 1rem 1rem;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05); }\n th:first-child,\n td:first-child {\n padding-left: 0; }\n th:last-child,\n td:last-child {\n padding-right: 0; }\n\ntfoot th,\ntfoot td {\n color: rgba(49, 52, 57, 0.5); }\n\ntable.bordered td,\ntable.bordered th {\n border: 1px solid rgba(0, 0, 0, 0.05); }\n\ntable.striped tr:nth-child(odd) td {\n background: #f8f8f8; }\n\ntable.bordered td:first-child,\ntable.bordered th:first-child,\ntable.striped td:first-child,\ntable.striped th:first-child {\n padding-left: 1rem; }\n\ntable.bordered td:last-child,\ntable.bordered th:last-child,\ntable.striped td:last-child,\ntable.striped th:last-child {\n padding-right: 1rem; }\n\ntable.unstyled td,\ntable.unstyled th {\n border: none;\n padding: 0; }\n\nfieldset {\n font-family: inherit;\n border: 1px solid rgba(0, 0, 0, 0.1);\n padding: 2rem;\n margin-bottom: 2rem;\n margin-top: 2rem; }\n\nlegend {\n font-weight: bold;\n font-size: 12px;\n text-transform: uppercase;\n padding: 0 1rem;\n margin-left: -1rem;\n top: 2px;\n position: relative;\n line-height: 0; }\n\ninput,\ntextarea,\nselect {\n display: block;\n width: 100%;\n font-family: inherit;\n font-size: 15px;\n height: 40px;\n outline: none;\n vertical-align: middle;\n background-color: #fff;\n border: 1px solid #d4d4d4;\n border-radius: 3px;\n box-shadow: none;\n padding: 0 12px; }\n\ninput.small,\ntextarea.small,\nselect.small {\n height: 36px;\n font-size: 13px;\n padding: 0 12px;\n border-radius: 3px; }\n\ninput.big,\ntextarea.big,\nselect.big {\n height: 48px;\n font-size: 17px;\n padding: 0 12px;\n border-radius: 3px; }\n\ninput:focus,\ntextarea:focus,\nselect:focus {\n outline: none;\n background-color: #fff;\n border-color: #1c86f2;\n box-shadow: 0 0 1px #1c86f2 inset; }\n\ninput.error,\ntextarea.error,\nselect.error {\n background-color: rgba(240, 60, 105, 0.1);\n border: 1px solid #f583a0; }\n input.error:focus,\n textarea.error:focus,\n select.error:focus {\n border-color: #f03c69;\n box-shadow: 0 0 1px #f03c69 inset; }\n\ninput.success,\ntextarea.success,\nselect.success {\n background-color: rgba(53, 190, 177, 0.1);\n border: 1px solid #6ad5cb; }\n input.success:focus,\n textarea.success:focus,\n select.success:focus {\n border-color: #35beb1;\n box-shadow: 0 0 1px #35beb1 inset; }\n\ninput:disabled, input.disabled,\ntextarea:disabled,\ntextarea.disabled,\nselect:disabled,\nselect.disabled {\n resize: none;\n opacity: 0.6;\n cursor: default;\n font-style: italic;\n color: rgba(0, 0, 0, 0.5); }\n\nselect {\n -webkit-appearance: none;\n background-image: url('data:image/svg+xml;utf8,').addClass('hide');
+ $('body').prepend(this.$overlay);
+ }
+
+ this.$overlay.addClass('overlay');
+ },
+ buildHeader: function buildHeader() {
+ if (this.opts.header) this.$header.html(this.opts.header);
+ },
+ load: function load(e) {
+ this.buildModal();
+ this.buildOverlay();
+ this.buildHeader();
+
+ if (this.opts.url) this.buildContent();else this.open(e);
+ },
+ open: function open(e) {
+ if (e) e.preventDefault();
+
+ if (this.isOpened()) {
+ return;
+ }
+
+ if (this.detect.isMobile()) this.opts.width = '96%';
+ if (this.opts.overlay) this.$overlay.removeClass('hide');
+
+ this.$target.removeClass('hide');
+ this.$modal.removeClass('hide');
+
+ this.enableEvents();
+ this.findActions();
+
+ this.resize();
+ $(window).on('resize.' + this.namespace, $.proxy(this.resize, this));
+
+ if (this.detect.isDesktop()) this.utils.disableBodyScroll();
+
+ // enter
+ this.$modal.find('input[type=text],input[type=url],input[type=email]').on('keydown.' + this.namespace, $.proxy(this.handleEnter, this));
+
+ this.callback('open');
+ this.$modal.animation(this.opts.animationOpen, $.proxy(this.onOpened, this));
+ },
+ close: function close(e) {
+ if (!this.$modal || !this.isOpened()) {
+ return;
+ }
+
+ if (e) {
+ if (this.shouldNotBeClosed(e.target)) {
+ return;
+ }
+
+ e.preventDefault();
+ }
+
+ this.callback('close');
+ this.disableEvents();
+
+ this.$modal.animation(this.opts.animationClose, $.proxy(this.onClosed, this));
+
+ if (this.opts.overlay) this.$overlay.animation(this.opts.animationClose);
+ },
+ onOpened: function onOpened() {
+ this.$modal.addClass('open');
+ this.callback('opened');
+
+ $.modalcurrent = this;
+ },
+ onClosed: function onClosed() {
+ this.callback('closed');
+
+ this.$target.addClass('hide');
+ this.$modal.removeClass('open');
+
+ if (this.detect.isDesktop()) this.utils.enableBodyScroll();
+
+ this.$body.css('height', '');
+ $.modalcurrent = null;
+ },
+ isOpened: function isOpened() {
+ return this.$modal.hasClass('open');
+ },
+ getData: function getData() {
+ var formdata = new Kube.FormData(this);
+ formdata.set('');
+
+ return formdata.get();
+ },
+ buildContent: function buildContent() {
+ $.ajax({
+ url: this.opts.url + '?' + new Date().getTime(),
+ cache: false,
+ type: 'post',
+ data: this.getData(),
+ success: $.proxy(function (data) {
+ this.$body.html(data);
+ this.open();
+ }, this)
+ });
+ },
+ buildWidth: function buildWidth() {
+ var width = this.opts.width;
+ var top = '2%';
+ var bottom = '2%';
+ var percent = width.match(/%$/);
+
+ if (parseInt(this.opts.width) > $(window).width() && !percent) {
+ width = '96%';
+ } else if (!percent) {
+ top = '16px';
+ bottom = '16px';
+ }
+
+ this.$modal.css({ 'width': width, 'margin-top': top, 'margin-bottom': bottom });
+ },
+ buildPosition: function buildPosition() {
+ if (this.opts.position !== 'center') {
+ return;
+ }
+
+ var windowHeight = $(window).height();
+ var height = this.$modal.outerHeight();
+ var top = windowHeight / 2 - height / 2 + 'px';
+
+ if (this.detect.isMobile()) top = '2%';else if (height > windowHeight) top = '16px';
+
+ this.$modal.css('margin-top', top);
+ },
+ buildHeight: function buildHeight() {
+ var windowHeight = $(window).height();
+
+ if (this.opts.maxHeight) {
+ var padding = parseInt(this.$body.css('padding-top')) + parseInt(this.$body.css('padding-bottom'));
+ var margin = parseInt(this.$modal.css('margin-top')) + parseInt(this.$modal.css('margin-bottom'));
+ var height = windowHeight - this.$header.innerHeight() - padding - margin;
+
+ this.$body.height(height);
+ } else if (this.opts.height !== false) {
+ this.$body.css('height', this.opts.height);
+ }
+
+ var modalHeight = this.$modal.outerHeight();
+ if (modalHeight > windowHeight) {
+ this.opts.animationOpen = 'show';
+ this.opts.animationClose = 'hide';
+ }
+ },
+ resize: function resize() {
+ this.buildWidth();
+ this.buildPosition();
+ this.buildHeight();
+ },
+ enableEvents: function enableEvents() {
+ this.$close.on('click.' + this.namespace, $.proxy(this.close, this));
+ $(document).on('keyup.' + this.namespace, $.proxy(this.handleEscape, this));
+ this.$target.on('click.' + this.namespace, $.proxy(this.close, this));
+ },
+ disableEvents: function disableEvents() {
+ this.$close.off('.' + this.namespace);
+ $(document).off('.' + this.namespace);
+ this.$target.off('.' + this.namespace);
+ $(window).off('.' + this.namespace);
+ },
+ findActions: function findActions() {
+ this.$body.find('[data-action="modal-close"]').on('mousedown.' + this.namespace, $.proxy(this.close, this));
+ },
+ setHeader: function setHeader(header) {
+ this.$header.html(header);
+ },
+ setContent: function setContent(content) {
+ this.$body.html(content);
+ },
+ setWidth: function setWidth(width) {
+ this.opts.width = width;
+ this.resize();
+ },
+ getModal: function getModal() {
+ return this.$modal;
+ },
+ getBody: function getBody() {
+ return this.$body;
+ },
+ getHeader: function getHeader() {
+ return this.$header;
+ },
+ handleEnter: function handleEnter(e) {
+ if (e.which === 13) {
+ e.preventDefault();
+ this.close(false);
+ }
+ },
+ handleEscape: function handleEscape(e) {
+ return e.which === 27 ? this.close(false) : true;
+ },
+ shouldNotBeClosed: function shouldNotBeClosed(el) {
+ if ($(el).attr('data-action') === 'modal-close' || el === this.$close[0]) {
+ return false;
+ } else if ($(el).closest('.modal').length === 0) {
+ return false;
+ }
+
+ return true;
+ }
+ };
+
+ // Inheritance
+ Kube.Modal.inherits(Kube);
+
+ // Plugin
+ Kube.Plugin.create('Modal');
+ Kube.Plugin.autoload('Modal');
+})(Kube);
+});
+
+require.register("include/svgsaver.js", function(exports, require, module) {
+'use strict';
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+
+var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ('value' in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;
+ };
+}();
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { 'default': obj };
+}
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError('Cannot call a class as a function');
+ }
+}
+
+var _computedStyles = require('computed-styles');
+
+var _computedStyles2 = _interopRequireDefault(_computedStyles);
+
+var _fileSaver = require('file-saver');
+
+var _fileSaver2 = _interopRequireDefault(_fileSaver);
+
+var svgStyles = { // Whitelist of CSS styles and default values
+ 'alignment-baseline': 'auto',
+ 'baseline-shift': 'baseline',
+ 'clip': 'auto',
+ 'clip-path': 'none',
+ 'clip-rule': 'nonzero',
+ 'color': 'rgb(51, 51, 51)',
+ 'color-interpolation': 'srgb',
+ 'color-interpolation-filters': 'linearrgb',
+ 'color-profile': 'auto',
+ 'color-rendering': 'auto',
+ 'cursor': 'auto',
+ 'direction': 'ltr',
+ 'display': 'inline',
+ 'dominant-baseline': 'auto',
+ 'enable-background': '',
+ 'fill': 'rgb(0, 0, 0)',
+ 'fill-opacity': '1',
+ 'fill-rule': 'nonzero',
+ 'filter': 'none',
+ 'flood-color': 'rgb(0, 0, 0)',
+ 'flood-opacity': '1',
+ 'font': '',
+ 'font-family': 'normal',
+ 'font-size': 'medium',
+ 'font-size-adjust': 'auto',
+ 'font-stretch': 'normal',
+ 'font-style': 'normal',
+ 'font-variant': 'normal',
+ 'font-weight': '400',
+ 'glyph-orientation-horizontal': '0deg',
+ 'glyph-orientation-vertical': 'auto',
+ 'image-rendering': 'auto',
+ 'kerning': 'auto',
+ 'letter-spacing': '0',
+ 'lighting-color': 'rgb(255, 255, 255)',
+ 'marker': '',
+ 'marker-end': 'none',
+ 'marker-mid': 'none',
+ 'marker-start': 'none',
+ 'mask': 'none',
+ 'opacity': '1',
+ 'overflow': 'visible',
+ 'paint-order': 'fill',
+ 'pointer-events': 'auto',
+ 'shape-rendering': 'auto',
+ 'stop-color': 'rgb(0, 0, 0)',
+ 'stop-opacity': '1',
+ 'stroke': 'none',
+ 'stroke-dasharray': 'none',
+ 'stroke-dashoffset': '0',
+ 'stroke-linecap': 'butt',
+ 'stroke-linejoin': 'miter',
+ 'stroke-miterlimit': '4',
+ 'stroke-opacity': '1',
+ 'stroke-width': '1',
+ 'text-anchor': 'start',
+ 'text-decoration': 'none',
+ 'text-rendering': 'auto',
+ 'unicode-bidi': 'normal',
+ 'visibility': 'visible',
+ 'word-spacing': '0px',
+ 'writing-mode': 'lr-tb'
+};
+
+var svgAttrs = [// white list of attributes
+'id', 'xml: base', 'xml: lang', 'xml: space', // Core
+'height', 'result', 'width', 'x', 'y', // Primitive
+'xlink: href', // Xlink attribute
+'href', 'style', 'class', 'd', 'pathLength', // Path
+'x', 'y', 'dx', 'dy', 'glyphRef', 'format', 'x1', 'y1', 'x2', 'y2', 'rotate', 'textLength', 'cx', 'cy', 'r', 'rx', 'ry', 'fx', 'fy', 'width', 'height', 'refX', 'refY', 'orient', 'markerUnits', 'markerWidth', 'markerHeight', 'maskUnits', 'transform', 'viewBox', 'version', // Container
+'preserveAspectRatio', 'xmlns', 'points', // Polygons
+'offset', 'xlink:href'];
+
+// http://www.w3.org/TR/SVG/propidx.html
+// via https://github.com/svg/svgo/blob/master/plugins/_collections.js
+var inheritableAttrs = ['clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'transform', 'visibility', 'white-space', 'word-spacing', 'writing-mode'];
+
+/* Some simple utilities */
+
+var isFunction = function isFunction(a) {
+ return typeof a === 'function';
+};
+var isDefined = function isDefined(a) {
+ return typeof a !== 'undefined';
+};
+var isUndefined = function isUndefined(a) {
+ return typeof a === 'undefined';
+};
+var isObject = function isObject(a) {
+ return a !== null && (typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object';
+};
+
+// from https://github.com/npm-dom/is-dom/blob/master/index.js
+function isNode(val) {
+ if (!isObject(val)) {
+ return false;
+ }
+ if (isDefined(window) && isObject(window.Node)) {
+ return val instanceof window.Node;
+ }
+ return typeof val.nodeType === 'number' && typeof val.nodeName === 'string';
+}
+
+/* Some utilities for cloning SVGs with inline styles */
+// Removes attributes that are not valid for SVGs
+function cleanAttrs(el, attrs, styles) {
+ // attrs === false - remove all, attrs === true - allow all
+ if (attrs === true) {
+ return;
+ }
+
+ Array.prototype.slice.call(el.attributes).forEach(function (attr) {
+ // remove if it is not style nor on attrs whitelist
+ // keeping attributes that are also styles because attributes override
+ if (attr.specified) {
+ if (attrs === '' || attrs === false || isUndefined(styles[attr.name]) && attrs.indexOf(attr.name) < 0) {
+ el.removeAttribute(attr.name);
+ }
+ }
+ });
+}
+
+function cleanStyle(tgt, parentStyles) {
+ parentStyles = parentStyles || tgt.parentNode.style;
+ inheritableAttrs.forEach(function (key) {
+ if (tgt.style[key] === parentStyles[key]) {
+ tgt.style.removeProperty(key);
+ }
+ });
+}
+
+function domWalk(src, tgt, down, up) {
+ down(src, tgt);
+ var children = src.childNodes;
+ for (var i = 0; i < children.length; i++) {
+ domWalk(children[i], tgt.childNodes[i], down, up);
+ }
+ up(src, tgt);
+}
+
+// Clones an SVGElement, copies approprate atttributes and styles.
+function cloneSvg(src, attrs, styles) {
+ var clonedSvg = src.cloneNode(true);
+
+ domWalk(src, clonedSvg, function (src, tgt) {
+ if (tgt.style) {
+ (0, _computedStyles2['default'])(src, tgt.style, styles);
+ }
+ }, function (src, tgt) {
+ if (tgt.style && tgt.parentNode) {
+ cleanStyle(tgt);
+ }
+ if (tgt.attributes) {
+ cleanAttrs(tgt, attrs, styles);
+ }
+ });
+
+ return clonedSvg;
+}
+
+/* global Image, MouseEvent */
+
+/* Some simple utilities for saving SVGs, including an alternative to saveAs */
+
+// detection
+var DownloadAttributeSupport = typeof document !== 'undefined' && 'download' in document.createElement('a') && typeof MouseEvent === 'function';
+
+function saveUri(uri, name) {
+ if (DownloadAttributeSupport) {
+ var dl = document.createElement('a');
+ dl.setAttribute('href', uri);
+ dl.setAttribute('download', name);
+ // firefox doesn't support `.click()`...
+ // from https://github.com/sindresorhus/multi-download/blob/gh-pages/index.js
+ dl.dispatchEvent(new MouseEvent('click'));
+ return true;
+ } else if (typeof window !== 'undefined') {
+ window.open(uri, '_blank', '');
+ return true;
+ }
+
+ return false;
+}
+
+function createCanvas(uri, name, cb) {
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+
+ var image = new Image();
+ image.onload = function () {
+ canvas.width = image.width;
+ canvas.height = image.height;
+ context.drawImage(image, 0, 0);
+
+ cb(canvas);
+ };
+ image.src = uri;
+ return true;
+}
+
+function savePng(uri, name) {
+ return createCanvas(uri, name, function (canvas) {
+ if (isDefined(canvas.toBlob)) {
+ canvas.toBlob(function (blob) {
+ _fileSaver2['default'].saveAs(blob, name);
+ });
+ } else {
+ saveUri(canvas.toDataURL('image/png'), name);
+ }
+ });
+}
+
+/* global Blob */
+
+var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
+
+// inheritable styles may be overridden by parent, always copy for now
+inheritableAttrs.forEach(function (k) {
+ if (k in svgStyles) {
+ svgStyles[k] = true;
+ }
+});
+
+var SvgSaver = function () {
+ _createClass(SvgSaver, null, [{
+ key: 'getSvg',
+ value: function getSvg(el) {
+ if (isUndefined(el) || el === '') {
+ el = document.body.querySelector('svg');
+ } else if (typeof el === 'string') {
+ el = document.body.querySelector(el);
+ }
+ if (el && el.tagName !== 'svg') {
+ el = el.querySelector('svg');
+ }
+ if (!isNode(el)) {
+ throw new Error('svgsaver: Can\'t find an svg element');
+ }
+ return el;
+ }
+ }, {
+ key: 'getFilename',
+ value: function getFilename(el, filename, ext) {
+ if (!filename || filename === '') {
+ filename = (el.getAttribute('title') || 'untitled') + '.' + ext;
+ }
+ return encodeURI(filename);
+ }
+
+ /**
+ * SvgSaver constructor.
+ * @constructs SvgSaver
+ * @api public
+ *
+ * @example
+ * var svgsaver = new SvgSaver(); // creates a new instance
+ * var svg = document.querySelector('#mysvg'); // find the SVG element
+ * svgsaver.asSvg(svg); // save as SVG
+ */
+ }]);
+
+ function SvgSaver() {
+ var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ var attrs = _ref.attrs;
+ var styles = _ref.styles;
+
+ _classCallCheck(this, SvgSaver);
+
+ this.attrs = attrs === undefined ? svgAttrs : attrs;
+ this.styles = styles === undefined ? svgStyles : styles;
+ }
+
+ /**
+ * Return the cloned SVG after cleaning
+ *
+ * @param {SVGElement} el The element to copy.
+ * @returns {SVGElement} SVG text after cleaning
+ * @api public
+ */
+
+ _createClass(SvgSaver, [{
+ key: 'cloneSVG',
+ value: function cloneSVG(el) {
+ el = SvgSaver.getSvg(el);
+ var svg = cloneSvg(el, this.attrs, this.styles);
+
+ svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
+ svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
+ svg.setAttribute('version', 1.1);
+
+ // height and width needed to download in FireFox
+ svg.setAttribute('width', svg.getAttribute('width') || '500');
+ svg.setAttribute('height', svg.getAttribute('height') || '900');
+
+ return svg;
+ }
+
+ /**
+ * Return the SVG HTML text after cleaning
+ *
+ * @param {SVGElement} el The element to copy.
+ * @returns {String} SVG text after cleaning
+ * @api public
+ */
+ }, {
+ key: 'getHTML',
+ value: function getHTML(el) {
+ var svg = this.cloneSVG(el);
+
+ var html = svg.outerHTML;
+ if (html) {
+ return html;
+ }
+
+ // see http://stackoverflow.com/questions/19610089/unwanted-namespaces-on-svg-markup-when-using-xmlserializer-in-javascript-with-ie
+ svg.removeAttribute('xmlns');
+ svg.removeAttribute('xmlns:xlink');
+
+ svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');
+ svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
+
+ return new window.XMLSerializer().serializeToString(svg);
+ }
+
+ /**
+ * Return the SVG, after cleaning, as a text/xml Blob
+ *
+ * @param {SVGElement} el The element to copy.
+ * @returns {Blog} SVG as a text/xml Blob
+ * @api public
+ */
+ }, {
+ key: 'getBlob',
+ value: function getBlob(el) {
+ var html = this.getHTML(el);
+ return new Blob([html], { type: 'text/xml' });
+ }
+
+ /**
+ * Return the SVG, after cleaning, as a image/svg+xml;base64 URI encoded string
+ *
+ * @param {SVGElement} el The element to copy.
+ * @returns {String} SVG as image/svg+xml;base64 URI encoded string
+ * @api public
+ */
+ }, {
+ key: 'getUri',
+ value: function getUri(el) {
+ var html = encodeURIComponent(this.getHTML(el));
+ if (isDefined(window.btoa)) {
+ // see http://stackoverflow.com/questions/23223718/failed-to-execute-btoa-on-window-the-string-to-be-encoded-contains-characte
+ return 'data:image/svg+xml;base64,' + window.btoa(unescape(html));
+ }
+ return 'data:image/svg+xml,' + html;
+ }
+
+ /**
+ * Saves the SVG as a SVG file using method compatible with the browser
+ *
+ * @param {SVGElement} el The element to copy.
+ * @param {string} [filename] The filename to save, defaults to the SVG title or 'untitled.svg'
+ * @returns {SvgSaver} The SvgSaver instance
+ * @api public
+ */
+ }, {
+ key: 'asSvg',
+ value: function asSvg(el, filename) {
+ el = SvgSaver.getSvg(el);
+ filename = SvgSaver.getFilename(el, filename, 'svg');
+ if (isFunction(Blob)) {
+ return _fileSaver2['default'].saveAs(this.getBlob(el), filename);
+ }
+ return saveUri(this.getUri(el), filename);
+ }
+
+ /**
+ * Gets the SVG as a PNG data URI.
+ *
+ * @param {SVGElement} el The element to copy.
+ * @param {Function} cb Call back called with the PNG data uri.
+ * @api public
+ */
+ }, {
+ key: 'getPngUri',
+ value: function getPngUri(el, cb) {
+ if (isIE11) {
+ console.error('svgsaver: getPngUri not supported on IE11');
+ }
+ el = SvgSaver.getSvg(el);
+ var filename = SvgSaver.getFilename(el, null, 'png');
+ return createCanvas(this.getUri(el), filename, function (canvas) {
+ cb(canvas.toDataURL('image/png'));
+ });
+ }
+
+ /**
+ * Saves the SVG as a PNG file using method compatible with the browser
+ *
+ * @param {SVGElement} el The element to copy.
+ * @param {string} [filename] The filename to save, defaults to the SVG title or 'untitled.png'
+ * @returns {SvgSaver} The SvgSaver instance
+ * @api public
+ */
+ }, {
+ key: 'asPng',
+ value: function asPng(el, filename) {
+ if (isIE11) {
+ console.error('svgsaver: asPng not supported on IE11');
+ }
+ el = SvgSaver.getSvg(el);
+ filename = SvgSaver.getFilename(el, filename, 'png');
+ return savePng(this.getUri(el), filename);
+ }
+ }]);
+
+ return SvgSaver;
+}();
+
+exports['default'] = SvgSaver;
+module.exports = exports['default'];
+});
+
+require.register("router.js", function(exports, require, module) {
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _AugurCards = require('./components/AugurCards');
+
+var _AugurCards2 = _interopRequireDefault(_AugurCards);
+
+var _GrowthMaturityDeclineCard = require('./components/GrowthMaturityDeclineCard');
+
+var _GrowthMaturityDeclineCard2 = _interopRequireDefault(_GrowthMaturityDeclineCard);
+
+var _ExperimentalCard = require('./components/ExperimentalCard');
+
+var _ExperimentalCard2 = _interopRequireDefault(_ExperimentalCard);
+
+var _vueRouter = require('vue-router');
+
+var _vueRouter2 = _interopRequireDefault(_vueRouter);
+
+var _vue = require('vue');
+
+var _vue2 = _interopRequireDefault(_vue);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_vue2.default.use(_vueRouter2.default);
+
+exports.default = new _vueRouter2.default({
+ routes: [{ path: '/', component: _vue2.default.component('augur-cards', require('./components/AugurCards')) }]
+});
+});
+
+;require.register("router/router.js", function(exports, require, module) {
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _vue = require('vue');
+
+var _vue2 = _interopRequireDefault(_vue);
+
+var _vueRouter = require('vue-router');
+
+var _vueRouter2 = _interopRequireDefault(_vueRouter);
+
+var _MetricsStatusCard = require('../components/MetricsStatusCard.vue');
+
+var _MetricsStatusCard2 = _interopRequireDefault(_MetricsStatusCard);
+
+var _BaseRepoActivityCard = require('../components/BaseRepoActivityCard.vue');
+
+var _BaseRepoActivityCard2 = _interopRequireDefault(_BaseRepoActivityCard);
+
+var _BaseRepoEcosystemCard = require('../components/BaseRepoEcosystemCard.vue');
+
+var _BaseRepoEcosystemCard2 = _interopRequireDefault(_BaseRepoEcosystemCard);
+
+var _GrowthMaturityDeclineCard = require('../components/GrowthMaturityDeclineCard');
+
+var _GrowthMaturityDeclineCard2 = _interopRequireDefault(_GrowthMaturityDeclineCard);
+
+var _RiskCard = require('../components/RiskCard');
+
+var _RiskCard2 = _interopRequireDefault(_RiskCard);
+
+var _ValueCard = require('../components/ValueCard');
+
+var _ValueCard2 = _interopRequireDefault(_ValueCard);
+
+var _DiversityInclusionCard = require('../components/DiversityInclusionCard');
+
+var _DiversityInclusionCard2 = _interopRequireDefault(_DiversityInclusionCard);
+
+var _GitCard = require('../components/GitCard');
+
+var _GitCard2 = _interopRequireDefault(_GitCard);
+
+var _OverviewCard = require('../components/OverviewCard.vue');
+
+var _OverviewCard2 = _interopRequireDefault(_OverviewCard);
+
+var _ExperimentalCard = require('../components/ExperimentalCard');
+
+var _ExperimentalCard2 = _interopRequireDefault(_ExperimentalCard);
+
+var _DownloadedReposCard = require('../components/DownloadedReposCard.vue');
+
+var _DownloadedReposCard2 = _interopRequireDefault(_DownloadedReposCard);
+
+var _LoginForm = require('../components/LoginForm');
+
+var _LoginForm2 = _interopRequireDefault(_LoginForm);
+
+var _AugurCards = require('../components/AugurCards.vue');
+
+var _AugurCards2 = _interopRequireDefault(_AugurCards);
+
+var _MainControls = require('../components/MainControls.vue');
+
+var _MainControls2 = _interopRequireDefault(_MainControls);
+
+var _AugurHeader = require('../components/AugurHeader.vue');
+
+var _AugurHeader2 = _interopRequireDefault(_AugurHeader);
+
+var _Tabs = require('../components/Tabs.vue');
+
+var _Tabs2 = _interopRequireDefault(_Tabs);
+
+var _TableView = require('../components/TableView.vue');
+
+var _TableView2 = _interopRequireDefault(_TableView);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var routes = [{ path: '/', component: _AugurCards2.default,
+ children: [{
+ path: "",
+ name: "reposcard",
+ components: {
+ header: _AugurHeader2.default,
+ content: _DownloadedReposCard2.default
+ }
+ }]
+}, { path: '/login', component: _LoginForm2.default }, { path: '/metrics_status',
+ components: {
+ header: _AugurHeader2.default,
+ content: _MainControls2.default
+ }
+}, { path: '/single/:owner?/:repo', name: 'single', props: true, canReuse: false, component: _AugurCards2.default,
+ children: [{
+ path: "gmd",
+ name: "gmd",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _GrowthMaturityDeclineCard2.default
+ }
+ }, {
+ path: "diversityinclusion",
+ name: "diversityinclusion",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _DiversityInclusionCard2.default
+ }
+ }, {
+ path: "risk",
+ name: "risk",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _RiskCard2.default
+ }
+ }, {
+ path: "activity",
+ name: "activity",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _BaseRepoActivityCard2.default
+ }
+ }, {
+ path: "value",
+ name: "value",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _ValueCard2.default
+ }
+ }, {
+ path: "experimental",
+ name: "experimental",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _ExperimentalCard2.default
+ }
+ }, {
+ path: "git",
+ name: "git",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _GitCard2.default
+ }
+ }, {
+ path: "overview",
+ name: "overview",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _OverviewCard2.default
+ }
+ }]
+},
+// {path: '/:tab/:domain/:owner/:repo/comparedto/:comparedowner/:comparedrepo', component: AugurCards, name: 'gitsinglecompare'},
+{ path: '/compare/:owner?/:repo/comparedto/:comparedowner/:comparedrepo', component: _AugurCards2.default, name: 'singlecompare', props: true, canReuse: false,
+ children: [{
+ path: "gmd",
+ name: "gmdcompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _GrowthMaturityDeclineCard2.default
+ }
+ }, {
+ path: "diversityinclusion",
+ name: "diversityinclusioncompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _DiversityInclusionCard2.default
+ }
+ }, {
+ path: "risk",
+ name: "riskcompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _RiskCard2.default
+ }
+ }, {
+ path: "value",
+ name: "valuecompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _ValueCard2.default
+ }
+ }, {
+ path: "activity",
+ name: "activitycompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _BaseRepoActivityCard2.default
+ }
+ }, {
+ path: "experimental",
+ name: "experimentalcompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _ExperimentalCard2.default
+ }
+ }, {
+ path: "git",
+ name: "gitcompare",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _GitCard2.default
+ }
+ }]
+}, { path: '/groupcompare/:groupid', component: _AugurCards2.default, name: 'group', props: true, canReuse: false,
+ children: [{
+ path: "gmd",
+ name: "gmdgroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _GrowthMaturityDeclineCard2.default
+ }
+ }, {
+ path: "diversityinclusion",
+ name: "diversityinclusiongroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _DiversityInclusionCard2.default
+ }
+ }, {
+ path: "risk",
+ name: "riskgroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _RiskCard2.default
+ }
+ }, {
+ path: "value",
+ name: "valuegroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _ValueCard2.default
+ }
+ }, {
+ path: "activity",
+ name: "activitygroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _BaseRepoActivityCard2.default
+ }
+ }, {
+ path: "experimental",
+ name: "experimentalgroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _ExperimentalCard2.default
+ }
+ }, {
+ path: "git",
+ name: "gitgroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _GitCard2.default
+ }
+ }, {
+ path: "overview",
+ name: "overviewgroup",
+ components: {
+ header: _AugurHeader2.default,
+ tabs: _Tabs2.default,
+ controls: _MainControls2.default,
+ content: _OverviewCard2.default
+ }
+ }]
+}];
+var downloadedRepos = [],
+ repos = [],
+ projects = [];
+window.AugurAPI.getDownloadedGitRepos().then(function (data) {
+
+ repos = window._.groupBy(data, 'project_name');
+ projects = Object.keys(repos);
+});
+// const routes = routerOptions.map(route => {
+// // let route1 = Object.assign({}, route);
+// return {
+// route,
+// component: () => require(`@/components/${route.component}.vue`)
+// }
+// })
+
+
+exports.default = new _vueRouter2.default({
+ // routes,
+ routes: routes,
+ mode: 'history',
+ hashbang: false
+});
+});
+
+;require.alias("buffer/index.js", "buffer");
+require.alias("process/browser.js", "process");
+require.alias("vue/dist/vue.common.js", "vue");process = require('process');require.register("___globals___", function(exports, require, module) {
+
+});})();require('___globals___');
+
+
+//# sourceMappingURL=app.js.map
\ No newline at end of file
diff --git a/frontend/public/app.js.map b/frontend/public/app.js.map
new file mode 100644
index 0000000000..079f2fb96e
--- /dev/null
+++ b/frontend/public/app.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["app/Augur.js","app/AugurAPI.js","app/AugurStats.js","app/components/AugurApp.vue","app/components/AugurCards.vue","app/components/AugurHeader.vue","app/components/BaseRepoActivityCard.vue","app/components/BaseRepoEcosystemCard.vue","app/components/DiversityInclusionCard.vue","app/components/DownloadedReposCard.vue","app/components/ExperimentalCard.vue","app/components/GitCard.vue","app/components/GrowthMaturityDeclineCard.vue","app/components/LoginForm.vue","app/components/MainControls.vue","app/components/MetricsStatusCard.vue","app/components/OverviewCard.vue","app/components/RiskCard.vue","app/components/TableView.vue","app/components/Tabs.vue","app/components/ValueCard.vue","app/components/charts/BubbleChart.vue","app/components/charts/BusFactor.vue","app/components/charts/DependencyOverview.vue","app/components/charts/DirectionalTimeChart.vue","app/components/charts/DualAxisContributions.vue","app/components/charts/DynamicLineChart.vue","app/components/charts/EmptyChart.vue","app/components/charts/GroupedBarChart.vue","app/components/charts/HorizontalBarChart.vue","app/components/charts/LinesOfCodeChart.vue","app/components/charts/NormalizedStackedBarChart.vue","app/components/charts/OneDimensionalStackedBarChart.vue","app/components/charts/StackedBarChart.vue","app/components/charts/TickChart.vue","app/components/charts/TimeIntervalBarChart.vue","app/include/kube/kube.js","app/include/svgsaver.js","app/router.js","app/router/router.js"],"names":["Augur","queryString","require","window","jQuery","Vue","Vuex","VueVega","default","AugurAPI","AugurRepos","AugurStats","$","_","d3","SvgSaver","VueRouter","router","AUGUR_CHART_STYLE","brightColors","dullColors","AugurApp","use","config","productionTip","augur","Store","state","hasState","tab","baseRepo","gitRepo","comparedRepos","trailingAverage","startDate","Date","endDate","compare","showBelowAverage","rawWeekly","showArea","showDetail","showTooltip","byDate","mutations","setGitRepo","payload","gitURL","repo","Repo","toString","setRepo","queryObject","owner","name","title","addComparedRepo","includes","push","length","currentRoute","params","comparedrepo","substring","indexOf","slice","comparedowner","groupid","String","forEach","setDates","setCompare","setTab","setVizOptions","parseInt","resetComparedRepos","resetBaseRepo","resetTab","reset","comparedRepo","history","pushState","store","beforeEach","to","from","next","commit","split","githubURL","repos","shift","cmprepo","render","h","$mount","hostURL","version","autobatch","__downloadedGitRepos","_version","_host","location","host","__cache","__timeout","__pending","getDownloadedGitRepos","__EndpointFactory","openRequests","getMetricsStatus","getMetricsStatusMetadata","endpoint","url","self","callback","cacheKey","btoa","JSON","stringify","created_at","now","Promise","resolve","reject","data","get","then","__URLFunctionFactory","__endpointURL","endpoints","str","join","ajax","type","dataType","contentType","fields","reverseMap","processedData","Array","prototype","apply","batch","assign","__reverseEndpointMap","isArray","response","status","path","parse","Error","splitURL","__endpointMap","getDownloadedStatus","rs","__Endpoint","r","Endpoint","fullEndpoint","Timeseries","jsName","func","relativeTo","baselineRepo","GitEndpoint","jsNameArray","noExecute","routes","map","e","mapped","earliest","latest","key","datum","convertDates","d","date","filter","sort","a","b","newName","convertKey","obj","field","comparedValue","ary","len","sum","reduce","isFinite","flat","mean","averageArray","extension","distances","newObj","Math","sqrt","flatten","stddev","standardDeviation","variance","array","windowSizeInDays","period","dateAggregate","filteredData","round","daysBefore","daysAfter","interval","rolling","averageWindow","i","setDate","getDate","baseDate","unshift","value","baseline","baseData","compareData","Object","keys","iter","base","rollingAverage","undefined","result","toPush","x","stats","describe","zscore","arguments","fn","jquery","Function","inherits","parent","F","f","prop","super","Kube","element","options","$element","opts","extend","defaults","namespace","$target","target","getInstance","hasTarget","args","call","splice","_fireCallback","_data","callbacks","isFunction","events","eventNamespace","handler","Plugin","create","classname","pluginname","toLowerCase","method","val","each","$this","methodVal","error","autoload","arr","s","trim","autoloadQueue","startAutoload","MutationObserver","observer","mutation","newNodes","addedNodes","nodeType","startAutoloadOnce","observe","document","subtree","childList","$nodes","not","$el","attr","watch","on","Animation","effect","completeCallback","prefixes","queue","start","isSlideEffect","setElementHeight","addToQueue","clean","animate","height","removeElementHeight","css","isHideableEffect","effects","inArray","isToggleEffect","storeHideClasses","hasClass","revertHideClasses","addClass","removeData","removeHideClass","removeClass","makeSimpleEffects","_callback","complete","proxy","makeComplete","make","event","one","off","animation","Detect","isMobile","test","navigator","userAgent","isDesktop","isMobileScreen","width","isTabletScreen","isDesktopScreen","FormData","app","set","formdata","appendForms","appendFields","$fields","append","replace","$forms","formsData","serializeArray","serialize","Response","item","parseItem","html","stripslashes","top","href","notify","Utils","disableBodyScroll","$body","windowWidth","innerWidth","documentElementRect","documentElement","getBoundingClientRect","right","abs","left","isOverflowing","body","clientWidth","scrollbarWidth","measureScrollbar","scrollDiv","createElement","className","offsetWidth","removeChild","enableBodyScroll","Message","closeSelector","closeEvent","animationOpen","animationClose","$close","find","close","stop","open","preventDefault","isOpened","onOpened","onClosed","Sticky","offset","offsetTop","getOffsetTop","load","scroll","isFix","fixed","unfixed","scrollTop","Toggleme","toggleEvent","text","toggle","revertText","storeText","setTimeout","replaceText","Offcanvas","direction","clickOutside","utils","detect","buildTargetWidth","buildAnimationDirection","getCloseLink","closeAll","pushBody","$elms","isTag","tagName","closest","pullBody","handleKeyboard","which","properties","Collapse","active","toggleClass","boxClass","hashes","currentHash","currentItem","$items","getItems","loadItems","$boxes","getBoxes","setActiveItem","el","getItem","hash","getItemBy","addActive","$box","$caret","$parent","removeActive","openAll","num","eq","Dropdown","caretUp","buildClose","buildCaret","buildMobileAnimation","disableEvents","getCaret","buildCaretPosition","innerHeight","toggleCaretOpen","toggleCaretClose","setPosition","shouldNotBeClosed","enableEvents","isNavigationFixed","getPlacement","getOffset","position","getPosition","coords","placement","leftFix","outerHeight","Tabs","equals","live","buildLiveTabs","tabsCollection","hashesCollection","$tabs","getTabs","getLocationHash","setItemHeight","toArray","collectItem","$tab","$layers","$liveTabsList","buildLiveItem","$li","$a","index","getLiveItemId","getLiveItemTitle","first","fetchElement","prev","pushStateOpen","pushStateClose","isHash","minHeight","getItemMaxHeight","max","modalcurrent","modalwindow","show","modal","Modal","header","maxHeight","overlay","buildModal","$modal","$header","buildOverlay","$overlay","prepend","buildHeader","buildContent","findActions","resize","handleEnter","getData","getTime","cache","success","buildWidth","bottom","percent","match","buildPosition","windowHeight","buildHeight","padding","margin","modalHeight","handleEscape","setHeader","setContent","content","setWidth","getModal","getBody","getHeader","defineProperty","exports","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_interopRequireDefault","__esModule","_classCallCheck","instance","TypeError","_computedStyles","_computedStyles2","_fileSaver","_fileSaver2","svgStyles","svgAttrs","inheritableAttrs","isDefined","isUndefined","isObject","isNode","Node","nodeName","cleanAttrs","attrs","styles","attributes","specified","removeAttribute","cleanStyle","tgt","parentStyles","parentNode","style","removeProperty","domWalk","src","down","up","children","childNodes","cloneSvg","clonedSvg","cloneNode","DownloadAttributeSupport","MouseEvent","saveUri","uri","dl","setAttribute","dispatchEvent","createCanvas","cb","canvas","context","getContext","image","Image","onload","drawImage","savePng","toBlob","blob","saveAs","toDataURL","isIE11","MSInputMethodContext","documentMode","k","getSvg","querySelector","getFilename","filename","ext","getAttribute","encodeURI","_ref","cloneSVG","svg","getHTML","outerHTML","setAttributeNS","XMLSerializer","serializeToString","getBlob","Blob","getUri","encodeURIComponent","unescape","asSvg","getPngUri","console","asPng","module","component","AugurCards","components","AugurHeader","DownloadedReposCard","LoginForm","MainControls","canReuse","tabs","controls","GrowthMaturityDeclineCard","DiversityInclusionCard","RiskCard","BaseRepoActivityCard","ValueCard","ExperimentalCard","GitCard","OverviewCard","downloadedRepos","projects","groupBy","Router","mode","hashbang"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAOwBA,K;AAPxB,IAAMC,cAAcC,QAAQ,cAAR,CAApB;;AAEA;AACA;AACA;;;AAGe,SAASF,KAAT,GAAkB;AAC/BG,SAAOC,MAAP,GAAgBF,QAAQ,QAAR,CAAhB;AACAC,SAAOE,GAAP,GAAaH,QAAQ,KAAR,CAAb;AACAC,SAAOG,IAAP,GAAcJ,QAAQ,MAAR,CAAd;AACAC,SAAOI,OAAP,GAAiBL,QAAQ,UAAR,EAAoBM,OAArC;AACA,MAAIC,WAAWP,QAAQ,UAAR,EAAoBM,OAAnC;AACAL,SAAOM,QAAP,GAAkB,IAAIA,QAAJ,EAAlB;AACAN,SAAOO,UAAP,GAAoB,EAApB;AACAP,SAAOQ,UAAP,GAAoBT,QAAQ,YAAR,EAAsBM,OAA1C;AACAL,SAAOS,CAAP,GAAWT,OAAOC,MAAlB;AACAD,SAAOU,CAAP,GAAWX,QAAQ,QAAR,CAAX;AACAC,SAAOW,EAAP,GAAYZ,QAAQ,IAAR,CAAZ;AACAC,SAAOY,QAAP,GAAkBb,QAAQ,UAAR,CAAlB;AACAC,SAAOa,SAAP,GAAmBd,QAAQ,YAAR,CAAnB;AACA,MAAIe,SAASf,QAAQ,iBAAR,EAA2BM,OAAxC;;AAGAL,SAAOe,iBAAP,GAA2B;AACzBC,kBAAc,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,CADW;AAEzBC,gBAAY,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC;AAFa,GAA3B;;AAKA,MAAIC,WAAWnB,QAAQ,uBAAR,CAAf;;AAEAC,SAAOE,GAAP,CAAWiB,GAAX,CAAenB,OAAOG,IAAtB;AACAH,SAAOE,GAAP,CAAWiB,GAAX,CAAenB,OAAOI,OAAtB;AACAJ,SAAOE,GAAP,CAAWiB,GAAX,CAAenB,OAAOa,SAAtB;AACAb,SAAOE,GAAP,CAAWkB,MAAX,CAAkBC,aAAlB,GAAkC,KAAlC;;AAIArB,SAAOsB,KAAP,GAAe,IAAItB,OAAOG,IAAP,CAAYoB,KAAhB,CAAsB;AACnCC,WAAO;AACLC,gBAAU,IADL;AAELC,WAAK,KAFA;AAGLC,gBAAU,IAHL;AAILC,eAAS,IAJJ;AAKLC,qBAAe,EALV;AAMLC,uBAAiB,GANZ;AAOLC,iBAAW,IAAIC,IAAJ,CAAS,iBAAT,CAPN;AAQLC,eAAS,IAAID,IAAJ,EARJ;AASLE,eAAS,SATJ;AAULC,wBAAkB,KAVb;AAWLC,iBAAW,KAXN;AAYLC,gBAAU,IAZL;AAaLC,kBAAY,IAbP;AAcLC,mBAAa,IAdR;AAeLC,cAAQ;AAfH,KAD4B;AAkBnCC,eAAW;AACTC,gBADS,sBACElB,KADF,EACSmB,OADT,EACkB;AACzBnB,cAAMI,OAAN,GAAgBe,QAAQC,MAAxB;AACApB,cAAMG,QAAN,GAAiBgB,QAAQC,MAAzB;AACApB,cAAMC,QAAN,GAAiB,IAAjB;AACA,YAAIoB,OAAO7C,OAAOM,QAAP,CAAgBwC,IAAhB,CAAqBH,OAArB,CAAX;AACA,YAAI,CAAC3C,OAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,CAAL,EAAyC;AACvC/C,iBAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,IAAqCF,IAArC;AACD,SAFD,MAEO;AACLA,iBAAO7C,OAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,CAAP;AACD;AACF,OAXQ;AAYTC,aAZS,mBAYAxB,KAZA,EAYOmB,OAZP,EAYgB;AACvB,YAAIE,OAAO7C,OAAOM,QAAP,CAAgBwC,IAAhB,CAAqBH,OAArB,CAAX;AACA,YAAI,CAAC3C,OAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,CAAL,EAAyC;AACvC/C,iBAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,IAAqCF,IAArC;AACD,SAFD,MAEO;AACLA,iBAAO7C,OAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,CAAP;AACD;AACDvB,cAAMyB,WAAN,GAAoB,EAApB;AACAzB,cAAMC,QAAN,GAAiB,IAAjB;AACA,YAAIoB,KAAKK,KAAL,IAAcL,KAAKM,IAAnB,IAA2B,CAAC3B,MAAMI,OAAtC,EAA+C;AAC7CJ,gBAAMG,QAAN,GAAiBkB,KAAKE,QAAL,EAAjB;AACA,cAAIK,QAAQP,KAAKK,KAAL,GAAa,GAAb,GAAmBL,KAAKM,IAAxB,GAA+B,SAA3C;AACA;AACA;AACD;AACD,YAAIR,QAAQC,MAAZ,EAAoB;AAClB;AACA;AACApB,gBAAMI,OAAN,GAAgBiB,KAAKD,MAArB;AACApB,gBAAME,GAAN,GAAYF,MAAME,GAAN,GAAYF,MAAME,GAAlB,GAAwB,KAApC;AACD;AACF,OAjCQ;;AAkCT;AACA;AACA;AACA2B,qBArCS,2BAqCQ7B,KArCR,EAqCemB,OArCf,EAqCwB;AAC/BnB,cAAMU,OAAN,GAAgB,QAAhB;AACAV,cAAMC,QAAN,GAAiB,IAAjB;AACA,YAAIoB,OAAO7C,OAAOM,QAAP,CAAgBwC,IAAhB,CAAqBH,OAArB,CAAX;AACA,YAAG,CAACnB,MAAMK,aAAN,CAAoByB,QAApB,CAA6BT,KAAKE,QAAL,EAA7B,CAAD,IAAkDvB,MAAMG,QAAN,IAAkBkB,KAAKE,QAAL,EAAvE,EAAuF;AACrF,cAAI,CAAC/C,OAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,CAAL,EAAyC;AACvC/C,mBAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,IAAqCF,IAArC;AACD,WAFD,MAEO;AACLA,mBAAO7C,OAAOO,UAAP,CAAkBsC,KAAKE,QAAL,EAAlB,CAAP;AACD;AACDvB,gBAAMC,QAAN,GAAiB,IAAjB;AACA,cAAIoB,KAAKK,KAAL,IAAcL,KAAKM,IAAvB,EAA6B;AAC3B3B,kBAAMK,aAAN,CAAoB0B,IAApB,CAAyBV,KAAKE,QAAL,EAAzB;AACA,gBAAIK,QAAQP,KAAKK,KAAL,GAAa,GAAb,GAAmBL,KAAKM,IAAxB,GAA+B,SAA3C;AACD;AACD,cAAIR,QAAQC,MAAZ,EAAoB;AAClBpB,kBAAMI,OAAN,GAAgBiB,KAAKD,MAArB;AACD;AACD,cAAIpB,MAAMK,aAAN,CAAoB2B,MAApB,IAA8B,CAAlC,EAAqC;AACnC,gBAAI,CAAC1C,OAAO2C,YAAP,CAAoBC,MAApB,CAA2BC,YAAhC,EAA8C;;AAE5C,kBAAIT,QAAQ1B,MAAMI,OAAN,GAAgB,IAAhB,GAAuBJ,MAAMG,QAAN,CAAeiC,SAAf,CAAyB,CAAzB,EAA4BpC,MAAMG,QAAN,CAAekC,OAAf,CAAuB,GAAvB,CAA5B,CAAnC;AACA,kBAAIhB,QAAOrB,MAAMI,OAAN,GAAgBJ,MAAMI,OAAtB,GAAgCJ,MAAMG,QAAN,CAAemC,KAAf,CAAqBtC,MAAMG,QAAN,CAAekC,OAAf,CAAuB,GAAvB,IAA8B,CAAnD,CAA3C;AACA,kBAAIV,OAAO3B,MAAME,GAAN,GAAY,SAAvB;AACAZ,qBAAOyC,IAAP,CAAY;AACVJ,0BADU;AAEVO,wBAAQ,EAACR,YAAD,EAAQL,WAAR,EAAckB,eAAepB,QAAQO,KAArC,EAA4CS,cAAchB,QAAQQ,IAAlE;AAFE,eAAZ;AAID;AACF,WAXD,MAWO;AACL,gBAAIa,UAAWxC,MAAMI,OAAN,GAAgBqC,OAAOzC,MAAMI,OAAb,IAAwB,GAAxC,GAA8CqC,OAAOzC,MAAMG,QAAb,IAAyB,GAAtF;AACAH,kBAAMK,aAAN,CAAoBqC,OAApB,CAA4B,UAACrB,IAAD,EAAU;AACpCmB,yBAAYC,OAAOpB,IAAP,IAAe,GAA3B;AACD,aAFD;AAGA,gBAAIM,QAAO3B,MAAME,GAAN,GAAY,OAAvB;AACAZ,mBAAOyC,IAAP,CAAY;AACVJ,yBADU;AAEVO,sBAAQ;AACNM;AADM;AAFE,aAAZ;AAMD;AACF;AACF,OAhFQ;AAiFTG,cAjFS,oBAiFC3C,KAjFD,EAiFQmB,OAjFR,EAiFiB;AACxB,YAAIA,QAAQZ,SAAZ,EAAuB;AACrBP,gBAAMO,SAAN,GAAkB,IAAIC,IAAJ,CAASW,QAAQZ,SAAjB,CAAlB;AACD;AACD,YAAIY,QAAQV,OAAZ,EAAqB;AACnBT,gBAAMS,OAAN,GAAgB,IAAID,IAAJ,CAASW,QAAQV,OAAjB,CAAhB;AACD;AACF,OAxFQ;AAyFTmC,gBAzFS,sBAyFG5C,KAzFH,EAyFUmB,OAzFV,EAyFmB;AAC1BnB,cAAMU,OAAN,GAAgBS,QAAQT,OAAxB;AACD,OA3FQ;AA4FTmC,YA5FS,kBA4FD7C,KA5FC,EA4FMmB,OA5FN,EA4Fe;AACtBnB,cAAME,GAAN,GAAYiB,QAAQjB,GAApB;AACAF,cAAMC,QAAN,GAAiB,IAAjB;AACD,OA/FQ;AAgGT6C,mBAhGS,yBAgGM9C,KAhGN,EAgGamB,OAhGb,EAgGsB;AAC7B,YAAIA,QAAQb,eAAZ,EAA6B;AAC3BN,gBAAMM,eAAN,GAAwByC,SAAS5B,QAAQb,eAAjB,EAAkC,EAAlC,CAAxB;AACD;AACD,YAAI,OAAOa,QAAQP,SAAf,KAA6B,WAAjC,EAA8C;AAC5CZ,gBAAMY,SAAN,GAAkBO,QAAQP,SAA1B;AACD;AACD,YAAI,OAAOO,QAAQR,gBAAf,KAAoC,WAAxC,EAAqD;AACnDX,gBAAMW,gBAAN,GAAyBQ,QAAQR,gBAAjC;AACD;AACD,YAAI,OAAOQ,QAAQN,QAAf,KAA4B,WAAhC,EAA6C;AAC3Cb,gBAAMa,QAAN,GAAiBM,QAAQN,QAAzB;AACD;AACD,YAAI,OAAOM,QAAQJ,WAAf,KAA+B,WAAnC,EAAgD;AAC9Cf,gBAAMe,WAAN,GAAoBI,QAAQJ,WAA5B;AACD;AACD,YAAI,OAAOI,QAAQL,UAAf,KAA8B,WAAlC,EAA+C;AAC7Cd,gBAAMc,UAAN,GAAmBK,QAAQL,UAA3B;AACD;AACF,OAnHQ;AAoHTkC,wBApHS,8BAoHWhD,KApHX,EAoHkB;AACzBA,cAAMK,aAAN,GAAsB,EAAtB;AACAf,eAAOyC,IAAP,CAAY;AACVJ,gBAAM3B,MAAME,GADF;AAEVgC,kBAAQ,EAACR,OAAO1B,MAAMG,QAAN,CAAeiC,SAAf,CAAyB,CAAzB,EAA4BpC,MAAMG,QAAN,CAAekC,OAAf,CAAuB,GAAvB,CAA5B,CAAR,EAAkEhB,MAAMrB,MAAMG,QAAN,CAAemC,KAAf,CAAqBtC,MAAMG,QAAN,CAAekC,OAAf,CAAuB,GAAvB,IAA8B,CAAnD,CAAxE,EAFE,EAAZ;AAGD,OAzHQ;AA0HTY,mBA1HS,yBA0HMjD,KA1HN,EA0Ha;AACpBA,cAAMG,QAAN,GAAiB,IAAjB;AACD,OA5HQ;AA6HT+C,cA7HS,oBA6HClD,KA7HD,EA6HQ;AACfA,cAAME,GAAN,GAAY,IAAZ;AACD,OA/HQ;AAgITiD,WAhIS,iBAgIFnD,KAhIE,EAgIK;AACZA,gBAAQ;AACNG,oBAAU,IADJ;AAENiD,wBAAc,IAFR;AAGN9C,2BAAiB,GAHX;AAINC,qBAAW,IAAIC,IAAJ,CAAS,gBAAT,CAJL;AAKNC,mBAAS,IAAID,IAAJ,EALH;AAMNE,mBAAS,MANH;AAONM,kBAAQ;AAPF,SAAR;AASAxC,eAAO6E,OAAP,CAAeC,SAAf,CAAyB,IAAzB,EAA+B,OAA/B,EAAwC,GAAxC;AACD,OA3IQ,CA2IP;;AA3IO,KAlBwB,CA8JjC;AA9JiC,GAAtB,CAAf;;AAiKA5D,WAAS6D,KAAT,GAAiB/E,OAAOsB,KAAxB;;AAEAR,SAAOkE,UAAP,CAAkB,UAACC,EAAD,EAAKC,IAAL,EAAWC,IAAX,EAAoB;AACpC,QAAIF,GAAGvB,MAAH,CAAUb,IAAV,IAAkBoC,GAAGvB,MAAH,CAAUM,OAAhC,EAAwC;AACtC,UAAI,CAACiB,GAAGvB,MAAH,CAAUM,OAAX,IAAsB,CAACiB,GAAGvB,MAAH,CAAUC,YAArC,EAAkD;AAChDzC,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,UAAtB;AACAlE,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,QAAtB,EAAgC;AAC9B1D,eAAKuD,GAAG9B;AADsB,SAAhC;AAGA,YAAI8B,GAAGvB,MAAH,CAAUb,IAAV,CAAeS,QAAf,CAAwB,QAAxB,KAAqC2B,GAAGvB,MAAH,CAAUb,IAAV,CAAewC,KAAf,CAAqB,GAArB,EAA0B7B,MAA1B,GAAmC,CAA5E,EAA+E;AAC7EtC,mBAAS6D,KAAT,CAAeK,MAAf,CAAsB,SAAtB,EAAiC;AAC/BxC,oBAAQqC,GAAGvB,MAAH,CAAUb;AADa,WAAjC;AAGD,SAJD,MAIO;AACL3B,mBAAS6D,KAAT,CAAeK,MAAf,CAAsB,SAAtB,EAAiC;AAC/BE,uBAAWL,GAAGvB,MAAH,CAAUR,KAAV,GAAkB,GAAlB,GAAwB+B,GAAGvB,MAAH,CAAUb;AADd,WAAjC;AAGD;AACF,OAdD,MAcO,IAAIoC,GAAGvB,MAAH,CAAUC,YAAV,IAA0BrC,MAAME,KAAN,CAAYK,aAAZ,CAA0B2B,MAA1B,IAAoC,CAAlE,EAAqE;AAC1E,YAAI9B,MAAMuD,GAAG9B,IAAb;AACAzB,cAAMA,IAAIkC,SAAJ,CAAc,CAAd,EAAiBlC,IAAI8B,MAAJ,GAAW,CAA5B,CAAN;AACAtC,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,UAAtB;AACAlE,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,QAAtB,EAAgC;AAC9B1D;AAD8B,SAAhC;AAGAR,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,SAAtB,EAAiC;AAC7BE,qBAAWL,GAAGvB,MAAH,CAAUR,KAAV,GAAkB,GAAlB,GAAwB+B,GAAGvB,MAAH,CAAUb;AADhB,SAAjC;AAGA3B,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,iBAAtB,EAAyC;AACvCE,qBAAWL,GAAGvB,MAAH,CAAUK,aAAV,GAA0B,GAA1B,GAAgCkB,GAAGvB,MAAH,CAAUC;AADd,SAAzC;AAGD,OAbM,MAaA,IAAIsB,GAAGvB,MAAH,CAAUM,OAAV,IAAqB1C,MAAME,KAAN,CAAYK,aAAZ,CAA0B2B,MAA1B,IAAoC,CAA7D,EAA+D;AACpEtC,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,UAAtB;AACA,YAAI1D,OAAMuD,GAAG9B,IAAb;AACAzB,eAAMA,KAAIkC,SAAJ,CAAc,CAAd,EAAiBlC,KAAI8B,MAAJ,GAAW,CAA5B,CAAN;AACAtC,iBAAS6D,KAAT,CAAeK,MAAf,CAAsB,QAAtB,EAAgC;AAC9B1D;AAD8B,SAAhC;AAGA,YAAI6D,QAAQN,GAAGvB,MAAH,CAAUM,OAAV,CAAkBqB,KAAlB,CAAwB,GAAxB,CAAZ;AACA,YAAIE,MAAM,CAAN,EAASjC,QAAT,CAAkB,QAAlB,CAAJ,EAAiC;AAC/BpC,mBAAS6D,KAAT,CAAeK,MAAf,CAAsB,SAAtB,EAAiC;AAC/BxC,oBAAQ2C,MAAM,CAAN;AADuB,WAAjC;AAGD,SAJD,MAIO;AACLrE,mBAAS6D,KAAT,CAAeK,MAAf,CAAsB,SAAtB,EAAiC;AAC/BE,uBAAWC,MAAM,CAAN;AADoB,WAAjC;AAGD;AACDA,cAAMC,KAAN;AACA;AACAD,cAAMrB,OAAN,CAAc,UAACuB,OAAD,EAAa;AACzBvE,mBAAS6D,KAAT,CAAeK,MAAf,CAAsB,iBAAtB,EAAyC;AACvCE,uBAAWG;AAD4B,WAAzC;AAGD,SAJD;AAKD;AACF;;AAEDN;AACD,GAzDD;;AA4DAnF,SAAOkB,QAAP,GAAkB,IAAIlB,OAAOE,GAAX,CAAe;AAC/B;AACA;AACAY,kBAH+B;AAI/B4E,YAAQ;AAAA,aAAKC,EAAEzE,QAAF,CAAL;AAAA;;AAJuB,GAAf,EAMf0E,MANe,CAMR,MANQ,CAAlB;;AAQA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;;;;;;;;;;;;;;AClSD,IAAInF,IAAIV,QAAQ,QAAR,CAAR;AACA,IAAIW,IAAIX,QAAQ,QAAR,CAAR;;IAEqBO,Q;AACnB,oBAAauF,OAAb,EAAsBC,OAAtB,EAA+BC,SAA/B,EAA0C;AAAA;;AACxC,SAAKC,oBAAL,GAA4B,EAA5B;;AAEA,SAAKC,QAAL,GAAgBH,WAAW,eAA3B;AACA,SAAKI,KAAL,GAAaL,WAAW,YAAY7F,OAAOmG,QAAP,CAAgBC,IAApD;AACA,SAAKC,OAAL,GAAe,EAAf;AACA,SAAKC,SAAL,GAAiB,IAAjB;AACA,SAAKC,SAAL,GAAiB,EAAjB;;AAEA,SAAKC,qBAAL,GAA6B,KAAKC,iBAAL,CAAuB,WAAvB,CAA7B;AACA,SAAKC,YAAL,GAAoB,CAApB;AACA,SAAKC,gBAAL,GAAwB,KAAKF,iBAAL,CAAuB,uBAAvB,CAAxB;AACA,SAAKG,wBAAL,GAAgC,KAAKH,iBAAL,CAAuB,yBAAvB,CAAhC;AACD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;kCAEeI,Q,EAAU;AACvB,aAAO,KAAK,KAAKX,KAAV,GAAkB,KAAKD,QAAvB,GAAkC,GAAlC,GAAwCY,QAA/C;AACD;;;yCAEqBC,G,EAAK;AACzB,UAAIC,OAAO,IAAX;AACA,aAAO,UAAUrD,MAAV,EAAkBsD,QAAlB,EAA4B;AAAA;;AACjC,YAAIC,WAAWjH,OAAOkH,IAAP,CAAYJ,MAAMK,KAAKC,SAAL,CAAe1D,MAAf,CAAlB,CAAf;AACA,aAAKgD,YAAL;AACA,YAAIK,KAAKV,OAAL,CAAaY,QAAb,CAAJ,EAA4B;AAC1B,cAAIF,KAAKV,OAAL,CAAaY,QAAb,EAAuBI,UAAvB,GAAoCrF,KAAKsF,GAAL,KAAa,OAAO,EAA5D,EAAgE;AAC9D,mBAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACtCD,sBAAQT,KAAKV,OAAL,CAAaY,QAAb,EAAuBS,IAA/B;AACD,aAFM,CAAP;AAGD;AACF;AACD,eAAOjH,EAAEkH,GAAF,CAAMb,GAAN,EAAWpD,MAAX,EAAmBkE,IAAnB,CAAwB,UAACF,IAAD,EAAU;AACvC,gBAAKhB,YAAL;AACAK,eAAKV,OAAL,CAAaY,QAAb,IAAyB;AACvBI,wBAAYrF,KAAKsF,GAAL,EADW;AAEvBI,kBAAMA;AAFiB,WAAzB;AAIA,iBAAOA,IAAP;AACD,SAPM,CAAP;AAQD,OAlBD;AAmBD;;;sCAEkBb,Q,EAAU;AAC3B,aAAO,KAAKgB,oBAAL,CAA0B,KAAKC,aAAL,CAAmBjB,QAAnB,CAA1B,CAAP;AACD;;;0BAEMkB,S,EAAW;AAAA;;AAChB,UAAIC,MAAM,iCAAiCD,UAAUE,IAAV,CAAe,gCAAf,CAAjC,GAAoF,KAA9F;AACA,WAAKvB,YAAL;AACA,UAAII,MAAM,KAAKgB,aAAL,CAAmB,OAAnB,CAAV;AACA;AACA,UAAI,KAAKzB,OAAL,CAAarG,OAAOkH,IAAP,CAAYJ,MAAMiB,UAAUE,IAAV,CAAe,GAAf,CAAlB,CAAb,CAAJ,EAA0D;AACxD,YAAI,KAAK5B,OAAL,CAAarG,OAAOkH,IAAP,CAAYJ,MAAMiB,UAAUE,IAAV,CAAe,GAAf,CAAlB,CAAb,EAAqDZ,UAArD,GAAkErF,KAAKsF,GAAL,KAAa,OAAO,EAA1F,EAA8F;AAC5F,iBAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACtCD,oBAAQ,OAAKnB,OAAL,CAAarG,OAAOkH,IAAP,CAAYJ,MAAMiB,UAAUE,IAAV,CAAe,GAAf,CAAlB,CAAb,EAAqDP,IAA7D;AACD,WAFM,CAAP;AAGD;AACF;AACD,aAAOjH,EAAEyH,IAAF,CAAOpB,GAAP,EAAY;AACjBqB,cAAM,MADW;AAEjBT,cAAMM,GAFW;AAGjBI,kBAAU,MAHO;AAIjBC,qBAAa;AAJI,OAAZ,EAKJT,IALI,CAKC,UAACF,IAAD,EAAU;AAChB,eAAKhB,YAAL;AACA;AACA,eAAKL,OAAL,CAAarG,OAAOkH,IAAP,CAAYJ,MAAMiB,UAAUE,IAAV,CAAe,GAAf,CAAlB,CAAb,IAAuD;AACrDZ,sBAAYrF,KAAKsF,GAAL,EADyC;AAErDI,gBAAMA;AAF+C,SAAvD;AAIA,eAAOA,IAAP;AACD,OAbM,CAAP;AAcD;;;gCAEYnC,K,EAAO+C,M,EAAQ;AAC1B,UAAIP,YAAY,EAAhB;AACA,UAAIQ,aAAa,EAAjB;AACA,UAAIC,gBAAgB,EAApB;AACAjD,YAAMrB,OAAN,CAAc,UAACrB,IAAD,EAAU;AACtB4F,cAAMC,SAAN,CAAgBnF,IAAhB,CAAqBoF,KAArB,CAA2BZ,SAA3B,EAAsClF,KAAK+F,KAAL,CAAWN,MAAX,EAAmB,IAAnB,CAAtC;AACA5H,UAAEmI,MAAF,CAASN,UAAT,EAAqB1F,KAAKiG,oBAA1B;AACAN,sBAAc3F,KAAKE,QAAL,EAAd,IAAiC,EAAjC;AACD,OAJD;AAKA,aAAO,KAAK6F,KAAL,CAAWb,SAAX,EAAsBH,IAAtB,CAA2B,UAACF,IAAD,EAAU;;AAE1C,eAAO,IAAIH,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACtC,cAAIgB,MAAMM,OAAN,CAAcrB,IAAd,CAAJ,EAAyB;AACvBA,iBAAKxD,OAAL,CAAa,oBAAY;AACvB,kBAAI8E,SAASC,MAAT,KAAoB,GAAxB,EAA6B;AAC3BT,8BAAcD,WAAWS,SAASE,IAApB,EAA0BhG,KAAxC,EAA+CqF,WAAWS,SAASE,IAApB,EAA0B/F,IAAzE,IAAiFgE,KAAKgC,KAAL,CAAWH,SAASA,QAApB,CAAjF;AACD,eAFD,MAEO;AACLR,8BAAcD,WAAWS,SAASE,IAApB,EAA0BhG,KAAxC,EAA+CqF,WAAWS,SAASE,IAApB,EAA0B/F,IAAzE,IAAiF,IAAjF;AACD;AACF,aAND;AAOAqE,oBAAQgB,aAAR;AACD,WATD,MASO;AACLf,mBAAO,IAAI2B,KAAJ,CAAU,gBAAV,CAAP;AACD;AACF,SAbM,CAAP;AAcD,OAhBM,CAAP;AAiBD;;;yBAEKvG,I,EAAM;AAAA;;AACV,UAAIA,KAAKyC,SAAT,EAAoB;AAClB,YAAI+D,WAAWxG,KAAKyC,SAAL,CAAeD,KAAf,CAAqB,GAArB,CAAf;AACA,YAAIgE,SAAS7F,MAAT,GAAkB,CAAtB,EAAyB;AACvBX,eAAKK,KAAL,GAAamG,SAAS,CAAT,CAAb;AACAxG,eAAKM,IAAL,GAAYkG,SAAS,CAAT,CAAZ;AACD,SAHD,MAGO;AACLxG,eAAKK,KAAL,GAAamG,SAAS,CAAT,CAAb;AACAxG,eAAKM,IAAL,GAAYkG,SAAS,CAAT,CAAZ;AACD;AACF;;AAED,UAAIxG,KAAKD,MAAT,EAAiB;AACf,YAAIC,KAAKD,MAAL,CAAYU,QAAZ,CAAqB,YAArB,CAAJ,EAAwC;AACtC,cAAI+F,YAAWxG,KAAKD,MAAL,CAAYyC,KAAZ,CAAkB,GAAlB,CAAf;AACAxC,eAAKK,KAAL,GAAamG,UAAS,CAAT,CAAb;AACAxG,eAAKM,IAAL,GAAYkG,UAAS,CAAT,EAAYhE,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAZ;AACD,SAJD,MAKK;AACH,cAAIgE,aAAWxG,KAAKD,MAAL,CAAYyC,KAAZ,CAAkB,GAAlB,CAAf;AACAxC,eAAKK,KAAL,GAAamG,WAAS,CAAT,CAAb;AACAxG,eAAKM,IAAL,GAAYkG,WAAS,CAAT,CAAZ;AACD;AACF;;AAEDxG,WAAKE,QAAL,GAAgB,YAAM;AACpB,YAAIF,KAAKK,KAAL,IAAcL,KAAKM,IAAvB,EAA6B;AAC3B,iBAAON,KAAKK,KAAL,GAAa,GAAb,GAAmBL,KAAKM,IAA/B;AACD,SAFD,MAEO;AACL,iBAAOgE,KAAKC,SAAL,CAAevE,IAAf,CAAP;AACD;AACF,OAND;AAOAA,WAAKyG,aAAL,GAAqB,EAArB;AACAzG,WAAKiG,oBAAL,GAA4B,EAA5B;;AAEAjG,WAAK0G,mBAAL,GAA2B,YAAM;AAC/B,eAAK/C,qBAAL,GAA6BoB,IAA7B,CAAkC,UAACF,IAAD,EAAU;AAC1C,cAAI8B,KAAK,KAAT;AACA9B,eAAKxD,OAAL,CAAa,UAACtB,MAAD,EAAY;AACvB,gBAAIA,OAAOU,QAAP,CAAgB,YAAhB,CAAJ,EAAmC;AACjC,kBAAI+F,aAAWzG,OAAOyC,KAAP,CAAa,GAAb,CAAf;AACA,kBAAInC,QAAQmG,WAAS,CAAT,CAAZ;AACA,kBAAIlG,OAAOkG,WAAS,CAAT,EAAYhE,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAX;AACA,kBAAIxC,KAAKE,QAAL,OAAqBG,QAAQ,GAAR,GAAcC,IAAvC,EAA8C;AAC5CqG,qBAAK,IAAL;AACD;AACF;AACF,WATD;AAUA,iBAAOA,EAAP;AACD,SAbD;AAcD,OAfD;;AAiBA,UAAIC,aAAa,SAAbA,UAAa,CAACC,CAAD,EAAIvG,IAAJ,EAAU2D,GAAV,EAAkB;AACjC4C,UAAEvG,IAAF,IAAU,OAAK0E,oBAAL,CAA0Bf,GAA1B,CAAV;AACA,eAAO4C,EAAEvG,IAAF,CAAP;AACD,OAHD;;AAKA,UAAIwG,WAAW,SAAXA,QAAW,CAACD,CAAD,EAAIvG,IAAJ,EAAU0D,QAAV,EAAuB;AACpC,YAAI+C,eAAe,OAAK3D,QAAL,GAAgB,GAAhB,GAAsBpD,KAAKK,KAA3B,GAAmC,GAAnC,GAAyCL,KAAKM,IAA9C,GAAqD,GAArD,GAA2D0D,QAA9E;AACA,YAAIC,MAAM,OAAKZ,KAAL,GAAa0D,YAAvB;AACAF,UAAEJ,aAAF,CAAgBnG,IAAhB,IAAwByG,YAAxB;AACAF,UAAEZ,oBAAF,CAAuBc,YAAvB,IAAuC,EAAEzG,MAAMA,IAAR,EAAcD,OAAOL,KAAKE,QAAL,EAArB,EAAvC;AACA,eAAO0G,WAAWC,CAAX,EAAcvG,IAAd,EAAoB2D,GAApB,CAAP;AACD,OAND;;AAQA,UAAI+C,aAAa,SAAbA,UAAa,CAACH,CAAD,EAAII,MAAJ,EAAYjD,QAAZ,EAAyB;AACxC,YAAIkD,OAAOJ,SAASD,CAAT,EAAYI,MAAZ,EAAoB,gBAAgBjD,QAApC,CAAX;AACAkD,aAAKC,UAAL,GAAkB,UAACC,YAAD,EAAevG,MAAf,EAAuBsD,QAAvB,EAAoC;AACpD,cAAIF,MAAM,gBAAgBD,QAAhB,GAA2B,eAA3B,GAA6CoD,aAAa/G,KAA1D,GAAkE,GAAlE,GAAwE+G,aAAa9G,IAA/F;AACA,iBAAOwG,SAAS7C,GAAT,GAAP;AACD,SAHD;AAIA,eAAOiD,IAAP;AACD,OAPD;;AASA,UAAIG,cAAc,SAAdA,WAAc,CAACR,CAAD,EAAII,MAAJ,EAAYjD,QAAZ,EAAyB;AACzC,YAAIC,MAAM,OAAKgB,aAAL,CAAmB,SAASjB,QAAT,GAAoB,kBAApB,GAAyC7G,OAAOkH,IAAP,CAAYwC,EAAE9G,MAAd,CAA5D,CAAV;AACA,eAAO6G,WAAWC,CAAX,EAAcI,MAAd,EAAsBhD,GAAtB,CAAP;AACD,OAHD;;AAKAjE,WAAK+F,KAAL,GAAa,UAACuB,WAAD,EAAcC,SAAd,EAA4B;AACvC,YAAIC,SAASF,YAAYG,GAAZ,CAAgB,UAACC,CAAD,EAAO;AAAE,iBAAO1H,KAAKyG,aAAL,CAAmBiB,CAAnB,CAAP;AAA8B,SAAvD,CAAb;AACA,YAAIH,SAAJ,EAAe;AACb,iBAAOC,MAAP;AACD;AACD,eAAO,OAAKzB,KAAL,CAAWyB,MAAX,EAAmBzC,IAAnB,CAAwB,UAACF,IAAD,EAAU;AACvC,iBAAO,IAAIH,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACtC,gBAAIgB,MAAMM,OAAN,CAAcrB,IAAd,CAAJ,EAAyB;AACvB,kBAAI8C,SAAS,EAAb;AACA9C,mBAAKxD,OAAL,CAAa,oBAAY;AACvB,oBAAI8E,SAASC,MAAT,KAAoB,GAAxB,EAA6B;AAC3BuB,yBAAO3H,KAAKiG,oBAAL,CAA0BE,SAASE,IAAnC,EAAyC/F,IAAhD,IAAwDgE,KAAKgC,KAAL,CAAWH,SAASA,QAApB,CAAxD;AACD,iBAFD,MAEO;AACLwB,yBAAO3H,KAAKiG,oBAAL,CAA0BE,SAASE,IAAnC,EAAyC/F,IAAhD,IAAwD,IAAxD;AACD;AACF,eAND;AAOAqE,sBAAQgD,MAAR;AACD,aAVD,MAUO;AACL/C,qBAAO,IAAI2B,KAAJ,CAAU,gBAAV,CAAP;AACD;AACF,WAdM,CAAP;AAeD,SAhBM,CAAP;AAiBD,OAtBD;;AAwBA,UAAIvG,KAAKK,KAAL,IAAcL,KAAKM,IAAvB,EAA6B;AAC3B;;AAEA;AACA0G,mBAAWhH,IAAX,EAAiB,cAAjB,EAAiC,eAAjC;AACAgH,mBAAWhH,IAAX,EAAiB,+BAAjB,EAAkD,sBAAlD;AACAgH,mBAAWhH,IAAX,EAAiB,aAAjB,EAAgC,SAAhC;AACA;AACAgH,mBAAWhH,IAAX,EAAiB,qBAAjB,EAAwC,uBAAxC;AACAgH,mBAAWhH,IAAX,EAAiB,wBAAjB,EAA2C,yBAA3C;AACA8G,iBAAS9G,IAAT,EAAe,iCAAf,EAAkD,mCAAlD;AACAgH,mBAAWhH,IAAX,EAAiB,8BAAjB,EAAiD,sBAAjD;AACAgH,mBAAWhH,IAAX,EAAiB,OAAjB,EAA0B,OAA1B;AACAgH,mBAAWhH,IAAX,EAAiB,oBAAjB,EAAuC,eAAvC;AACAgH,mBAAWhH,IAAX,EAAiB,0CAAjB,EAA6D,gCAA7D;AACAgH,mBAAWhH,IAAX,EAAiB,oCAAjB,EAAuD,uCAAvD;AACAgH,mBAAWhH,IAAX,EAAiB,YAAjB,EAA+B,QAA/B;AACAgH,mBAAWhH,IAAX,EAAiB,qBAAjB,EAAwC,gBAAxC;AACAgH,mBAAWhH,IAAX,EAAiB,kBAAjB,EAAqC,OAArC;;AAEA;;AAEA;;AAEA;AACAgH,mBAAWhH,IAAX,EAAiB,eAAjB,EAAkC,gBAAlC;AACAgH,mBAAWhH,IAAX,EAAiB,wBAAjB,EAA2C,mBAA3C;AACAgH,mBAAWhH,IAAX,EAAiB,UAAjB,EAA6B,UAA7B;;AAEA;;AAEA;AACAgH,mBAAWhH,IAAX,EAAiB,YAAjB,EAA+B,YAA/B;AACAgH,mBAAWhH,IAAX,EAAiB,gBAAjB,EAAmC,kBAAnC;AACA8G,iBAAS9G,IAAT,EAAe,oBAAf,EAAqC,qBAArC;AACAgH,mBAAWhH,IAAX,EAAiB,iBAAjB,EAAoC,kBAApC;;AAEA;AACAgH,mBAAWhH,IAAX,EAAiB,eAAjB,EAAkC,iBAAlC;;AAEA;AACA8G,iBAAS9G,IAAT,EAAe,cAAf,EAA+B,eAA/B;AACAgH,mBAAWhH,IAAX,EAAiB,qBAAjB,EAAwC,sBAAxC;AACA8G,iBAAS9G,IAAT,EAAe,cAAf,EAA+B,cAA/B;AACA8G,iBAAS9G,IAAT,EAAe,eAAf,EAAgC,eAAhC;AACA8G,iBAAS9G,IAAT,EAAe,YAAf,EAA6B,aAA7B;;AAEA;AACA8G,iBAAS9G,IAAT,EAAe,cAAf,EAA+B,cAA/B;AACA8G,iBAAS9G,IAAT,EAAe,iBAAf,EAAkC,kBAAlC;AACA8G,iBAAS9G,IAAT,EAAe,YAAf,EAA6B,YAA7B;;AAEA;AACA8G,iBAAS9G,IAAT,EAAe,WAAf,EAA4B,YAA5B;AACAgH,mBAAWhH,IAAX,EAAiB,WAAjB,EAA8B,WAA9B;AACAgH,mBAAWhH,IAAX,EAAiB,OAAjB,EAA0B,OAA1B;AACA8G,iBAAS9G,IAAT,EAAe,iBAAf,EAAkC,kBAAlC;AACAgH,mBAAWhH,IAAX,EAAiB,WAAjB,EAA8B,YAA9B;AACAgH,mBAAWhH,IAAX,EAAiB,aAAjB,EAAgC,cAAhC;AACAgH,mBAAWhH,IAAX,EAAiB,MAAjB,EAAyB,MAAzB;AACD;;AAED,UAAIA,KAAKD,MAAT,EAAiB;AACf;AACAsH,oBAAYrH,IAAZ,EAAkB,iBAAlB,EAAqC,mBAArC,GACAqH,YAAYrH,IAAZ,EAAkB,2BAAlB,EAA+C,gCAA/C,CADA,EAEAqH,YAAYrH,IAAZ,EAAkB,iBAAlB,EAAqC,qBAArC,CAFA,EAGAqH,YAAYrH,IAAZ,EAAkB,qBAAlB,EAAyC,yBAAzC,CAHA,EAIAqH,YAAYrH,IAAZ,EAAkB,qBAAlB,EAAyC,yBAAzC,CAJA,EAKAqH,YAAYrH,IAAZ,EAAkB,yBAAlB,EAA6C,6BAA7C,CALA;AAQD;;AAED,aAAOA,IAAP;AACD;;;;;;kBA3SkBvC,Q;;;;;;;;;;;;;;ICHAE,U;;;;;;;iCACEkH,I,EAAM+C,Q,EAAUC,M,EAAQC,G,EAAK;AAChDA,YAAMA,OAAO,MAAb;AACAF,iBAAWA,YAAY,IAAIzI,IAAJ,CAAS,YAAT,CAAvB;AACA0I,eAASA,UAAU,IAAI1I,IAAJ,EAAnB;AACA,UAAIyG,MAAMM,OAAN,CAAcrB,KAAK,CAAL,CAAd,CAAJ,EAA4B;AAC1BA,eAAOA,KAAK4C,GAAL,CAAS,UAACM,KAAD,EAAW;AACzB,iBAAOpK,WAAWqK,YAAX,CAAwBD,KAAxB,CAAP;AACD,SAFM,CAAP;AAGD,OAJD,MAIO;AACLlD,eAAOA,KAAK4C,GAAL,CAAS,UAACQ,CAAD,EAAO;AACrBA,YAAEC,IAAF,GAAS,IAAI/I,IAAJ,CAAS8I,EAAEH,GAAF,CAAT,CAAT;AACA,iBAAOG,CAAP;AACD,SAHM,EAGJE,MAHI,CAGG,UAACF,CAAD,EAAO;AACf,iBAAOL,WAAWK,EAAEC,IAAb,IAAqBD,EAAEC,IAAF,GAASL,MAArC;AACD,SALM,EAKJO,IALI,CAKC,UAACC,CAAD,EAAIC,CAAJ,EAAU;AAChB,iBAAOD,EAAEH,IAAF,GAASI,EAAEJ,IAAlB;AACD,SAPM,CAAP;AAQD;AACD,aAAOrD,IAAP;AACD;;;+BAEkBA,I,EAAMiD,G,EAAKS,O,EAAS;AACrCA,gBAAUA,WAAW,OAArB;AACA,UAAI3C,MAAMM,OAAN,CAAcrB,KAAK,CAAL,CAAd,CAAJ,EAA4B;AAC1BA,eAAOA,KAAK4C,GAAL,CAAS,UAACM,KAAD,EAAW;AACzB,iBAAOpK,WAAW6K,UAAX,CAAsBT,KAAtB,EAA6BD,GAA7B,CAAP;AACD,SAFM,CAAP;AAGD,OAJD,MAIO,IAAIA,IAAInH,MAAJ,GAAa,CAAjB,EAAmB;AACxB,eAAOkE,KAAK4C,GAAL,CAAS,UAACQ,CAAD,EAAO;AACrB,cAAIQ,MAAM;AACRP,kBAAMD,EAAEC,IADA;AAERQ,mBAAOT,EAAEH,IAAI,CAAJ,CAAF;AAFC,WAAV;AAIAW,cAAIF,OAAJ,IAAeN,EAAEH,GAAF,CAAf;AACA,iBAAOW,GAAP;AACD,SAPM,CAAP;AAQD,OATM,MAUH;AACF,eAAO5D,KAAK4C,GAAL,CAAS,UAACQ,CAAD,EAAO;AACrB,cAAIQ,MAAM;AACRP,kBAAMD,EAAEC;AADA,WAAV;AAGAO,cAAIF,OAAJ,IAAeN,EAAEH,GAAF,KAAU,CAAzB;AACA,iBAAOW,GAAP;AACD,SANM,CAAP;AAOD;AACD,aAAO5D,IAAP;AACD;;;uCAE0BA,I,EAAMiD,G,EAAK;AACpC,UAAIlC,MAAMM,OAAN,CAAcrB,KAAK,CAAL,CAAd,CAAJ,EAA4B;AAC1BA,eAAOA,KAAK4C,GAAL,CAAS,UAACM,KAAD,EAAW;AACzB,iBAAOpK,WAAW6K,UAAX,CAAsBT,KAAtB,EAA6BD,GAA7B,CAAP;AACD,SAFM,CAAP;AAGD,OAJD,MAIO;AACL,eAAOjD,KAAK4C,GAAL,CAAS,UAACQ,CAAD,EAAO;AACrB,iBAAO;AACLC,kBAAMD,EAAEC,IADH;AAELS,2BAAeV,EAAEH,GAAF;AAFV,WAAP;AAID,SALM,CAAP;AAMD;AACD,aAAOjD,IAAP;AACD;;;iCAEoB+D,G,EAAK;AACxB,UAAIC,MAAMD,IAAIjI,MAAd;AACA,UAAImI,MAAMF,IAAIG,MAAJ,CAAW,UAACV,CAAD,EAAIX,CAAJ,EAAU;AAC7B,YAAIsB,SAAStB,CAAT,CAAJ,EAAiB;AACf,iBAAOW,IAAIX,CAAX;AACD,SAFD,MAEO;AACLmB;AACA,iBAAOR,CAAP;AACD;AACF,OAPS,EAOP,CAPO,CAAV;AAQA,aAAQS,MAAMD,GAAP,IAAe,CAAtB;AACD;;;iCAEoBhE,I,EAAMiD,G,EAAK;AAC9B,UAAImB,OAAOpE,KAAK4C,GAAL,CAAS,UAACC,CAAD,EAAO;AAAE,eAAOA,EAAEI,GAAF,CAAP;AAAe,OAAjC,CAAX;AACA,UAAIoB,OAAOvL,WAAWwL,YAAX,CAAwBF,IAAxB,CAAX;AACA,aAAOpE,KAAKsD,MAAL,CAAY,UAACT,CAAD,EAAO;AACxB,eAAOA,EAAEI,GAAF,IAASoB,IAAhB;AACD,OAFM,CAAP;AAGD;;;2CAE8BrE,I,EAAMiD,G,EAAKsB,S,EAAWF,I,EAAM;AACzD,UAAID,OAAOpE,KAAK4C,GAAL,CAAS,UAACC,CAAD,EAAO;AAAE,eAAOA,EAAEI,GAAF,CAAP;AAAe,OAAjC,CAAX;AACAoB,aAAOA,QAAQvL,WAAWwL,YAAX,CAAwBF,IAAxB,CAAf;AACA,UAAII,YAAYJ,KAAKxB,GAAL,CAAS,UAACC,CAAD,EAAO;AAC9B,eAAO,CAACA,IAAIwB,IAAL,KAAcxB,IAAIwB,IAAlB,CAAP;AACD,OAFe,CAAhB;AAGA,aAAOrE,KAAK4C,GAAL,CAAS,UAACC,CAAD,EAAO;AACrB,YAAI4B,SAAS,EAAb;AACA,YAAI5B,EAAEQ,IAAN,EAAY;AACVoB,iBAAOpB,IAAP,GAAc,IAAI/I,IAAJ,CAASuI,EAAEQ,IAAX,CAAd;AACAoB,iBAAOxB,MAAMsB,SAAb,IAA0B1B,EAAEI,GAAF,CAA1B;AACD;AACDwB,eAAO,UAAUF,SAAjB,IAA8B1B,EAAEI,GAAF,IAASyB,KAAKC,IAAL,CAAU7L,WAAWwL,YAAX,CAAwBE,SAAxB,CAAV,CAAvC;AACAC,eAAO,UAAUF,SAAjB,IAA8B1B,EAAEI,GAAF,IAASyB,KAAKC,IAAL,CAAU7L,WAAWwL,YAAX,CAAwBE,SAAxB,CAAV,CAAvC;AACA,eAAOC,MAAP;AACD,OATM,CAAP;AAUD;;;sCAEyBzE,I,EAAMiD,G,EAAKoB,I,EAAM;AACzC,UAAID,OAAOpE,KAAK4C,GAAL,CAAS,UAACC,CAAD,EAAO;AAAE,eAAQA,EAAEI,GAAF,IAASJ,EAAEI,GAAF,CAAT,GAAkB,CAA1B;AAA8B,OAAhD,CAAX;;AAEAoB,aAAOA,QAAQvL,WAAWwL,YAAX,CAAwBF,IAAxB,CAAf;AACA,UAAII,YAAYJ,KAAKxB,GAAL,CAAS,UAACC,CAAD,EAAO;AAC9B,eAAO,CAACA,IAAIwB,IAAL,KAAcxB,IAAIwB,IAAlB,CAAP;AACD,OAFe,CAAhB;AAGA,aAAOK,KAAKC,IAAL,CAAU7L,WAAWwL,YAAX,CAAwBE,SAAxB,CAAV,CAAP;AACD;;;6BAEgBT,G,EAAKd,G,EAAK;AACzB,UAAImB,OAAOtL,WAAW8L,OAAX,CAAmBb,GAAnB,EAAwBd,GAAxB,CAAX;AACA,UAAIoB,OAAOvL,WAAWwL,YAAX,CAAwBF,IAAxB,CAAX;AACA,UAAIS,SAAS/L,WAAWgM,iBAAX,CAA6Bf,GAA7B,EAAkCd,GAAlC,EAAuCoB,IAAvC,CAAb;AACA,UAAIU,WAAWF,SAASA,MAAxB;AACA,aAAO;AACL,gBAAQR,IADH;AAEL,kBAAUQ,MAFL;AAGL,oBAAYE;AAHP,OAAP;AAKD;;;4BAEeC,K,EAAO/B,G,EAAK;AAC1B,aAAO+B,MAAMpC,GAAN,CAAU,UAACC,CAAD,EAAO;AAAE,eAAOA,EAAEI,GAAF,CAAP;AAAe,OAAlC,CAAP;AACD;;;mCAEsBjD,I,EAAMiD,G,EAAKgC,gB,EAAkB;AAClD;AACA,UAAIC,SAAUD,mBAAmB,CAAjC;AACAjF,aAAOA,KAAKsD,MAAL,CAAY,iBAAS;AAC1B,eAAOa,SAASjB,MAAMD,GAAN,CAAT,CAAP;AACD,OAFM,CAAP;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAOnK,WAAWqM,aAAX,CAAyBnF,IAAzB,EAA+BkF,MAA/B,EAAuCA,MAAvC,EAAgDA,SAAS,CAAzD,EAA6D,UAACE,YAAD,EAAe/B,IAAf,EAAwB;AAC1F,YAAIe,OAAOtL,WAAW8L,OAAX,CAAmBQ,YAAnB,EAAiCnC,GAAjC,CAAX;AACA,YAAIC,QAAQ,EAAEG,MAAMA,IAAR,EAAZ;AACAH,cAAMD,MAAM,SAAZ,IAAyByB,KAAKW,KAAL,CAAWvM,WAAWwL,YAAX,CAAwBF,IAAxB,IAA8B,GAAzC,IAA8C,GAAvE;AACA,eAAOlB,KAAP;AACD,OALM,CAAP;AAMD;;;kCAEqBlD,I,EAAMsF,U,EAAYC,S,EAAWC,Q,EAAUnD,I,EAAM;AACjEiD,mBAAaA,cAAc,EAA3B;AACAE,iBAAWA,YAAa,CAACD,YAAYD,UAAb,IAA2B,CAAnD;AACA,UAAIG,UAAU,EAAd;AACA,UAAIC,gBAAgB,EAApB;AACA,UAAIC,IAAI,CAAR;;AAEA,UAAI5C,WAAW,IAAIzI,IAAJ,EAAf;AACA,UAAI0I,SAAS,IAAI1I,IAAJ,EAAb;;AAEA,WAAK,IAAI+I,OAAO,IAAI/I,IAAJ,CAAS0F,KAAK,CAAL,EAAQqD,IAAjB,CAAhB,EAAwCA,QAAQrD,KAAKA,KAAKlE,MAAL,GAAc,CAAnB,EAAsBuH,IAAtE,EAA4EA,KAAKuC,OAAL,CAAavC,KAAKwC,OAAL,KAAiBL,QAA9B,CAA5E,EAAqH;AACnHzC,mBAAY,IAAIzI,IAAJ,CAAS+I,IAAT,CAAD,CAAiBuC,OAAjB,CAAyBvC,KAAKwC,OAAL,KAAiBP,UAA1C,CAAX;AACAtC,iBAAU,IAAI1I,IAAJ,CAAS+I,IAAT,CAAD,CAAiBuC,OAAjB,CAAyBvC,KAAKwC,OAAL,KAAiBN,SAA1C,CAAT;AACAG,wBAAgB1F,KAAKsD,MAAL,CAAY,UAACF,CAAD,EAAO;AACjC,iBAAQL,YAAYK,EAAEC,IAAf,IAAyBD,EAAEC,IAAF,IAAUL,MAA1C;AACD,SAFe,CAAhB;AAGAyC,gBAAQ5J,IAAR,CAAawG,KAAKqD,aAAL,EAAoB,IAAIpL,IAAJ,CAAS+I,IAAT,CAApB,EAAoCsC,CAApC,CAAb;AACAA;AACD;AACD,aAAOF,OAAP;AACD;;;+BAEkBzF,I,EAAM8F,Q,EAAUb,gB,EAAkB;AACnD;AACA,UAAIC,SAAUD,mBAAmB,CAAjC;AACAjF,WAAK+F,OAAL,CAAa,EAAC1C,MAAMyC,QAAP,EAAiBE,OAAO,IAAxB,EAAb;AACA,aAAOhG,IAAP;AACD;;;yCAE4BA,I,EAAMiD,G,EAAKgD,Q,EAAU;AAChD,UAAI,CAACjG,IAAL,EAAW;AACT,eAAO,EAAP;AACD;AACDiG,iBAAWA,YAAYnN,WAAWwL,YAAX,CAAwBtE,KAAK4C,GAAL,CAAS,UAACC,CAAD,EAAO;AAAE,eAAOA,EAAEI,GAAF,CAAP;AAAe,OAAjC,CAAxB,CAAvB;AACAjD,aAAOA,KAAK4C,GAAL,CAAS,UAACM,KAAD,EAAW;AACzBA,cAAM,OAAN,IAAkBA,MAAMD,GAAN,IAAagD,QAA/B;AACA,eAAO/C,KAAP;AACD,OAHM,CAAP;AAIA,aAAOlD,IAAP;AACD;;;iCAEoBkG,Q,EAAUC,W,EAAalD,G,EAAKvJ,M,EAAQ;AACvDA,aAAOoB,MAAP,GAAiBpB,OAAOoB,MAAP,KAAkB,IAAnC;AACApB,aAAOqJ,QAAP,GAAkBrJ,OAAOqJ,QAAP,IAAmB,IAAIzI,IAAJ,CAAS,YAAT,CAArC;AACAZ,aAAOsJ,MAAP,GAAgBtJ,OAAOsJ,MAAP,IAAiB,IAAI1I,IAAJ,EAAjC;AACAZ,aAAOwL,MAAP,GAAgBxL,OAAOwL,MAAP,IAAiB,GAAjC;AACAjC,YAAMA,OAAOmD,OAAOC,IAAP,CAAYH,SAAS,CAAT,CAAZ,EAAyB,CAAzB,CAAb;;AAEA,UAAII,OAAO;AACTC,cAAM,CADG;AAET/L,iBAAS;AAFA,OAAX;AAIA,UAAIwF,OAAO,EAAX;;AAEAA,WAAK,MAAL,IAAelH,WAAW0N,cAAX,CACb1N,WAAWqK,YAAX,CACErK,WAAW6K,UAAX,CACEuC,QADF,EAEEjD,GAFF,CADF,EAIKvJ,OAAOqJ,QAJZ,EAIsBrJ,OAAOsJ,MAJ7B,CADa,EAMVyD,SANU,EAMC/M,OAAOwL,MANR,CAAf;;AAQAlF,WAAK,SAAL,IAAkBlH,WAAW0N,cAAX,CAChB1N,WAAWqK,YAAX,CACErK,WAAW6K,UAAX,CACEwC,WADF,EAEElD,GAFF,CADF,EAIKvJ,OAAOqJ,QAJZ,EAIsBrJ,OAAOsJ,MAJ7B,CADgB,EAMbyD,SANa,EAMF/M,OAAOwL,MANL,CAAlB;;AAQA,UAAIwB,SAAS,EAAb;;AAEA,aAAOJ,KAAK,MAAL,IAAetG,KAAK,MAAL,EAAalE,MAA5B,IAAsCwK,KAAK,SAAL,IAAkBtG,KAAK,SAAL,EAAgBlE,MAA/E,EAAuF;AACrF,YAAI6K,SAAS;AACXX,iBAAOhG,KAAK,SAAL,EAAgBsG,KAAK9L,OAArB,EAA8BwL,KAA9B,GAAsChG,KAAK,MAAL,EAAasG,KAAKC,IAAlB,EAAwBP;AAD1D,SAAb;AAGA,YAAItM,OAAOoB,MAAX,EAAmB;AACjB6L,iBAAOtD,IAAP,GAAcrD,KAAK,MAAL,EAAasG,KAAKC,IAAlB,EAAwBlD,IAAtC;AACD,SAFD,MAEO;AACLsD,iBAAOC,CAAP,GAAWN,KAAKC,IAAhB;AACD;AACDG,eAAO7K,IAAP,CAAY8K,MAAZ;AACAL,aAAK,MAAL;AACAA,aAAK,SAAL;AACD;AACD,aAAOI,MAAP;AACD;;;4BAEe1G,I,EAAMiD,G,EAAK;AACzB;AACA,UAAI4D,QAAQ/N,WAAWgO,QAAX,CAAoB9G,IAApB,EAA0BiD,GAA1B,CAAZ;AACA,aAAOjD,KAAK4C,GAAL,CAAS,UAACC,CAAD,EAAO;AACrB,YAAI4B,SAAS,EAAb;AACA;AACEA,eAAOpB,IAAP,GAAc,IAAI/I,IAAJ,CAASuI,EAAEQ,IAAX,CAAd;AACF;AACA;AACA;AACA,YAAI0D,SAASF,MAAM,QAAN,KAAmB,CAAnB,GAAuB,CAAvB,GAA4B,CAAChE,EAAEI,GAAF,IAAS4D,MAAM,MAAN,CAAV,IAA2BA,MAAM,QAAN,CAApE;AACApC,eAAOxB,GAAP,IAAc8D,MAAd;AACA,eAAOtC,MAAP;AACD,OAVM,CAAP;AAWD;;;8BAEiB;AAChB,aAAO1D,MAAMvD,IAAN,CAAWwJ,SAAX,CAAP;AACD;;;;;;kBApQkBlO,U;;;CCArB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhDA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvCA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtFA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlDA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3EA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApEA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1BA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA9QA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/GA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtEA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7DA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjJA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvEA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7PA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlDA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1EA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3MA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvPA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA9xBA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjDA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5VA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7PA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7GA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvRA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhQA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1JA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5PA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArWA;AAAA;;;;;;ACAA;;;;;;;;;;AAUA,IAAI,OAAOP,MAAP,KAAkB,WAAtB,EAAmC;AAAC,OAAM,IAAImJ,KAAJ,CAAU,yBAAV,CAAN;AAA2C;AAC/E,CAAC,CAAC,UAAS3I,CAAT,EAAY;AAAE,KAAIqF,UAAUrF,EAAEkO,EAAF,CAAKC,MAAL,CAAYvJ,KAAZ,CAAkB,GAAlB,CAAd,CAAsC,IAAIS,QAAQ,CAAR,KAAc,CAAd,IAAmBA,QAAQ,CAAR,IAAa,CAApC,EAAuC;AAAC,QAAM,IAAIsD,KAAJ,CAAU,uCAAV,CAAN;AAA2D;AAAC,CAAzJ,EAA2JnJ,M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","file":"public/app.js","sourcesContent":["const queryString = require('query-string')\n\n// import AugurApp from './components/AugurApp.vue'\n// import router from './router/router'\n// import AugurCards from './components/AugurCards.vue'\n\n\nexport default function Augur () {\n window.jQuery = require('jquery')\n window.Vue = require('vue')\n window.Vuex = require('vuex')\n window.VueVega = require('vue-vega').default\n let AugurAPI = require('AugurAPI').default\n window.AugurAPI = new AugurAPI()\n window.AugurRepos = {}\n window.AugurStats = require('AugurStats').default\n window.$ = window.jQuery\n window._ = require('lodash')\n window.d3 = require('d3')\n window.SvgSaver = require('svgsaver')\n window.VueRouter = require('vue-router')\n let router = require('./router/router').default\n\n\n window.AUGUR_CHART_STYLE = {\n brightColors: ['#FF3647', '#007BFF', '#DAFF4D', '#B775FF'],\n dullColors: ['#CCCCCC', '#CCE7F2', '#D4F0B0', '#D8C3E3']\n }\n\n let AugurApp = require('./components/AugurApp')\n\n window.Vue.use(window.Vuex)\n window.Vue.use(window.VueVega)\n window.Vue.use(window.VueRouter)\n window.Vue.config.productionTip = false\n\n\n\n window.augur = new window.Vuex.Store({\n state: {\n hasState: null,\n tab: 'gmd',\n baseRepo: null,\n gitRepo: null,\n comparedRepos: [],\n trailingAverage: 180,\n startDate: new Date('1 February 2011'),\n endDate: new Date(),\n compare: 'rolling',\n showBelowAverage: false,\n rawWeekly: false,\n showArea: true,\n showDetail: true,\n showTooltip: true,\n byDate: false\n },\n mutations: {\n setGitRepo(state, payload) {\n state.gitRepo = payload.gitURL\n state.baseRepo = payload.gitURL\n state.hasState = true\n let repo = window.AugurAPI.Repo(payload)\n if (!window.AugurRepos[repo.toString()]) {\n window.AugurRepos[repo.toString()] = repo\n } else {\n repo = window.AugurRepos[repo.toString()]\n }\n },\n setRepo (state, payload) {\n let repo = window.AugurAPI.Repo(payload)\n if (!window.AugurRepos[repo.toString()]) {\n window.AugurRepos[repo.toString()] = repo\n } else {\n repo = window.AugurRepos[repo.toString()]\n }\n state.queryObject = {}\n state.hasState = true\n if (repo.owner && repo.name && !state.gitRepo) {\n state.baseRepo = repo.toString()\n let title = repo.owner + '/' + repo.name + '- Augur'\n // state.tab = 'gmd'\n // state.queryObject['repo'] = repo.owner + '+' + repo.name\n }\n if (payload.gitURL) {\n // state.queryObject['git'] = window.btoa(repo.gitURL)\n // state.tab = 'git'\n state.gitRepo = repo.gitURL\n state.tab = state.tab ? state.tab : 'git'\n }\n },\n // removeComparedRepo (state, payload) {\n // state.comparedRepos\n // },\n addComparedRepo (state, payload) {\n state.compare = 'zscore'\n state.hasState = true\n let repo = window.AugurAPI.Repo(payload)\n if(!state.comparedRepos.includes(repo.toString()) && state.baseRepo != repo.toString()){\n if (!window.AugurRepos[repo.toString()]) {\n window.AugurRepos[repo.toString()] = repo\n } else {\n repo = window.AugurRepos[repo.toString()]\n }\n state.hasState = true\n if (repo.owner && repo.name) {\n state.comparedRepos.push(repo.toString())\n let title = repo.owner + '/' + repo.name + '- Augur'\n }\n if (payload.gitURL) {\n state.gitRepo = repo.gitURL\n }\n if (state.comparedRepos.length == 1) {\n if (!router.currentRoute.params.comparedrepo) {\n\n let owner = state.gitRepo ? null : state.baseRepo.substring(0, state.baseRepo.indexOf('/'))\n let repo = state.gitRepo ? state.gitRepo : state.baseRepo.slice(state.baseRepo.indexOf('/') + 1)\n let name = state.tab + \"compare\"\n router.push({\n name,\n params: {owner, repo, comparedowner: payload.owner, comparedrepo: payload.name}\n })\n }\n } else {\n let groupid = (state.gitRepo ? String(state.gitRepo) + '+' : String(state.baseRepo) + \"+\")\n state.comparedRepos.forEach((repo) => {\n groupid += (String(repo) + '+')\n })\n let name = state.tab + \"group\"\n router.push({\n name,\n params: {\n groupid\n }\n })\n }\n }\n },\n setDates (state, payload) {\n if (payload.startDate) {\n state.startDate = new Date(payload.startDate)\n }\n if (payload.endDate) {\n state.endDate = new Date(payload.endDate)\n }\n },\n setCompare (state, payload) {\n state.compare = payload.compare\n },\n setTab (state, payload) {\n state.tab = payload.tab\n state.hasState = true\n },\n setVizOptions (state, payload) {\n if (payload.trailingAverage) {\n state.trailingAverage = parseInt(payload.trailingAverage, 10)\n }\n if (typeof payload.rawWeekly !== 'undefined') {\n state.rawWeekly = payload.rawWeekly\n }\n if (typeof payload.showBelowAverage !== 'undefined') {\n state.showBelowAverage = payload.showBelowAverage\n }\n if (typeof payload.showArea !== 'undefined') {\n state.showArea = payload.showArea\n }\n if (typeof payload.showTooltip !== 'undefined') {\n state.showTooltip = payload.showTooltip\n }\n if (typeof payload.showDetail !== 'undefined') {\n state.showDetail = payload.showDetail\n }\n },\n resetComparedRepos (state) {\n state.comparedRepos = []\n router.push({\n name: state.tab,\n params: {owner: state.baseRepo.substring(0, state.baseRepo.indexOf('/')), repo: state.baseRepo.slice(state.baseRepo.indexOf('/') + 1)} })\n },\n resetBaseRepo (state) {\n state.baseRepo = null\n },\n resetTab (state) {\n state.tab = null\n },\n reset (state) {\n state = {\n baseRepo: null,\n comparedRepo: null,\n trailingAverage: 180,\n startDate: new Date('1 January 2005'),\n endDate: new Date(),\n compare: 'each',\n byDate: false\n }\n window.history.pushState(null, 'Augur', '/')\n } // end reset\n } // end mutations\n })\n\n AugurApp.store = window.augur\n\n router.beforeEach((to, from, next) => {\n if (to.params.repo || to.params.groupid){\n if (!to.params.groupid && !to.params.comparedrepo){\n AugurApp.store.commit(\"resetTab\")\n AugurApp.store.commit('setTab', {\n tab: to.name\n })\n if (to.params.repo.includes('github') || to.params.repo.split(\".\").length > 2) {\n AugurApp.store.commit('setRepo', {\n gitURL: to.params.repo\n })\n } else {\n AugurApp.store.commit('setRepo', {\n githubURL: to.params.owner + '/' + to.params.repo\n })\n }\n } else if (to.params.comparedrepo && augur.state.comparedRepos.length == 0) { \n let tab = to.name\n tab = tab.substring(0, tab.length-7)\n AugurApp.store.commit(\"resetTab\")\n AugurApp.store.commit('setTab', {\n tab\n })\n AugurApp.store.commit('setRepo', {\n githubURL: to.params.owner + '/' + to.params.repo\n })\n AugurApp.store.commit('addComparedRepo', {\n githubURL: to.params.comparedowner + '/' + to.params.comparedrepo\n })\n } else if (to.params.groupid && augur.state.comparedRepos.length == 0){\n AugurApp.store.commit(\"resetTab\")\n let tab = to.name\n tab = tab.substring(0, tab.length-5)\n AugurApp.store.commit('setTab', {\n tab\n })\n let repos = to.params.groupid.split('+')\n if (repos[0].includes('github')) {\n AugurApp.store.commit('setRepo', {\n gitURL: repos[0]\n })\n } else {\n AugurApp.store.commit('setRepo', {\n githubURL: repos[0]\n })\n }\n repos.shift()\n // repos.pop()\n repos.forEach((cmprepo) => {\n AugurApp.store.commit('addComparedRepo', {\n githubURL: cmprepo\n })\n })\n }\n }\n\n next()\n })\n\n \n window.AugurApp = new window.Vue({\n // components: { AugurApp },\n // store: window.augur,\n router,\n render: h => h(AugurApp)\n\n }).$mount('#app')\n\n // Load state from query string\n\n // let parsed = queryString.parse(window.location.search, { arrayFormat: 'bracket' })\n // let payload = { fromURL: true }\n // let hasState = 0\n // if (parsed.repo) {\n // payload.githubURL = parsed.repo.replace(' ', '/')\n // hasState = 1\n // }\n // if (parsed.git) {\n // payload.gitURL = window.atob(parsed.git)\n // hasState = 1\n // }\n // if (hasState) {\n // window.AugurApp.$store.commit('setRepo', payload)\n // }\n // if (parsed.comparedTo) {\n // parsed.comparedTo.forEach((repo) => {\n // window.AugurApp.$store.commit('addComparedRepo', { githubURL: repo.replace(' ', '/') })\n // })\n // }\n}\n","var $ = require('jquery')\nvar _ = require('lodash')\n\nexport default class AugurAPI {\n constructor (hostURL, version, autobatch) {\n this.__downloadedGitRepos = []\n\n this._version = version || '/api/unstable'\n this._host = hostURL || 'http://' + window.location.host\n this.__cache = {}\n this.__timeout = null\n this.__pending = {}\n\n this.getDownloadedGitRepos = this.__EndpointFactory('git/repos')\n this.openRequests = 0\n this.getMetricsStatus = this.__EndpointFactory('metrics/status/filter')\n this.getMetricsStatusMetadata = this.__EndpointFactory('metrics/status/metadata')\n }\n\n // __autobatcher (url, params, fireTimeout) {\n // if (this.__timeout !== null && !fireTimeout) {\n // this.__timeout = setTimeout(() => {\n // __autobatch(undefined, undefined, true)\n // })\n // }\n // return new Promise((resolve, reject) => {\n // if (fireTimeout) {\n // let batchURL = this._host + this._version + '/batch'\n // let requestArray = []\n // Object.keys(this.__pending).forEach((key) => {\n // requestArray.push({})\n // })\n // $.post(batchURL)\n // }\n // })\n // }\n\n __endpointURL (endpoint) {\n return '' + this._host + this._version + '/' + endpoint\n }\n\n __URLFunctionFactory (url) {\n var self = this\n return function (params, callback) {\n var cacheKey = window.btoa(url + JSON.stringify(params))\n this.openRequests++\n if (self.__cache[cacheKey]) {\n if (self.__cache[cacheKey].created_at > Date.now() - 1000 * 60) {\n return new Promise((resolve, reject) => {\n resolve(self.__cache[cacheKey].data)\n })\n }\n }\n return $.get(url, params).then((data) => {\n this.openRequests--\n self.__cache[cacheKey] = {\n created_at: Date.now(),\n data: data\n }\n return data\n })\n }\n }\n\n __EndpointFactory (endpoint) {\n return this.__URLFunctionFactory(this.__endpointURL(endpoint))\n }\n\n batch (endpoints) {\n let str = '[{\"method\": \"GET\", \"path\": \"' + endpoints.join('\"},{\"method\": \"GET\", \"path\": \"') + '\"}]'\n this.openRequests++\n let url = this.__endpointURL('batch')\n // Check cached\n if (this.__cache[window.btoa(url + endpoints.join(','))]) {\n if (this.__cache[window.btoa(url + endpoints.join(','))].created_at > Date.now() - 1000 * 60) {\n return new Promise((resolve, reject) => {\n resolve(this.__cache[window.btoa(url + endpoints.join(','))].data)\n })\n }\n }\n return $.ajax(url, {\n type: 'post',\n data: str,\n dataType: 'json',\n contentType: 'application/json'\n }).then((data) => {\n this.openRequests--\n // Save to cache\n this.__cache[window.btoa(url + endpoints.join(','))] = {\n created_at: Date.now(),\n data: data\n }\n return data\n })\n }\n\n batchMapped (repos, fields) {\n let endpoints = []\n let reverseMap = {}\n let processedData = {}\n repos.forEach((repo) => {\n Array.prototype.push.apply(endpoints, repo.batch(fields, true))\n _.assign(reverseMap, repo.__reverseEndpointMap)\n processedData[repo.toString()] = {}\n })\n return this.batch(endpoints).then((data) => {\n\n return new Promise((resolve, reject) => {\n if (Array.isArray(data)) {\n data.forEach(response => {\n if (response.status === 200) {\n processedData[reverseMap[response.path].owner][reverseMap[response.path].name] = JSON.parse(response.response)\n } else {\n processedData[reverseMap[response.path].owner][reverseMap[response.path].name] = null\n }\n })\n resolve(processedData)\n } else {\n reject(new Error('data-not-array'))\n }\n })\n })\n }\n\n Repo (repo) {\n if (repo.githubURL) {\n let splitURL = repo.githubURL.split('/')\n if (splitURL.length < 3) {\n repo.owner = splitURL[0]\n repo.name = splitURL[1]\n } else {\n repo.owner = splitURL[3]\n repo.name = splitURL[4]\n }\n }\n\n if (repo.gitURL) {\n if (repo.gitURL.includes('github.com')) {\n let splitURL = repo.gitURL.split('/')\n repo.owner = splitURL[1]\n repo.name = splitURL[2].split('.')[0]\n }\n else {\n let splitURL = repo.gitURL.split('/')\n repo.owner = splitURL[0]\n repo.name = splitURL[1]\n }\n }\n\n repo.toString = () => {\n if (repo.owner && repo.name) {\n return repo.owner + '/' + repo.name\n } else {\n return JSON.stringify(repo)\n }\n }\n repo.__endpointMap = {}\n repo.__reverseEndpointMap = {}\n\n repo.getDownloadedStatus = () => {\n this.getDownloadedGitRepos().then((data) => {\n let rs = false\n data.forEach((gitURL) => {\n if (gitURL.includes('github.com')) {\n let splitURL = gitURL.split('/')\n let owner = splitURL[3]\n let name = splitURL[4].split('.')[0]\n if (repo.toString() === (owner + '/' + name)) {\n rs = true\n }\n }\n })\n return rs\n })\n }\n\n var __Endpoint = (r, name, url) => {\n r[name] = this.__URLFunctionFactory(url)\n return r[name]\n }\n\n var Endpoint = (r, name, endpoint) => {\n var fullEndpoint = this._version + '/' + repo.owner + '/' + repo.name + '/' + endpoint\n var url = this._host + fullEndpoint\n r.__endpointMap[name] = fullEndpoint\n r.__reverseEndpointMap[fullEndpoint] = { name: name, owner: repo.toString() }\n return __Endpoint(r, name, url)\n }\n\n var Timeseries = (r, jsName, endpoint) => {\n let func = Endpoint(r, jsName, 'timeseries/' + endpoint)\n func.relativeTo = (baselineRepo, params, callback) => {\n var url = 'timeseries/' + endpoint + '/relative_to/' + baselineRepo.owner + '/' + baselineRepo.name\n return Endpoint(url)()\n }\n return func\n }\n\n var GitEndpoint = (r, jsName, endpoint) => {\n var url = this.__endpointURL('git/' + endpoint + '/?repo_url_base=' + window.btoa(r.gitURL))\n return __Endpoint(r, jsName, url)\n }\n\n repo.batch = (jsNameArray, noExecute) => {\n var routes = jsNameArray.map((e) => { return repo.__endpointMap[e] })\n if (noExecute) {\n return routes\n }\n return this.batch(routes).then((data) => {\n return new Promise((resolve, reject) => {\n if (Array.isArray(data)) {\n let mapped = {}\n data.forEach(response => {\n if (response.status === 200) {\n mapped[repo.__reverseEndpointMap[response.path].name] = JSON.parse(response.response)\n } else {\n mapped[repo.__reverseEndpointMap[response.path].name] = null\n }\n })\n resolve(mapped)\n } else {\n reject(new Error('data-not-array'))\n }\n })\n })\n }\n\n if (repo.owner && repo.name) {\n // DIVERSITY AND INCLUSION\n\n // GROWTH, MATURITY, AND DECLINE\n Timeseries(repo, 'closedIssues', 'issues/closed')\n Timeseries(repo, 'closedIssueResolutionDuration', 'issues/time_to_close')\n Timeseries(repo, 'codeCommits', 'commits')\n // Timeseries(repo, 'codeReviews', 'code_reviews')\n Timeseries(repo, 'codeReviewIteration', 'code_review_iteration')\n Timeseries(repo, 'contributionAcceptance', 'contribution_acceptance')\n Endpoint(repo, 'contributingGithubOrganizations', 'contributing_github_organizations')\n Timeseries(repo, 'firstResponseToIssueDuration', 'issues/response_time')\n Timeseries(repo, 'forks', 'forks')\n Timeseries(repo, 'linesOfCodeChanged', 'lines_changed')\n Timeseries(repo, 'maintainerResponseToMergeRequestDuration', 'pulls/maintainer_response_time')\n Timeseries(repo, 'newContributingGithubOrganizations', 'new_contributing_github_organizations')\n Timeseries(repo, 'openIssues', 'issues')\n Timeseries(repo, 'pullRequestComments', 'pulls/comments')\n Timeseries(repo, 'pullRequestsOpen', 'pulls')\n\n // RISK\n\n // VALUE\n\n // ACTIVITY\n Timeseries(repo, 'issueComments', 'issue_comments')\n Timeseries(repo, 'pullRequestsMadeClosed', 'pulls/made_closed')\n Timeseries(repo, 'watchers', 'watchers')\n\n // EXPERIMENTAL\n\n // Commit Related\n Timeseries(repo, 'commits100', 'commits100')\n Timeseries(repo, 'commitComments', 'commits/comments')\n Endpoint(repo, 'committerLocations', 'committer_locations')\n Timeseries(repo, 'totalCommitters', 'total_committers')\n\n // Issue Related\n Timeseries(repo, 'issueActivity', 'issues/activity')\n\n // Community / Contributions\n Endpoint(repo, 'communityAge', 'community_age')\n Timeseries(repo, 'communityEngagement', 'community_engagement')\n Endpoint(repo, 'contributors', 'contributors')\n Endpoint(repo, 'contributions', 'contributions')\n Endpoint(repo, 'projectAge', 'project_age')\n\n // Dependency Related\n Endpoint(repo, 'dependencies', 'dependencies')\n Endpoint(repo, 'dependencyStats', 'dependency_stats')\n Endpoint(repo, 'dependents', 'dependents')\n\n // Other\n Endpoint(repo, 'busFactor', 'bus_factor')\n Timeseries(repo, 'downloads', 'downloads')\n Timeseries(repo, 'fakes', 'fakes')\n Endpoint(repo, 'linkingWebsites', 'linking_websites')\n Timeseries(repo, 'majorTags', 'tags/major')\n Timeseries(repo, 'newWatchers', 'new_watchers')\n Timeseries(repo, 'tags', 'tags')\n }\n\n if (repo.gitURL) {\n // Other\n GitEndpoint(repo, 'changesByAuthor', 'changes_by_author'),\n GitEndpoint(repo, 'cdRepTpIntervalLocCommits', 'cd_rep_tp_interval_loc_commits'),\n GitEndpoint(repo, 'cdRgTpRankedLoc', 'cd_rg_tp_ranked_loc'),\n GitEndpoint(repo, 'cdRgTpRankedCommits', 'cd_rg_tp_ranked_commits'),\n GitEndpoint(repo, 'cdRgNewrepRankedLoc', 'cd_rg_newrep_ranked_loc'),\n GitEndpoint(repo, 'cdRgNewrepRankedCommits', 'cd_rg_newrep_ranked_commits')\n\n\n }\n\n return repo\n }\n}\n","export default class AugurStats {\n static convertDates (data, earliest, latest, key) {\n key = key || 'date'\n earliest = earliest || new Date('01-01-2005')\n latest = latest || new Date()\n if (Array.isArray(data[0])) {\n data = data.map((datum) => {\n return AugurStats.convertDates(datum)\n })\n } else {\n data = data.map((d) => {\n d.date = new Date(d[key])\n return d\n }).filter((d) => {\n return earliest < d.date && d.date < latest\n }).sort((a, b) => {\n return a.date - b.date\n })\n }\n return data\n }\n\n static convertKey (data, key, newName) {\n newName = newName || \"value\"\n if (Array.isArray(data[0])) {\n data = data.map((datum) => {\n return AugurStats.convertKey(datum, key)\n })\n } else if (key.length > 1){\n return data.map((d) => {\n let obj = {\n date: d.date,\n field: d[key[1]]\n }\n obj[newName] = d[key]\n return obj\n })\n }\n else{\n return data.map((d) => {\n let obj = {\n date: d.date,\n }\n obj[newName] = d[key] || 0\n return obj\n })\n }\n return data\n }\n\n static convertComparedKey (data, key) {\n if (Array.isArray(data[0])) {\n data = data.map((datum) => {\n return AugurStats.convertKey(datum, key)\n })\n } else {\n return data.map((d) => {\n return {\n date: d.date,\n comparedValue: d[key]\n }\n })\n }\n return data\n }\n\n static averageArray (ary) {\n let len = ary.length\n let sum = ary.reduce((a, e) => {\n if (isFinite(e)) {\n return a + e\n } else {\n len--\n return a\n }\n }, 0)\n return (sum / len) || 0\n }\n\n static aboveAverage (data, key) {\n let flat = data.map((e) => { return e[key] })\n let mean = AugurStats.averageArray(flat)\n return data.filter((e) => {\n return e[key] > mean\n })\n }\n\n static standardDeviationLines (data, key, extension, mean) {\n let flat = data.map((e) => { return e[key] })\n mean = mean || AugurStats.averageArray(flat)\n let distances = flat.map((e) => {\n return (e - mean) * (e - mean)\n })\n return data.map((e) => {\n let newObj = {}\n if (e.date) {\n newObj.date = new Date(e.date)\n newObj[key + extension] = e[key]\n }\n newObj['upper' + extension] = e[key] + Math.sqrt(AugurStats.averageArray(distances))\n newObj['lower' + extension] = e[key] - Math.sqrt(AugurStats.averageArray(distances))\n return newObj\n })\n }\n\n static standardDeviation (data, key, mean) {\n let flat = data.map((e) => { return (e[key] ? e[key] : 0) })\n\n mean = mean || AugurStats.averageArray(flat)\n let distances = flat.map((e) => {\n return (e - mean) * (e - mean)\n })\n return Math.sqrt(AugurStats.averageArray(distances))\n }\n\n static describe (ary, key) {\n let flat = AugurStats.flatten(ary, key)\n let mean = AugurStats.averageArray(flat)\n let stddev = AugurStats.standardDeviation(ary, key, mean)\n let variance = stddev * stddev\n return {\n 'mean': mean,\n 'stddev': stddev,\n 'variance': variance\n }\n }\n\n static flatten (array, key) {\n return array.map((e) => { return e[key] })\n }\n\n static rollingAverage (data, key, windowSizeInDays) {\n //key = key || 'value'\n let period = (windowSizeInDays / 2)\n data = data.filter(datum => {\n return isFinite(datum[key])\n })\n // if (data[0].date != startDate) {\n // let test = startDate\n // while (data[0].date - test > period) {\n // test += period\n // }\n // var offset = data[0].date - test\n // }\n // let before = offset ? offset : period\n // let after = offset ? period - offset : period\n return AugurStats.dateAggregate(data, period, period, (period / 2), (filteredData, date) => {\n let flat = AugurStats.flatten(filteredData, key)\n let datum = { date: date }\n datum[key + \"Rolling\"] = Math.round(AugurStats.averageArray(flat)*100)/100\n return datum\n })\n }\n\n static dateAggregate (data, daysBefore, daysAfter, interval, func) {\n daysBefore = daysBefore || 30\n interval = interval || ((daysAfter + daysBefore) / 4)\n let rolling = []\n let averageWindow = []\n let i = 0\n\n let earliest = new Date()\n let latest = new Date()\n\n for (let date = new Date(data[0].date); date <= data[data.length - 1].date; date.setDate(date.getDate() + interval)) {\n earliest = (new Date(date)).setDate(date.getDate() - daysBefore)\n latest = (new Date(date)).setDate(date.getDate() + daysAfter)\n averageWindow = data.filter((d) => {\n return (earliest <= d.date) && (d.date <= latest)\n })\n rolling.push(func(averageWindow, new Date(date), i))\n i++\n }\n return rolling\n }\n\n static alignDates (data, baseDate, windowSizeInDays) {\n //key = key || 'value'\n let period = (windowSizeInDays / 2)\n data.unshift({date: baseDate, value: null})\n return data\n }\n\n static convertToPercentages (data, key, baseline) {\n if (!data) {\n return []\n }\n baseline = baseline || AugurStats.averageArray(data.map((e) => { return e[key] }))\n data = data.map((datum) => {\n datum['value'] = (datum[key] / baseline)\n return datum\n })\n return data\n }\n\n static makeRelative (baseData, compareData, key, config) {\n config.byDate = (config.byDate === true)\n config.earliest = config.earliest || new Date('01-01-2005')\n config.latest = config.latest || new Date()\n config.period = config.period || 180\n key = key || Object.keys(baseData[0])[1]\n\n let iter = {\n base: 0,\n compare: 0\n }\n let data = {}\n\n data['base'] = AugurStats.rollingAverage(\n AugurStats.convertDates(\n AugurStats.convertKey(\n baseData,\n key\n ), config.earliest, config.latest\n ), undefined, config.period)\n\n data['compare'] = AugurStats.rollingAverage(\n AugurStats.convertDates(\n AugurStats.convertKey(\n compareData,\n key\n ), config.earliest, config.latest\n ), undefined, config.period)\n\n let result = []\n\n while (iter['base'] < data['base'].length && iter['compare'] < data['compare'].length) {\n let toPush = {\n value: data['compare'][iter.compare].value / data['base'][iter.base].value\n }\n if (config.byDate) {\n toPush.date = data['base'][iter.base].date\n } else {\n toPush.x = iter.base\n }\n result.push(toPush)\n iter['base']++\n iter['compare']++\n }\n return result\n }\n\n static zscores (data, key) {\n // key = key || 'value'\n let stats = AugurStats.describe(data, key)\n return data.map((e) => {\n let newObj = {}\n // if (e.date) {\n newObj.date = new Date(e.date)\n // } else {\n // newObj.date = \n // }\n let zscore = stats['stddev'] == 0 ? 0 : ((e[key] - stats['mean']) / stats['stddev'])\n newObj[key] = zscore\n return newObj\n })\n }\n\n static combine () {\n return Array.from(arguments)\n }\n}",";(function(){\n'use strict';\n\nvar _AugurHeader = require('./AugurHeader.vue');\n\nvar _AugurHeader2 = _interopRequireDefault(_AugurHeader);\n\nvar _AugurCards = require('./AugurCards.vue');\n\nvar _AugurCards2 = _interopRequireDefault(_AugurCards);\n\nvar _vueRouter = require('vue-router');\n\nvar _vueRouter2 = _interopRequireDefault(_vueRouter);\n\nvar _GrowthMaturityDeclineCard = require('./GrowthMaturityDeclineCard');\n\nvar _GrowthMaturityDeclineCard2 = _interopRequireDefault(_GrowthMaturityDeclineCard);\n\nvar _ExperimentalCard = require('./ExperimentalCard');\n\nvar _ExperimentalCard2 = _interopRequireDefault(_ExperimentalCard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n name: \"app\",\n components: {\n 'augur-header': _AugurHeader2.default,\n 'augur-cards': _AugurCards2.default\n\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"content\",attrs:{\"id\":\"app\"}},[_c('router-view')],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-4cb2e45e\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-4cb2e45e\", __vue__options__)\n }\n})()}",";(function(){\n\"use strict\";\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"fullwidth\"},[_c('router-view',{attrs:{\"name\":\"header\"}})],1),_vm._v(\" \"),_c('div',{ref:\"cards\",staticClass:\"content\"},[_c('router-view',{attrs:{\"name\":\"tabs\"}}),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"controls\"}}),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"content\"}})],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-78eb2940\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-78eb2940\", __vue__options__)\n }\n})()}",";(function(){\n\"use strict\";\n\nmodule.exports = {\n methods: {\n onRepo: function onRepo(e) {\n var repo = window.AugurAPI.Repo({\n githubURL: e.target.value\n });\n if (!repo.batch(['codeCommits'], true)[0]) {\n alert(\"The repo \" + repo.githubURL + \" could not be found. Please try again.\");\n } else {\n this.$store.commit('resetBaseRepo');\n this.$store.commit('setRepo', {\n githubURL: e.target.value\n });\n this.$router.push({\n name: 'gmd',\n params: { owner: repo.owner, repo: repo.name }\n });\n }\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"hide-print\"},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"row auto\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"col col-5\"},[_c('div',{staticClass:\"form-item\"},[_c('input',{staticClass:\"search reposearch\",attrs:{\"type\":\"text\",\"name\":\"headersearch\",\"placeholder\":\"GitHub URL\"},on:{\"change\":_vm.onRepo}})])]),_vm._v(\" \"),_c('nav',{staticClass:\"col col-4 header-nav\"},[_c('a',{staticClass:\"header-nav-item\",attrs:{\"href\":\"https://github.com/chaoss/augur\"}},[_vm._v(\"GitHub\")]),_vm._v(\" \"),_c('a',{staticClass:\"header-nav-item\",attrs:{\"href\":\"/static/docs/\"}},[_vm._v(\"Python Docs\")]),_vm._v(\" \"),_c('a',{staticClass:\"header-nav-item\",attrs:{\"href\":\"/static/api_docs/\"}},[_vm._v(\"API Docs\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"header-nav-item\",attrs:{\"to\":\"/metrics_status\"}},[_vm._v(\"Metrics Status\")])],1)])])])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col col-3\"},[_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"src\":\"/static/logo.png\",\"id\":\"logo\",\"alt\":\"CHAOSS: Community Health Analytics for Open Source Software\"}})])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6becaf40\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-6becaf40\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _DynamicLineChart = require('./charts/DynamicLineChart');\n\nvar _DynamicLineChart2 = _interopRequireDefault(_DynamicLineChart);\n\nvar _BubbleChart = require('./charts/BubbleChart');\n\nvar _BubbleChart2 = _interopRequireDefault(_BubbleChart);\n\nvar _StackedBarChart = require('./charts/StackedBarChart');\n\nvar _StackedBarChart2 = _interopRequireDefault(_StackedBarChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n DynamicLineChart: _DynamicLineChart2.default,\n BubbleChart: _BubbleChart2.default,\n StackedBarChart: _StackedBarChart2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Activity\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"issueComments\",\"title\":\"Issue Comments / Week \",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/tree/master/activity-metrics/issue-comments.md\",\"cite-text\":\"Issue Comments\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"pullRequestsMadeClosed\",\"title\":\"Pull Requests Made/ Closed per Week \",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/tree/master/activity-metrics/pull-requests-made-closed.md\",\"cite-text\":\"Pull Requests Made/Closed\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"watchers\",\"title\":\"Watchers / Week \",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/tree/master/activity-metrics/watchers.md\",\"cite-text\":\"Watchers\"}})],1)]),_vm._v(\" \"),_vm._m(0)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',[_vm._v(\"Data provided by \"),_c('a',{attrs:{\"href\":\"http://ghtorrent.org/msr14.html\"}},[_vm._v(\"GHTorrent\")]),_vm._v(\" \"),_c('span',{staticClass:\"ghtorrent-version\"}),_vm._v(\" and the \"),_c('a',{attrs:{\"href\":\"https://developer.github.com/\"}},[_vm._v(\"GitHub API\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7655e5a2\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-7655e5a2\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _DynamicLineChart = require('./charts/DynamicLineChart');\n\nvar _DynamicLineChart2 = _interopRequireDefault(_DynamicLineChart);\n\nvar _DependencyOverview = require('./charts/DependencyOverview');\n\nvar _DependencyOverview2 = _interopRequireDefault(_DependencyOverview);\n\nvar _BusFactor = require('./charts/BusFactor');\n\nvar _BusFactor2 = _interopRequireDefault(_BusFactor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n DynamicLineChart: _DynamicLineChart2.default,\n DependencyOverview: _DependencyOverview2.default,\n BusFactor: _BusFactor2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Ecosystem\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"downloads\",\"title\":\"Downloads / Day\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/community-activity.md\",\"cite-text\":\"Community Activty\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"stars\",\"title\":\"Stars / Week\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/community-activity.md\",\"cite-text\":\"Community Activty\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('bus-factor',{attrs:{\"source\":\"busFactor\",\"title\":\"Bus Factor\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics-list.md\",\"cite-text\":\"Pony Factor\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-12\"},[_c('dependency-overview')],1)])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-2a4aa320\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-2a4aa320\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _DynamicLineChart = require('./charts/DynamicLineChart');\n\nvar _DynamicLineChart2 = _interopRequireDefault(_DynamicLineChart);\n\nvar _BubbleChart = require('./charts/BubbleChart');\n\nvar _BubbleChart2 = _interopRequireDefault(_BubbleChart);\n\nvar _StackedBarChart = require('./charts/StackedBarChart');\n\nvar _StackedBarChart2 = _interopRequireDefault(_StackedBarChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n DynamicLineChart: _DynamicLineChart2.default,\n BubbleChart: _BubbleChart2.default,\n StackedBarChart: _StackedBarChart2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_vm._m(0)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('p',[_vm._v(\"We currently do not have any metrics developed for this group.\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-3ae426c0\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-3ae426c0\", __vue__options__)\n }\n})()}",";(function(){\n\"use strict\";\n\nmodule.exports = {\n data: function data() {\n return {\n repos: {},\n projects: []\n };\n },\n\n methods: {\n onRepo: function onRepo(e) {\n this.$store.commit('setRepo', {\n githubURL: e.target.value\n });\n },\n onGitRepo: function onGitRepo(e) {\n var first = e.url.indexOf(\".\");\n var last = e.url.lastIndexOf(\".\");\n var domain = null;\n var owner = null;\n var repo = null;\n var extension = false;\n\n if (first == last) {\n domain = e.url.substring(0, first);\n owner = e.url.substring(e.url.indexOf('/') + 1, e.url.lastIndexOf('/'));\n repo = e.url.slice(e.url.lastIndexOf('/') + 1);\n } else if (e.url.slice(last) == '.git') {\n domain = e.url.substring(0, first);\n extension = true;\n owner = e.url.substring(e.url.indexOf('/') + 1, e.url.lastIndexOf('/'));\n repo = e.url.substring(e.url.lastIndexOf('/') + 1, e.url.length - 4);\n } else {\n domain = e.url.substring(first + 1, last);\n owner = null;\n repo = e.url.slice(e.url.lastIndexOf('/') + 1);\n }\n this.$store.commit('setRepo', {\n gitURL: e.url\n });\n\n this.$store.commit('setTab', {\n tab: 'git'\n });\n\n this.$router.push({\n name: 'git',\n params: { repo: e.url }\n });\n },\n getDownloadedRepos: function getDownloadedRepos() {\n var _this = this;\n\n this.downloadedRepos = [];\n window.AugurAPI.getDownloadedGitRepos().then(function (data) {\n $(_this.$el).find('.spinner').removeClass('loader');\n $(_this.$el).find('.spinner').removeClass('relative');\n _this.repos = window._.groupBy(data, 'project_name');\n _this.projects = Object.keys(_this.repos);\n });\n },\n btoa: function btoa(s) {\n return window.btoa(s);\n }\n },\n mounted: function mounted() {\n this.getDownloadedRepos();\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"unmaterialized\"},[_c('h3',[_vm._v(\"Downloaded Git Repos by Project\")]),_vm._v(\" \"),_c('div',{staticClass:\"row section\"},[_c('hr'),_vm._v(\" \"),_c('div',{staticClass:\"col col-12 relative spinner loader\",staticStyle:{\"margin-left\":\"42.4%\"}}),_vm._v(\" \"),_vm._l((_vm.projects),function(project){return _c('div',{staticClass:\"col-6\"},[_c('h4',[_vm._v(_vm._s(project))]),_vm._v(\" \"),_c('div',{staticClass:\"repo-link-holder\"},[_c('table',{staticClass:\"is-responsive\"},[_vm._m(0,true),_vm._v(\" \"),_c('tbody',{staticClass:\"repo-link-table repo-link-table-body\"},_vm._l((_vm.repos[project]),function(repo){return _c('tr',[_c('td',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){_vm.onGitRepo(repo)}}},[_vm._v(_vm._s(repo.url))])]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(repo.status))])])}))])])])})],2)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticClass:\"repo-link-table repo-link-table-body\"},[_c('tr',[_c('th',[_vm._v(\"URL\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")])])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-1825962d\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-1825962d\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _DynamicLineChart = require('./charts/DynamicLineChart');\n\nvar _DynamicLineChart2 = _interopRequireDefault(_DynamicLineChart);\n\nvar _BubbleChart = require('./charts/BubbleChart');\n\nvar _BubbleChart2 = _interopRequireDefault(_BubbleChart);\n\nvar _StackedBarChart = require('./charts/StackedBarChart');\n\nvar _StackedBarChart2 = _interopRequireDefault(_StackedBarChart);\n\nvar _DualAxisContributions = require('./charts/DualAxisContributions');\n\nvar _DualAxisContributions2 = _interopRequireDefault(_DualAxisContributions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n DynamicLineChart: _DynamicLineChart2.default,\n BubbleChart: _BubbleChart2.default,\n StackedBarChart: _StackedBarChart2.default,\n DualAxisContributions: _DualAxisContributions2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Experimental\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"commitComments\",\"title\":\"Commit Comments / Week \",\"cite-url\":\"\",\"cite-text\":\"Commit Comments\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"totalCommitters\",\"title\":\"Committers\",\"cite-url\":\"\",\"cite-text\":\"Total Commiters\",\"disable-rolling-average\":\"1\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"contributionAcceptance\",\"title\":\"Contribution Acceptance Rate\",\"cite-url\":\"\",\"cite-text\":\"Contribution Acceptance\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"communityEngagement:issues_open\",\"title\":\"Community Engagement: Open Issues\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/open-issues.md\",\"cite-text\":\"Open Issues\",\"disable-rolling-average\":\"1\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"communityEngagement:issues_closed_total\",\"title\":\"Community Engagement: Closed Issues\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/closed-issues.md\",\"cite-text\":\"Closed Issues\",\"disable-rolling-average\":\"1\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"fakes\",\"title\":\"Fakes\",\"cite-url\":\"\",\"cite-text\":\"Fakes\",\"disable-rolling-average\":\"1\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"newWatchers\",\"title\":\"New Watchers / Week\",\"cite-url\":\"\",\"cite-text\":\"New Watchers\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-12\"},[_c('stacked-bar-chart',{attrs:{\"source\":\"issueActivity\",\"title\":\"Issue Activity\",\"cite-url\":\"\",\"cite-text\":\"Issue Activity\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-12\"},[_c('bubble-chart',{attrs:{\"source\":\"contributors\",\"title\":\"Contributor Overview\",\"size\":\"total\",\"cite-url\":\"\",\"cite-text\":\"Contributors\"}})],1)])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-b05646f6\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-b05646f6\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _AugurHeader = require('./AugurHeader');\n\nvar _AugurHeader2 = _interopRequireDefault(_AugurHeader);\n\nvar _TickChart = require('./charts/TickChart');\n\nvar _TickChart2 = _interopRequireDefault(_TickChart);\n\nvar _LinesOfCodeChart = require('./charts/LinesOfCodeChart');\n\nvar _LinesOfCodeChart2 = _interopRequireDefault(_LinesOfCodeChart);\n\nvar _NormalizedStackedBarChart = require('./charts/NormalizedStackedBarChart');\n\nvar _NormalizedStackedBarChart2 = _interopRequireDefault(_NormalizedStackedBarChart);\n\nvar _OneDimensionalStackedBarChart = require('./charts/OneDimensionalStackedBarChart');\n\nvar _OneDimensionalStackedBarChart2 = _interopRequireDefault(_OneDimensionalStackedBarChart);\n\nvar _HorizontalBarChart = require('./charts/HorizontalBarChart');\n\nvar _HorizontalBarChart2 = _interopRequireDefault(_HorizontalBarChart);\n\nvar _GroupedBarChart = require('./charts/GroupedBarChart');\n\nvar _GroupedBarChart2 = _interopRequireDefault(_GroupedBarChart);\n\nvar _DirectionalTimeChart = require('./charts/DirectionalTimeChart');\n\nvar _DirectionalTimeChart2 = _interopRequireDefault(_DirectionalTimeChart);\n\nvar _TimeIntervalBarChart = require('./charts/TimeIntervalBarChart');\n\nvar _TimeIntervalBarChart2 = _interopRequireDefault(_TimeIntervalBarChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n AugurHeader: _AugurHeader2.default,\n TickChart: _TickChart2.default,\n LinesOfCodeChart: _LinesOfCodeChart2.default,\n NormalizedStackedBarChart: _NormalizedStackedBarChart2.default,\n OneDimensionalStackedBarChart: _OneDimensionalStackedBarChart2.default,\n HorizontalBarChart: _HorizontalBarChart2.default,\n GroupedBarChart: _GroupedBarChart2.default,\n DirectionalTimeChart: _DirectionalTimeChart2.default,\n TimeIntervalBarChart: _TimeIntervalBarChart2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\",\"margin-bottom\":\"20px\"}},[_vm._v(_vm._s(_vm.$store.state.gitRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\",\"margin-bottom\":\"20px\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\",\"margin-bottom\":\"20px\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgTpRankedCommits\",\"title\":\"Top Repos in 2018 by Commits with Baseline Averages - Sorted\",\"field\":\"commit\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgTpRankedLoc\",\"title\":\"Top Repos in 2018 by Net LoC with Baseline Averages - Sorted\",\"field\":\"loc\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-12\",staticStyle:{\"padding-right\":\"35px\"}},[_c('time-interval-bar-chart',{attrs:{\"source\":\"cdRepTpIntervalLocCommits\",\"title\":\"Contributions in 2018 by Monthly Intervals with Baseline Averages\",\"field\":\"loc\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgNewrepRankedCommits\",\"title\":\"Top New Repos in 2018 by Commits with Baseline Averages - Sorted\",\"field\":\"commit\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgNewrepRankedLoc\",\"title\":\"Top New Repos in 2018 by Net LoC with Baseline Averages - Sorted\",\"field\":\"loc\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-12\"},[_c('tick-chart')],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row\",staticStyle:{\"transform\":\"translateY(-50px) !important\"}},[_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('normalized-stacked-bar-chart',{attrs:{\"title\":\"Lines of code added by the top 10 authors as Percentages - By Time Period\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-left\":\"65px\"}},[_c('div',{staticStyle:{\"padding-top\":\"35px\"}}),_vm._v(\" \"),_c('horizontal-bar-chart',{attrs:{\"type\":\"lines\",\"title\":\"Average Lines of Code Per Commit\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row\",staticStyle:{\"transform\":\"translateY(-100px) !important\"}},[_c('div',{staticClass:\"col col-6\"},[_c('one-dimensional-stacked-bar-chart',{attrs:{\"type\":\"lines\",\"title\":\"Lines of Code Added by the top 10 Authors as Percentages - All Time\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('one-dimensional-stacked-bar-chart',{attrs:{\"type\":\"commit\",\"title\":\"Commits by the top 10 Authors as Percentages - All Time\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row\",staticStyle:{\"transform\":\"translateY(-50px) !important\"}},[_c('lines-of-code-chart')],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-f66913b6\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-f66913b6\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _BubbleChart = require('./charts/BubbleChart');\n\nvar _BubbleChart2 = _interopRequireDefault(_BubbleChart);\n\nvar _StackedBarChart = require('./charts/StackedBarChart');\n\nvar _StackedBarChart2 = _interopRequireDefault(_StackedBarChart);\n\nvar _DynamicLineChart = require('./charts/DynamicLineChart');\n\nvar _DynamicLineChart2 = _interopRequireDefault(_DynamicLineChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n components: {\n BubbleChart: _BubbleChart2.default,\n StackedBarChart: _StackedBarChart2.default,\n DynamicLineChart: _DynamicLineChart2.default\n },\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n methods: {\n getMetricsStatus: function getMetricsStatus() {\n var _this = this;\n\n var query_string = \"group=\" + this.selected_group + \"&data_source=\" + this.selected_source + \"&metric_type=\" + this.selected_metric_type + \"&backend_status=\" + this.selected_backend_status + \"&frontend_status=\" + this.selected_frontend_status + \"&is_defined=\" + this.selected_is_defined;\n\n window.AugurAPI.getMetricsStatus(query_string).then(function (data) {\n _this.metricsData = data;\n });\n },\n removeComparison: function removeComparison() {\n $(this.$el).find('.multiselect__content-wrapper').removeClass('selecting');\n }\n },\n mounted: function mounted() {\n this.selected_group = 'all';\n this.selected_source = 'all';\n this.selected_metric_type = 'all';\n this.selected_backend_status = 'all';\n this.selected_frontend_status = 'all';\n this.selected_is_defined = 'all';\n this.getMetricsStatus();\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] }),attrs:{\"value\":repo},on:{\"click\":function($event){}}},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"closedIssues\",\"title\":\"Closed Issues / Week\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/closed-issues.md\",\"cite-text\":\"Issues Closed\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"codeCommits\",\"title\":\"Code Commits / Week\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/commits.md\",\"cite-text\":\"Commits\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"codeReviewIteration\",\"title\":\"Number of Code Review Iterations\",\"size\":\"total\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/code-review-iteration.md\",\"cite-text\":\"Code Review Iterations\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"contributionAcceptance\",\"title\":\"Contribution Acceptance\",\"size\":\"total\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/contribution-acceptance.md\",\"cite-text\":\"Contribution Acceptance\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"forks\",\"title\":\"Forks / Week\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/forks.md\",\"cite-text\":\"Forks\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"maintainerResponseToMergeRequestDuration\",\"title\":\"Time to First Maintainer Response to Merge Request\",\"size\":\"total\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/maintainer-response-to-merge-request-duration.md\",\"cite-text\":\"Time to First Maintainer Response to Merge Request\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"newContributingGithubOrganizations\",\"title\":\"New Contributing Github Organizations\",\"size\":\"total\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/new-contributing-organizations.md\",\"cite-text\":\"New Contributing Organizations\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"openIssues\",\"title\":\"Open Issues / Week\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/open-issues.md\",\"cite-text\":\"Issues Open\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"pullRequestComments\",\"title\":\"Pull Request Comments / Week \",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/pull-request-comments.md\",\"cite-text\":\"Pull Request Comments\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('dynamic-line-chart',{attrs:{\"source\":\"pullRequestsOpen\",\"title\":\"Pull Requests Open / Week\",\"cite-url\":\"https://github.com/augurlabs/wg-gmd/blob/master/activity-metrics/pull-requests-open.md\",\"cite-text\":\"Open Pull Requests\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-12\"},[_c('bubble-chart',{attrs:{\"source\":\"contributingGithubOrganizations\",\"title\":\"Contributing Github Organizations Overview\",\"size\":\"total\",\"cite-url\":\"https://github.com/chaoss/metrics/blob/master/activity-metrics/contributing-organizations.md\",\"cite-text\":\"Contributing Organizations\"}})],1)]),_vm._v(\" \"),_vm._m(0)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',[_vm._v(\"Data provided by \"),_c('a',{attrs:{\"href\":\"http://ghtorrent.org/msr14.html\"}},[_vm._v(\"GHTorrent\")]),_vm._v(\" \"),_c('span',{staticClass:\"ghtorrent-version\"}),_vm._v(\" and the \"),_c('a',{attrs:{\"href\":\"https://developer.github.com/\"}},[_vm._v(\"GitHub API\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-429b02f1\", __vue__options__)\n } else {\n hotAPI.rerender(\"data-v-429b02f1\", __vue__options__)\n }\n})()}",";(function(){\n\"use strict\";\n\nmodule.exports = {\n data: function data() {\n return {};\n },\n\n methods: {},\n computed: {}\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"limiter\"},[_c('div',{staticClass:\"container-login background\"},[_c('div',{staticClass:\"wrap-login\"},[_c('form',{staticClass:\"login-form validate-form\"},[_c('div',{staticStyle:{\"text-align\":\"center\",\"padding-right\":\"10px\"}},[_c('img',{attrs:{\"src\":\"static/logo.png\",\"id\":\"logo\",\"alt\":\"CHAOSS: Community Health Analytics for Open Source Software\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"login-form-title\"},[_vm._v(\"\\n Log in\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"wrap-input validate-input\",attrs:{\"data-validate\":\"Enter username\"}},[_c('input',{staticClass:\"input\",attrs:{\"type\":\"text\",\"name\":\"username\",\"placeholder\":\"Username\"}}),_vm._v(\" \"),_c('span',{staticClass:\"focus-input\",staticStyle:{\"padding\":\"12px 0px 0px 10px\"}},[_vm._v(\"👤\")])]),_vm._v(\" \"),_c('div',{staticClass:\"wrap-input validate-input\",attrs:{\"data-validate\":\"Enter password\"}},[_c('input',{staticClass:\"input\",attrs:{\"type\":\"password\",\"placeholder\":\"Password\"}}),_vm._v(\" \"),_c('span',{staticClass:\"focus-input\",staticStyle:{\"padding\":\"12px 0px 0px 10px\"}},[_vm._v(\"🔒\")])]),_vm._v(\" \"),_c('div',{staticClass:\"contact-form-checkbox\"},[_c('input',{staticClass:\"input-checkbox\",attrs:{\"id\":\"ckb1\",\"type\":\"checkbox\"}}),_vm._v(\" \"),_c('label',{staticClass:\"label-checkbox\",attrs:{\"for\":\"ckb1\"}},[_vm._v(\"\\n Remember me\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"container-login-form-btn\"},[_c('button',{staticClass:\"login-form-btn\"},[_vm._v(\"\\n Login\\n \")])])])])])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6fde6fb0\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-6fde6fb0\", __vue__options__)\n }\n})()}",";(function(){\n\"use strict\";\n\nvar _vueMultiselect = require(\"vue-multiselect\");\n\nvar _vueMultiselect2 = _interopRequireDefault(_vueMultiselect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n components: {\n Multiselect: _vueMultiselect2.default\n },\n data: function data() {\n return {\n info: {\n days: 180,\n points: 45\n },\n isCollapsed: false,\n project: \"Select project\",\n values: [],\n options: [],\n repos: {},\n projects: [],\n disabled: false,\n compCount: 0,\n compared: true\n };\n },\n\n watch: {\n project: function project() {\n var _this = this;\n\n this.options = [];\n this.repos[this.project].forEach(function (repo) {\n var url = repo.url;\n var first = url.indexOf(\".\");\n var last = url.lastIndexOf(\".\");\n\n var option = null;\n\n if (first == last) option = url.slice(url.indexOf('/') + 1);else if (url.slice(last) == '.git') option = url.slice(url.indexOf('/') + 1);else option = url.substring(first + 1, last) + repo.url.slice(url.indexOf('/'));\n _this.options.push(option);\n });\n },\n compCount: function compCount() {\n if (this.$store.state.comparedRepos.length < 2) this.disabled = true;\n if (this.$store.state.comparedRepos.length == 1) this.compared = true;\n }\n\n },\n directives: {\n 'click-outside': {\n bind: function bind(el, binding, vNode) {\n if (typeof binding.value !== 'function') {\n var compName = vNode.context.name;\n var warn = \"[Vue-click-outside:] provided expression '\" + binding.expression + \"' is not a function, but has to be\";\n if (compName) {\n warn += \"Found in component '\" + compName + \"'\";\n }\n }\n var bubble = binding.modifiers.bubble;\n var handler = function handler(e) {\n if (bubble || !el.contains(e.target) && el !== e.target) {\n binding.value(e);\n }\n };\n el.__vueClickOutside__ = handler;\n document.addEventListener('click', handler);\n },\n unbind: function unbind(el, binding) {\n document.removeEventListener('click', el.__vueClickOutside__);\n el.__vueClickOutside__ = null;\n }\n }\n },\n methods: {\n collapseText: function collapseText() {\n this.isCollapsed = !this.isCollapsed;\n if (!this.isCollapsed) {\n $(this.$el).find('.section').addClass('collapsed');\n } else $(this.$el).find('.section').removeClass('collapsed');\n },\n onStartDateChange: function onStartDateChange(e) {\n var _this2 = this;\n\n var date = Date.parse(this.$refs.startMonth.value + \"/01/\" + this.$refs.startYear.value);\n console.log('Start date has been changed!');\n if (this.startDateTimeout) {\n clearTimeout(this.startDateTimeout);\n delete this.startDateTimeout;\n console.log('startDateTimeout');\n }\n this.startDateTimeout = setTimeout(function () {\n _this2.$store.commit('setDates', {\n startDate: date\n });\n }, 100);\n },\n onEndDateChange: function onEndDateChange(e) {\n var _this3 = this;\n\n var date = null;\n\n if (e.target.value > 12) {\n date = Date.parse((parseInt(this.endMonth) + 1).toString() + \"/01/\" + e.target.value);\n } else {\n var month = (parseInt(e.target.value) + 1).toString();\n console.log();\n date = Date.parse(month + \"/01/\" + this.endYear);\n }\n if (this.endDateTimeout) {\n clearTimeout(this.endDateTimeout);\n delete this.endDateTimeout;\n }\n this.endDateTimeout = setTimeout(function () {\n _this3.$store.commit('setDates', {\n endDate: date\n });\n }, 100);\n },\n onTrailingAverageChange: function onTrailingAverageChange(e) {\n this.info.days = e.target.value;\n this.info.points = e.target.value / 4;\n this.$store.commit('setVizOptions', {\n trailingAverage: e.target.value\n });\n },\n onRawWeeklyChange: function onRawWeeklyChange(e) {\n this.$store.commit('setVizOptions', {\n rawWeekly: e.target.checked\n });\n },\n onAreaChange: function onAreaChange(e) {\n this.$store.commit('setVizOptions', {\n showArea: e.target.checked\n });\n },\n onTooltipChange: function onTooltipChange(e) {\n this.$store.commit('setVizOptions', {\n showTooltip: e.target.checked\n });\n },\n onShowBelowAverageChange: function onShowBelowAverageChange(e) {\n this.$store.commit('setVizOptions', {\n showBelowAverage: e.target.checked\n });\n },\n onCompareChange: function onCompareChange(e) {\n this.$store.commit('setCompare', {\n compare: e.target.value\n });\n },\n onCompare: function onCompare(e) {\n var element = document.getElementById(\"invalid\");\n this.compCount++;\n var repo = window.AugurAPI.Repo({\n githubURL: e.target.value\n });\n if (!repo.batch(['codeCommits'], true)[0]) {\n element.classList.remove(\"invisible\");\n } else {\n this.$store.commit('addComparedRepo', {\n githubURL: e.target.value\n\n });\n element.classList.add(\"invisible\");\n }\n },\n onArrayCompare: function onArrayCompare() {\n var _this4 = this;\n\n this.compCount += this.values.length;\n this.values.forEach(function (url) {\n var link = url;\n var end = url.slice(url.length - 4);\n if (end == \".git\") link = link.substring(0, url.length - 4);\n _this4.$store.commit('addComparedRepo', {\n githubURL: link\n });\n });\n },\n onValuesClear: function onValuesClear() {\n this.values = [];\n },\n onClear: function onClear() {\n this.values = [];\n this.$store.commit('resetComparedRepos');\n },\n onDetailChange: function onDetailChange(e) {\n this.$store.commit('setVizOptions', {\n showDetail: e.target.checked\n });\n },\n getDownloadedRepos: function getDownloadedRepos() {\n var _this5 = this;\n\n this.downloadedRepos = [];\n window.AugurAPI.getDownloadedGitRepos().then(function (data) {\n _this5.repos = window._.groupBy(data, 'project_name');\n _this5.projects = Object.keys(_this5.repos);\n });\n },\n keepSelecting: function keepSelecting() {\n $(this.$el).find('.multiselect__content-wrapper').addClass('selecting');\n },\n stopSelecting: function stopSelecting() {\n $(this.$el).find('.multiselect__content-wrapper').removeClass('selecting');\n }\n },\n computed: {\n compare: function compare() {\n return this.$store.state.compare;\n },\n months: function months() {\n return [{ name: 'January', value: 0 }, { name: 'February', value: 1 }, { name: 'March', value: 2 }, { name: 'April', value: 3 }, { name: 'May', value: 4 }, { name: 'June', value: 5 }, { name: 'July', value: 6 }, { name: 'August', value: 7 }, { name: 'September', value: 8 }, { name: 'October', value: 9 }, { name: 'November', value: 10 }, { name: 'December', value: 11 }];\n },\n thisMonth: function thisMonth() {\n return new Date().getMonth();\n },\n thisYear: function thisYear() {\n return new Date().getUTCFullYear();\n },\n years: function years() {\n var yearArray = [];\n for (var i = 2005; i <= new Date().getUTCFullYear(); i++) {\n yearArray.push(i);\n }\n return yearArray;\n },\n startMonth: function startMonth() {\n return this.$store.state.startDate.getMonth();\n },\n startYear: function startYear() {\n return this.$store.state.startDate.getUTCFullYear();\n },\n endMonth: function endMonth() {\n return this.$store.state.endDate.getMonth();\n },\n endYear: function endYear() {\n return this.$store.state.endDate.getUTCFullYear();\n }\n },\n mounted: function mounted() {\n this.getDownloadedRepos();\n\n window.$(this.$el).find('.multiselect__input').addClass('search');\n window.$(this.$el).find('.multiselect__input').addClass('reposearch');\n console.log(\"CHECKING\", this.$store.state.startDate.getMonth(), this.$store.state.startDate.getUTCFullYear(), this.$store.state.endDate.getMonth(), this.$store.state.endDate.getUTCFullYear());\n\n if (this.projects.length == 1) this.project = this.projects[0];\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\",attrs:{\"id\":\"controls\"}},[_c('div',{staticClass:\"col col-12\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"topic\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row justify-content-md-center\"},[_c('div',{staticClass:\"col col-9\"},[_c('div',{staticClass:\"row\"},[_vm._m(0),_vm._v(\" \"),_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.stopSelecting),expression:\"stopSelecting\"}],staticClass:\"row col col-4\",staticStyle:{\"text-align\":\"center !important\"}},[_c('div',{staticClass:\"col col-6\",staticStyle:{\"display\":\"inline !important\"},on:{\"click\":_vm.keepSelecting}},[_c('multiselect',{attrs:{\"options\":_vm.projects,\"placeholder\":_vm.project},model:{value:(_vm.project),callback:function ($$v) {_vm.project=$$v},expression:\"project\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"display\":\"inline !important\"},on:{\"click\":_vm.keepSelecting}},[_c('multiselect',{staticClass:\"search reposearch special\",attrs:{\"options\":_vm.options,\"multiple\":true,\"group-label\":\"url\",\"placeholder\":\"Select repos\"},model:{value:(_vm.values),callback:function ($$v) {_vm.values=$$v},expression:\"values\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col col-1\"},[_c('input',{staticStyle:{\"max-width\":\"69.9px\"},attrs:{\"type\":\"button\",\"value\":\"Apply\"},on:{\"click\":function($event){_vm.onArrayCompare(); _vm.onValuesClear()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col col-1\"},[_c('input',{staticStyle:{\"max-width\":\"69.9px\"},attrs:{\"type\":\"button\",\"value\":\"Reset\"},on:{\"click\":function($event){_vm.onClear()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"col col-3\"},[_c('input',{staticClass:\"search reposearch\",attrs:{\"type\":\"text\",\"placeholder\":\"Search other GitHub URL\"},on:{\"change\":_vm.onCompare}}),_vm._v(\" \"),_c('p')])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-3\",attrs:{\"id\":\"collapse\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isCollapsed),expression:\"isCollapsed\"}],staticClass:\"col col-12 align-bottom\",attrs:{\"align\":\"right\"},on:{\"click\":function($event){_vm.collapseText()}}},[_vm._v(\"Less configuration options ▼\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isCollapsed),expression:\"!isCollapsed\"}],staticClass:\"col col-12 align-bottom\",attrs:{\"align\":\"right\"},on:{\"click\":function($event){_vm.collapseText()}}},[_vm._v(\"More configuration options ▶\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"row gutters section collapsible collapsed\"},[_c('div',{staticClass:\"col col-5\"},[_c('label',[_c('h6',[_vm._v(\"Line Chart Options\")]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('div',{staticClass:\"form-item form-checkboxes\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"each\",\"type\":\"checkbox\"},on:{\"change\":_vm.onRawWeeklyChange}}),_vm._v(\"Raw weekly values\"),_c('sup',{staticClass:\"warn\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item form-checkboxes\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"each\",\"type\":\"checkbox\",\"disabled\":!_vm.disabled,\"checked\":\"\"},domProps:{\"checked\":_vm.disabled},on:{\"change\":_vm.onAreaChange}}),_vm._v(\"Standard deviation\")])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('div',{staticClass:\"form-item form-checkboxes\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"each\",\"type\":\"checkbox\",\"disabled\":!_vm.disabled,\"checked\":\"\"},domProps:{\"checked\":_vm.disabled},on:{\"change\":_vm.onTooltipChange}}),_vm._v(\"Show tooltip\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item form-checkboxes\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"each\",\"type\":\"checkbox\",\"checked\":\"\"},on:{\"change\":_vm.onDetailChange}}),_vm._v(\"Enable detail\")])])]),_vm._v(\" \"),_c('label',[_c('h6',[_vm._v(\"Bubble Chart Options \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-item form-checkboxes\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"each\",\"type\":\"checkbox\"},on:{\"change\":_vm.onShowBelowAverageChange}}),_vm._v(\"Show users with below-average total contributions\"),_c('sup',{staticClass:\"warn\"})]),_c('br')])]),_vm._v(\" \"),_vm._m(1),_vm._v(\" \"),_c('div',{staticClass:\"col col-11\"},[_c('small',[_vm._v(\"1. Line charts show a rolling mean over \"+_vm._s(_vm.info.days)+\" days with data points at each \"+_vm._s(_vm.info.points)+\"-day interval\")])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-7\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('h6',[_vm._v(\"Chart Timeline Configuration\")]),_vm._v(\" \"),_c('div',{staticClass:\"row gutters\"},[_c('div',{staticClass:\"col col-11\"},[_c('div',{staticClass:\"form-item\"},[_c('label',[_vm._v(\"Start Date\\n \"),_c('div',{staticClass:\"row gutters\"},[_c('div',{staticClass:\"col col-7\"},[_c('div',{staticClass:\"form-item\"},[_c('select',{ref:\"startMonth\",on:{\"change\":_vm.onStartDateChange}},_vm._l((_vm.months),function(month){return _c('option',{domProps:{\"value\":month.value,\"selected\":(_vm.startMonth) == month.value}},[_vm._v(_vm._s(month.name))])})),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(\"Month\")])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-5\"},[_c('div',{staticClass:\"form-item\"},[_c('select',{ref:\"startYear\",on:{\"change\":_vm.onStartDateChange}},_vm._l((_vm.years),function(year){return _c('option',{domProps:{\"value\":year,\"selected\":_vm.startYear == year}},[_vm._v(_vm._s(year))])})),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(\"Year\")])])])])])])])]),_vm._v(\" \"),_c('p'),_vm._v(\" \"),_c('div',{staticClass:\"row gutters\"},[_c('div',{staticClass:\"col col-11\"},[_c('div',{staticClass:\"form-item\"},[_c('label',[_vm._v(\"End Date\\n \"),_c('div',{staticClass:\"row gutters\"},[_c('div',{staticClass:\"col col-7\"},[_c('div',{staticClass:\"form-item\"},[_c('select',{ref:\"endMonth\",on:{\"change\":_vm.onEndDateChange}},_vm._l((_vm.months),function(month){return _c('option',{domProps:{\"value\":month.value,\"selected\":(_vm.endMonth) == month.value}},[_vm._v(_vm._s(month.name))])})),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(\"Month\")])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-5\"},[_c('div',{staticClass:\"form-item\"},[_c('select',{ref:\"endYear\",on:{\"change\":_vm.onEndDateChange}},_vm._l((_vm.years),function(year){return _c('option',{domProps:{\"value\":year,\"selected\":_vm.endYear == year}},[_vm._v(_vm._s(year))])})),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(\"Year\")])])])])])])])]),_vm._v(\" \"),_c('br')]),_vm._v(\" \"),_c('div',{staticClass:\"col col-1\"}),_vm._v(\" \"),_c('div',{staticClass:\"col col-5\"},[_c('h6',[_vm._v(\"Rendering\")]),_vm._v(\" \"),_c('label',[_vm._v(\"Line Charts\"),_c('sup',[_vm._v(\"1\")]),_c('sup',{staticClass:\"warn\"}),_vm._v(\" \"),_c('div',{staticClass:\"append col col-10\"},[_c('input',{ref:\"info\",attrs:{\"type\":\"number\",\"min\":\"20\",\"id\":\"averagetimespan\",\"value\":\"180\",\"placeholder\":\"180\"},on:{\"change\":_vm.onTrailingAverageChange}}),_c('span',[_vm._v(\"day average\")])]),_vm._v(\" \"),_c('p'),_vm._v(\" \"),_c('h6',[_vm._v(\"Comparison Type\")]),_vm._v(\" \"),_c('label',[_c('div',{staticClass:\"form-item form-checkboxes\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"zscore\",\"type\":\"radio\"},domProps:{\"checked\":_vm.compare == 'zscore'},on:{\"change\":_vm.onCompareChange}}),_vm._v(\"Z-score\")]),_c('br'),_vm._v(\" \"),_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"baseline\",\"type\":\"radio\"},domProps:{\"checked\":_vm.compare == 'baseline'},on:{\"change\":_vm.onCompareChange}}),_vm._v(\"Baseline is compared\")]),_vm._v(\" \"),_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"name\":\"comparebaseline\",\"value\":\"rolling\",\"type\":\"radio\"},domProps:{\"checked\":_vm.compare == 'rolling'},on:{\"change\":_vm.onCompareChange}}),_vm._v(\"Rolling average\")])])])]),_vm._v(\" \"),_c('br')])])])])])])])])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col col-3\",attrs:{\"align\":\"center\",\"id\":\"comparetext\"}},[_c('h6',[_vm._v(\"Compare from your repos:\")])])},function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col col-12\"},[_c('small',{staticClass:\"warn\"},[_vm._v(\" - These options affect performance\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-4eb76a08\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-4eb76a08\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _AugurHeader = require('./AugurHeader');\n\nvar _AugurHeader2 = _interopRequireDefault(_AugurHeader);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n\n name: 'MetricsStatus',\n components: {\n AugurHeader: _AugurHeader2.default\n },\n data: function data() {\n return {\n metricsStatus: [],\n metadata: {\n metricStatusMetadata: [],\n groups: [],\n sources: [],\n metric_types: []\n },\n filters: {\n selected_group: 'all',\n selected_source: 'all',\n selected_metric_type: 'all',\n selected_backend_status: 'all',\n selected_frontend_status: 'all',\n seletec_is_defined: 'all'\n }\n };\n },\n\n methods: {\n getMetricsStatus: function getMetricsStatus() {\n var _this = this;\n\n var query_string = \"group=\" + this.selected_group + \"&data_source=\" + this.selected_source + \"&metric_type=\" + this.selected_metric_type + \"&backend_status=\" + this.selected_backend_status + \"&frontend_status=\" + this.selected_frontend_status + \"&is_defined=\" + this.selected_is_defined;\n\n window.AugurAPI.getMetricsStatus(query_string).then(function (data) {\n _this.metricsStatus = data;\n });\n },\n getMetricsStatusMetadata: function getMetricsStatusMetadata() {\n var _this2 = this;\n\n window.AugurAPI.getMetricsStatusMetadata().then(function (data) {\n _this2.metadata['metricStatusMetadata'] = data;\n\n _this2.metadata['groups'] = Object.keys(data[0].groups);\n\n _this2.metadata['data_sources'] = data[0].data_sources;\n\n _this2.metadata['metric_types'] = data[0].metric_types;\n });\n },\n getImplementationStatusColor: function getImplementationStatusColor(metric, location) {\n if (metric[location] == \"unimplemented\") {\n return \"#c00\";\n } else if (metric[location] == \"implemented\") {\n return \"#0c0\";\n }\n },\n getBackendStatusColor: function getBackendStatusColor(metric) {\n if (metric[\"backend_status\"] == \"unimplemented\") {\n return \"#c00\";\n } else if (metric[\"backend_status\"] == \"implemented\") {\n return \"#0c0\";\n }\n },\n getFrontendStatusColor: function getFrontendStatusColor(metric) {\n if (metric[\"frontend_status\"] == \"unimplemented\") {\n return \"#c00\";\n } else if (metric[\"frontend_status\"] == \"implemented\") {\n return \"#0c0\";\n }\n }\n },\n mounted: function mounted() {\n this.selected_group = 'all';\n this.selected_source = 'all';\n this.selected_metric_type = 'all';\n this.selected_backend_status = 'all';\n this.selected_frontend_status = 'all';\n this.selected_is_defined = 'all';\n this.getMetricsStatus();\n this.getMetricsStatusMetadata();\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"is-table-container\"},[_c('augur-header'),_vm._v(\" \"),_c('section',[_c('h3',[_vm._v(\"CHAOSS Metrics Implementation Status\")]),_vm._v(\" \"),_c('div',{staticClass:\"row gutters\"},[_c('div',{staticClass:\"col col-4\"},[_c('label',[_vm._v(\"Group:\\n \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected_group),expression:\"selected_group\"}],attrs:{\"id\":\"metric_group\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected_group=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){_vm.getMetricsStatus()}]}},_vm._l((_vm.metadata['groups']),function(group){return _c('option',{domProps:{\"value\":group}},[_vm._v(\"\\n \"+_vm._s(group)+\"\\n \")])}))])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-4\"},[_c('label',[_vm._v(\"Source:\\n \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected_source),expression:\"selected_source\"}],attrs:{\"id\":\"metric_source\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected_source=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){_vm.getMetricsStatus()}]}},_vm._l((_vm.metadata['data_sources']),function(data_source){return _c('option',{domProps:{\"value\":data_source}},[_vm._v(\"\\n \"+_vm._s(data_source)+\"\\n \")])}))])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-4\"},[_c('label',[_vm._v(\"Metric Type:\\n \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected_metric_type),expression:\"selected_metric_type\"}],attrs:{\"id\":\"metric_type\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected_metric_type=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){_vm.getMetricsStatus()}]}},_vm._l((_vm.metadata['metric_types']),function(metric_type){return _c('option',{domProps:{\"value\":metric_type}},[_vm._v(\"\\n \"+_vm._s(metric_type)+\"\\n \")])}))])]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"col col-4\"},[_c('label',[_vm._v(\"Backend Status:\\n \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected_backend_status),expression:\"selected_backend_status\"}],attrs:{\"id\":\"metric_backend_status\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected_backend_status=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){_vm.getMetricsStatus()}]}},[_c('option',{attrs:{\"value\":\"all\"}},[_vm._v(\"all\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"unimplemented\"}},[_vm._v(\"unimplemented\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"implemented\"}},[_vm._v(\"implemented\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-4\"},[_c('label',[_vm._v(\"Frontend Status:\\n \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected_frontend_status),expression:\"selected_frontend_status\"}],attrs:{\"id\":\"metric_frontend_status\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected_frontend_status=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){_vm.getMetricsStatus()}]}},[_c('option',{attrs:{\"value\":\"all\"}},[_vm._v(\"all\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"unimplemented\"}},[_vm._v(\"unimplemented\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"implemented\"}},[_vm._v(\"implemented\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-4\"},[_c('label',[_vm._v(\"Defined:\\n \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected_is_defined),expression:\"selected_is_defined\"}],attrs:{\"id\":\"metric_is_defined\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected_is_defined=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){_vm.getMetricsStatus()}]}},[_c('option',{attrs:{\"value\":\"all\"}},[_vm._v(\"all\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"true\"}},[_vm._v(\"true\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"false\"}},[_vm._v(\"false\")])])])])]),_vm._v(\" \"),_c('p'),_vm._v(\" \"),_c('table',{staticClass:\"is-responsive\"},[_vm._m(1),_vm._v(\" \"),_c('tbody',{staticStyle:{\"display\":\"block\",\"height\":\"400px\",\"overflow-y\":\"scroll\",\"text-align\":\"center\",\"background\":\"#eaeaea\"}},_vm._l((_vm.metricsStatus),function(metric){return _c('tr',[_c('div',{staticStyle:{\"overflow\":\"hidden\"}},[_c('td',{staticStyle:{\"width\":\"119px !important\"},style:({ color: _vm.getBackendStatusColor(metric) })},[_vm._v(_vm._s(metric.backend_status))]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"135px !important\"},style:({ color: _vm.getFrontendStatusColor(metric) })},[_vm._v(_vm._s(metric.frontend_status))]),_vm._v(\" \"),(metric.url != '/')?[_c('td',{staticStyle:{\"width\":\"170px !important\"}},[_c('a',{attrs:{\"href\":metric.documentation_url}},[_vm._v(_vm._s(metric.display_name))])])]:[_c('td',{staticStyle:{\"width\":\"170px !important\"}},[_vm._v(_vm._s(metric.display_name))])],_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"121px !important\"}},[_vm._v(_vm._s(metric.group))]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"569px !important\"}},[_vm._v(_vm._s(metric.endpoint))]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"120px !important\"}},[_vm._v(_vm._s(metric.data_source))]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"85px !important\"}},[_vm._v(_vm._s(metric.metric_type))])],2)])}))])])],1)}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col col-12\"},[_c('br')])},function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticStyle:{\"display\":\"block\"}},[_c('tr',{staticStyle:{\"font-weight\":\"600\",\"text-align\":\"center\"}},[_c('td',{staticStyle:{\"width\":\"119px !important\"}},[_vm._v(\"Backend Status\")]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"135px !important\"}},[_vm._v(\"Frontend Status\")]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"170px !important\"}},[_vm._v(\"Name\")]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"121px !important\"}},[_vm._v(\"Group\")]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"569px !important\"}},[_vm._v(\"Endpoint\")]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"120px !important\"}},[_vm._v(\"Source\")]),_vm._v(\" \"),_c('td',{staticStyle:{\"width\":\"85px !important\"}},[_vm._v(\"Metric Type\")])])])}]\n__vue__options__._scopeId = \"data-v-99cabfb0\"\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-99cabfb0\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-99cabfb0\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _AugurHeader = require('./AugurHeader');\n\nvar _AugurHeader2 = _interopRequireDefault(_AugurHeader);\n\nvar _TickChart = require('./charts/TickChart');\n\nvar _TickChart2 = _interopRequireDefault(_TickChart);\n\nvar _LinesOfCodeChart = require('./charts/LinesOfCodeChart');\n\nvar _LinesOfCodeChart2 = _interopRequireDefault(_LinesOfCodeChart);\n\nvar _NormalizedStackedBarChart = require('./charts/NormalizedStackedBarChart');\n\nvar _NormalizedStackedBarChart2 = _interopRequireDefault(_NormalizedStackedBarChart);\n\nvar _OneDimensionalStackedBarChart = require('./charts/OneDimensionalStackedBarChart');\n\nvar _OneDimensionalStackedBarChart2 = _interopRequireDefault(_OneDimensionalStackedBarChart);\n\nvar _HorizontalBarChart = require('./charts/HorizontalBarChart');\n\nvar _HorizontalBarChart2 = _interopRequireDefault(_HorizontalBarChart);\n\nvar _GroupedBarChart = require('./charts/GroupedBarChart');\n\nvar _GroupedBarChart2 = _interopRequireDefault(_GroupedBarChart);\n\nvar _StackedBarChart = require('./charts/StackedBarChart');\n\nvar _StackedBarChart2 = _interopRequireDefault(_StackedBarChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n AugurHeader: _AugurHeader2.default,\n TickChart: _TickChart2.default,\n LinesOfCodeChart: _LinesOfCodeChart2.default,\n NormalizedStackedBarChart: _NormalizedStackedBarChart2.default,\n OneDimensionalStackedBarChart: _OneDimensionalStackedBarChart2.default,\n HorizontalBarChart: _HorizontalBarChart2.default,\n GroupedBarChart: _GroupedBarChart2.default,\n StackedBarChart: _StackedBarChart2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.gitRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('div',{staticClass:\"row\",staticStyle:{\"transform\":\"translateY(-50px) !important\"}},[_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgTpRankedCommits\",\"title\":\"Top Repos in 2018 by Commits with Baseline Averages - Sorted\",\"field\":\"commit\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgTpRankedLoc\",\"title\":\"Top Repos in 2018 by Net LoC with Baseline Averages - Sorted\",\"field\":\"loc\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgNewrepRankedCommits\",\"title\":\"Top New Repos in 2018 by Commits with Baseline Averages - Sorted\",\"field\":\"commit\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\",staticStyle:{\"padding-right\":\"35px\"}},[_c('grouped-bar-chart',{attrs:{\"source\":\"cdRgNewrepRankedLoc\",\"title\":\"Top New Repos in 2018 by Net LoC with Baseline Averages - Sorted\",\"field\":\"loc\"}})],1)])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7117fe96\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-7117fe96\", __vue__options__)\n }\n})()}",";(function(){\n\"use strict\";\n\nwindow.onload = function () {\n document.getElementById(\"ciiBtn\").addEventListener(\"click\", function () {\n document.getElementById(\"overcii\").style.display = \"block\";\n document.getElementById(\"overcii\").class = \"row\";\n document.getElementById(\"ciiBtn\").style.visibility = \"hidden\";\n var request = new XMLHttpRequest();\n function loader() {\n var basestr = document.getElementById(\"base\").innerHTML;\n var augURL = 'https://github.com/' + basestr;\n request.open('GET', 'https://bestpractices.coreinfrastructure.org/projects.json?pq=' + augURL, true);\n request.onload = function () {\n var data = JSON.parse(this.response)[0];\n if (data != undefined) {\n var badgeURL = 'https://bestpractices.coreinfrastructure.org/projects/' + data.id + '/badge';\n\n document.getElementById(\"CIIbadge\").src = badgeURL;\n if (data.badge_percentage_0 < 100) {\n document.getElementById(\"CII\").innerHTML = data.name + ' is currently not passing CII Best Practices.';\n } else if (data.badge_percentage_1 < 100) {\n document.getElementById(\"CII\").innerHTML = data.name + ' is currently passing CII Best Practices.';\n } else if (data.badge_percentage_2 < 100) {\n document.getElementById(\"CII\").innerHTML = data.name + ' is currently passing CII Best Practices. This project has a siver status.';\n } else if (data.badge_percentage_2 == 100) {\n document.getElementById(\"CII\").innerHTML = data.name + ' is currently passing CII Best Practices.
' + data.name + ' maintains a gold status.';\n }\n } else {\n document.getElementById(\"CII\").innerHTML = 'No best practice data for this repository.';\n }\n };\n }\n loader();\n request.send();\n });\n};\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {}\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Risk\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"},attrs:{\"id\":\"base\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] }),attrs:{\"id\":\"compared\"}},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_c('h2',{staticClass:\"col\",staticStyle:{\"margin-bottom\":\"20px\"}},[_vm._v(\"CII Best Practices\")]),_vm._v(\" \"),_c('button',{staticStyle:{\"border\":\"2px solid black\",\"width\":\"100%\"},attrs:{\"id\":\"ciiBtn\"}},[_vm._v(\"Retrieve CII information\")]),_vm._v(\" \"),_vm._m(0)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\",\"display\":\"none\"},attrs:{\"id\":\"overcii\"}},[_c('img',{staticClass:\"col\",staticStyle:{\"width\":\"419px\",\"height\":\"146px\",\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"width\":\"200px\",\"height\":\"200px\",\"src\":\"https://i.ibb.co/n8f7NjX/CIITPARENT.png\",\"href\":\"https://bestpractices.coreinfrastructure.org/en\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('div',{staticClass:\"col-6\",staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\",\"margin-top\":\"20px\"},attrs:{\"id\":\"CIIbp\"}},[_c('div',{attrs:{\"size\":\"total\"}},[_c('img',{staticStyle:{\"transform\":\"scale(2)\"},attrs:{\"id\":\"CIIbadge\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('h2',{attrs:{\"id\":\"CII\"}})])])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-0abc386c\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-0abc386c\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _vueMultiselect = require('vue-multiselect');\n\nvar _vueMultiselect2 = _interopRequireDefault(_vueMultiselect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n components: {\n Multiselect: _vueMultiselect2.default\n },\n data: function data() {\n return {\n clipped: true,\n drawer: true,\n fixed: false,\n items: [{ icon: 'bubble_chart', title: 'Inspire' }],\n miniVariant: false,\n right: true,\n rightDrawer: false,\n title: 'Vuetify.js',\n dialog: false,\n headers: [{\n text: 'Dessert (100g serving)',\n align: 'left',\n sortable: false,\n value: 'name'\n }, { text: 'Calories', value: 'calories' }, { text: 'Fat (g)', value: 'fat' }, { text: 'Carbs (g)', value: 'carbs' }, { text: 'Protein (g)', value: 'protein' }, { text: 'Actions', value: 'name', sortable: false }],\n desserts: [],\n editedIndex: -1,\n editedItem: {\n name: '',\n calories: 0,\n fat: 0,\n carbs: 0,\n protein: 0\n },\n defaultItem: {\n name: '',\n calories: 0,\n fat: 0,\n carbs: 0,\n protein: 0\n },\n listPrimitive: null\n };\n },\n\n computed: {\n formTitle: function formTitle() {\n return this.editedIndex === -1 ? 'New Item' : 'Edit Item';\n }\n },\n watch: {\n dialog: function dialog(val) {\n val || this.close();\n }\n },\n mounted: function mounted() {},\n methods: {\n initialise: function initialise(hamoni) {\n var _this = this;\n\n hamoni.createList(\"vue-table\", [{\n name: 'Frozen Yogurt',\n calories: 159,\n fat: 6.0,\n carbs: 24,\n protein: 4.0\n }, {\n name: 'Ice cream sandwich',\n calories: 237,\n fat: 9.0,\n carbs: 37,\n protein: 4.3\n }, {\n name: 'Eclair',\n calories: 262,\n fat: 16.0,\n carbs: 23,\n protein: 6.0\n }]).then(function (primitive) {\n _this.listPrimitive = primitive;\n _this.desserts = _this.listPrimitive.getAll();\n _this.subscribeToUpdate();\n }).catch(alert);\n },\n subscribeToUpdate: function subscribeToUpdate() {\n var _this2 = this;\n\n this.listPrimitive.onItemAdded(function (item) {\n _this2.desserts.push(item.value);\n });\n this.listPrimitive.onItemUpdated(function (item) {\n _this2.desserts.splice(item.index, 1, item.value);\n });\n this.listPrimitive.onItemRemoved(function (item) {\n _this2.desserts.splice(item.index, 1);\n });\n },\n editItem: function editItem(item) {\n this.editedIndex = this.desserts.indexOf(item);\n this.editedItem = Object.assign({}, item);\n this.dialog = true;\n },\n deleteItem: function deleteItem(item) {\n var index = this.desserts.indexOf(item);\n confirm('Are you sure you want to delete this item?') && this.listPrimitive.remove(index);\n },\n close: function close() {\n var _this3 = this;\n\n this.dialog = false;\n setTimeout(function () {\n _this3.editedItem = Object.assign({}, _this3.defaultItem);\n _this3.editedIndex = -1;\n }, 300);\n },\n save: function save() {\n if (this.editedIndex > -1) {\n this.listPrimitive.update(this.editedIndex, this.editedItem);\n } else {\n this.listPrimitive.add(this.editedItem);\n }\n this.close();\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-dialog',{attrs:{\"max-width\":\"500px\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-btn',{staticClass:\"mb-2\",attrs:{\"slot\":\"activator\",\"color\":\"primary\",\"dark\":\"\"},slot:\"activator\"},[_vm._v(\"New Item\")]),_vm._v(\" \"),_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.formTitle))])]),_vm._v(\" \"),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-md\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Dessert name\"},model:{value:(_vm.editedItem.name),callback:function ($$v) {_vm.$set(_vm.editedItem, \"name\", $$v)},expression:\"editedItem.name\"}})],1),_vm._v(\" \"),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Calories\"},model:{value:(_vm.editedItem.calories),callback:function ($$v) {_vm.$set(_vm.editedItem, \"calories\", $$v)},expression:\"editedItem.calories\"}})],1),_vm._v(\" \"),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Fat (g)\"},model:{value:(_vm.editedItem.fat),callback:function ($$v) {_vm.$set(_vm.editedItem, \"fat\", $$v)},expression:\"editedItem.fat\"}})],1),_vm._v(\" \"),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Carbs (g)\"},model:{value:(_vm.editedItem.carbs),callback:function ($$v) {_vm.$set(_vm.editedItem, \"carbs\", $$v)},expression:\"editedItem.carbs\"}})],1),_vm._v(\" \"),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Protein (g)\"},model:{value:(_vm.editedItem.protein),callback:function ($$v) {_vm.$set(_vm.editedItem, \"protein\", $$v)},expression:\"editedItem.protein\"}})],1)],1)],1)],1),_vm._v(\" \"),_c('v-card-actions',[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{attrs:{\"color\":\"blue darken-1\",\"flat\":\"\"},nativeOn:{\"click\":function($event){return _vm.close($event)}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('v-btn',{attrs:{\"color\":\"blue darken-1\",\"flat\":\"\"},nativeOn:{\"click\":function($event){return _vm.save($event)}}},[_vm._v(\"Save\")])],1)],1)],1),_vm._v(\" \"),_c('v-data-table',{staticClass:\"elevation-1\",attrs:{\"headers\":_vm.headers,\"items\":_vm.desserts,\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('td',[_vm._v(_vm._s(props.item.name))]),_vm._v(\" \"),_c('td',{staticClass:\"text-xs-right\"},[_vm._v(_vm._s(props.item.calories))]),_vm._v(\" \"),_c('td',{staticClass:\"text-xs-right\"},[_vm._v(_vm._s(props.item.fat))]),_vm._v(\" \"),_c('td',{staticClass:\"text-xs-right\"},[_vm._v(_vm._s(props.item.carbs))]),_vm._v(\" \"),_c('td',{staticClass:\"text-xs-right\"},[_vm._v(_vm._s(props.item.protein))]),_vm._v(\" \"),_c('td',{staticClass:\"justify-center layout px-0\"},[_c('v-btn',{staticClass:\"mx-0\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.editItem(props.item)}}},[_c('v-icon',{attrs:{\"color\":\"teal\"}},[_vm._v(\"edit\")])],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-0\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.deleteItem(props.item)}}},[_c('v-icon',{attrs:{\"color\":\"pink\"}},[_vm._v(\"delete\")])],1)],1)]}}])})],1)}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6147dc76\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-6147dc76\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nmodule.exports = {\n props: ['owner', 'repo', 'comparedowner', 'comparedrepo', 'groupid'],\n computed: {\n gitRepo: function gitRepo() {\n return this.$store.state.gitRepo;\n },\n currentTab: function currentTab() {\n return this.$store.state.tab;\n },\n baseRepo: function baseRepo() {\n return this.$store.state.baseRepo;\n },\n comparedRepos: function comparedRepos() {\n return this.$store.state.comparedRepos;\n }\n },\n methods: {\n changeTab: function changeTab(e) {\n console.log(\"changing tab to: \", e.target.dataset.value);\n this.$store.commit('setTab', {\n tab: e.target.dataset.value\n });\n if (this.$store.state.comparedRepos.length == 1) {\n var owner = this.gitRepo ? null : this.baseRepo.split('/')[0];\n var repo = this.gitRepo ? this.gitRepo : this.baseRepo.split('/')[1];\n var comparedowner = this.comparedRepos[0].split('/').length > 2 ? null : this.comparedRepos[0].split('/')[0];\n var comparedrepo = this.comparedRepos[0].split('/').length > 2 ? this.comparedRepos[0] : this.comparedRepos[0].split('/')[1];\n var name = e.target.dataset['value'] + \"compare\";\n this.$router.push({\n name: name,\n params: { owner: owner, repo: repo, comparedowner: comparedowner, comparedrepo: comparedrepo }\n });\n } else if (this.$store.state.comparedRepos.length > 1) {\n var groupid = this.gitRepo ? String(this.gitRepo) + '+' : String(state.baseRepo) + \"+\";\n this.comparedRepos.forEach(function (repo) {\n groupid += String(repo) + '+';\n });\n var _name = e.target.dataset['value'] + \"group\";\n this.$router.push({\n name: _name,\n params: { groupid: groupid }\n });\n } else {\n var _owner = this.gitRepo ? null : this.baseRepo.split('/')[0];\n var _repo = this.gitRepo ? this.gitRepo : this.baseRepo.split('/')[1];\n this.$router.push({\n name: e.target.dataset['value'],\n params: { owner: _owner, repo: _repo }\n });\n }\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"tabs\"},[_c('ul',[_c('li',{class:{ active: (_vm.currentTab == 'gmd') }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"gmd\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Growth, Maturity, and Decline\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'diversityinclusion') }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"diversityinclusion\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Diversity and Inclusion\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'risk') }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"risk\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Risk\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'value') }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"value\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Value\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'activity') }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"activity\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Activity\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'experimental') }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"experimental\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Experimental\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'git'), hidden: !_vm.gitRepo }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"git\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Git\")])]),_vm._v(\" \"),_c('li',{class:{ active: (_vm.currentTab == 'overview'), hidden: !_vm.gitRepo }},[_c('a',{attrs:{\"href\":\"#\",\"data-value\":\"overview\"},on:{\"click\":_vm.changeTab}},[_vm._v(\"Overview\")])])])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-004f2c6b\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-004f2c6b\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nvar _DynamicLineChart = require('./charts/DynamicLineChart');\n\nvar _DynamicLineChart2 = _interopRequireDefault(_DynamicLineChart);\n\nvar _BubbleChart = require('./charts/BubbleChart');\n\nvar _BubbleChart2 = _interopRequireDefault(_BubbleChart);\n\nvar _StackedBarChart = require('./charts/StackedBarChart');\n\nvar _StackedBarChart2 = _interopRequireDefault(_StackedBarChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n data: function data() {\n return {\n colors: [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"]\n };\n },\n\n components: {\n DynamicLineChart: _DynamicLineChart2.default,\n BubbleChart: _BubbleChart2.default,\n StackedBarChart: _StackedBarChart2.default\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Value\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('h2',{staticStyle:{\"display\":\"inline-block\",\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.$store.state.baseRepo))]),_vm._v(\" \"),(_vm.$store.state.comparedRepos.length > 0)?_c('h2',{staticClass:\"repolisting\",staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\" compared to: \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.$store.state.comparedRepos),function(repo,index){return _c('h2',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"repolisting\",style:({ 'color': _vm.colors[index] })},[_vm._v(\" \"+_vm._s(repo)+\" \")])])})],2),_vm._v(\" \"),_vm._m(0)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('p',[_vm._v(\"We currently do not have any metrics developed for this group.\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5e0cf204\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-5e0cf204\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar spec = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"spec\": {\n \"hconcat\": [{\n \"title\": \"Code Engagement\",\n \"width\": 475,\n \"height\": 300,\n \"mark\": {\n \"type\": \"circle\",\n \"cursor\": \"pointer\"\n },\n \"transform\": [{\n \"calculate\": \"'https://www.google.com/search?q=' + datum.name\", \"as\": \"url\"\n }],\n \"selection\": {\n \"paintbrush\": {\n \"type\": \"single\",\n \"on\": \"mouseover\"\n },\n \"grid\": {\n \"type\": \"interval\", \"bind\": \"scales\"\n }\n },\n \"encoding\": {\n \"x\": {\n \"field\": \"commit_comments\",\n \"type\": \"quantitative\"\n },\n \"y\": {\n \"field\": \"commits\",\n \"type\": \"quantitative\",\n \"scale\": {\n \"type\": \"sqrt\"\n }\n },\n \"color\": {\n \"condition\": {\n \"selection\": \"paintbrush\",\n \"field\": \"repo\",\n \"type\": \"nominal\",\n \"scale\": { \"range\": ['#FF3647', '#4736FF'] }\n },\n \"value\": \"grey\"\n },\n \"tooltip\": {\n \"field\": \"name\",\n \"type\": \"nominal\"\n },\n\n \"size\": {\n \"field\": \"total\",\n \"type\": \"quantitative\",\n \"legend\": {\n \"title\": \"all contributions\"\n },\n \"scale\": {\n \"type\": \"sqrt\"\n }\n }\n }\n }, {\n \"title\": \"Community Engagement\",\n \"width\": 475,\n \"height\": 300,\n \"mark\": {\n \"type\": \"circle\",\n \"cursor\": \"pointer\"\n },\n \"transform\": [{\n \"calculate\": \"'https://www.google.com/search?q=' + datum.name\", \"as\": \"url\"\n }],\n \"selection\": {\n \"paintbrush\": {\n \"type\": \"single\",\n \"on\": \"mouseover\"\n },\n \"grid\": {\n \"type\": \"interval\", \"bind\": \"scales\"\n }\n },\n \"encoding\": {\n \"x\": {\n \"field\": \"issue_comments\",\n \"type\": \"quantitative\",\n \"scale\": {\n \"type\": \"sqrt\",\n \"bandPaddingInner\": 3\n },\n \"axis\": {\n \"tickCount\": 10\n }\n },\n \"y\": {\n \"field\": \"issues\",\n \"type\": \"quantitative\",\n \"scale\": {\n \"type\": \"sqrt\"\n }\n },\n \"size\": {\n \"field\": \"total\",\n \"type\": \"quantitative\",\n \"legend\": {\n \"title\": \"all contributions\"\n },\n \"scale\": {\n \"type\": \"sqrt\"\n }\n },\n \"color\": {\n \"condition\": {\n \"selection\": \"paintbrush\",\n \"field\": \"repo\",\n \"type\": \"nominal\",\n \"scale\": { \"range\": ['#FF3647', '#4736FF'] }\n },\n \"tooltip\": {\n \"field\": \"name\",\n \"type\": \"nominal\"\n },\n\n \"value\": \"grey\"\n }\n }\n }]\n }\n};\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data', 'comparedTo'],\n data: function data() {\n return {\n values: []\n };\n },\n\n components: {\n 'vega-interactive': window.VueVega.mapVegaLiteSpec(spec)\n },\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n showBelowAverage: function showBelowAverage() {\n return this.$store.state.showBelowAverage;\n },\n chart: function chart() {\n var _this = this;\n\n var removeBelowAverageContributors = !this.showBelowAverage;\n $(this.$el).find('.showme').addClass('invis');\n $(this.$el).find('.bubblechart').addClass('loader');\n var shared = {};\n var processData = function processData(data) {\n window.AugurRepos[_this.repo][_this.source]().then(function (data) {\n shared.baseData = data.map(function (e) {\n e.repo = _this.repo.toString();return e;\n });\n if (removeBelowAverageContributors) {\n shared.baseData = _AugurStats2.default.aboveAverage(shared.baseData, 'total');\n }\n if (_this.comparedTo) {\n return window.AugurRepos[_this.comparedTo].contributors();\n } else {\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n }).then(function (compareData) {\n if (compareData) {\n compareData = compareData.map(function (e) {\n e.repo = _this.comparedTo;return e;\n });\n if (removeBelowAverageContributors) {\n compareData = _AugurStats2.default.aboveAverage(compareData, 'total');\n }\n _this.values = _.concat(shared.baseData, compareData);\n } else {\n _this.values = shared.baseData;\n }\n $(_this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(_this.$el).find('.bubblechart').removeClass('loader');\n });\n };\n if (this.repo) {\n\n if (this.data) {\n processData(this.data);\n } else {\n window.AugurRepos[this.repo][this.source]().then(function (data) {\n shared.baseData = data.map(function (e) {\n e.repo = _this.repo.toString();return e;\n });\n if (removeBelowAverageContributors) {\n shared.baseData = _AugurStats2.default.aboveAverage(shared.baseData, 'total');\n }\n if (_this.comparedTo) {\n return window.AugurRepos[_this.comparedTo].contributors();\n } else {\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n }).then(function (compareData) {\n if (compareData) {\n compareData = compareData.map(function (e) {\n e.repo = _this.comparedTo;return e;\n });\n if (removeBelowAverageContributors) {\n compareData = _AugurStats2.default.aboveAverage(compareData, 'total');\n }\n _this.values = _.concat(shared.baseData, compareData);\n } else {\n _this.values = shared.baseData;\n }\n $(_this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(_this.$el).find('.bubblechart').removeClass('loader');\n });\n }\n }\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"bubblechart hidefirst invis\"},[_c('vega-interactive',{ref:\"vega\",attrs:{\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-273cda36\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-273cda36\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title'],\n data: function data() {\n return {\n values: []\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n chart: function chart() {\n var _this = this;\n\n $(this.$el).find('.showme').addClass('invis');\n $(this.$el).find('.textchart').addClass('loader');\n if (this.repo) {\n window.AugurRepos[this.repo][this.source]().then(function (data) {\n $(_this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(_this.$el).find('.textchart').removeClass('loader');\n _this.values = data;\n console.log('Data:');\n console.log(data);\n });\n }\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"textchart hidefirst invis\"},[_c('h3',[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(\"Best:\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s((_vm.values[0]) ? _vm.values[0].best : undefined))])]),_vm._v(\" \"),_c('tr',[_c('th',[_vm._v(\"Worst\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s((_vm.values[0]) ? _vm.values[0].worst : undefined))])])]),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-410e1f3c\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-410e1f3c\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _AugurStats = require('../../AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nvar _d = require('d3');\n\nvar d3 = _interopRequireWildcard(_d);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: [],\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n dependencies: function dependencies() {\n var _this = this;\n\n if (this.repo) {\n\n this.$refs['dependents'].innerHTML = 'Loading...';\n window.AugurRepos[this.repo].dependents().then(function (dependents) {\n if (!dependents || !dependents.length) {\n _this.$refs['dependents'].innerHTML = 'No dependents found.';\n }\n _this.$refs['dependents'].innerHTML = '';\n for (var i = 0; i < dependents.length && i < 10; i++) {\n _this.$refs['dependents'].innerHTML += dependents[i].name + '
';\n }\n }, function () {\n _this.$refs['dependents'].innerHTML = 'No data.';\n });\n\n this.$refs['dependencies'].innerHTML = '';\n window.AugurRepos[this.repo].dependencies().then(function (dependencies) {\n if (!dependencies || !dependencies.length) {\n _this.$refs['dependencies'].innerHTML = 'No dependencies found.';\n }\n _this.$refs['dependencies'].innerHTML = '';\n for (var i = 0; i < dependencies.dependencies.length && i < 10; i++) {\n _this.$refs['dependencies'].innerHTML += dependencies.dependencies[i].name + '
';\n }\n }, function () {\n _this.$refs['dependencies'].innerHTML = 'No data.';\n });\n }\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-6\"},[_c('h3',[_vm._v(\"Top Dependents\")]),_vm._v(\" \"),_c('div',{ref:\"dependents\",staticClass:\"deps\"},[_vm._v(\"\\n Loading...\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-6\"},[_c('h3',[_vm._v(\"Top Dependencies\")]),_vm._v(\" \"),_c('div',{ref:\"dependencies\",staticClass:\"deps\"},[_vm._v(\"\\n Loading...\\n \")])])])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-210450fe\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-210450fe\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data', 'field'],\n data: function data() {\n return {\n values: []\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n gitRepo: function gitRepo() {\n return this.$store.state.gitRepo;\n },\n period: function period() {\n return this.$store.state.trailingAverage;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n compare: function compare() {\n return this.$store.state.compare;\n },\n comparedRepos: function comparedRepos() {\n return this.$store.state.comparedRepos;\n },\n rawWeekly: function rawWeekly() {\n return this.$store.state.rawWeekly;\n },\n showArea: function showArea() {\n return this.$store.state.showArea;\n },\n showTooltip: function showTooltip() {\n return this.$store.state.showTooltip;\n },\n showDetail: function showDetail() {\n return this.$store.state.showDetail;\n },\n months: function months() {\n return { 1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'Jun', 7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec'\n };\n },\n spec: function spec() {\n var _this = this;\n\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v3.json\",\n \"padding\": { 'left': 45, 'top': 10, 'right': 70, 'bottom': 50 },\n \"config\": {\n \"bar\": {\n \"discreteBandSize\": 10\n }\n },\n \"title\": {\n \"text\": this.title,\n\n \"offset\": 10\n },\n \"width\": 420,\n \"height\": 250,\n \"layer\": [{\n \"mark\": \"text\",\n \"encoding\": {\n \"text\": {\n \"field\": \"month\", \"type\": \"nominal\",\n \"axis\": { \"title\": \"\" }\n },\n \"y\": {\n \"field\": \"net_lines_minus_whitespace\", \"type\": \"quantitative\",\n \"axis\": { \"title\": \"net loc\" }\n },\n \"x\": {\n \"field\": \"commits\", \"type\": 'quantitative',\n\n \"axis\": { \"title\": \"commits\" }\n },\n \"color\": {\n \"field\": \"month\", \"type\": \"ordinal\",\n \"scale\": { \"range\": [\"black\", \"#CC0314\", \"#1403CC\", \"#098118\", \"#CCAE00\", \"#C24F00\", \"#5E0081\", \"#0FA1C1\", \"#BD00B3\"] }\n }\n }\n }, {\n\n \"mark\": \"point\",\n \"encoding\": {\n \"y\": {\n \"field\": \"next_y1\", \"type\": \"quantitative\",\n \"axis\": { \"title\": \"\", \"labels\": false }\n },\n \"x\": {\n \"field\": \"next_x1\", \"type\": 'quantitative',\n \"axis\": { \"title\": \"\", \"labels\": false }\n },\n \"color\": {\n \"field\": \"month\", \"type\": \"ordinal\",\n \"scale\": { \"range\": [\"black\", \"#CC0314\", \"#1403CC\", \"#098118\", \"#CCAE00\", \"#C24F00\", \"#5E0081\", \"#0FA1C1\", \"#BD00B3\"] }\n }\n }\n }],\n \"resolve\": { \"scale\": { \"y\": \"independent\", \"x\": \"independent\" } }\n };\n\n var repos = [];\n if (this.gitRepo) {\n repos.push(window.AugurAPI.Repo({ gitURL: this.gitRepo }));\n }\n var endpoints = [];\n var fields = {};\n this.source.split(',').forEach(function (endpointAndFields) {\n var split = endpointAndFields.split(':');\n endpoints.push(split[0]);\n if (split[1]) {\n fields[split[0]] = split[1].split('+');\n }\n });\n if (this.data) {\n processGitData(this.data);\n } else {\n var repo = window.AugurAPI.Repo({ gitURL: this.gitRepo });\n repo[this.source]().then(function (data) {\n console.log(\"batch data\", data);\n processData(data);\n }, function () {});\n }\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n var processGitData = function processGitData(data) {\n var repo = window.AugurAPI.Repo({ gitURL: _this.repo });\n var dat = [];\n repo.changesByAuthor().then(function (changes) {\n dat.push(changes);\n });\n };\n var defaultProcess = function defaultProcess(obj, key) {\n var d = null;\n if (typeof field == \"string\") field = [field];\n d = _AugurStats2.default.convertKey(obj[key], key);\n return d;\n };\n var processData = function processData(data) {\n console.log(repos, data, \"CHECK\");\n var sort = _this.field == 'commit' ? \"patches\" : \"net\";\n data.sort(function (a, b) {\n return b[sort] - a[sort];\n });\n console;\n for (var i = 0; i < data.length - 1; i++) {\n var diffLoc = data[i + 1]['net_lines_minus_whitespace'] - data[i]['net_lines_minus_whitespace'];\n var diffCom = data[i + 1]['commits'] - data[i]['commits'];\n data[i]['next_y1'] = data[i]['net_lines_minus_whitespace'] + diffLoc / 10;\n data[i]['next_x1'] = data[i]['commits'] + diffCom / 10;\n data[i]['next_y2'] = data[i]['net_lines_minus_whitespace'] + diffLoc / 10;\n data[i]['next_x2'] = data[i]['commits'] + diffCom / 10 - data[i]['commits'] / 20;\n data[i]['next_y3'] = data[i]['net_lines_minus_whitespace'] + (data[i + 1]['net_lines_minus_whitespace'] - data[i]['net_lines_minus_whitespace']) / 10;\n data[i]['next_x3'] = data[i]['commits'] + (data[i + 1]['commits'] - data[i]['commits']) / 10;\n }\n data.forEach(function (el) {\n\n el.month = _this.months[el.month];\n });\n repos.forEach(function (repo) {\n console.log(\"repo data\", data);\n _this.values = data;\n });\n };\n return config;\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"groupedbarchart\"},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6196c9b8\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-6196c9b8\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data'],\n data: function data() {\n var years = [];\n for (var i = 9; i >= 0; i--) {\n years.push(new Date().getFullYear() - i);\n }\n var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthDecimals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return {\n values: [],\n contributors: [],\n organizations: [],\n view: 'year',\n monthNames: monthNames,\n monthDecimals: monthDecimals,\n years: years,\n setYear: 0,\n tick: 0\n };\n },\n created: function created() {\n this.tick = 0;\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.gitRepo;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n spec: function spec() {\n var _this = this;\n\n var type = null,\n bin = null,\n size = null,\n opacity = null;\n\n if (this.tick == 0) {\n type = \"circle\";\n bin = false;\n size = {\n \"field\": \"Total lines changed\",\n \"type\": \"quantitative\",\n \"min\": \"15\",\n \"scale\": { \"minSize\": 30, \"maxSize\": 31 }\n };\n opacity = {};\n }\n if (this.tick == 1) {\n type = \"tick\";\n bin = false;\n size = {};\n opacity = {\n \"field\": \"Total lines changed\",\n \"type\": \"quantitative\",\n \"min\": \".5\"\n };\n }\n if (this.tick == 2) {\n type = \"rect\";\n bin = { \"maxbins\": 40 };\n size = {};\n opacity = {\n \"field\": \"Total lines changed\",\n \"type\": \"quantitative\",\n \"min\": \".5\"\n };\n }\n\n var config = _defineProperty({\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"width\": 800,\n \"height\": 300,\n \"config\": {\n \"tick\": {\n \"thickness\": 8,\n \"bandSize\": 23\n },\n \"axis\": {\n \"grid\": false,\n \"title\": null\n },\n \"legend\": {\n \"titleFontSize\": 10,\n \"titlePadding\": 10\n }, \"scale\": { \"minSize\": 100, \"maxSize\": 500 }\n },\n \"layer\": [{\n \"transform\": [],\n \"mark\": \"bar\",\n \"encoding\": {\n \"y\": {\n \"field\": \"commits\", \"type\": \"quantitative\",\n \"axis\": { \"grid\": false }\n },\n \"x\": {\n \"field\": \"month\", \"type\": \"temporal\",\n \"axis\": { \"title\": \"\" }\n },\n \"color\": {\n \"value\": \"red\"\n }\n }\n }, {\n \"transform\": [{\n \"window\": [{\n \"op\": \"sum\",\n \"field\": \"commits\",\n \"as\": \"avg_commits\"\n }]\n }],\n \"mark\": \"text\",\n \"encoding\": {\n \"text\": { \"field\": \"avg_commits\", \"type\": \"quantitative\" },\n \"y\": { \"value\": 10 },\n \"x\": {\n \"field\": \"month\", \"type\": \"temporal\",\n \"axis\": { \"title\": \"\" }\n },\n \"color\": {\n \"value\": \"black\"\n }\n }\n }, {\n \"transform\": [],\n \"mark\": \"bar\",\n \"encoding\": {\n \"y\": {\n \"field\": \"rate\", \"type\": \"quantitative\",\n \"axis\": { \"grid\": false }\n },\n \"x\": {\n \"field\": \"month\", \"type\": \"temporal\",\n \"axis\": { \"title\": \"\" }\n },\n \"color\": {\n \"value\": \"blue\"\n }\n }\n }],\n \"resolve\": { \"scale\": { \"y\": \"independent\" } }\n }, 'config', {\n \"view\": { \"stroke\": \"transparent\" },\n \"axis\": { \"domainWidth\": 1 }\n });\n\n var repo = window.AugurAPI.Repo({ gitURL: this.repo });\n var contributors = {};\n var organizations = {};\n\n var addChanges = function addChanges(dest, src) {\n if (dest && src) {\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest['additions'] = 0;\n dest['deletions'] = 0;\n }\n dest['additions'] += src['additions'] || 0;\n dest['deletions'] += src['deletions'] || 0;\n }\n };\n\n var group = function group(obj, name, change, filter) {\n if (filter(change)) {\n var year = new Date(change.author_date).getFullYear();\n var month = new Date(change.author_date).getMonth();\n obj[change[name]] = obj[change[name]] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]], change);\n obj[change[name]][year] = obj[change[name]][year] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year], change);\n obj[change[name]][year + '-' + month] = obj[change[name]][year + '-' + month] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year + '-' + month], change);\n }\n };\n\n var flattenAndSort = function flattenAndSort(obj, keyName, sortField) {\n return Object.keys(obj).map(function (key) {\n var d = obj[key];\n d[keyName] = key;\n return d;\n }).sort(function (a, b) {\n return b[sortField] - a[sortField];\n });\n };\n\n var filterDates = function filterDates(change) {\n return new Date(change.author_date).getFullYear() > _this.years[0];\n };\n\n repo.cdRepTpIntervalLocCommits().then(function (changes) {\n console.log(\"CHANGE\", changes);\n\n _this.values = changes;\n });\n\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n\n var repos = [];\n if (this.repo) {\n repos.push(window.AugurRepos[this.repo]);\n }\n\n return config;\n }\n }\n\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"tickchart \"},[_c('h3',[_vm._v(\"Contributions By Time Interval for 2018\")]),_vm._v(\" \"),_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-2da7ab99\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-2da7ab99\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'domain', 'data'],\n data: function data() {\n return {\n legendLabels: [],\n values: [],\n status: {},\n detail: this.$store.state.showDetail,\n compRepos: this.$store.state.comparedRepos,\n metricSource: null,\n timeperiod: 'all',\n forceRecomputeCounter: 0\n };\n },\n\n watch: {\n compRepos: function compRepos() {\n var allFalse = true;\n for (var key in this.status) {\n if (this.status[key]) allFalse = false;\n }if (allFalse) {\n $(this.$el).find('.spinner').addClass('loader');\n $(this.$el).find('.error').addClass('hidden');\n }\n $(this.$el).find('.hidefirst').addClass('invis');\n $(this.$el).find('.hidefirst').addClass('invisDet');\n $(this.$el).find('.spinner').addClass('loader');\n $(this.$el).find('.spacing').removeClass('hidden');\n }\n },\n beforeUpdate: function beforeUpdate() {\n this.$store.watch(function (state) {\n console.log(\"WORKED\");\n this.thisShouldTriggerRecompute();\n return;\n });\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n gitRepos: function gitRepos() {\n return this.$store.state.gitRepo;\n },\n period: function period() {\n return this.$store.state.trailingAverage;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n compare: function compare() {\n return this.$store.state.compare;\n },\n comparedRepos: function comparedRepos() {\n return this.$store.state.comparedRepos;\n },\n rawWeekly: function rawWeekly() {\n return this.$store.state.rawWeekly;\n },\n showArea: function showArea() {\n return this.$store.state.showArea;\n },\n showTooltip: function showTooltip() {\n return this.$store.state.showTooltip;\n },\n showDetail: function showDetail() {\n return this.$store.state.showDetail;\n },\n spec: function spec() {\n var _this = this;\n\n this.forceRecomputeCounter;\n\n var repos = [];\n if (this.repo) {\n if (window.AugurRepos[this.repo]) repos.push(window.AugurRepos[this.repo]);else if (this.domain) {\n var temp = window.AugurAPI.Repo({ \"gitURL\": this.gitRepo });\n if (window.AugurRepos[temp]) temp = window.AugurRepos[temp];else window.AugurRepos[temp] = temp;\n repos.push(temp);\n }\n }\n this.comparedRepos.forEach(function (repo) {\n repos.push(window.AugurRepos[repo]);\n });\n\n repos.forEach(function (repo) {\n _this.status[repo] = true;\n });\n\n var colors = [\"black\", \"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"];\n var brush = { \"filter\": { \"selection\": \"brush\" } };\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"config\": {\n \"axis\": {\n \"grid\": false\n },\n \"legend\": {\n \"offset\": -505,\n \"titleFontSize\": 0,\n \"titlePadding\": 10\n }\n },\n \"vconcat\": [{\n \"title\": {\n \"text\": this.title,\n \"offset\": 15\n },\n \"width\": 520,\n \"height\": 250,\n \"layer\": [{\n \"transform\": [brush],\n \"mark\": \"rule\",\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labels\": !this.showDetail\n }\n },\n \"color\": {\n \"field\": \"name\",\n \"type\": \"nominal\",\n \"scale\": { \"range\": colors },\n \"sort\": false\n },\n \"opacity\": {\n \"value\": 0\n }\n }\n\n }]\n }]\n };\n\n if (!this.showDetail) brush = { \"filter\": \"datum.date > 0\" };\n\n var selectionAdded = false;\n\n var getStandardLine = function getStandardLine(key, color) {\n var raw = key.substring(key.length - 7) == \"Rolling\" ? false : true;\n return {\n \"transform\": [brush],\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labels\": !_this.showDetail,\n \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"y\": {\n \"field\": key,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"color\": {\n \"value\": color\n }\n },\n \"mark\": {\n \"type\": \"line\",\n\n \"clip\": true\n }\n };\n };\n\n var getRawLine = function getRawLine(key, color) {\n var raw = key.substring(key.length - 7) == \"Rolling\" ? false : true;\n return {\n \"transform\": [brush],\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"labels\": !_this.showDetail,\n \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"y\": {\n \"field\": key,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"color\": {\n \"value\": color\n },\n \"opacity\": { \"value\": .3 }\n },\n \"mark\": {\n \"type\": \"line\",\n\n \"clip\": true\n }\n };\n };\n\n var getToolPoint = function getToolPoint(key) {\n var selection = !selectionAdded ? {\n \"tooltip\": {\n \"type\": \"single\",\n \"on\": \"mouseover\",\n \"encodings\": [\"x\"],\n \"empty\": \"none\"\n }\n } : null;\n var size = 17;\n var timeDiff = Math.abs(_this.latest.getTime() - _this.earliest.getTime());\n var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));\n size = diffDays / 150;\n if (_this.rawWeekly) size = 3;\n selectionAdded = true;\n return {\n \"transform\": [brush],\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"opacity\": {\n \"value\": 0\n },\n \"color\": {\n \"value\": \"black\"\n },\n \"size\": {\n \"value\": size\n }\n },\n \"mark\": {\n \"type\": \"rule\",\n \"clip\": true\n },\n \"selection\": selection\n };\n };\n\n var getStandardPoint = function getStandardPoint(key, color) {\n var selection = !selectionAdded ? {\n \"tooltip\": {\n \"type\": \"single\",\n \"on\": \"mouseover\",\n \"encodings\": [\"x\"],\n \"empty\": \"none\"\n }\n } : null;\n selectionAdded = true;\n var raw = key.substring(key.length - 7) == \"Rolling\" ? false : true;\n return {\n \"transform\": [brush],\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": {\n \"title\": \" \",\n \"format\": \"%b %Y\"\n }\n },\n \"y\": {\n \"field\": key,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"color\": {\n \"value\": \"black\"\n },\n \"opacity\": {\n \"condition\": {\n \"selection\": \"tooltip\",\n \"value\": 1\n },\n \"value\": 0\n }\n },\n \"mark\": {\n \"type\": \"point\"\n },\n \"selection\": selection\n };\n };\n\n var getArea = function getArea(extension) {\n return {\n \"transform\": [brush],\n \"mark\": {\n \"type\": \"area\",\n \"interpolate\": \"basis\",\n \"clip\": true\n },\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"y\": {\n \"field\": \"lower\" + extension,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"y2\": {\n \"field\": \"upper\" + extension,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"color\": {\n \"value\": \"gray\"\n },\n \"opacity\": { \"value\": 0.14 }\n }\n };\n };\n\n var rule = {\n \"transform\": [{\n \"filter\": {\n \"selection\": \"tooltip\"\n }\n }, brush],\n \"mark\": \"rule\",\n \"encoding\": {\n \"x\": {\n \"type\": \"temporal\",\n \"field\": \"date\",\n \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"color\": {\n \"value\": \"black\"\n }\n }\n };\n\n var getValueText = function getValueText(key) {\n return {\n\n \"transform\": [{\n \"filter\": {\n \"selection\": \"tooltip\"\n }\n }, brush],\n \"mark\": {\n \"type\": \"text\",\n \"align\": \"left\",\n \"dx\": 5,\n \"dy\": -5\n },\n \"encoding\": {\n \"text\": {\n \"type\": \"quantitative\",\n \"field\": key\n },\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"y\": {\n \"field\": key,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"color\": {\n \"value\": \"green\"\n }\n }\n };\n };\n\n var getDateText = function getDateText(key) {\n return {\n\n \"transform\": [{\n \"filter\": {\n \"selection\": \"tooltip\"\n }\n }, brush],\n \"mark\": {\n \"type\": \"text\",\n \"align\": \"left\",\n \"dx\": 5,\n \"dy\": -15\n },\n \"encoding\": {\n \"text\": {\n \"type\": \"temporal\",\n \"field\": \"date\"\n },\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"y\": {\n \"field\": key,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"color\": {\n \"value\": \"black\"\n }\n }\n };\n };\n\n var getDetail = function getDetail(key) {\n var color = _this.comparedTo && _this.status.compared ? '#FF3647' : 'black';\n return {\n \"width\": 520,\n \"height\": 60,\n \"mark\": \"line\",\n \"title\": {\n \"text\": \" \"\n },\n \"selection\": {\n \"brush\": { \"type\": \"interval\", \"encodings\": [\"x\"] }\n },\n \"encoding\": {\n \"x\": {\n \"field\": \"date\",\n \"type\": \"temporal\",\n \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" }\n },\n \"y\": {\n \"field\": key,\n \"type\": \"quantitative\",\n \"axis\": {\n \"title\": null\n }\n },\n \"opacity\": {\n \"value\": 0.5\n },\n \"color\": {\n \"value\": color\n }\n }\n\n };\n };\n\n if (this.showArea && repos.length < 3) {\n repos.forEach(function (repo) {\n config.vconcat[0].layer.push(getArea(repo));\n });\n } else {\n repos.forEach(function (repo) {\n for (var x = 0; x < config.vconcat[0].layer.length; x++) {\n if (config.vconcat[0].layer[x] == getArea(repo)) {\n config.vconcat[0].layer[x] = {};\n buildMetric();\n }\n }\n });\n }\n\n var buildMetric = function buildMetric() {\n var color = 0;\n repos.forEach(function (repo) {\n buildLines(\"valueRolling\" + repo, colors[color]);\n\n if (_this.rawWeekly) config.vconcat[0].layer.push(getRawLine(\"value\" + repo, colors[color]));\n\n if (_this.showDetail) config.vconcat[1] = getDetail(\"valueRolling\" + _this.repo);else if (config.vconcat[1]) config.vconcat.pop();\n color++;\n });\n };\n\n var buildLines = function buildLines(key, color) {\n config.vconcat[0].layer.push(getStandardLine(key, color));\n };\n\n var buildTooltip = function buildTooltip(key) {\n config.vconcat[0].layer.push(getToolPoint(key));\n if (repos.length < 3) {\n var col = -1;\n repos.forEach(function (repo) {\n config.vconcat[0].layer.push(getStandardPoint(key, colors[col]));\n col++;\n });\n config.vconcat[0].layer.push(getValueText(key));\n config.vconcat[0].layer.push(getDateText(key));\n\n if (repos.length > 1) {\n config.vconcat[0].layer.push(rule);\n }\n }\n };\n\n if (this.showTooltip) {\n repos.forEach(function (repo) {\n var key = _this.rawWeekly ? \"value\" + repo : \"valueRolling\" + repo;\n buildTooltip(key);\n });\n } else {}\n\n buildMetric();\n\n if (this.showDetail) {\n var today = new Date();\n var startyear = this.timeperiod && this.timeperiod != 'all' ? function () {\n var d = new Date();\n switch (_this.timeperiod) {\n case \"month\":\n d = new Date(d.setDate(d.getDate() - 30));\n return d.getFullYear();\n case \"year\":\n d = new Date(d.setDate(d.getDate() - 365));\n return d.getFullYear();\n }\n }() : this.earliest.getFullYear();\n var startmonth = this.timeperiod && this.timeperiod != 'all' ? function () {\n var d = new Date();\n switch (_this.timeperiod) {\n case \"month\":\n d = new Date(d.setDate(d.getDate() - 30));\n return d.getMonth();\n case \"year\":\n d = new Date(d.setDate(d.getDate() - 365));\n return d.getMonth();\n }\n }() : this.earliest.getMonth();\n var startdate = this.timeperiod && this.timeperiod != 'all' ? function () {\n var d = new Date();\n switch (_this.timeperiod) {\n case \"month\":\n d = new Date(d.setDate(d.getDate() - 30));\n return d.getDate();\n case \"year\":\n d = new Date(d.setDate(d.getDate() - 365));\n return d.getDate();\n }\n }() : this.earliest.getDate();\n\n config.vconcat[1].encoding.x[\"scale\"] = {\n \"domain\": [{ \"year\": startyear, \"month\": startmonth, \"date\": startdate }, { \"year\": this.latest.getFullYear(), \"month\": this.latest.getMonth(), \"date\": this.latest.getDate() }]\n };\n } else {\n for (var i = 0; i < config.vconcat[0].layer.length; i++) {\n config.vconcat[0].layer[i].encoding.x[\"scale\"] = {\n \"domain\": [{ \"year\": this.earliest.getFullYear(), \"month\": this.earliest.getMonth(), \"date\": this.earliest.getDate() }, { \"year\": this.latest.getFullYear(), \"month\": this.latest.getMonth(), \"date\": this.latest.getDate() }]\n };\n }\n }\n\n if (!this.status.base && !this.comparedTo || !this.status.compared && !this.status.base) {\n if (!this.showDetail) {\n window.$(this.$refs.holder).find('.hidefirst').removeClass('invisDet');\n window.$(this.$refs.holder).find('.hidefirst').addClass('invis');\n } else {\n window.$(this.$refs.holder).find('.hidefirst').removeClass('invis');\n window.$(this.$refs.holder).find('.hidefirst').addClass('invisDet');\n }\n }\n\n var endpoints = [];\n var fields = {};\n this.source.split(',').forEach(function (endpointAndFields) {\n var split = endpointAndFields.split(':');\n endpoints.push(split[0]);\n if (split[1]) {\n fields[split[0]] = split[1].split('+');\n }\n });\n\n var compare = this.compare;\n var processData = function processData(data) {\n _this.__download_data = data;\n _this.__download_file = _this.title.replace(/ /g, '-').replace('/', 'by').toLowerCase();\n _this.$refs.downloadJSON.href = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(_this.__download_data));\n _this.$refs.downloadJSON.setAttribute('download', _this.__download_file + '.json');\n\n var defaultProcess = function defaultProcess(obj, key, field, count) {\n var d = null;\n if (typeof field == \"string\") field = [field];\n\n d = _AugurStats2.default.convertKey(obj[key], field);\n\n d = _AugurStats2.default.convertDates(d, _this.earliest, _this.latest, 'date');\n\n return d;\n };\n\n var normalized = [];\n var aggregates = [];\n var buildLines = function buildLines(obj, onCreateData, repo) {\n if (!obj) {\n return;\n }\n if (!onCreateData) {\n onCreateData = function onCreateData(obj, key, field, count) {\n normalized.push(d);\n };\n }\n var count = 0;\n for (var key in obj) {\n\n if (obj.hasOwnProperty(key)) {\n if (fields[key]) {\n fields[key].forEach(function (field) {\n onCreateData(obj, key, field, count);\n count++;\n });\n } else {\n if (Array.isArray(obj[key]) && obj[key].length > 0) {\n var field = Object.keys(obj[key][0]).splice(1);\n onCreateData(obj, key, field, count);\n count++;\n } else {\n _this.status[repo] = false;\n _this.renderError();\n }\n }\n }\n }\n };\n var legend = [];\n var values = [];\n var colors = [];\n var baselineVals = null;\n var baseDate = null;\n repos.forEach(function (repo) {\n buildLines(data[repo], function (obj, key, field, count) {\n var d = defaultProcess(obj, key, field, count);\n\n var rolling = null;\n if (repo == _this.repo) baseDate = d[0].date;else d = _AugurStats2.default.alignDates(d, baseDate, _this.period);\n if (_this.compare == 'zscore') {\n rolling = _AugurStats2.default.rollingAverage(_AugurStats2.default.zscores(d, 'value'), 'value', _this.period, repo);\n } else if (_this.compare == 'baseline') {\n if (repo.githubURL == _this.repo) {\n baselineVals = _AugurStats2.default.rollingAverage(d, 'value', _this.period, repo);\n }\n rolling = _AugurStats2.default.rollingAverage(d, 'value', _this.period, repo);\n if (baselineVals) {\n\n for (var i = 0; i < baselineVals.length; i++) {\n if (rolling[i] && baselineVals[i]) rolling[i].valueRolling -= baselineVals[i].valueRolling;\n }\n }\n } else {\n rolling = _AugurStats2.default.rollingAverage(d, 'value', _this.period, repo);\n }\n\n normalized.push(_AugurStats2.default.standardDeviationLines(rolling, 'valueRolling', repo));\n aggregates.push(_AugurStats2.default.convertKey(d, 'value', 'value' + repo));\n legend.push(repo + \" \" + field);\n colors.push(window.AUGUR_CHART_STYLE.brightColors[count]);\n }, repo);\n });\n\n if (normalized.length == 0) {} else {\n values = [];\n for (var i = 0; i < legend.length; i++) {\n normalized[i].forEach(function (d) {\n d.name = legend[i];\n d.color = colors[i];\n values.push(d);\n });\n if (_this.rawWeekly) {\n aggregates[i].forEach(function (d) {\n d.name = legend[i];\n d.color = colors[i];\n values.push(d);\n });\n }\n }\n repos.forEach(function (repo) {\n if (!_this.status[repo]) {\n var _temp = JSON.parse(JSON.stringify(values));\n _temp = _temp.map(function (datum) {\n datum.name = repo + \": data n/a\";\n\n\n return datum;\n });\n values.push.apply(values, _temp);\n }\n });\n\n _this.legendLabels = legend;\n _this.values = values;\n\n var allFalse = true;\n for (var key in _this.status) {\n if (_this.status[key]) allFalse = false;\n }if (!allFalse) $(_this.$el).find('.error').addClass('hidden');\n\n $(_this.$el).find('.hidefirst').removeClass('invis');\n $(_this.$el).find('.hidefirst').removeClass('invisDet');\n $(_this.$el).find('.spinner').removeClass('loader');\n $(_this.$el).find('.spacing').addClass('hidden');\n $(_this.$el).find('.hidefirst').removeClass('invisDet');\n\n _this.renderChart();\n }\n };\n\n if (this.data) {\n processData(this.data);\n } else {\n\n window.AugurAPI.batchMapped(repos, endpoints).then(function (data) {\n processData(data);\n }, function () {});\n }\n\n return config;\n }\n },\n methods: {\n thisShouldTriggerRecompute: function thisShouldTriggerRecompute() {\n this.forceRecomputeCounter++;\n },\n downloadSVG: function downloadSVG(e) {\n var svgsaver = new window.SvgSaver();\n var svg = window.$(this.$refs.holder).find('svg')[0];\n svgsaver.asSvg(svg, this.__download_file + '.svg');\n },\n downloadPNG: function downloadPNG(e) {\n var svgsaver = new window.SvgSaver();\n var svg = window.$(this.$refs.holder).find('svg')[0];\n svgsaver.asPng(svg, this.__download_file + '.png');\n },\n renderChart: function renderChart() {\n this.$refs.chart.className = 'linechart intro';\n window.$(this.$refs.holder).find('.hideme').removeClass('invis');\n window.$(this.$refs.holder).find('.showme').removeClass('invis');\n window.$(this.$refs.holder).find('.hideme').removeClass('invisDet');\n window.$(this.$refs.holder).find('.showme').removeClass('invisDet');\n window.$(this.$refs.holder).find('.deleteme').remove();\n this.$refs.chartholder.innerHTML = '';\n this.$refs.chartholder.appendChild(this.mgConfig.target);\n },\n renderError: function renderError() {\n $(this.$el).find('.spinner').removeClass('loader');\n $(this.$el).find('.error').removeClass('hidden');\n }\n }, created: function created() {\n var _this2 = this;\n\n var query_string = \"chart_mapping=\" + this.source;\n window.AugurAPI.getMetricsStatus(query_string).then(function (data) {\n _this2.metricSource = data[0].data_source;\n });\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"spacing\"}),_vm._v(\" \"),_c('div',{staticClass:\"error hidden\"},[_c('br'),_vm._v(\"Data is missing or unavailable for metric: \"),_c('p',{staticStyle:{\"color\":\"black !important\"}},[_vm._v(_vm._s(_vm.title))])]),_vm._v(\" \"),_c('div',{staticClass:\"spinner loader\"}),_vm._v(\" \"),_c('div',{staticClass:\"hidefirst linechart\",class:{ invis: !_vm.detail, invisDet: _vm.detail }},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"row below-chart\"},[_c('div',{staticClass:\"col col-1\"}),_vm._v(\" \"),_c('div',{staticClass:\"col col-3\",staticStyle:{\"padding-left\":\"10px\",\"position\":\"relative\",\"top\":\"-8px !important\"}},[_c('span',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(\"Data source: \"+_vm._s(_vm.metricSource))])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-2\",staticStyle:{\"width\":\"154px !important\",\"height\":\"38px !important\",\"position\":\"relative\",\"top\":\"-12px !important\"}},[_c('cite',{staticClass:\"metric\"},[_c('a',{staticStyle:{\"width\":\"100px !important\",\"height\":\"38px !important\",\"position\":\"absolute\"},attrs:{\"href\":_vm.citeUrl,\"target\":\"_blank\"}},[_c('img',{staticStyle:{\"width\":\"100px\",\"position\":\"relative\"},attrs:{\"src\":\"https://i.ibb.co/VmxHk3q/Chaoss-Definition-Logo.png\",\"alt\":\"Chaoss-Definition-Logo\",\"border\":\"0\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"col col-4\",staticStyle:{\"position\":\"relative\",\"top\":\"-8px !important\"}},[_c('button',{staticClass:\"button download graph-download\",on:{\"click\":_vm.downloadSVG}},[_vm._v(\"⬇ SVG\")]),_c('button',{staticClass:\"button graph-download download\",on:{\"click\":_vm.downloadPNG}},[_vm._v(\"⬇ PNG\")]),_c('a',{ref:\"downloadJSON\",staticClass:\"button graph-download download\",attrs:{\"role\":\"button\"}},[_vm._v(\"⬇ JSON\")])])])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-869af3b0\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-869af3b0\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _AugurStats = require('../../AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nvar _d = require('d3');\n\nvar d3 = _interopRequireWildcard(_d);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n computed: {\n chart: function chart() {\n MG.data_graphic({\n title: \"Missing Data\",\n error: 'Data unavaliable',\n chart_type: 'missing-data',\n missing_text: 'Data could not be loaded',\n target: this.$refs.chart,\n full_width: true,\n height: 200\n });\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"chart\",staticClass:\"linechart\"})}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-ebdae2a4\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-ebdae2a4\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data', 'field'],\n data: function data() {\n return {\n values: []\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n gitRepo: function gitRepo() {\n return this.$store.state.gitRepo;\n },\n period: function period() {\n return this.$store.state.trailingAverage;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n compare: function compare() {\n return this.$store.state.compare;\n },\n comparedRepos: function comparedRepos() {\n return this.$store.state.comparedRepos;\n },\n rawWeekly: function rawWeekly() {\n return this.$store.state.rawWeekly;\n },\n showArea: function showArea() {\n return this.$store.state.showArea;\n },\n showTooltip: function showTooltip() {\n return this.$store.state.showTooltip;\n },\n showDetail: function showDetail() {\n return this.$store.state.showDetail;\n },\n spec: function spec() {\n var _this = this;\n\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v3.json\",\n \"padding\": { 'left': 25, 'top': 15, 'right': 80, 'bottom': 50 },\n \"config\": {\n \"bar\": {\n \"discreteBandSize\": 10\n },\n \"zero\": false,\n \"scale\": {\n \"nice\": false\n\n },\n \"axis\": {\n \"tickRound\": false\n },\n \"title\": {\n \"fontSize\": 1\n }\n\n },\n \"title\": {\n \"text\": this.title,\n\n \"offset\": 10\n\n },\n \"width\": 420,\n \"height\": 250,\n \"layer\": [{\n \"transform\": [{\n \"calculate\": \"datum.index + 0.125\", \"as\": \"loc_location\"\n }],\n \"mark\": {\n \"type\": \"bar\",\n \"clip\": true\n },\n \"encoding\": {\n \"y\": {\n \"field\": \"net\", \"type\": \"quantitative\",\n \"axis\": { \"title\": \"net loc\", \"grid\": false },\n \"scale\": {\n \"nice\": false\n }\n },\n \"y2\": {\n \"field\": \"avg_loc\", \"type\": \"quantitative\", \"axis\": { \"title\": \"\", \"grid\": false },\n \"scale\": {\n \"nice\": false\n }\n },\n \"x\": {\n \"field\": \"loc_location\", \"type\": 'quantitative',\n\n \"axis\": { \"title\": \"\", \"labels\": false }\n },\n \"color\": {\n \"value\": \"#FF3647\"\n }\n }\n }, {\n \"transform\": [{\n \"calculate\": \"datum.index - 0.125\", \"as\": \"commit_location\"\n }],\n \"mark\": {\n \"type\": \"bar\",\n \"clip\": true\n },\n \"encoding\": {\n \"y\": {\n \"field\": \"avg_commits\",\n \"axis\": { \"title\": \"commits\", \"grid\": false },\n \"scale\": {\n \"nice\": false\n }\n },\n \"y2\": {\n \"field\": \"patches\", \"type\": \"quantitative\",\n \"axis\": { \"title\": \"commits\", \"grid\": false },\n \"scale\": {\n \"nice\": false\n }\n },\n \"x\": {\n \"field\": \"commit_location\", \"type\": 'quantitative',\n \"axis\": { \"title\": \"\", \"labels\": false }\n },\n \"color\": {\n \"value\": \"#4736FF\",\n\n \"legend\": null\n }\n }\n }, {\n \"transform\": [{\n \"calculate\": \"datum.index\", \"as\": \"text_location\"\n }, {\n \"calculate\": \"-10\", \"as\": \"y\"\n }],\n \"mark\": {\n \"type\": \"text\",\n \"angle\": 330\n },\n \"encoding\": {\n \"text\": {\n \"field\": \"name\", \"type\": \"nominal\"\n },\n \"y\": {\n \"value\": 280,\n\n \"axis\": {\n \"title\": \"\",\n \"grid\": false\n },\n \"scale\": {\n \"nice\": false\n }\n\n },\n \"x\": {\n \"field\": \"text_location\", \"type\": 'quantitative',\n \"axis\": { \"title\": \"\", \"labels\": false }\n }\n\n }\n }, {\n \"transform\": [],\n \"mark\": {\n \"type\": \"rule\"\n },\n \"encoding\": {\n\n \"y\": {\n \"aggregate\": \"mean\",\n \"field\": \"patches\",\n \"axis\": {\n \"title\": \"\", \"grid\": false\n },\n \"scale\": {\n \"nice\": false\n }\n }\n\n }\n }, {\n \"transform\": [],\n \"mark\": {\n \"type\": \"rule\"\n },\n \"encoding\": {\n\n \"y\": {\n \"aggregate\": \"mean\",\n \"field\": \"net\",\n \"axis\": null,\n \"scale\": {\n \"nice\": false\n }\n }\n\n }\n }, {\n \"transform\": [],\n \"mark\": {\n \"type\": \"bar\",\n \"clip\": false\n },\n \"encoding\": {\n\n \"y\": {\n \"aggregate\": \"mean\",\n \"field\": \"net_lines_minus_whitespace\",\n \"axis\": null,\n \"scale\": {\n \"nice\": false\n }\n\n },\n \"opacity\": { \"value\": 0 },\n \"color\": {\n \"field\": \"key\",\n \"type\": \"ordinal\",\n \"scale\": { \"range\": [\"#4736FF\", \"#FF3647\"] },\n \"legend\": { \"offset\": -16 }\n }\n\n }\n }],\n \"resolve\": { \"scale\": { \"y\": \"independent\", \"color\": \"independent\" } }\n };\n\n var repos = [];\n if (this.gitRepo) {\n repos.push(window.AugurAPI.Repo({ gitURL: this.gitRepo }));\n }\n var endpoints = [];\n var fields = {};\n this.source.split(',').forEach(function (endpointAndFields) {\n var split = endpointAndFields.split(':');\n endpoints.push(split[0]);\n if (split[1]) {\n fields[split[0]] = split[1].split('+');\n }\n });\n if (this.data) {\n processGitData(this.data);\n } else {\n var repo = window.AugurAPI.Repo({ gitURL: this.gitRepo });\n repo[this.source]().then(function (data) {\n console.log(\"batch data\", data);\n processData(data);\n }, function () {});\n }\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n var processGitData = function processGitData(data) {\n var repo = window.AugurAPI.Repo({ gitURL: _this.repo });\n var dat = [];\n repo.changesByAuthor().then(function (changes) {\n dat.push(changes);\n });\n };\n var defaultProcess = function defaultProcess(obj, key) {\n var d = null;\n if (typeof field == \"string\") field = [field];\n d = _AugurStats2.default.convertKey(obj[key], key);\n return d;\n };\n var processData = function processData(data) {\n console.log(repos, data, \"CHECK\");\n var sort = _this.field == 'commit' ? \"patches\" : \"net\";\n data.sort(function (a, b) {\n return b[sort] - a[sort];\n });\n var sum_commit = 0;\n var sum_loc = 0;\n var max_loc = 0;\n var max_commit = 0;\n var min_loc = 0;\n var min_commit = 0;\n for (var i = 0; i < data.length; i++) {\n sum_commit += data[i]['patches'];\n sum_loc += data[i]['net'];\n data[i]['index'] = i;\n if (data[i]['net'] > max_loc) max_loc = data[i]['net'];\n if (data[i]['patches'] > max_commit) max_commit = data[i]['patches'];\n if (data[i]['net'] < min_loc) min_loc = data[i]['net'];\n if (data[i]['patches'] < min_commit) min_commit = data[i]['patches'];\n if (i == 0) data[i].key = \"commits\";else data[i].key = \"net lines changed\";\n }\n\n data.forEach(function (el) {\n el.avg_commits = sum_commit / data.length;\n el.avg_loc = sum_loc / data.length;\n });\n\n var dif_loc = Math.abs(max_loc - sum_loc / data.length) > Math.abs(min_loc - sum_loc / data.length) ? Math.abs(max_loc - sum_loc / data.length) : Math.abs(min_loc - sum_loc / data.length);\n var dif_commit = Math.abs(max_commit - sum_commit / data.length) > Math.abs(min_commit - sum_commit / data.length) ? Math.abs(max_commit - sum_commit / data.length) : Math.abs(min_commit - sum_commit / data.length);\n config.layer[0].encoding.y.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n config.layer[0].encoding.y2.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n config.layer[1].encoding.y.scale.domain = [sum_commit / data.length - dif_commit, sum_commit / data.length + dif_commit];\n config.layer[1].encoding.y2.scale.domain = [sum_commit / data.length - dif_commit, sum_commit / data.length + dif_commit];\n config.layer[2].encoding.y.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n config.layer[3].encoding.y.scale.domain = [sum_commit / data.length - dif_commit, sum_commit / data.length + dif_commit];\n config.layer[4].encoding.y.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n\n repos.forEach(function (repo) {\n _this.values = data;\n });\n };\n return config;\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"groupedbarchart\"},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")]),_vm._v(\" \"),_vm._m(0)],1)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 50px 0 50px\",\"font-size\":\"12px\"}},[_c('p',[_vm._v(\"*The black \\\"baseline\\\" represents the averages of both LoC and commits across all repositories within the selected repository's overlying Facade organization during the calendar year shown. Wherever this bar stretches to shows how far above or below the raw value of the statistic is from the regular average.\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-45bc243c\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-45bc243c\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data', 'type'],\n data: function data() {\n var years = [];\n for (var i = 9; i >= 0; i--) {\n years.push(new Date().getFullYear() - i);\n }\n var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthDecimals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return {\n values: [],\n contributors: [],\n organizations: [],\n view: 'year',\n monthNames: monthNames,\n monthDecimals: monthDecimals,\n years: years,\n setYear: 0,\n tick: 0,\n type: 1\n };\n },\n created: function created() {\n this.type = 1;\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.gitRepo;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n spec: function spec() {\n var _this = this;\n\n var field = null;\n\n if (this.type == 0) {\n field = \"netratio\";\n } else if (this.type == 1) {\n field = \"totalratio\";\n } else if (this.type == 2) {\n field = \"addedratio\";\n }\n\n var colors = [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"];\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"width\": 700,\n \"height\": 310,\n \"config\": {\n \"tick\": {\n \"thickness\": 8,\n \"bandSize\": 23\n },\n \"axis\": {\n \"grid\": false\n }\n },\n \"title\": {\n \"text\": this.title,\n \"offset\": 15\n\n },\n \"layer\": [{\n \"transform\": [{\n \"calculate\": \"(datum.additions > datum.deletions) ? 'more deletions' : 'more additions'\",\n \"as\": \"Majority type of changes\"\n }, {\n \"calculate\": \"(datum.additions - datum.deletions)\",\n \"as\": \"Net lines added\"\n }, {\n \"calculate\": \"((datum.additions - datum.deletions) / datum.commits)\",\n \"as\": \"netratio\"\n }, {\n \"calculate\": \"(datum.additions / datum.commits)\",\n \"as\": \"addedratio\"\n }, {\n \"calculate\": \"(datum.lines / datum.commits)\",\n \"as\": \"totalratio\"\n }],\n \"mark\": {\n \"type\": \"bar\",\n \"tooltip\": { \"content\": \"data\" }\n },\n \"encoding\": {\n \"x\": { \"field\": field, \"type\": \"quantitative\" },\n \"y\": {\n \"field\": \"author_email\",\n \"sort\": {\n \"field\": field,\n \"op\": \"mean\",\n \"order\": \"descending\"\n },\n \"type\": \"nominal\",\n \"axis\": { \"title\": null }\n },\n \"color\": {\n \"field\": \"author_email\",\n \"type\": \"nominal\",\n \"scale\": { \"scheme\": \"category10\" },\n \"legend\": null\n }\n }\n\n }]\n\n };\n\n var repo = window.AugurAPI.Repo({ gitURL: this.repo });\n var contributors = {};\n var organizations = {};\n\n var addChanges = function addChanges(dest, src) {\n if (dest && src) {\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest['additions'] = 0;\n dest['deletions'] = 0;\n }\n dest['additions'] += src['additions'] || 0;\n dest['deletions'] += src['deletions'] || 0;\n }\n };\n\n var group = function group(obj, name, change, filter) {\n if (filter(change)) {\n var year = new Date(change.author_date).getFullYear();\n var month = new Date(change.author_date).getMonth();\n obj[change[name]] = obj[change[name]] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]], change);\n obj[change[name]][year] = obj[change[name]][year] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year], change);\n obj[change[name]][year + '-' + month] = obj[change[name]][year + '-' + month] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year + '-' + month], change);\n }\n };\n\n var flattenAndSort = function flattenAndSort(obj, keyName, sortField) {\n return Object.keys(obj).map(function (key) {\n var d = obj[key];\n d[keyName] = key;\n return d;\n }).sort(function (a, b) {\n return b[sortField] - a[sortField];\n });\n };\n\n var filterDates = function filterDates(change) {\n return new Date(change.author_date).getFullYear() > _this.years[0];\n };\n\n var authors = [];\n var track = {};\n repo.changesByAuthor().then(function (changes) {\n changes.forEach(function (change) {\n track[change.author_email] = track[change.author_email] ? track[change.author_email] : { 'commits': 0, 'lines': 0, 'additions': 0, 'deletions': 0 };\n track[change.author_email]['commits'] = track[change.author_email]['commits'] ? track[change.author_email]['commits'] + 1 : 1;\n\n track[change.author_email]['lines'] = track[change.author_email]['lines'] ? track[change.author_email]['lines'] + change.additions + change.deletions : change.additions + change.deletions;\n track[change.author_email]['additions'] = track[change.author_email]['additions'] ? track[change.author_email]['additions'] + change.additions : change.additions;\n track[change.author_email]['deletions'] = track[change.author_email]['deletions'] ? track[change.author_email]['deletions'] + change.deletions : change.deletions;\n });\n\n changes.forEach(function (change) {\n if (isFinite(change.additions) && isFinite(change.deletions)) {\n group(contributors, 'author_email', change, filterDates);\n if (change.author_affiliation !== 'Unknown') {\n group(organizations, 'affiliation', change, filterDates);\n }\n }\n if (!authors.includes(change[\"author_email\"])) {\n authors.push(change[\"author_email\"]);\n change[\"flag\"] = (track[change.author_email] / track[\"total\"] * 100).toFixed(4);\n }\n });\n\n _this.contributors = flattenAndSort(contributors, 'author_email', 'additions');\n var careabout = [];\n _this.contributors.slice(0, 10).forEach(function (obj) {\n careabout.push(obj[\"author_email\"]);\n });\n\n var findObjectByKey = function findObjectByKey(array, key, value) {\n var ary = [];\n for (var i = 0; i < array.length; i++) {\n if (array[i][key] == value) {\n ary.push(array[i]);\n }\n }\n return ary;\n };\n\n var ary = [];\n\n for (var key in track) {\n if (careabout.includes(key)) ary.push({ \"author_email\": key, \"commits\": track[key]['commits'], \"lines\": track[key]['lines'], \"additions\": track[key]['additions'], \"deletions\": track[key]['deletions'] });\n }\n\n _this.values = ary;\n console.log(\"TRACK\", ary, careabout);\n });\n\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n\n var repos = [];\n if (this.repo) {\n repos.push(window.AugurRepos[this.repo]);\n }\n\n var processData = function processData(data) {};\n\n return config;\n }\n }\n\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"normalbar\"},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-item form-checkboxes tickradios\",staticStyle:{\"position\":\"relative\",\"top\":\"-60px !important\"}},[_c('div',{staticClass:\"inputGroup \"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],attrs:{\"id\":\"totalradio\",\"name\":\"lines\",\"value\":\"1\",\"type\":\"radio\",\"checked\":\"\"},domProps:{\"checked\":_vm._q(_vm.type,\"1\")},on:{\"change\":function($event){_vm.type=\"1\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"totalradio\"}},[_vm._v(\"Total\")])]),_vm._v(\" \"),_c('div',{staticClass:\"inputGroup \"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],attrs:{\"id\":\"netradio\",\"name\":\"lines\",\"value\":\"0\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.type,\"0\")},on:{\"change\":function($event){_vm.type=\"0\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"netradio\"}},[_vm._v(\"Net\")])]),_vm._v(\" \"),_c('div',{staticClass:\"inputGroup \"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.type),expression:\"type\"}],attrs:{\"id\":\"addedradio\",\"name\":\"lines\",\"value\":\"2\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.type,\"2\")},on:{\"change\":function($event){_vm.type=\"2\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"addedradio\"}},[_vm._v(\"Added\")])])])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-8d346828\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-8d346828\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title'],\n data: function data() {\n var years = [];\n for (var i = 9; i >= 0; i--) {\n years.push(new Date().getFullYear() - i);\n }\n var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthDecimals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return {\n contributors: [],\n organizations: [],\n view: 'year',\n monthNames: monthNames,\n monthDecimals: monthDecimals,\n years: years,\n setYear: 0\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.gitRepo;\n },\n chart: function chart() {\n var _this = this;\n\n var repo = window.AugurAPI.Repo({ gitURL: this.repo });\n var contributors = {};\n var organizations = {};\n\n var addChanges = function addChanges(dest, src) {\n if (dest && src) {\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest['additions'] = 0;\n dest['deletions'] = 0;\n }\n dest['additions'] += src['additions'] || 0;\n dest['deletions'] += src['deletions'] || 0;\n }\n };\n\n var group = function group(obj, name, change, filter) {\n if (filter(change)) {\n var year = new Date(change.author_date).getFullYear();\n var month = new Date(change.author_date).getMonth();\n obj[change[name]] = obj[change[name]] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]], change);\n obj[change[name]][year] = obj[change[name]][year] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year], change);\n obj[change[name]][year + '-' + month] = obj[change[name]][year + '-' + month] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year + '-' + month], change);\n }\n };\n\n var flattenAndSort = function flattenAndSort(obj, keyName, sortField) {\n return Object.keys(obj).map(function (key) {\n var d = obj[key];\n d[keyName] = key;\n return d;\n }).sort(function (a, b) {\n return b[sortField] - a[sortField];\n });\n };\n\n var filterDates = function filterDates(change) {\n return new Date(change.author_date).getFullYear() > _this.years[0];\n };\n\n repo.changesByAuthor().then(function (changes) {\n changes.forEach(function (change) {\n if (isFinite(change.additions) && isFinite(change.deletions)) {\n group(contributors, 'author_email', change, filterDates);\n if (change.author_affiliation !== 'Unknown') {\n group(organizations, 'affiliation', change, filterDates);\n }\n }\n });\n\n _this.contributors = flattenAndSort(contributors, 'author_email', 'additions');\n _this.organizations = flattenAndSort(organizations, 'name', 'additions');\n });\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('h3',[_vm._v(\"Lines of code added by the top 10 authors\")]),_vm._v(\" \"),_c('table',{staticClass:\"lines-of-code-table\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Author\")]),_vm._v(\" \"),_vm._l((_vm.years),function(year){return (!_vm.setYear)?_c('th',{staticClass:\"clickable-header\",on:{\"click\":function($event){_vm.setYear = year}}},[_vm._v(_vm._s(year))]):_vm._e()}),_vm._v(\" \"),_vm._l((_vm.monthNames),function(month){return (_vm.setYear)?_c('th',[_vm._v(_vm._s(month))]):_vm._e()}),_vm._v(\" \"),(!_vm.setYear)?_c('th',[_vm._v(\"Total all time\")]):_vm._e(),_vm._v(\" \"),(_vm.setYear)?_c('th',{on:{\"click\":function($event){_vm.setYear = 0}}},[_vm._v(_vm._s(_vm.setYear))]):_vm._e()],2)]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.contributors.slice(0, 10)),function(contributor){return _c('tr',[_c('td',[_vm._v(_vm._s(contributor.author_email))]),_vm._v(\" \"),_vm._l((_vm.years),function(year){return (!_vm.setYear)?_c('td',[_vm._v(_vm._s((contributor[year]) ? contributor[year].additions || 0 : 0))]):_vm._e()}),_vm._v(\" \"),_vm._l((_vm.monthDecimals),function(month){return (_vm.setYear)?_c('td',[_vm._v(_vm._s((contributor[_vm.setYear + '-' + month]) ? contributor[_vm.setYear + '-' + month].additions || 0 : 0))]):_vm._e()}),_vm._v(\" \"),(!_vm.setYear)?_c('td',[_vm._v(_vm._s(contributor.additions))]):_vm._e(),_vm._v(\" \"),(_vm.setYear)?_c('td',[_vm._v(_vm._s((contributor[_vm.setYear]) ? contributor[_vm.setYear].additions || 0 : 0))]):_vm._e()],2)}))]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('h3',[_vm._v(\"Lines of code added by the top 5 organizations\")]),_vm._v(\" \"),_c('table',{staticClass:\"lines-of-code-table\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Author\")]),_vm._v(\" \"),_vm._l((_vm.years),function(year){return (!_vm.setYear)?_c('th',{staticClass:\"clickable-header\",on:{\"click\":function($event){_vm.setYear = year}}},[_vm._v(_vm._s(year))]):_vm._e()}),_vm._v(\" \"),_vm._l((_vm.monthNames),function(month){return (_vm.setYear)?_c('th',[_vm._v(_vm._s(month))]):_vm._e()}),_vm._v(\" \"),(!_vm.setYear)?_c('th',[_vm._v(\"Total all time\")]):_vm._e(),_vm._v(\" \"),(_vm.setYear)?_c('th',{staticClass:\"clickable-header\",on:{\"click\":function($event){_vm.setYear = _vm.year}}},[_vm._v(_vm._s(_vm.setYear))]):_vm._e()],2)]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.organizations.slice(0, 10)),function(organization){return _c('tr',[_c('td',[_vm._v(_vm._s(organization.name))]),_vm._v(\" \"),_vm._l((_vm.years),function(year){return (!_vm.setYear)?_c('td',[_vm._v(_vm._s((organization[year]) ? organization[year].additions || 0 : 0))]):_vm._e()}),_vm._v(\" \"),_vm._l((_vm.monthDecimals),function(month){return (_vm.setYear)?_c('td',[_vm._v(_vm._s((organization[_vm.setYear + '-' + month]) ? organization[_vm.setYear + '-' + month].additions || 0 : 0))]):_vm._e()}),_vm._v(\" \"),(!_vm.setYear)?_c('td',[_vm._v(_vm._s(organization.additions))]):_vm._e(),_vm._v(\" \"),(_vm.setYear)?_c('td',[_vm._v(_vm._s((organization[_vm.setYear]) ? organization[_vm.setYear].additions || 0 : 0))]):_vm._e()],2)}))]),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-2b1e04b8\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-2b1e04b8\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data'],\n data: function data() {\n var years = [];\n for (var i = 9; i >= 0; i--) {\n years.push(new Date().getFullYear() - i);\n }\n var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthDecimals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return {\n values: [],\n contributors: [],\n organizations: [],\n view: 'year',\n monthNames: monthNames,\n monthDecimals: monthDecimals,\n years: years,\n setYear: 0,\n group: 1\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.gitRepo;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n spec: function spec() {\n var _this = this;\n\n var type = null,\n bin = null,\n size = null,\n timeUnit = null,\n format = null;\n\n if (this.group == 0) {\n timeUnit = 'year';\n format = '%Y';\n type = \"bar\";\n bin = false;\n size = 30;\n }\n if (this.group == 1) {\n timeUnit = 'yearmonth';\n format = '%y %b';\n type = \"bar\";\n bin = false;\n size = 13;\n }\n if (this.group == 2) {\n timeUnit = 'yearmonth';\n format = '%y %b';\n type = \"bar\";\n bin = false;\n size = 13;\n type = \"area\";\n }\n\n var colors = [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"];\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"width\": 800,\n \"height\": 380,\n \"title\": {\n \"text\": this.title,\n \"offset\": 15\n },\n \"config\": {\n \"axis\": {\n \"grid\": false\n },\n \"legend\": {\n \"offset\": -20,\n \"orient\": \"right\",\n \"titlePadding\": 10,\n \"padding\": 40,\n \"labelFontSize\": 14,\n \"titleFontSize\": 14,\n \"labelLimit\": 260\n },\n \"scale\": { \"minSize\": 100, \"maxSize\": 500 },\n \"bar\": {\n \"continuousBandSize\": size,\n \"binSpacing\": 0\n }\n },\n \"layer\": [{\n \"transform\": [{\n \"calculate\": \"(datum.additions > datum.deletions) ? 'more deletions' : 'more additions'\",\n \"as\": \"Majority type of changes\"\n }, {\n \"calculate\": \"(datum.additions - datum.deletions)\",\n \"as\": \"Net lines added\"\n }, {\n \"calculate\": \"(datum.additions + datum.deletions)\",\n \"as\": \"Total lines changed\"\n }, {\n \"calculate\": \"(datum.count * 100)\",\n \"as\": \"percent\"\n }],\n \"mark\": {\n \"type\": type,\n \"tooltip\": { \"content\": \"data\" },\n\n \"cornerRadius\": 45\n },\n \"encoding\": {\n \"x\": {\n \"field\": \"author_date\",\n \"type\": \"temporal\",\n\n \"timeUnit\": timeUnit,\n\n \"axis\": { \"domain\": false, \"format\": format }\n },\n \"y\": {\n \"field\": \"count\",\n \"type\": \"quantitative\",\n\n \"aggregate\": \"sum\",\n \"stack\": \"center\",\n \"axis\": null\n },\n \"color\": {\n \"field\": \"author_email\",\n \"type\": \"nominal\",\n \"scale\": { \"scheme\": \"category10\" }\n }\n }\n\n }]\n\n };\n\n var repo = window.AugurAPI.Repo({ gitURL: this.repo });\n var contributors = {};\n var organizations = {};\n\n var addChanges = function addChanges(dest, src) {\n if (dest && src) {\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest['additions'] = 0;\n dest['deletions'] = 0;\n }\n dest['additions'] += src['additions'] || 0;\n dest['deletions'] += src['deletions'] || 0;\n }\n };\n\n var group = function group(obj, name, change, filter) {\n if (filter(change)) {\n var year = new Date(change.author_date).getFullYear();\n var month = new Date(change.author_date).getMonth();\n obj[change[name]] = obj[change[name]] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]], change);\n obj[change[name]][year] = obj[change[name]][year] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year], change);\n obj[change[name]][year + '-' + month] = obj[change[name]][year + '-' + month] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year + '-' + month], change);\n }\n };\n\n var flattenAndSort = function flattenAndSort(obj, keyName, sortField) {\n return Object.keys(obj).map(function (key) {\n var d = obj[key];\n d[keyName] = key;\n return d;\n }).sort(function (a, b) {\n return b[sortField] - a[sortField];\n });\n };\n\n var filterDates = function filterDates(change) {\n return new Date(change.author_date).getFullYear() > _this.years[0];\n };\n\n var authors = [];\n var track = { \"total\": 0 };\n repo.changesByAuthor().then(function (changes) {\n changes.forEach(function (change) {\n change.author_date = new Date(change.author_date);\n change[\"count\"] = change[\"count\"] ? change[\"count\"] + 1 : 1;\n track[change.author_email] = track[change.author_email] ? track[change.author_email] + 1 : 1;\n track[\"total\"] += 1;\n });\n\n changes.forEach(function (change) {\n if (isFinite(change.additions) && isFinite(change.deletions)) {\n group(contributors, 'author_email', change, filterDates);\n if (change.author_affiliation !== 'Unknown') {\n group(organizations, 'affiliation', change, filterDates);\n }\n }\n if (!authors.includes(change[\"author_email\"])) {\n authors.push(change[\"author_email\"]);\n change[\"flag\"] = (track[change.author_email] / track[\"total\"]).toFixed(4);\n }\n });\n\n _this.contributors = flattenAndSort(contributors, 'author_email', 'additions');\n var careabout = [];\n _this.contributors.slice(0, 10).forEach(function (obj) {\n careabout.push(obj[\"author_email\"]);\n });\n\n var findObjectByKey = function findObjectByKey(array, key, value) {\n var ary = [];\n for (var i = 0; i < array.length; i++) {\n if (array[i][key] == value) {\n ary.push(array[i]);\n }\n }\n return ary;\n };\n\n var ary = [];\n\n careabout.forEach(function (name) {\n findObjectByKey(changes, \"author_email\", name).forEach(function (obj) {\n ary.push(obj);\n });\n });\n\n _this.values = ary;\n });\n\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n\n var repos = [];\n if (this.repo) {\n repos.push(window.AugurRepos[this.repo]);\n }\n\n var processData = function processData(data) {};\n\n return config;\n }\n }\n\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"tickchart \",staticStyle:{\"margin-bottom\":\"0 !important\"}},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-item form-checkboxes tickradios\",staticStyle:{\"position\":\"relative\",\"top\":\"-80px !important\"}},[_c('div',{staticClass:\"inputGroup \",staticStyle:{\"padding-top\":\"5px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.group),expression:\"group\"}],attrs:{\"id\":\"yearradio\",\"name\":\"timeframe\",\"value\":\"0\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.group,\"0\")},on:{\"change\":function($event){_vm.group=\"0\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"yearradio\"}},[_vm._v(\"Year\")])]),_vm._v(\" \"),_c('div',{staticClass:\"inputGroup \",staticStyle:{\"padding-top\":\"5px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.group),expression:\"group\"}],attrs:{\"id\":\"monthradio\",\"name\":\"timeframe\",\"value\":\"1\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.group,\"1\")},on:{\"change\":function($event){_vm.group=\"1\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"monthradio\"}},[_vm._v(\"Month\")])]),_vm._v(\" \"),_c('div',{staticClass:\"inputGroup \",staticStyle:{\"padding-top\":\"5px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.group),expression:\"group\"}],attrs:{\"id\":\"contradio\",\"name\":\"timeframe\",\"value\":\"2\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.group,\"2\")},on:{\"change\":function($event){_vm.group=\"2\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"contradio\"}},[_vm._v(\"Continuous\")])])])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-0760224e\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-0760224e\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data', 'type'],\n data: function data() {\n var years = [];\n for (var i = 9; i >= 0; i--) {\n years.push(new Date().getFullYear() - i);\n }\n var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthDecimals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return {\n values: [],\n contributors: [],\n organizations: [],\n view: 'year',\n monthNames: monthNames,\n monthDecimals: monthDecimals,\n years: years,\n setYear: 0,\n tick: 0\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.gitRepo;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n spec: function spec() {\n var _this = this;\n\n var type = null,\n bin = null,\n size = null;\n\n if (this.tick == 0) {\n type = \"circle\";\n bin = false;\n size = {\n \"field\": \"Net lines added\",\n \"type\": \"quantitative\",\n \"min\": \"15\",\n \"scale\": { \"minSize\": 30, \"maxSize\": 31 }\n };\n }\n if (this.tick == 1) {\n type = \"tick\";\n bin = false;\n size = {};\n }\n if (this.tick == 2) {\n type = \"rect\";\n bin = { \"maxbins\": 40 };\n size = {};\n }\n\n var colors = [\"#FF3647\", \"#4736FF\", \"#3cb44b\", \"#ffe119\", \"#f58231\", \"#911eb4\", \"#42d4f4\", \"#f032e6\"];\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"width\": 780,\n\n \"config\": {\n \"tick\": {\n \"thickness\": 8,\n \"bandSize\": 23\n },\n \"axis\": {\n \"grid\": false\n }\n\n },\n \"title\": {\n \"text\": this.title,\n \"offset\": 40\n },\n \"layer\": [{\n \"transform\": [{\n \"calculate\": \"(datum.additions > datum.deletions) ? 'more deletions' : 'more additions'\",\n \"as\": \"Majority type of changes\"\n }, {\n \"calculate\": \"(datum.additions - datum.deletions)\",\n \"as\": \"Net lines added\"\n }, {\n \"calculate\": \"(datum.additions + datum.deletions)\",\n \"as\": \"Total lines changed\"\n }, {\n \"calculate\": \"(datum.flag * 100)\",\n \"as\": \"percent\"\n }],\n \"mark\": {\n \"type\": \"bar\",\n \"tooltip\": { \"content\": \"data\" }\n },\n \"encoding\": {\n \"x\": { \"field\": \"count\", \"type\": \"quantitative\", \"sort\": { \"op\": \"sum\", \"order\": \"descending\" }, \"stack\": \"normalize\", \"axis\": { \"labels\": false, \"title\": null } },\n \"color\": {\n \"field\": \"author_email\",\n \"type\": \"nominal\",\n \"scale\": { \"scheme\": \"category10\" },\n \"legend\": null\n }\n }\n\n }]\n\n };\n\n var repo = window.AugurAPI.Repo({ gitURL: this.repo });\n var contributors = {};\n var organizations = {};\n\n var addChanges = function addChanges(dest, src) {\n if (dest && src) {\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest['additions'] = 0;\n dest['deletions'] = 0;\n }\n dest['additions'] += src['additions'] || 0;\n dest['deletions'] += src['deletions'] || 0;\n }\n };\n\n var group = function group(obj, name, change, filter) {\n if (filter(change)) {\n var year = new Date(change.author_date).getFullYear();\n var month = new Date(change.author_date).getMonth();\n obj[change[name]] = obj[change[name]] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]], change);\n obj[change[name]][year] = obj[change[name]][year] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year], change);\n obj[change[name]][year + '-' + month] = obj[change[name]][year + '-' + month] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year + '-' + month], change);\n }\n };\n\n var flattenAndSort = function flattenAndSort(obj, keyName, sortField) {\n return Object.keys(obj).map(function (key) {\n var d = obj[key];\n d[keyName] = key;\n return d;\n }).sort(function (a, b) {\n return b[sortField] - a[sortField];\n });\n };\n\n var filterDates = function filterDates(change) {\n return new Date(change.author_date).getFullYear() > _this.years[0];\n };\n\n var authors = [];\n var track = { \"total\": 0 };\n repo.changesByAuthor().then(function (changes) {\n changes.forEach(function (change) {\n change.author_date = new Date(change.author_date);\n if (_this.type == \"commit\") {\n change[\"count\"] = change[\"count\"] ? change[\"count\"] + 1 : 1;\n track[change.author_email] = track[change.author_email] ? track[change.author_email] + 1 : 1;\n track[\"total\"] += 1;\n } else if (_this.type == \"lines\") {\n change[\"count\"] = change[\"count\"] ? change[\"count\"] + change.additions : change.additions;\n track[change.author_email] = track[change.author_email] ? track[change.author_email] + change.additions : change.additions;\n track[\"total\"] += change.additions;\n }\n });\n\n changes.forEach(function (change) {\n if (isFinite(change.additions) && isFinite(change.deletions)) {\n group(contributors, 'author_email', change, filterDates);\n if (change.author_affiliation !== 'Unknown') {\n group(organizations, 'affiliation', change, filterDates);\n }\n }\n if (!authors.includes(change[\"author_email\"])) {\n authors.push(change[\"author_email\"]);\n change[\"flag\"] = (track[change.author_email] / track[\"total\"] * 100).toFixed(4);\n }\n });\n\n _this.contributors = flattenAndSort(contributors, 'author_email', 'additions');\n var careabout = [];\n _this.contributors.slice(0, 10).forEach(function (obj) {\n careabout.push(obj[\"author_email\"]);\n });\n\n var findObjectByKey = function findObjectByKey(array, key, value) {\n var ary = [];\n for (var i = 0; i < array.length; i++) {\n if (array[i][key] == value) {\n ary.push(array[i]);\n }\n }\n return ary;\n };\n\n var ary = [];\n\n careabout.forEach(function (name) {\n findObjectByKey(changes, \"author_email\", name).forEach(function (obj) {\n ary.push(obj);\n });\n });\n\n _this.values = ary;\n });\n\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n\n var repos = [];\n if (this.repo) {\n repos.push(window.AugurRepos[this.repo]);\n }\n\n var processData = function processData(data) {};\n\n return config;\n }\n }\n\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"normalbar\"},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5685f17a\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-5685f17a\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data'],\n data: function data() {\n return {\n values: []\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n spec: function spec() {\n var _this = this;\n\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"data\": { \"values\": [] },\n \"title\": this.title,\n \"width\": this.$el ? this.$el.offestWidth : 800,\n \"height\": 400,\n \"autosize\": \"fit\",\n \"mark\": \"bar\",\n \"encoding\": {\n \"y\": { \"aggregate\": \"sum\",\n \"field\": \"value\",\n \"type\": \"quantitative\" },\n \"x\": { \"field\": \"date\",\n \"type\": \"temporal\" },\n \"color\": { \"field\": \"field\",\n \"type\": \"nominal\" }\n }\n };\n\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n\n var endpoints = [];\n var fields = {};\n this.source.split(',').forEach(function (endpointAndFields) {\n var split = endpointAndFields.split(':');\n endpoints.push(split[0]);\n if (split[1]) {\n fields[split[0]] = split[1].split('+');\n }\n });\n\n var repos = [];\n if (this.repo) {\n repos.push(window.AugurRepos[this.repo]);\n }\n\n var processData = function processData(data) {\n var defaultProcess = function defaultProcess(obj, key, field, count) {\n var d = _AugurStats2.default.convertKey(obj[key], field);\n return _AugurStats2.default.convertDates(d, _this.earliest, _this.latest);\n };\n\n var normalized = [];\n var buildLines = function buildLines(obj, onCreateData) {\n if (!obj) {\n return;\n }\n if (!onCreateData) {\n onCreateData = function onCreateData(obj, key, field, count) {\n var d = defaultProcess(obj, key, field, count);\n normalized.push(d);\n };\n }\n var count = 0;\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (fields[key]) {\n fields[key].forEach(function (field) {\n onCreateData(obj, key, field, count);\n count++;\n });\n } else {\n if (Array.isArray(obj[key]) && obj[key].length > 0) {\n var field = Object.keys(obj[key][0]).splice(1);\n onCreateData(obj, key, field, count);\n count++;\n } else {\n _this.renderError();\n return;\n }\n }\n }\n }\n };\n\n var values = [];\n\n buildLines(data[_this.repo], function (obj, key, field, count) {\n normalized.push(defaultProcess(obj, key, field, count));\n });\n\n if (normalized.length == 0) {\n _this.renderError();\n } else {\n for (var i = 0; i < normalized.length; i++) {\n normalized[i].forEach(function (d) {\n values.push(d);\n });\n }\n }\n\n $(_this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(_this.$el).find('.stackedbarchart').removeClass('loader');\n _this.values = values;\n };\n\n if (this.data) {\n processData(this.data);\n } else {\n window.AugurAPI.batchMapped(repos, endpoints).then(function (data) {\n processData(data);\n });\n }\n\n return config;\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"stackedbarchart hidefirst invis\"},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6c07ac85\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-6c07ac85\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data'],\n data: function data() {\n var years = [];\n for (var i = 9; i >= 0; i--) {\n years.push(new Date().getFullYear() - i);\n }\n var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthDecimals = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return {\n values: [],\n contributors: [],\n organizations: [],\n view: 'year',\n monthNames: monthNames,\n monthDecimals: monthDecimals,\n years: years,\n setYear: 0,\n tick: 0\n };\n },\n created: function created() {\n this.tick = 0;\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.gitRepo;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n spec: function spec() {\n var _this = this;\n\n var type = null,\n bin = null,\n size = null,\n opacity = null;\n\n if (this.tick == 0) {\n type = \"circle\";\n bin = false;\n size = {\n \"field\": \"Total lines changed\",\n \"type\": \"quantitative\",\n \"min\": \"15\",\n \"scale\": { \"minSize\": 30, \"maxSize\": 31 }\n };\n opacity = {};\n }\n if (this.tick == 1) {\n type = \"tick\";\n bin = false;\n size = {};\n opacity = {\n \"field\": \"Total lines changed\",\n \"type\": \"quantitative\",\n \"min\": \".5\"\n };\n }\n if (this.tick == 2) {\n type = \"rect\";\n bin = { \"maxbins\": 40 };\n size = {};\n opacity = {\n \"field\": \"Total lines changed\",\n \"type\": \"quantitative\",\n \"min\": \".5\"\n };\n }\n\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.json\",\n \"width\": 950,\n \"height\": 300,\n \"config\": {\n \"tick\": {\n \"thickness\": 8,\n \"bandSize\": 23\n },\n \"axis\": {\n \"grid\": false,\n \"title\": null\n },\n \"legend\": {\n \"titleFontSize\": 10,\n \"titlePadding\": 10\n }, \"scale\": { \"minSize\": 100, \"maxSize\": 500 }\n },\n \"layer\": [{\n \"transform\": [{\n \"calculate\": \"(datum.additions > datum.deletions) ? 'more deletions' : 'more additions'\",\n \"as\": \"Majority type of changes\"\n }, {\n \"calculate\": \"(datum.additions - datum.deletions)\",\n \"as\": \"Net lines added\"\n }, {\n \"calculate\": \"(datum.additions + datum.deletions) < 50000 ? 50000 : ((datum.additions + datum.deletions) > 1000000 ? 1000000 : (datum.additions + datum.deletions))\",\n \"as\": \"Total lines changed\"\n }],\n \"mark\": type,\n \"encoding\": {\n \"x\": { \"field\": \"author_date\", \"type\": \"temporal\", \"bin\": bin, \"axis\": { \"format\": \"%b %Y\", \"title\": \" \" } },\n \"y\": { \"field\": \"author_email\", \"type\": \"nominal\" },\n \"color\": {\n \"field\": \"Net lines added\",\n \"type\": \"quantitative\",\n \"scale\": { \"range\": [\"#FF0000\", \"#00FF00\"] }\n },\n \"size\": size,\n \"opacity\": opacity\n\n }\n\n }]\n\n };\n\n var repo = window.AugurAPI.Repo({ gitURL: this.repo });\n var contributors = {};\n var organizations = {};\n\n var addChanges = function addChanges(dest, src) {\n if (dest && src) {\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest['additions'] = 0;\n dest['deletions'] = 0;\n }\n dest['additions'] += src['additions'] || 0;\n dest['deletions'] += src['deletions'] || 0;\n }\n };\n\n var group = function group(obj, name, change, filter) {\n if (filter(change)) {\n var year = new Date(change.author_date).getFullYear();\n var month = new Date(change.author_date).getMonth();\n obj[change[name]] = obj[change[name]] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]], change);\n obj[change[name]][year] = obj[change[name]][year] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year], change);\n obj[change[name]][year + '-' + month] = obj[change[name]][year + '-' + month] || { additions: 0, deletions: 0 };\n addChanges(obj[change[name]][year + '-' + month], change);\n }\n };\n\n var flattenAndSort = function flattenAndSort(obj, keyName, sortField) {\n return Object.keys(obj).map(function (key) {\n var d = obj[key];\n d[keyName] = key;\n return d;\n }).sort(function (a, b) {\n return b[sortField] - a[sortField];\n });\n };\n\n var filterDates = function filterDates(change) {\n return new Date(change.author_date).getFullYear() > _this.years[0];\n };\n\n repo.changesByAuthor().then(function (changes) {\n changes.forEach(function (change) {\n change.author_date = new Date(change.author_date);\n });\n\n changes.forEach(function (change) {\n if (isFinite(change.additions) && isFinite(change.deletions)) {\n group(contributors, 'author_email', change, filterDates);\n if (change.author_affiliation !== 'Unknown') {\n group(organizations, 'affiliation', change, filterDates);\n }\n }\n });\n\n _this.contributors = flattenAndSort(contributors, 'author_email', 'additions');\n var careabout = [];\n _this.contributors.slice(0, 10).forEach(function (obj) {\n careabout.push(obj[\"author_email\"]);\n });\n\n var findObjectByKey = function findObjectByKey(array, key, value) {\n var ary = [];\n for (var i = 0; i < array.length; i++) {\n if (array[i][key] == value) {\n ary.push(array[i]);\n }\n }\n return ary;\n };\n\n var ary = [];\n\n careabout.forEach(function (name) {\n findObjectByKey(changes, \"author_email\", name).forEach(function (obj) {\n ary.push(obj);\n });\n });\n\n _this.values = ary;\n });\n\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n\n var repos = [];\n if (this.repo) {\n repos.push(window.AugurRepos[this.repo]);\n }\n\n var processData = function processData(data) {};\n\n return config;\n }\n }\n\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\",staticStyle:{\"position\":\"relative\",\"z-index\":\"5\"}},[_c('div',{staticClass:\"tickchart\"},[_c('h3',{staticStyle:{\"text-align\":\"center\"}},[_vm._v(\"Lines of code added by the top 10 authors visualized\")]),_vm._v(\" \"),_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-item form-checkboxes tickradios\",staticStyle:{\"transform\":\"translateY(-35px) !important\"}},[_c('div',{staticClass:\"inputGroup\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tick),expression:\"tick\"}],attrs:{\"id\":\"circradio\",\"name\":\"comparebaseline\",\"value\":\"0\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.tick,\"0\")},on:{\"change\":function($event){_vm.tick=\"0\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"circradio\"}},[_vm._v(\"Circle\")])]),_vm._v(\" \"),_c('div',{staticClass:\"inputGroup \"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tick),expression:\"tick\"}],attrs:{\"id\":\"tickradio\",\"name\":\"comparebaseline\",\"value\":\"1\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.tick,\"1\")},on:{\"change\":function($event){_vm.tick=\"1\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"tickradio\"}},[_vm._v(\"Tick\")])]),_vm._v(\" \"),_c('div',{staticClass:\"inputGroup \"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tick),expression:\"tick\"}],attrs:{\"id\":\"rectradio\",\"name\":\"comparebaseline\",\"value\":\"2\",\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.tick,\"2\")},on:{\"change\":function($event){_vm.tick=\"2\"}}}),_vm._v(\" \"),_c('label',{attrs:{\"id\":\"front\",\"for\":\"rectradio\"}},[_vm._v(\"Rectangle\")])])])],1)])}\n__vue__options__.staticRenderFns = []\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-083303b4\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-083303b4\", __vue__options__)\n }\n})()}",";(function(){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _vuex = require('vuex');\n\nvar _AugurStats = require('AugurStats');\n\nvar _AugurStats2 = _interopRequireDefault(_AugurStats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n props: ['source', 'citeUrl', 'citeText', 'title', 'disableRollingAverage', 'alwaysByDate', 'data', 'field'],\n data: function data() {\n return {\n values: []\n };\n },\n\n computed: {\n repo: function repo() {\n return this.$store.state.baseRepo;\n },\n gitRepo: function gitRepo() {\n return this.$store.state.gitRepo;\n },\n period: function period() {\n return this.$store.state.trailingAverage;\n },\n earliest: function earliest() {\n return this.$store.state.startDate;\n },\n latest: function latest() {\n return this.$store.state.endDate;\n },\n compare: function compare() {\n return this.$store.state.compare;\n },\n comparedRepos: function comparedRepos() {\n return this.$store.state.comparedRepos;\n },\n rawWeekly: function rawWeekly() {\n return this.$store.state.rawWeekly;\n },\n showArea: function showArea() {\n return this.$store.state.showArea;\n },\n showTooltip: function showTooltip() {\n return this.$store.state.showTooltip;\n },\n showDetail: function showDetail() {\n return this.$store.state.showDetail;\n },\n months: function months() {\n return { 1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'Jun', 7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec'\n };\n },\n spec: function spec() {\n var _this = this;\n\n var config = {\n \"$schema\": \"https://vega.github.io/schema/vega-lite/v3.json\",\n \"padding\": { 'left': 60, 'top': 10, 'right': 70, 'bottom': 20 },\n \"config\": {\n \"bar\": {\n \"discreteBandSize\": 24\n },\n \"zero\": false,\n \"scale\": {\n \"nice\": false\n\n },\n \"axis\": {\n \"tickRound\": false\n }\n\n },\n \"title\": {\n \"text\": this.title,\n\n \"offset\": 10,\n \"fontSize\": 3\n },\n \"width\": 1000,\n \"height\": 250,\n \"layer\": [{\n \"transform\": [{\n \"calculate\": \"datum.month + 0.155\", \"as\": \"loc_location\"\n }],\n \"mark\": {\n \"type\": \"bar\",\n \"clip\": \"true\"\n },\n \"encoding\": {\n \"y\": {\n \"field\": \"net_lines_minus_whitespace\", \"type\": \"quantitative\",\n \"axis\": { \"title\": \"net loc\", \"grid\": false },\n \"scale\": {\n \"domain\": [-1000000, 1000000],\n \"nice\": false\n }\n },\n \"y2\": {\n \"field\": \"avg_loc\", \"type\": \"quantitative\", \"axis\": { \"title\": \"\", \"grid\": false },\n \"scale\": {\n \"domain\": [-1000000, 1000000],\n \"nice\": false\n }\n },\n \"x\": {\n \"field\": \"loc_location\", \"type\": 'quantitative',\n\n \"axis\": { \"title\": \"\", \"labels\": false }\n },\n \"color\": {\n \"value\": \"#FF3647\"\n }\n }\n }, {\n \"transform\": [{\n \"calculate\": \"datum.month - 0.155\", \"as\": \"commit_location\"\n }],\n \"mark\": {\n \"type\": \"bar\",\n \"clip\": \"true\"\n },\n \"encoding\": {\n \"y\": {\n \"field\": \"avg_commits\",\n \"axis\": { \"title\": \"commits\", \"grid\": false },\n \"scale\": {\n \"domain\": [-100, 100],\n \"nice\": false\n }\n },\n \"y2\": {\n \"field\": \"commits\", \"type\": \"quantitative\",\n \"axis\": { \"title\": \"commits\", \"grid\": false },\n \"scale\": {\n \"domain\": [-100, 100],\n \"nice\": false\n }\n },\n \"x\": {\n \"field\": \"commit_location\", \"type\": 'quantitative',\n \"axis\": { \"title\": \"\", \"labels\": false }\n },\n \"color\": {\n \"value\": \"#4736FF\",\n\n \"legend\": null\n }\n }\n }, {\n \"transform\": [{\n \"calculate\": \"datum.month\", \"as\": \"text_location\"\n }, {\n \"calculate\": \"-10\", \"as\": \"y\"\n }],\n \"mark\": {\n \"type\": \"text\"\n },\n \"encoding\": {\n \"text\": {\n \"field\": \"month_name\", \"type\": \"nominal\"\n },\n \"y\": {\n \"value\": 270,\n\n \"axis\": {\n \"title\": \"\",\n \"grid\": false\n },\n \"scale\": {\n \"domain\": [-1000000, 1000000],\n \"nice\": false\n }\n\n },\n \"x\": {\n \"field\": \"text_location\", \"type\": 'quantitative',\n \"axis\": { \"title\": \"\", \"labels\": false }\n }\n\n }\n }, {\n \"transform\": [],\n \"mark\": {\n \"type\": \"rule\"\n },\n \"encoding\": {\n\n \"y\": {\n \"aggregate\": \"mean\",\n \"field\": \"commits\",\n \"axis\": {\n \"title\": \"\", \"grid\": false\n },\n \"scale\": {\n \"domain\": [-100, 100],\n \"nice\": false\n }\n }\n\n }\n }, {\n \"transform\": [],\n \"mark\": {\n \"type\": \"rule\"\n },\n \"encoding\": {\n\n \"y\": {\n \"aggregate\": \"mean\",\n \"field\": \"net_lines_minus_whitespace\",\n \"axis\": null,\n \"scale\": {\n \"domain\": [-1000000, 1000000],\n \"nice\": false\n }\n }\n\n }\n }, {\n \"transform\": [],\n \"mark\": {\n \"type\": \"bar\",\n \"clip\": \"true\"\n },\n \"encoding\": {\n\n \"y\": {\n \"aggregate\": \"mean\",\n \"field\": \"net_lines_minus_whitespace\",\n \"axis\": null,\n \"scale\": {\n \"nice\": false\n }\n\n },\n \"opacity\": { \"value\": 0 },\n \"color\": {\n \"field\": \"key\",\n \"type\": \"ordinal\",\n \"scale\": { \"range\": [\"#4736FF\", \"#FF3647\"] },\n \"legend\": { \"offset\": -16 }\n }\n\n }\n }],\n \"resolve\": { \"scale\": { \"y\": \"independent\", \"color\": \"independent\" } }\n };\n\n var repos = [];\n if (this.gitRepo) {\n repos.push(window.AugurAPI.Repo({ gitURL: this.gitRepo }));\n }\n var endpoints = [];\n var fields = {};\n this.source.split(',').forEach(function (endpointAndFields) {\n var split = endpointAndFields.split(':');\n endpoints.push(split[0]);\n if (split[1]) {\n fields[split[0]] = split[1].split('+');\n }\n });\n if (this.data) {\n processGitData(this.data);\n } else {\n var repo = window.AugurAPI.Repo({ gitURL: this.gitRepo });\n repo[this.source]().then(function (data) {\n console.log(\"batch data\", data);\n processData(data);\n }, function () {});\n }\n $(this.$el).find('.showme, .hidefirst').removeClass('invis');\n $(this.$el).find('.stackedbarchart').removeClass('loader');\n var processGitData = function processGitData(data) {\n var repo = window.AugurAPI.Repo({ gitURL: _this.repo });\n var dat = [];\n repo.changesByAuthor().then(function (changes) {\n dat.push(changes);\n });\n };\n var defaultProcess = function defaultProcess(obj, key) {\n var d = null;\n if (typeof field == \"string\") field = [field];\n d = _AugurStats2.default.convertKey(obj[key], key);\n return d;\n };\n var processData = function processData(data) {\n console.log(repos, data, \"CHECK\");\n var sum_commit = 0;\n var sum_loc = 0;\n var max_loc = 0;\n var max_commit = 0;\n var min_loc = 0;\n var min_commit = 0;\n for (var i = 0; i < data.length; i++) {\n sum_commit += data[i]['commits'];\n sum_loc += data[i]['net_lines_minus_whitespace'];\n console.log(i, data[i]['commits'], data[i]['net_lines_minus_whitespace']);\n data[i]['index'] = i;\n if (data[i]['net_lines_minus_whitespace'] > max_loc) max_loc = data[i]['net_lines_minus_whitespace'];\n if (data[i]['commits'] > max_commit) max_commit = data[i]['commits'];\n if (data[i]['net_lines_minus_whitespace'] < min_loc) {\n min_loc = data[i]['net_lines_minus_whitespace'];\n console.log(\"min = \", data[i]['net_lines_minus_whitespace']);\n }\n if (data[i]['commits'] < min_commit) min_commit = data[i]['commits'];\n if (i == 0) data[i].key = \"commits\";else data[i].key = \"net lines changed\";\n }\n\n data.forEach(function (el) {\n el.avg_commits = sum_commit / data.length;\n el.avg_loc = sum_loc / data.length;\n el.month_name = _this.months[el.month];\n });\n\n var dif_loc = Math.abs(max_loc - sum_loc / data.length) > Math.abs(min_loc - sum_loc / data.length) ? Math.abs(max_loc - sum_loc / data.length) : Math.abs(min_loc - sum_loc / data.length);\n var dif_commit = Math.abs(max_commit - sum_commit / data.length) > Math.abs(min_commit - sum_commit / data.length) ? Math.abs(max_commit - sum_commit / data.length) : Math.abs(min_commit - sum_commit / data.length);\n console.log(\"HERE\", sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc);\n config.layer[0].encoding.y.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n config.layer[0].encoding.y2.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n config.layer[1].encoding.y.scale.domain = [sum_commit / data.length - dif_commit, sum_commit / data.length + dif_commit];\n config.layer[1].encoding.y2.scale.domain = [sum_commit / data.length - dif_commit, sum_commit / data.length + dif_commit];\n config.layer[2].encoding.y.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n config.layer[3].encoding.y.scale.domain = [sum_commit / data.length - dif_commit, sum_commit / data.length + dif_commit];\n config.layer[4].encoding.y.scale.domain = [sum_loc / data.length - dif_loc, sum_loc / data.length + dif_loc];\n\n repos.forEach(function (repo) {\n _this.values = data;\n });\n };\n return config;\n }\n }\n};\n})()\nif (module.exports.__esModule) module.exports = module.exports.default\nvar __vue__options__ = (typeof module.exports === \"function\"? module.exports.options: module.exports)\nif (__vue__options__.functional) {console.error(\"[vueify] functional components are not supported and should be defined in plain js files using render functions.\")}\n__vue__options__.render = function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"holder\"},[_c('div',{staticClass:\"groupedbarchart\"},[_c('vega-lite',{attrs:{\"spec\":_vm.spec,\"data\":_vm.values}}),_vm._v(\" \"),_c('p',[_vm._v(\" \"+_vm._s(_vm.chart)+\" \")]),_vm._v(\" \"),_vm._m(0)],1)])}\n__vue__options__.staticRenderFns = [function render () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 50px 0 50px\",\"font-size\":\"12px\"}},[_c('p',[_vm._v(\"*The black \\\"baseline\\\" represents the averages of both LoC and commits for this repo across all months. Wherever this bar stretches to shows how far above or below the raw value of the statistic is from the regular average.\")])])}]\nif (module.hot) {(function () { var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), true)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-a041a78c\", __vue__options__)\n } else {\n hotAPI.reload(\"data-v-a041a78c\", __vue__options__)\n }\n})()}","/*\n\tKube. CSS & JS Framework\n\tVersion 6.5.2\n\tUpdated: February 2, 2017\n\n\thttp://imperavi.com/kube/\n\n\tCopyright (c) 2009-2017, Imperavi LLC.\n\tLicense: MIT\n*/\nif (typeof jQuery === 'undefined') {throw new Error('Kube\\'s requires jQuery')};\n;(function($) { var version = $.fn.jquery.split('.'); if (version[0] == 1 && version[1] < 8) {throw new Error('Kube\\'s requires at least jQuery v1.8'); }})(jQuery);\n\n;(function()\n{\n // Inherits\n Function.prototype.inherits = function(parent)\n {\n var F = function () {};\n F.prototype = parent.prototype;\n var f = new F();\n\n for (var prop in this.prototype) f[prop] = this.prototype[prop];\n this.prototype = f;\n this.prototype.super = parent.prototype;\n };\n\n // Core Class\n var Kube = function(element, options)\n {\n options = (typeof options === 'object') ? options : {};\n\n this.$element = $(element);\n this.opts = $.extend(true, this.defaults, $.fn[this.namespace].options, this.$element.data(), options);\n this.$target = (typeof this.opts.target === 'string') ? $(this.opts.target) : null;\n };\n\n // Core Functionality\n Kube.prototype = {\n getInstance: function()\n {\n return this.$element.data('fn.' + this.namespace);\n },\n hasTarget: function()\n {\n return !(this.$target === null);\n },\n callback: function(type)\n {\n\t\tvar args = [].slice.call(arguments).splice(1);\n\n // on element callback\n if (this.$element)\n {\n args = this._fireCallback($._data(this.$element[0], 'events'), type, this.namespace, args);\n }\n\n // on target callback\n if (this.$target)\n {\n args = this._fireCallback($._data(this.$target[0], 'events'), type, this.namespace, args);\n\t\t}\n\n\t\t// opts callback\n\t\tif (this.opts && this.opts.callbacks && $.isFunction(this.opts.callbacks[type]))\n\t\t{\n return this.opts.callbacks[type].apply(this, args);\n\t\t}\n\n\t\treturn args;\n },\n _fireCallback: function(events, type, eventNamespace, args)\n {\n if (events && typeof events[type] !== 'undefined')\n {\n\t\t\tvar len = events[type].length;\n\t\t\tfor (var i = 0; i < len; i++)\n\t\t\t{\n\t\t\t\tvar namespace = events[type][i].namespace;\n\t\t\t\tif (namespace === eventNamespace)\n\t\t\t\t{\n\t\t\t\t\tvar value = events[type][i].handler.apply(this, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n return (typeof value === 'undefined') ? args : value;\n }\n };\n\n // Scope\n window.Kube = Kube;\n\n})();\n/**\n * @library Kube Plugin\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Plugin = {\n create: function(classname, pluginname)\n {\n pluginname = (typeof pluginname === 'undefined') ? classname.toLowerCase() : pluginname;\n\n $.fn[pluginname] = function(method, options)\n {\n var args = Array.prototype.slice.call(arguments, 1);\n var name = 'fn.' + pluginname;\n var val = [];\n\n this.each(function()\n {\n var $this = $(this), data = $this.data(name);\n options = (typeof method === 'object') ? method : options;\n\n if (!data)\n {\n // Initialization\n $this.data(name, {});\n $this.data(name, (data = new Kube[classname](this, options)));\n }\n\n // Call methods\n if (typeof method === 'string')\n {\n if ($.isFunction(data[method]))\n {\n var methodVal = data[method].apply(data, args);\n if (methodVal !== undefined)\n {\n val.push(methodVal);\n }\n }\n else\n {\n $.error('No such method \"' + method + '\" for ' + classname);\n }\n }\n\n });\n\n return (val.length === 0 || val.length === 1) ? ((val.length === 0) ? this : val[0]) : val;\n };\n\n $.fn[pluginname].options = {};\n\n return this;\n },\n autoload: function(pluginname)\n {\n var arr = pluginname.split(',');\n var len = arr.length;\n\n for (var i = 0; i < len; i++)\n {\n var name = arr[i].toLowerCase().split(',').map(function(s) { return s.trim() }).join(',');\n this.autoloadQueue.push(name);\n }\n\n return this;\n },\n autoloadQueue: [],\n startAutoload: function()\n {\n if (!window.MutationObserver || this.autoloadQueue.length === 0)\n {\n return;\n }\n\n var self = this;\n\t\tvar observer = new MutationObserver(function(mutations)\n\t\t{\n\t\t\tmutations.forEach(function(mutation)\n\t\t\t{\n\t\t\t\tvar newNodes = mutation.addedNodes;\n\t\t\t if (newNodes.length === 0 || (newNodes.length === 1 && newNodes.nodeType === 3))\n\t\t\t {\n\t\t\t\t return;\n\t\t\t\t}\n\n self.startAutoloadOnce();\n\t\t\t});\n\t\t});\n\n\t\t// pass in the target node, as well as the observer options\n\t\tobserver.observe(document, {\n\t\t\t subtree: true,\n\t\t\t childList: true\n\t\t});\n },\n startAutoloadOnce: function()\n {\n var self = this;\n var $nodes = $('[data-component]').not('[data-loaded]');\n\t\t$nodes.each(function()\n\t\t{\n\t\t\tvar $el = $(this);\n\t\t\tvar pluginname = $el.data('component');\n\n if (self.autoloadQueue.indexOf(pluginname) !== -1)\n {\n\t\t\t$el.attr('data-loaded', true);\n $el[pluginname]();\n }\n });\n\n },\n watch: function()\n {\n Kube.Plugin.startAutoloadOnce();\n Kube.Plugin.startAutoload();\n }\n };\n\n $(window).on('load', function()\n {\n Kube.Plugin.watch();\n });\n\n}(Kube));\n/**\n * @library Kube Animation\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Animation = function(element, effect, callback)\n {\n this.namespace = 'animation';\n this.defaults = {};\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Initialization\n this.effect = effect;\n this.completeCallback = (typeof callback === 'undefined') ? false : callback;\n this.prefixes = ['', '-moz-', '-o-animation-', '-webkit-'];\n this.queue = [];\n\n this.start();\n };\n\n Kube.Animation.prototype = {\n start: function()\n {\n\t\tif (this.isSlideEffect()) this.setElementHeight();\n\n\t\t\tthis.addToQueue();\n\t\t\tthis.clean();\n\t\t\tthis.animate();\n },\n addToQueue: function()\n {\n this.queue.push(this.effect);\n },\n setElementHeight: function()\n {\n this.$element.height(this.$element.height());\n },\n removeElementHeight: function()\n {\n this.$element.css('height', '');\n },\n isSlideEffect: function()\n {\n return (this.effect === 'slideDown' || this.effect === 'slideUp');\n },\n isHideableEffect: function()\n {\n var effects = ['fadeOut', 'slideUp', 'flipOut', 'zoomOut', 'slideOutUp', 'slideOutRight', 'slideOutLeft'];\n\n\t\t\treturn ($.inArray(this.effect, effects) !== -1);\n },\n isToggleEffect: function()\n {\n return (this.effect === 'show' || this.effect === 'hide');\n },\n storeHideClasses: function()\n {\n if (this.$element.hasClass('hide-sm')) this.$element.data('hide-sm-class', true);\n else if (this.$element.hasClass('hide-md')) this.$element.data('hide-md-class', true);\n },\n revertHideClasses: function()\n {\n if (this.$element.data('hide-sm-class')) this.$element.addClass('hide-sm').removeData('hide-sm-class');\n else if (this.$element.data('hide-md-class')) this.$element.addClass('hide-md').removeData('hide-md-class');\n else this.$element.addClass('hide');\n },\n removeHideClass: function()\n {\n if (this.$element.data('hide-sm-class')) this.$element.removeClass('hide-sm');\n else if (this.$element.data('hide-md-class')) this.$element.removeClass('hide-md');\n else this.$element.removeClass('hide');\n },\n animate: function()\n {\n this.storeHideClasses();\n if (this.isToggleEffect())\n\t\t\t{\n\t\t\t\treturn this.makeSimpleEffects();\n }\n\n this.$element.addClass('kubeanimated');\n\t\t\tthis.$element.addClass(this.queue[0]);\n this.removeHideClass();\n\n\t\t\tvar _callback = (this.queue.length > 1) ? null : this.completeCallback;\n\t\t\tthis.complete('AnimationEnd', $.proxy(this.makeComplete, this), _callback);\n },\n makeSimpleEffects: function()\n {\n\t\tif (this.effect === 'show') this.removeHideClass();\n else if (this.effect === 'hide') this.revertHideClasses();\n\n if (typeof this.completeCallback === 'function') this.completeCallback(this);\n },\n\t\tmakeComplete: function()\n\t\t{\n if (this.$element.hasClass(this.queue[0]))\n {\n\t\t\t\tthis.clean();\n\t\t\t\tthis.queue.shift();\n\n\t\t\t\tif (this.queue.length) this.animate();\n\t\t\t}\n\t\t},\n complete: function(type, make, callback)\n\t\t{\n\t\tvar event = type.toLowerCase() + ' webkit' + type + ' o' + type + ' MS' + type;\n\n\t\t\tthis.$element.one(event, $.proxy(function()\n\t\t\t{\n\t\t\t\tif (typeof make === 'function') make();\n\t\t\t\tif (this.isHideableEffect()) this.revertHideClasses();\n\t\t\t\tif (this.isSlideEffect()) this.removeElementHeight();\n\t\t\t\tif (typeof callback === 'function') callback(this);\n\n\t\t\t\tthis.$element.off(event);\n\n\t\t\t}, this));\n\t\t},\n\t\tclean: function()\n\t\t{\n\t\t\tthis.$element.removeClass('kubeanimated').removeClass(this.queue[0]);\n\t\t}\n };\n\n // Inheritance\n Kube.Animation.inherits(Kube);\n\n}(Kube));\n\n// Plugin\n(function($)\n{\n $.fn.animation = function(effect, callback)\n {\n var name = 'fn.animation';\n\n return this.each(function()\n {\n var $this = $(this), data = $this.data(name);\n\n $this.data(name, {});\n $this.data(name, (data = new Kube.Animation(this, effect, callback)));\n });\n };\n\n $.fn.animation.options = {};\n\n})(jQuery);\n/**\n * @library Kube Detect\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Detect = function() {};\n\n Kube.Detect.prototype = {\n\tisMobile: function()\n\t{\n\t\treturn /(iPhone|iPod|BlackBerry|Android)/.test(navigator.userAgent);\n\t},\n\tisDesktop: function()\n\t{\n\t\treturn !/(iPhone|iPod|iPad|BlackBerry|Android)/.test(navigator.userAgent);\n\t},\n\tisMobileScreen: function()\n\t{\n\t\treturn ($(window).width() <= 768);\n\t},\n\tisTabletScreen: function()\n\t{\n\t\treturn ($(window).width() >= 768 && $(window).width() <= 1024);\n\t},\n\tisDesktopScreen: function()\n\t{\n\t\treturn ($(window).width() > 1024);\n\t}\n };\n\n\n}(Kube));\n/**\n * @library Kube FormData\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.FormData = function(app)\n {\n this.opts = app.opts;\n };\n\n Kube.FormData.prototype = {\n set: function(data)\n {\n this.data = data;\n },\n get: function(formdata)\n\t{\n\t\tthis.formdata = formdata;\n\n if (this.opts.appendForms) this.appendForms();\n if (this.opts.appendFields) this.appendFields();\n\n return this.data;\n\t},\n\tappendFields: function()\n\t{\n\t\tvar $fields = $(this.opts.appendFields);\n\t\tif ($fields.length === 0)\n\t\t{\n\t\t\treturn;\n }\n\n\t\tvar self = this;\n var str = '';\n\n if (this.formdata)\n {\n $fields.each(function()\n\t\t\t{\n\t\t\t\tself.data.append($(this).attr('name'), $(this).val());\n\t\t\t});\n }\n else\n {\n\t\t\t$fields.each(function()\n\t\t\t{\n\t\t\t\tstr += '&' + $(this).attr('name') + '=' + $(this).val();\n\t\t\t});\n\n\t\t\tthis.data = (this.data === '') ? str.replace(/^&/, '') : this.data + str;\n }\n\t},\n\tappendForms: function()\n\t{\n\t\tvar $forms = $(this.opts.appendForms);\n\t\tif ($forms.length === 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n if (this.formdata)\n {\n var self = this;\n var formsData = $(this.opts.appendForms).serializeArray();\n $.each(formsData, function(i,s)\n {\n\t\t\tself.data.append(s.name, s.value);\n });\n }\n else\n {\n var str = $forms.serialize();\n\n this.data = (this.data === '') ? str : this.data + '&' + str;\n }\n\t}\n };\n\n\n}(Kube));\n/**\n * @library Kube Response\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Response = function(app) {};\n\n Kube.Response.prototype = {\n parse: function(str)\n\t{\n\t\tif (str === '') return false;\n\n\t\tvar obj = {};\n\n\t\ttry {\n\t\t\tobj = JSON.parse(str);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (obj[0] !== undefined)\n\t\t{\n\t\t\tfor (var item in obj)\n\t\t\t{\n\t\t\t\tthis.parseItem(obj[item]);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.parseItem(obj);\n\t\t}\n\n\t\treturn obj;\n\t},\n\tparseItem: function(item)\n\t{\n\t\tif (item.type === 'value')\n\t\t{\n\t\t\t$.each(item.data, $.proxy(function(key, val)\n\t\t\t{\n\t\t\t\tval = (val === null || val === false) ? 0 : val;\n\t\t\t\tval = (val === true) ? 1 : val;\n\n\t\t\t\t$(key).val(val);\n\n\t\t\t}, this));\n\t\t}\n\t\telse if (item.type === 'html')\n\t\t{\n\t\t\t$.each(item.data, $.proxy(function(key, val)\n\t\t\t{\n\t\t\t\tval = (val === null || val === false) ? '' : val;\n\n\t\t\t\t$(key).html(this.stripslashes(val));\n\n\t\t\t}, this));\n\t\t}\n\t\telse if (item.type === 'addClass')\n\t\t{\n\t\t\t$.each(item.data, function(key, val)\n\t\t\t{\n\t\t\t\t$(key).addClass(val);\n\t\t\t});\n }\n\t\telse if (item.type === 'removeClass')\n\t\t{\n\t\t\t$.each(item.data, function(key, val)\n\t\t\t{\n\t\t\t\t$(key).removeClass(val);\n\t\t\t});\n }\n\t\telse if (item.type === 'command')\n\t\t{\n\t\t\t$.each(item.data, function(key, val)\n\t\t\t{\n\t\t\t\t$(val)[key]();\n\t\t\t});\n\t\t}\n\t\telse if (item.type === 'animation')\n\t\t{\n\t\t\t$.each(item.data, function(key, data)\n\t\t\t{\n\t\t\t\tdata.opts = (typeof data.opts === 'undefined') ? {} : data.opts;\n\n\t\t\t\t$(key).animation(data.name, data.opts);\n\t\t\t});\n\t\t}\n\t\telse if (item.type === 'location')\n\t\t{\n\t\t\ttop.location.href = item.data;\n\t\t}\n\t\telse if (item.type === 'notify')\n\t\t{\n\t\t\t$.notify(item.data);\n\t\t}\n\n\t\treturn item;\n\t},\n stripslashes: function(str)\n\t{\n\t\treturn (str+'').replace(/\\0/g, '0').replace(/\\\\([\\\\'\"])/g, '$1');\n }\n };\n\n\n}(Kube));\n/**\n * @library Kube Utils\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Utils = function() {};\n\n Kube.Utils.prototype = {\n disableBodyScroll: function()\n\t{\n\t\tvar $body = $('html');\n\t\tvar windowWidth = window.innerWidth;\n\n\t\tif (!windowWidth)\n\t\t{\n\t\t\tvar documentElementRect = document.documentElement.getBoundingClientRect();\n\t\t\twindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n\t\t}\n\n\t\tvar isOverflowing = document.body.clientWidth < windowWidth;\n\t\tvar scrollbarWidth = this.measureScrollbar();\n\n\t\t$body.css('overflow', 'hidden');\n\t\tif (isOverflowing) $body.css('padding-right', scrollbarWidth);\n\t},\n\tmeasureScrollbar: function()\n\t{\n\t\tvar $body = $('body');\n\t\tvar scrollDiv = document.createElement('div');\n\t\tscrollDiv.className = 'scrollbar-measure';\n\n\t\t$body.append(scrollDiv);\n\t\tvar scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\t\t$body[0].removeChild(scrollDiv);\n\t\treturn scrollbarWidth;\n\t},\n\tenableBodyScroll: function()\n\t{\n\t\t$('html').css({ 'overflow': '', 'padding-right': '' });\n\t}\n };\n\n\n}(Kube));\n/**\n * @library Kube Message\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Message = function(element, options)\n {\n this.namespace = 'message';\n this.defaults = {\n closeSelector: '.close',\n closeEvent: 'click',\n animationOpen: 'fadeIn',\n animationClose: 'fadeOut',\n callbacks: ['open', 'opened', 'close', 'closed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Message.prototype = {\n start: function()\n {\n this.$close = this.$element.find(this.opts.closeSelector);\n this.$close.on(this.opts.closeEvent + '.' + this.namespace, $.proxy(this.close, this));\n this.$element.addClass('open');\n },\n stop: function()\n {\n this.$close.off('.' + this.namespace);\n this.$element.removeClass('open');\n },\n open: function(e)\n {\n if (e) e.preventDefault();\n\n if (!this.isOpened())\n {\n this.callback('open');\n this.$element.animation(this.opts.animationOpen, $.proxy(this.onOpened, this));\n }\n },\n isOpened: function()\n {\n return this.$element.hasClass('open');\n },\n onOpened: function()\n {\n this.callback('opened');\n this.$element.addClass('open');\n },\n close: function(e)\n {\n if (e) e.preventDefault();\n\n if (this.isOpened())\n {\n this.callback('close');\n this.$element.animation(this.opts.animationClose, $.proxy(this.onClosed, this));\n }\n },\n onClosed: function()\n {\n this.callback('closed');\n this.$element.removeClass('open');\n }\n };\n\n // Inheritance\n Kube.Message.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Message');\n Kube.Plugin.autoload('Message');\n\n}(Kube));\n/**\n * @library Kube Sticky\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Sticky = function(element, options)\n {\n this.namespace = 'sticky';\n this.defaults = {\n classname: 'fixed',\n offset: 0, // pixels\n callbacks: ['fixed', 'unfixed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Sticky.prototype = {\n start: function()\n {\n\t this.offsetTop = this.getOffsetTop();\n\n\t this.load();\n\t $(window).scroll($.proxy(this.load, this));\n\t},\n\tgetOffsetTop: function()\n\t{\n\t\treturn this.$element.offset().top;\n\t},\n\tload: function()\n\t{\n\t\treturn (this.isFix()) ? this.fixed() : this.unfixed();\n\t},\n\tisFix: function()\n\t{\n return ($(window).scrollTop() > (this.offsetTop + this.opts.offset));\n\t},\n\tfixed: function()\n\t{\n\t\tthis.$element.addClass(this.opts.classname).css('top', this.opts.offset + 'px');\n\t\tthis.callback('fixed');\n\t},\n\tunfixed: function()\n\t{\n\t\tthis.$element.removeClass(this.opts.classname).css('top', '');\n\t\tthis.callback('unfixed');\n }\n };\n\n // Inheritance\n Kube.Sticky.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Sticky');\n Kube.Plugin.autoload('Sticky');\n\n}(Kube));\n/**\n * @library Kube Toggleme\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Toggleme = function(element, options)\n {\n this.namespace = 'toggleme';\n this.defaults = {\n toggleEvent: 'click',\n target: null,\n text: '',\n animationOpen: 'slideDown',\n animationClose: 'slideUp',\n callbacks: ['open', 'opened', 'close', 'closed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Toggleme.prototype = {\n start: function()\n {\n if (!this.hasTarget()) return;\n\n this.$element.on(this.opts.toggleEvent + '.' + this.namespace, $.proxy(this.toggle, this));\n },\n stop: function()\n {\n this.$element.off('.' + this.namespace);\n this.revertText();\n },\n toggle: function(e)\n {\n if (this.isOpened()) this.close(e);\n else this.open(e);\n },\n open: function(e)\n {\n if (e) e.preventDefault();\n\n if (!this.isOpened())\n {\n this.storeText();\n this.callback('open');\n this.$target.animation('slideDown', $.proxy(this.onOpened, this));\n\n // changes the text of $element with a less delay to smooth\n setTimeout($.proxy(this.replaceText, this), 100);\n\t\t}\n },\n close: function(e)\n {\n if (e) e.preventDefault();\n\n if (this.isOpened())\n {\n this.callback('close');\n this.$target.animation('slideUp', $.proxy(this.onClosed, this));\n\t\t}\n },\n\tisOpened: function()\n {\n return (this.$target.hasClass('open'));\n },\n onOpened: function()\n {\n this.$target.addClass('open');\n\t\tthis.callback('opened');\n },\n onClosed: function()\n {\n this.$target.removeClass('open');\n this.revertText();\n\t\tthis.callback('closed');\n },\n storeText: function()\n {\n this.$element.data('replacement-text', this.$element.html());\n },\n revertText: function()\n {\n var text = this.$element.data('replacement-text');\n if (text) this.$element.html(text);\n\n this.$element.removeData('replacement-text');\n },\n replaceText: function()\n {\n if (this.opts.text !== '')\n {\n this.$element.html(this.opts.text);\n }\n }\n };\n\n // Inheritance\n Kube.Toggleme.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Toggleme');\n Kube.Plugin.autoload('Toggleme');\n\n}(Kube));\n/**\n * @library Kube Offcanvas\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Offcanvas = function(element, options)\n {\n this.namespace = 'offcanvas';\n this.defaults = {\n\t\ttarget: null, // selector\n\t\tpush: true, // boolean\n\t\twidth: '250px', // string\n\t\tdirection: 'left', // string: left or right\n\t\ttoggleEvent: 'click',\n\t\tclickOutside: true, // boolean\n\t\tanimationOpen: 'slideInLeft',\n\t\tanimationClose: 'slideOutLeft',\n\t\tcallbacks: ['open', 'opened', 'close', 'closed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Services\n this.utils = new Kube.Utils();\n this.detect = new Kube.Detect();\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Offcanvas.prototype = {\n start: function()\n {\n if (!this.hasTarget()) return;\n\n this.buildTargetWidth();\n this.buildAnimationDirection();\n\n this.$close = this.getCloseLink();\n this.$element.on(this.opts.toggleEvent + '.' + this.namespace, $.proxy(this.toggle, this));\n this.$target.addClass('offcanvas');\n\t},\n\tstop: function()\n\t{\n\t\tthis.closeAll();\n\n this.$element.off('.' + this.namespace);\n this.$close.off('.' + this.namespace);\n $(document).off('.' + this.namespace);\n\t},\n\ttoggle: function(e)\n\t{\n\t\tif (this.isOpened()) this.close(e);\n\t\telse this.open(e);\n },\n\tbuildTargetWidth: function()\n\t{\n this.opts.width = ($(window).width() < parseInt(this.opts.width)) ? '100%' : this.opts.width;\n\t},\n\tbuildAnimationDirection: function()\n\t{\n if (this.opts.direction === 'right')\n {\n this.opts.animationOpen = 'slideInRight';\n\t\t\tthis.opts.animationClose = 'slideOutRight';\n }\n\t},\n\tgetCloseLink: function()\n\t{\n return this.$target.find('.close');\n\t},\n\topen: function(e)\n\t{\n\t\tif (e) e.preventDefault();\n\n if (!this.isOpened())\n {\n this.closeAll();\n\t\t\tthis.callback('open');\n\n this.$target.addClass('offcanvas-' + this.opts.direction);\n this.$target.css('width', this.opts.width);\n\n this.pushBody();\n\n\t\t\tthis.$target.animation(this.opts.animationOpen, $.proxy(this.onOpened, this));\n\t\t}\n\t},\n\tcloseAll: function()\n\t{\n\t\tvar $elms = $(document).find('.offcanvas');\n\t\tif ($elms.length !== 0)\n\t\t{\n $elms.each(function()\n {\n var $el = $(this);\n\n if ($el.hasClass('open'))\n {\n $el.css('width', '').animation('hide');\n $el.removeClass('open offcanvas-left offcanvas-right');\n }\n\n });\n\n $(document).off('.' + this.namespace);\n $('body').css('left', '');\n\t\t}\n\t},\n\tclose: function(e)\n\t{\n\t\tif (e)\n\t\t{\n\t\tvar $el = $(e.target);\n\t\tvar isTag = ($el[0].tagName === 'A' || $el[0].tagName === 'BUTTON');\n\t\tif (isTag && $el.closest('.offcanvas').length !== 0 && !$el.hasClass('close'))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n }\n\n if (this.isOpened())\n\t\t{\n\t\t\tthis.utils.enableBodyScroll();\n\t\t\tthis.callback('close');\n this.pullBody();\n\t\t\tthis.$target.animation(this.opts.animationClose, $.proxy(this.onClosed, this));\n\t\t}\n\t},\n\tisOpened: function()\n {\n return (this.$target.hasClass('open'));\n },\n\tonOpened: function()\n\t{\n\t\tif (this.opts.clickOutside) $(document).on('click.' + this.namespace, $.proxy(this.close, this));\n\t\tif (this.detect.isMobileScreen()) $('html').addClass('no-scroll');\n\n $(document).on('keyup.' + this.namespace, $.proxy(this.handleKeyboard, this));\n this.$close.on('click.' + this.namespace, $.proxy(this.close, this));\n\n\t\tthis.utils.disableBodyScroll();\n this.$target.addClass('open');\n this.callback('opened');\n\t},\n\tonClosed: function()\n\t{\n\t\tif (this.detect.isMobileScreen()) $('html').removeClass('no-scroll');\n\n this.$target.css('width', '').removeClass('offcanvas-' + this.opts.direction);\n\n this.$close.off('.' + this.namespace);\n\t\t$(document).off('.' + this.namespace);\n\n this.$target.removeClass('open');\n\t\tthis.callback('closed');\n\t},\n\thandleKeyboard: function(e)\n\t{\n\t\tif (e.which === 27) this.close();\n\t},\n\tpullBody: function()\n\t{\n if (this.opts.push)\n {\n $('body').animate({ left: 0 }, 350, function() { $(this).removeClass('offcanvas-push-body'); });\n }\n\t},\n\tpushBody: function()\n\t{\n if (this.opts.push)\n {\n var properties = (this.opts.direction === 'left') ? { 'left': this.opts.width } : { 'left': '-' + this.opts.width };\n $('body').addClass('offcanvas-push-body').animate(properties, 200);\n }\n\t}\n };\n\n // Inheritance\n Kube.Offcanvas.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Offcanvas');\n Kube.Plugin.autoload('Offcanvas');\n\n}(Kube));\n/**\n * @library Kube Collapse\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Collapse = function(element, options)\n {\n this.namespace = 'collapse';\n this.defaults = {\n target: null,\n toggle: true,\n active: false, // string (hash = tab id selector)\n toggleClass: 'collapse-toggle',\n boxClass: 'collapse-box',\n callbacks: ['open', 'opened', 'close', 'closed'],\n\n // private\n hashes: [],\n\t\tcurrentHash: false,\n\t\tcurrentItem: false\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Collapse.prototype = {\n start: function()\n {\n // items\n this.$items = this.getItems();\n this.$items.each($.proxy(this.loadItems, this));\n\n // boxes\n this.$boxes = this.getBoxes();\n\n // active\n this.setActiveItem();\n },\n getItems: function()\n {\n return this.$element.find('.' + this.opts.toggleClass);\n },\n getBoxes: function()\n {\n return this.$element.find('.' + this.opts.boxClass);\n },\n\tloadItems: function(i, el)\n\t{\n\t\tvar item = this.getItem(el);\n\n\t\t// set item identificator\n\t\titem.$el.attr('rel', item.hash);\n\n // active\n\t\tif (!$(item.hash).hasClass('hide'))\n\t\t{\n\t\t\tthis.opts.currentItem = item;\n\t\t\tthis.opts.active = item.hash;\n\n item.$el.addClass('active');\n }\n\n\t\t// event\n\t\titem.$el.on('click.collapse', $.proxy(this.toggle, this));\n\n\t},\n\tsetActiveItem: function()\n\t{\n\t\tif (this.opts.active !== false)\n\t\t{\n\t\t\tthis.opts.currentItem = this.getItemBy(this.opts.active);\n\t\t\tthis.opts.active = this.opts.currentItem.hash;\n\t\t}\n\n if (this.opts.currentItem !== false)\n {\n\t\t this.addActive(this.opts.currentItem);\n\t\t this.opts.currentItem.$box.removeClass('hide');\n\t\t}\n\t},\n\taddActive: function(item)\n\t{\n\t\titem.$box.removeClass('hide').addClass('open');\n\t\titem.$el.addClass('active');\n\n\t\tif (item.$caret !== false) item.$caret.removeClass('down').addClass('up');\n\t\tif (item.$parent !== false) item.$parent.addClass('active');\n\n\t\tthis.opts.currentItem = item;\n\t},\n\tremoveActive: function(item)\n\t{\n\t\titem.$box.removeClass('open');\n\t\titem.$el.removeClass('active');\n\n\t\tif (item.$caret !== false) item.$caret.addClass('down').removeClass('up');\n\t\tif (item.$parent !== false) item.$parent.removeClass('active');\n\n\t\tthis.opts.currentItem = false;\n\t},\n toggle: function(e)\n {\n if (e) e.preventDefault();\n\n var target = $(e.target).closest('.' + this.opts.toggleClass).get(0) || e.target;\n var item = this.getItem(target);\n\n if (this.isOpened(item.hash)) this.close(item.hash);\n else this.open(e)\n },\n openAll: function()\n {\n this.$items.addClass('active');\n this.$boxes.addClass('open').removeClass('hide');\n },\n open: function(e, push)\n {\n\t\tif (typeof e === 'undefined') return;\n\t\tif (typeof e === 'object') e.preventDefault();\n\n var target = $(e.target).closest('.' + this.opts.toggleClass).get(0) || e.target;\n\t\tvar item = (typeof e === 'object') ? this.getItem(target) : this.getItemBy(e);\n\n\t\tif (item.$box.hasClass('open'))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.opts.toggle) this.closeAll();\n\n\t\tthis.callback('open', item);\n\t\tthis.addActive(item);\n\n item.$box.animation('slideDown', $.proxy(this.onOpened, this));\n },\n onOpened: function()\n {\n\t\tthis.callback('opened', this.opts.currentItem);\n },\n closeAll: function()\n {\n this.$items.removeClass('active').closest('li').removeClass('active');\n this.$boxes.removeClass('open').addClass('hide');\n },\n close: function(num)\n {\n\t\tvar item = this.getItemBy(num);\n\n\t\tthis.callback('close', item);\n\n\t\tthis.opts.currentItem = item;\n\n\t\titem.$box.animation('slideUp', $.proxy(this.onClosed, this));\n },\n onClosed: function()\n {\n var item = this.opts.currentItem;\n\n\t\tthis.removeActive(item);\n\t\tthis.callback('closed', item);\n },\n isOpened: function(hash)\n {\n return $(hash).hasClass('open');\n },\n\tgetItem: function(element)\n\t{\n\t\tvar item = {};\n\n\t\titem.$el = $(element);\n\t\titem.hash = item.$el.attr('href');\n\t\titem.$box = $(item.hash);\n\n\t\tvar $parent = item.$el.parent();\n\t\titem.$parent = ($parent[0].tagName === 'LI') ? $parent : false;\n\n\t\tvar $caret = item.$el.find('.caret');\n\t\titem.$caret = ($caret.length !== 0) ? $caret : false;\n\n\t\treturn item;\n\t},\n\tgetItemBy: function(num)\n\t{\n\t\tvar element = (typeof num === 'number') ? this.$items.eq(num-1) : this.$element.find('[rel=\"' + num + '\"]');\n\n\t\treturn this.getItem(element);\n }\n };\n\n // Inheritance\n Kube.Collapse.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Collapse');\n Kube.Plugin.autoload('Collapse');\n\n}(Kube));\n/**\n * @library Kube Dropdown\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Dropdown = function(element, options)\n {\n this.namespace = 'dropdown';\n this.defaults = {\n\t\ttarget: null,\n\t\ttoggleEvent: 'click',\n\t\theight: false, // integer\n\t\twidth: false, // integer\n\t\tanimationOpen: 'slideDown',\n\t\tanimationClose: 'slideUp',\n\t\tcaretUp: false,\n callbacks: ['open', 'opened', 'close', 'closed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Services\n this.utils = new Kube.Utils();\n this.detect = new Kube.Detect();\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Dropdown.prototype = {\n start: function()\n {\n this.buildClose();\n this.buildCaret();\n\n if (this.detect.isMobile()) this.buildMobileAnimation();\n\n this.$target.addClass('hide');\n this.$element.on(this.opts.toggleEvent + '.' + this.namespace, $.proxy(this.toggle, this));\n\n\t},\n\tstop: function()\n\t{\n\t\tthis.$element.off('.' + this.namespace);\n this.$target.removeClass('open').addClass('hide');\n\t\tthis.disableEvents();\n\t},\n\tbuildMobileAnimation: function()\n\t{\n this.opts.animationOpen = 'fadeIn';\n this.opts.animationClose = 'fadeOut';\n\t},\n\tbuildClose: function()\n\t{\n this.$close = this.$target.find('.close');\n\t},\n\tbuildCaret: function()\n\t{\n this.$caret = this.getCaret();\n\t\tthis.buildCaretPosition();\n\t},\n\tbuildCaretPosition: function()\n\t{\n\t\tvar height = this.$element.offset().top + this.$element.innerHeight() + this.$target.innerHeight();\n\n\t\tif ($(document).height() > height)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n this.opts.caretUp = true;\n\t\tthis.$caret.addClass('up');\n\t},\n\tgetCaret: function()\n\t{\n\t\treturn this.$element.find('.caret');\n\t},\n\ttoggleCaretOpen: function()\n\t{\n\t\tif (this.opts.caretUp) this.$caret.removeClass('up').addClass('down');\n\t\telse this.$caret.removeClass('down').addClass('up');\n\t},\n\ttoggleCaretClose: function()\n\t{\n\t\tif (this.opts.caretUp) this.$caret.removeClass('down').addClass('up');\n\t\telse this.$caret.removeClass('up').addClass('down');\n\t},\n\ttoggle: function(e)\n\t{\n\t\tif (this.isOpened()) this.close(e);\n\t\telse this.open(e);\n\t},\n\topen: function(e)\n\t{\n\t\tif (e) e.preventDefault();\n\n this.callback('open');\n\t\t$('.dropdown').removeClass('open').addClass('hide');\n\n\t\tif (this.opts.height) this.$target.css('min-height', this.opts.height + 'px');\n\t\tif (this.opts.width) this.$target.width(this.opts.width);\n\n\t\tthis.setPosition();\n\t\tthis.toggleCaretOpen();\n\n\t\tthis.$target.animation(this.opts.animationOpen, $.proxy(this.onOpened, this));\n\t},\n\tclose: function(e)\n\t{\n if (!this.isOpened())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (e)\n\t\t{\n\t\t\tif (this.shouldNotBeClosed(e.target))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tthis.utils.enableBodyScroll();\n\t\tthis.callback('close');\n\t\tthis.toggleCaretClose();\n\n\t\tthis.$target.animation(this.opts.animationClose, $.proxy(this.onClosed, this));\n\t},\n\tonClosed: function()\n\t{\n this.$target.removeClass('open');\n\t\tthis.disableEvents();\n\t\tthis.callback('closed');\n\t},\n\tonOpened: function()\n\t{\n\t\tthis.$target.addClass('open');\n\t\tthis.enableEvents();\n\t\tthis.callback('opened');\n\t},\n\tisOpened: function()\n\t{\n\t\treturn (this.$target.hasClass('open'));\n\t},\n\tenableEvents: function()\n\t{\n\t\tif (this.detect.isDesktop())\n\t\t{\n\t\t\tthis.$target.on('mouseover.' + this.namespace, $.proxy(this.utils.disableBodyScroll, this.utils))\n\t\t\t .on('mouseout.' + this.namespace, $.proxy(this.utils.enableBodyScroll, this.utils));\n\t\t}\n\n\t\t$(document).on('scroll.' + this.namespace, $.proxy(this.setPosition, this));\n\t\t$(window).on('resize.' + this.namespace, $.proxy(this.setPosition, this));\n\t\t$(document).on('click.' + this.namespace + ' touchstart.' + this.namespace, $.proxy(this.close, this));\n\t\t$(document).on('keydown.' + this.namespace, $.proxy(this.handleKeyboard, this));\n\t\tthis.$target.find('[data-action=\"dropdown-close\"]').on('click.' + this.namespace, $.proxy(this.close, this));\n\t},\n\tdisableEvents: function()\n\t{\n\t\tthis.$target.off('.' + this.namespace);\n\t\t$(document).off('.' + this.namespace);\n\t\t$(window).off('.' + this.namespace);\n\t},\n\thandleKeyboard: function(e)\n\t{\n\t\tif (e.which === 27) this.close(e);\n\t},\n\tshouldNotBeClosed: function(el)\n\t{\n if ($(el).attr('data-action') === 'dropdown-close' || el === this.$close[0])\n {\n return false;\n\t\t}\n\t\telse if ($(el).closest('.dropdown').length === 0)\n\t\t{\n\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n isNavigationFixed: function()\n\t{\n\t\treturn (this.$element.closest('.fixed').length !== 0);\n\t},\n\tgetPlacement: function(height)\n\t{\n\t\treturn ($(document).height() < height) ? 'top' : 'bottom';\n\t},\n\tgetOffset: function(position)\n\t{\n\t\treturn (this.isNavigationFixed()) ? this.$element.position() : this.$element.offset();\n\t},\n\tgetPosition: function()\n\t{\n\t\treturn (this.isNavigationFixed()) ? 'fixed' : 'absolute';\n\t},\n\tsetPosition: function()\n\t{\n\t\tif (this.detect.isMobile())\n\t\t{\n this.$target.addClass('dropdown-mobile');\n return;\n\t\t}\n\n\t\tvar position = this.getPosition();\n\t\t\tvar coords = this.getOffset(position);\n\t\t\tvar height = this.$target.innerHeight();\n\t\t\tvar width = this.$target.innerWidth();\n\t\t\tvar placement = this.getPlacement(coords.top + height + this.$element.innerHeight());\n\t\t\tvar leftFix = ($(window).width() < (coords.left + width)) ? (width - this.$element.innerWidth()) : 0;\n\t\t\tvar top, left = coords.left - leftFix;\n\n\t\t\tif (placement === 'bottom')\n\t\t\t{\n\t\t\tif (!this.isOpened()) this.$caret.removeClass('up').addClass('down');\n\n\t\t\t\tthis.opts.caretUp = false;\n\t\t\t\ttop = coords.top + this.$element.outerHeight() + 1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.opts.animationOpen = 'show';\n\t\t\t\tthis.opts.animationClose = 'hide';\n\n if (!this.isOpened()) this.$caret.addClass('up').removeClass('down');\n\n\t\t\t\tthis.opts.caretUp = true;\n\t\t\t\ttop = coords.top - height - 1;\n\t\t\t}\n\n\t\t\tthis.$target.css({ position: position, top: top + 'px', left: left + 'px' });\n\t}\n };\n\n // Inheritance\n Kube.Dropdown.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Dropdown');\n Kube.Plugin.autoload('Dropdown');\n\n}(Kube));\n/**\n * @library Kube Tabs\n * @author Imperavi LLC\n * @license MIT\n */\n(function(Kube)\n{\n Kube.Tabs = function(element, options)\n {\n this.namespace = 'tabs';\n this.defaults = {\n\t\tequals: false,\n\t\tactive: false, // string (hash = tab id selector)\n\t\tlive: false, // class selector\n\t\thash: true, //boolean\n\t\tcallbacks: ['init', 'next', 'prev', 'open', 'opened', 'close', 'closed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Tabs.prototype = {\n start: function()\n {\n if (this.opts.live !== false) this.buildLiveTabs();\n\n this.tabsCollection = [];\n this.hashesCollection = [];\n this.currentHash = [];\n this.currentItem = false;\n\n // items\n this.$items = this.getItems();\n this.$items.each($.proxy(this.loadItems, this));\n\n // tabs\n\t\tthis.$tabs = this.getTabs();\n\n // location hash\n\t\tthis.currentHash = this.getLocationHash();\n\n\t\t// close all\n\t\tthis.closeAll();\n\n // active & height\n\t\tthis.setActiveItem();\n\t\tthis.setItemHeight();\n\n // callback\n\t\tthis.callback('init');\n\n\t},\n\tgetTabs: function()\n\t{\n\t\treturn $(this.tabsCollection).map(function()\n\t\t{\n\t\treturn this.toArray();\n });\n\t},\n\tgetItems: function()\n\t{\n\t\treturn this.$element.find('a');\n\t},\n\tloadItems: function(i, el)\n\t{\n\t\tvar item = this.getItem(el);\n\n\t\t// set item identificator\n\t\titem.$el.attr('rel', item.hash);\n\n\t\t// collect item\n this.collectItem(item);\n\n // active\n\t\tif (item.$parent.hasClass('active'))\n\t\t{\n\t\t\tthis.currentItem = item;\n\t\t\tthis.opts.active = item.hash;\n\t\t}\n\n\t\t// event\n\t\titem.$el.on('click.tabs', $.proxy(this.open, this));\n\n\t},\n\tcollectItem: function(item)\n\t{\n\t\tthis.tabsCollection.push(item.$tab);\n\t\tthis.hashesCollection.push(item.hash);\n\t},\n\tbuildLiveTabs: function()\n\t{\n\t\tvar $layers = $(this.opts.live);\n\n\t\tif ($layers.length === 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$liveTabsList = $('
');\n\t\t$layers.each($.proxy(this.buildLiveItem, this));\n\n\t\tthis.$element.html('').append(this.$liveTabsList);\n\n\t},\n\tbuildLiveItem: function(i, tab)\n\t{\n\t\tvar $tab = $(tab);\n\t\tvar $li = $('
');\n\t\tvar $a = $('
');\n\t\tvar index = i + 1;\n\n\t\t$tab.attr('id', this.getLiveItemId($tab, index));\n\n\t\tvar hash = '#' + $tab.attr('id');\n\t\tvar title = this.getLiveItemTitle($tab);\n\n\t\t$a.attr('href', hash).attr('rel', hash).text(title);\n\t\t$li.append($a);\n\n\t\tthis.$liveTabsList.append($li);\n\t},\n\tgetLiveItemId: function($tab, index)\n\t{\n\t\treturn (typeof $tab.attr('id') === 'undefined') ? this.opts.live.replace('.', '') + index : $tab.attr('id');\n\t},\n\tgetLiveItemTitle: function($tab)\n\t{\n\t\treturn (typeof $tab.attr('data-title') === 'undefined') ? $tab.attr('id') : $tab.attr('data-title');\n\t},\n\tsetActiveItem: function()\n\t{\n\t\tif (this.currentHash)\n\t\t{\n\t\t\tthis.currentItem = this.getItemBy(this.currentHash);\n\t\t\tthis.opts.active = this.currentHash;\n\t\t}\n\t\telse if (this.opts.active === false)\n\t\t{\n\t\t\tthis.currentItem = this.getItem(this.$items.first());\n\t\t\tthis.opts.active = this.currentItem.hash;\n\t\t}\n\n\t\tthis.addActive(this.currentItem);\n\t},\n\taddActive: function(item)\n\t{\n\t\titem.$parent.addClass('active');\n\t\titem.$tab.removeClass('hide').addClass('open');\n\n\t\tthis.currentItem = item;\n\t},\n\tremoveActive: function(item)\n\t{\n\t\titem.$parent.removeClass('active');\n\t\titem.$tab.addClass('hide').removeClass('open');\n\n\t\tthis.currentItem = false;\n\t},\n\tnext: function(e)\n\t{\n\t\tif (e) e.preventDefault();\n\n\t\tvar item = this.getItem(this.fetchElement('next'));\n\n\t\tthis.open(item.hash);\n\t\tthis.callback('next', item);\n\n\t},\n\tprev: function(e)\n\t{\n\t\tif (e) e.preventDefault();\n\n\t\tvar item = this.getItem(this.fetchElement('prev'));\n\n\t\tthis.open(item.hash);\n\t\tthis.callback('prev', item);\n\t},\n\tfetchElement: function(type)\n\t{\n var element;\n\t\tif (this.currentItem !== false)\n\t\t{\n\t\t\t// prev or next\n\t\t\telement = this.currentItem.$parent[type]().find('a');\n\n\t\t\tif (element.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// first\n\t\t\telement = this.$items[0];\n\t\t}\n\n\t\treturn element;\n\t},\n\topen: function(e, push)\n\t{\n\t\tif (typeof e === 'undefined') return;\n\t\tif (typeof e === 'object') e.preventDefault();\n\n\t\tvar item = (typeof e === 'object') ? this.getItem(e.target) : this.getItemBy(e);\n\t\tthis.closeAll();\n\n\t\tthis.callback('open', item);\n\t\tthis.addActive(item);\n\n\t\t// push state (doesn't need to push at the start)\n this.pushStateOpen(push, item);\n\t\tthis.callback('opened', item);\n\t},\n\tpushStateOpen: function(push, item)\n\t{\n\t\tif (push !== false && this.opts.hash !== false)\n\t\t{\n\t\t\thistory.pushState(false, false, item.hash);\n\t\t}\n\t},\n\tclose: function(num)\n\t{\n\t\tvar item = this.getItemBy(num);\n\n\t\tif (!item.$parent.hasClass('active'))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.callback('close', item);\n\t\tthis.removeActive(item);\n\t\tthis.pushStateClose();\n\t\tthis.callback('closed', item);\n\n\t},\n\tpushStateClose: function()\n\t{\n if (this.opts.hash !== false)\n {\n\t\t\thistory.pushState(false, false, ' ');\n\t\t}\n\t},\n\tcloseAll: function()\n\t{\n\t\tthis.$tabs.removeClass('open').addClass('hide');\n\t\tthis.$items.parent().removeClass('active');\n\t},\n\tgetItem: function(element)\n\t{\n\t\tvar item = {};\n\n\t\titem.$el = $(element);\n\t\titem.hash = item.$el.attr('href');\n\t\titem.$parent = item.$el.parent();\n\t\titem.$tab = $(item.hash);\n\n\t\treturn item;\n\t},\n\tgetItemBy: function(num)\n\t{\n\t\tvar element = (typeof num === 'number') ? this.$items.eq(num-1) : this.$element.find('[rel=\"' + num + '\"]');\n\n\t\treturn this.getItem(element);\n\t},\n\tgetLocationHash: function()\n\t{\n\t\tif (this.opts.hash === false)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (this.isHash()) ? top.location.hash : false;\n\t},\n\tisHash: function()\n\t{\n\t\treturn !(top.location.hash === '' || $.inArray(top.location.hash, this.hashesCollection) === -1);\n\t},\n\tsetItemHeight: function()\n\t{\n\t\tif (this.opts.equals)\n\t\t{\n\t\tvar minHeight = this.getItemMaxHeight() + 'px';\n\t\t\tthis.$tabs.css('min-height', minHeight);\n\t\t}\n\t},\n\tgetItemMaxHeight: function()\n\t{\n\t\tvar max = 0;\n\t\tthis.$tabs.each(function()\n\t\t{\n\t\t\tvar h = $(this).height();\n\t\t\tmax = h > max ? h : max;\n\t\t});\n\n\t\treturn max;\n\t}\n };\n\n // Inheritance\n Kube.Tabs.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Tabs');\n Kube.Plugin.autoload('Tabs');\n\n}(Kube));\n/**\n * @library Kube Modal\n * @author Imperavi LLC\n * @license MIT\n */\n(function($)\n{\n $.modalcurrent = null;\n\t$.modalwindow = function(options)\n\t{\n\tvar opts = $.extend({}, options, { show: true });\n\tvar $element = $('
');\n\n\t$element.modal(opts);\n\t};\n\n})(jQuery);\n\n(function(Kube)\n{\n Kube.Modal = function(element, options)\n {\n this.namespace = 'modal';\n this.defaults = {\n target: null,\n show: false,\n\t\turl: false,\n\t\theader: false,\n\t\twidth: '600px', // string\n\t\theight: false, // or string\n\t\tmaxHeight: false,\n\t\tposition: 'center', // top or center\n\t\toverlay: true,\n\t\tappendForms: false,\n\t\tappendFields: false,\n\t\tanimationOpen: 'show',\n\t\tanimationClose: 'hide',\n\t\tcallbacks: ['open', 'opened', 'close', 'closed']\n };\n\n // Parent Constructor\n Kube.apply(this, arguments);\n\n // Services\n this.utils = new Kube.Utils();\n this.detect = new Kube.Detect();\n\n // Initialization\n this.start();\n };\n\n // Functionality\n Kube.Modal.prototype = {\n start: function()\n {\n if (!this.hasTarget())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n if (this.opts.show) this.load();\n\t\telse this.$element.on('click.' + this.namespace, $.proxy(this.load, this));\n\t},\n\tbuildModal: function()\n\t{\n\t\tthis.$modal = this.$target.find('.modal');\n\t\tthis.$header = this.$target.find('.modal-header');\n\t\tthis.$close = this.$target.find('.close');\n\t\tthis.$body = this.$target.find('.modal-body');\n\t},\n\tbuildOverlay: function()\n\t{\n\t\tif (this.opts.overlay === false)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif ($('#modal-overlay').length !== 0)\n\t\t{\n\t\t\tthis.$overlay = $('#modal-overlay');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.$overlay = $('
').addClass('hide');\n\t\t\t$('body').prepend(this.$overlay);\n\t\t}\n\n\t\tthis.$overlay.addClass('overlay');\n\t},\n\tbuildHeader: function()\n\t{\n\t\tif (this.opts.header) this.$header.html(this.opts.header);\n\t},\n\tload: function(e)\n\t{\n\t\tthis.buildModal();\n\t\tthis.buildOverlay();\n\t\tthis.buildHeader();\n\n if (this.opts.url) this.buildContent();\n else this.open(e);\n\t},\n\topen: function(e)\n\t{\n\t\tif (e) e.preventDefault();\n\n if (this.isOpened())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.detect.isMobile()) this.opts.width = '96%';\n\t\tif (this.opts.overlay) this.$overlay.removeClass('hide');\n\n\t\tthis.$target.removeClass('hide');\n\t\tthis.$modal.removeClass('hide');\n\n this.enableEvents();\n\t\tthis.findActions();\n\n\t\tthis.resize();\n\t\t$(window).on('resize.' + this.namespace, $.proxy(this.resize, this));\n\n\t\tif (this.detect.isDesktop()) this.utils.disableBodyScroll();\n\n\t\t// enter\n\t\tthis.$modal.find('input[type=text],input[type=url],input[type=email]').on('keydown.' + this.namespace, $.proxy(this.handleEnter, this));\n\n\t\tthis.callback('open');\n\t\tthis.$modal.animation(this.opts.animationOpen, $.proxy(this.onOpened, this));\n },\n close: function(e)\n {\n if (!this.$modal || !this.isOpened())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (e)\n\t\t{\n\t\t\tif (this.shouldNotBeClosed(e.target))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tthis.callback('close');\n\t\tthis.disableEvents();\n\n\t\tthis.$modal.animation(this.opts.animationClose, $.proxy(this.onClosed, this));\n\n if (this.opts.overlay) this.$overlay.animation(this.opts.animationClose);\n },\n\tonOpened: function()\n\t{\n\t\tthis.$modal.addClass('open');\n this.callback('opened');\n\n $.modalcurrent = this;\n\t},\n\tonClosed: function()\n\t{\n\t\tthis.callback('closed');\n\n this.$target.addClass('hide');\n this.$modal.removeClass('open');\n\n\t\tif (this.detect.isDesktop()) this.utils.enableBodyScroll();\n\n\t\tthis.$body.css('height', '');\n $.modalcurrent = null;\n\t},\n\tisOpened: function()\n\t{\n\t\treturn (this.$modal.hasClass('open'));\n\t},\n\tgetData: function()\n\t{\n var formdata = new Kube.FormData(this);\n formdata.set('');\n\n return formdata.get();\n\t},\n\tbuildContent: function()\n\t{\n\t\t$.ajax({\n\t\t\turl: this.opts.url + '?' + new Date().getTime(),\n\t\t\tcache: false,\n\t\t\ttype: 'post',\n\t\t\tdata: this.getData(),\n\t\t\tsuccess: $.proxy(function(data)\n\t\t\t{\n\t\t\t\tthis.$body.html(data);\n\t\t\t\tthis.open();\n\n\t\t\t}, this)\n\t\t});\n\t},\n\tbuildWidth: function()\n\t{\n\t\tvar width = this.opts.width;\n\t\tvar top = '2%';\n\t\tvar bottom = '2%';\n\t\tvar percent = width.match(/%$/);\n\n\t\tif ((parseInt(this.opts.width) > $(window).width()) && !percent)\n\t\t{\n width = '96%';\n\t\t}\n\t\telse if (!percent)\n\t\t{\n top = '16px';\n bottom = '16px';\n\t\t}\n\n\t\tthis.$modal.css({ 'width': width, 'margin-top': top, 'margin-bottom': bottom });\n\n\t},\n\tbuildPosition: function()\n\t{\n\t\tif (this.opts.position !== 'center')\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar windowHeight = $(window).height();\n\t\tvar height = this.$modal.outerHeight();\n\t\tvar top = (windowHeight/2 - height/2) + 'px';\n\n\t\tif (this.detect.isMobile()) top = '2%';\n\t\telse if (height > windowHeight) top = '16px';\n\n\t\tthis.$modal.css('margin-top', top);\n\t},\n\tbuildHeight: function()\n\t{\n\t\tvar windowHeight = $(window).height();\n\n\t\tif (this.opts.maxHeight)\n\t\t{\n\t\t\tvar padding = parseInt(this.$body.css('padding-top')) + parseInt(this.$body.css('padding-bottom'));\n\t\t\tvar margin = parseInt(this.$modal.css('margin-top')) + parseInt(this.$modal.css('margin-bottom'));\n\t\t\tvar height = windowHeight - this.$header.innerHeight() - padding - margin;\n\n\t\t\tthis.$body.height(height);\n\t\t}\n\t\telse if (this.opts.height !== false)\n\t\t{\n\t\t\tthis.$body.css('height', this.opts.height);\n\t\t}\n\n\t\tvar modalHeight = this.$modal.outerHeight();\n\t\tif (modalHeight > windowHeight)\n\t\t{\n\t\t\tthis.opts.animationOpen = 'show';\n\t\t\tthis.opts.animationClose = 'hide';\n\t\t}\n\t},\n\tresize: function()\n\t{\n\t\tthis.buildWidth();\n\t\tthis.buildPosition();\n\t\tthis.buildHeight();\n\t},\n\tenableEvents: function()\n\t{\n\t\tthis.$close.on('click.' + this.namespace, $.proxy(this.close, this));\n\t\t$(document).on('keyup.' + this.namespace, $.proxy(this.handleEscape, this));\n\t\tthis.$target.on('click.' + this.namespace, $.proxy(this.close, this));\n\t},\n\tdisableEvents: function()\n\t{\n\t\tthis.$close.off('.' + this.namespace);\n\t\t$(document).off('.' + this.namespace);\n\t\tthis.$target.off('.' + this.namespace);\n\t\t$(window).off('.' + this.namespace);\n\t},\n\tfindActions: function()\n\t{\n\t\tthis.$body.find('[data-action=\"modal-close\"]').on('mousedown.' + this.namespace, $.proxy(this.close, this));\n\t},\n\tsetHeader: function(header)\n\t{\n\t\tthis.$header.html(header);\n\t},\n\tsetContent: function(content)\n\t{\n\t\tthis.$body.html(content);\n\t},\n\tsetWidth: function(width)\n\t{\n\t\tthis.opts.width = width;\n\t\tthis.resize();\n\t},\n\tgetModal: function()\n\t{\n return this.$modal;\n\t},\n\tgetBody: function()\n\t{\n return this.$body;\n\t},\n\tgetHeader: function()\n\t{\n return this.$header;\n\t},\n\thandleEnter: function(e)\n\t{\n\t\tif (e.which === 13)\n\t\t{\n\t\te.preventDefault();\n\t\tthis.close(false);\n }\n\t},\n\thandleEscape: function(e)\n\t{\n\t\treturn (e.which === 27) ? this.close(false) : true;\n\t},\n\tshouldNotBeClosed: function(el)\n\t{\n if ($(el).attr('data-action') === 'modal-close' || el === this.$close[0])\n {\n return false;\n\t\t}\n\t\telse if ($(el).closest('.modal').length === 0)\n\t\t{\n\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n };\n\n // Inheritance\n Kube.Modal.inherits(Kube);\n\n // Plugin\n Kube.Plugin.create('Modal');\n Kube.Plugin.autoload('Modal');\n\n}(Kube));","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _computedStyles = require('computed-styles');\n\nvar _computedStyles2 = _interopRequireDefault(_computedStyles);\n\nvar _fileSaver = require('file-saver');\n\nvar _fileSaver2 = _interopRequireDefault(_fileSaver);\n\nvar svgStyles = { // Whitelist of CSS styles and default values\n 'alignment-baseline': 'auto',\n 'baseline-shift': 'baseline',\n 'clip': 'auto',\n 'clip-path': 'none',\n 'clip-rule': 'nonzero',\n 'color': 'rgb(51, 51, 51)',\n 'color-interpolation': 'srgb',\n 'color-interpolation-filters': 'linearrgb',\n 'color-profile': 'auto',\n 'color-rendering': 'auto',\n 'cursor': 'auto',\n 'direction': 'ltr',\n 'display': 'inline',\n 'dominant-baseline': 'auto',\n 'enable-background': '',\n 'fill': 'rgb(0, 0, 0)',\n 'fill-opacity': '1',\n 'fill-rule': 'nonzero',\n 'filter': 'none',\n 'flood-color': 'rgb(0, 0, 0)',\n 'flood-opacity': '1',\n 'font': '',\n 'font-family': 'normal',\n 'font-size': 'medium',\n 'font-size-adjust': 'auto',\n 'font-stretch': 'normal',\n 'font-style': 'normal',\n 'font-variant': 'normal',\n 'font-weight': '400',\n 'glyph-orientation-horizontal': '0deg',\n 'glyph-orientation-vertical': 'auto',\n 'image-rendering': 'auto',\n 'kerning': 'auto',\n 'letter-spacing': '0',\n 'lighting-color': 'rgb(255, 255, 255)',\n 'marker': '',\n 'marker-end': 'none',\n 'marker-mid': 'none',\n 'marker-start': 'none',\n 'mask': 'none',\n 'opacity': '1',\n 'overflow': 'visible',\n 'paint-order': 'fill',\n 'pointer-events': 'auto',\n 'shape-rendering': 'auto',\n 'stop-color': 'rgb(0, 0, 0)',\n 'stop-opacity': '1',\n 'stroke': 'none',\n 'stroke-dasharray': 'none',\n 'stroke-dashoffset': '0',\n 'stroke-linecap': 'butt',\n 'stroke-linejoin': 'miter',\n 'stroke-miterlimit': '4',\n 'stroke-opacity': '1',\n 'stroke-width': '1',\n 'text-anchor': 'start',\n 'text-decoration': 'none',\n 'text-rendering': 'auto',\n 'unicode-bidi': 'normal',\n 'visibility': 'visible',\n 'word-spacing': '0px',\n 'writing-mode': 'lr-tb'\n};\n\nvar svgAttrs = [// white list of attributes\n'id', 'xml: base', 'xml: lang', 'xml: space', // Core\n'height', 'result', 'width', 'x', 'y', // Primitive\n'xlink: href', // Xlink attribute\n'href', 'style', 'class', 'd', 'pathLength', // Path\n'x', 'y', 'dx', 'dy', 'glyphRef', 'format', 'x1', 'y1', 'x2', 'y2', 'rotate', 'textLength', 'cx', 'cy', 'r', 'rx', 'ry', 'fx', 'fy', 'width', 'height', 'refX', 'refY', 'orient', 'markerUnits', 'markerWidth', 'markerHeight', 'maskUnits', 'transform', 'viewBox', 'version', // Container\n'preserveAspectRatio', 'xmlns', 'points', // Polygons\n'offset', 'xlink:href'];\n\n// http://www.w3.org/TR/SVG/propidx.html\n// via https://github.com/svg/svgo/blob/master/plugins/_collections.js\nvar inheritableAttrs = ['clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'transform', 'visibility', 'white-space', 'word-spacing', 'writing-mode'];\n\n/* Some simple utilities */\n\nvar isFunction = function isFunction(a) {\n return typeof a === 'function';\n};\nvar isDefined = function isDefined(a) {\n return typeof a !== 'undefined';\n};\nvar isUndefined = function isUndefined(a) {\n return typeof a === 'undefined';\n};\nvar isObject = function isObject(a) {\n return a !== null && typeof a === 'object';\n};\n\n// from https://github.com/npm-dom/is-dom/blob/master/index.js\nfunction isNode(val) {\n if (!isObject(val)) {\n return false;\n }\n if (isDefined(window) && isObject(window.Node)) {\n return val instanceof window.Node;\n }\n return typeof val.nodeType === 'number' && typeof val.nodeName === 'string';\n}\n\n/* Some utilities for cloning SVGs with inline styles */\n// Removes attributes that are not valid for SVGs\nfunction cleanAttrs(el, attrs, styles) {\n // attrs === false - remove all, attrs === true - allow all\n if (attrs === true) {\n return;\n }\n\n Array.prototype.slice.call(el.attributes).forEach(function (attr) {\n // remove if it is not style nor on attrs whitelist\n // keeping attributes that are also styles because attributes override\n if (attr.specified) {\n if (attrs === '' || attrs === false || isUndefined(styles[attr.name]) && attrs.indexOf(attr.name) < 0) {\n el.removeAttribute(attr.name);\n }\n }\n });\n}\n\nfunction cleanStyle(tgt, parentStyles) {\n parentStyles = parentStyles || tgt.parentNode.style;\n inheritableAttrs.forEach(function (key) {\n if (tgt.style[key] === parentStyles[key]) {\n tgt.style.removeProperty(key);\n }\n });\n}\n\nfunction domWalk(src, tgt, down, up) {\n down(src, tgt);\n var children = src.childNodes;\n for (var i = 0; i < children.length; i++) {\n domWalk(children[i], tgt.childNodes[i], down, up);\n }\n up(src, tgt);\n}\n\n// Clones an SVGElement, copies approprate atttributes and styles.\nfunction cloneSvg(src, attrs, styles) {\n var clonedSvg = src.cloneNode(true);\n\n domWalk(src, clonedSvg, function (src, tgt) {\n if (tgt.style) {\n (0, _computedStyles2['default'])(src, tgt.style, styles);\n }\n }, function (src, tgt) {\n if (tgt.style && tgt.parentNode) {\n cleanStyle(tgt);\n }\n if (tgt.attributes) {\n cleanAttrs(tgt, attrs, styles);\n }\n });\n\n return clonedSvg;\n}\n\n/* global Image, MouseEvent */\n\n/* Some simple utilities for saving SVGs, including an alternative to saveAs */\n\n// detection\nvar DownloadAttributeSupport = typeof document !== 'undefined' && 'download' in document.createElement('a') && typeof MouseEvent === 'function';\n\nfunction saveUri(uri, name) {\n if (DownloadAttributeSupport) {\n var dl = document.createElement('a');\n dl.setAttribute('href', uri);\n dl.setAttribute('download', name);\n // firefox doesn't support `.click()`...\n // from https://github.com/sindresorhus/multi-download/blob/gh-pages/index.js\n dl.dispatchEvent(new MouseEvent('click'));\n return true;\n } else if (typeof window !== 'undefined') {\n window.open(uri, '_blank', '');\n return true;\n }\n\n return false;\n}\n\nfunction createCanvas(uri, name, cb) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n var image = new Image();\n image.onload = function () {\n canvas.width = image.width;\n canvas.height = image.height;\n context.drawImage(image, 0, 0);\n\n cb(canvas);\n };\n image.src = uri;\n return true;\n}\n\nfunction savePng(uri, name) {\n return createCanvas(uri, name, function (canvas) {\n if (isDefined(canvas.toBlob)) {\n canvas.toBlob(function (blob) {\n _fileSaver2['default'].saveAs(blob, name);\n });\n } else {\n saveUri(canvas.toDataURL('image/png'), name);\n }\n });\n}\n\n/* global Blob */\n\nvar isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n\n// inheritable styles may be overridden by parent, always copy for now\ninheritableAttrs.forEach(function (k) {\n if (k in svgStyles) {\n svgStyles[k] = true;\n }\n});\n\nvar SvgSaver = (function () {\n _createClass(SvgSaver, null, [{\n key: 'getSvg',\n value: function getSvg(el) {\n if (isUndefined(el) || el === '') {\n el = document.body.querySelector('svg');\n } else if (typeof el === 'string') {\n el = document.body.querySelector(el);\n }\n if (el && el.tagName !== 'svg') {\n el = el.querySelector('svg');\n }\n if (!isNode(el)) {\n throw new Error('svgsaver: Can\\'t find an svg element');\n }\n return el;\n }\n }, {\n key: 'getFilename',\n value: function getFilename(el, filename, ext) {\n if (!filename || filename === '') {\n filename = (el.getAttribute('title') || 'untitled') + '.' + ext;\n }\n return encodeURI(filename);\n }\n\n /**\n * SvgSaver constructor.\n * @constructs SvgSaver\n * @api public\n *\n * @example\n * var svgsaver = new SvgSaver(); // creates a new instance\n * var svg = document.querySelector('#mysvg'); // find the SVG element\n * svgsaver.asSvg(svg); // save as SVG\n */\n }]);\n\n function SvgSaver() {\n var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var attrs = _ref.attrs;\n var styles = _ref.styles;\n\n _classCallCheck(this, SvgSaver);\n\n this.attrs = attrs === undefined ? svgAttrs : attrs;\n this.styles = styles === undefined ? svgStyles : styles;\n }\n\n /**\n * Return the cloned SVG after cleaning\n *\n * @param {SVGElement} el The element to copy.\n * @returns {SVGElement} SVG text after cleaning\n * @api public\n */\n\n _createClass(SvgSaver, [{\n key: 'cloneSVG',\n value: function cloneSVG(el) {\n el = SvgSaver.getSvg(el);\n var svg = cloneSvg(el, this.attrs, this.styles);\n\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n svg.setAttribute('version', 1.1);\n\n // height and width needed to download in FireFox\n svg.setAttribute('width', svg.getAttribute('width') || '500');\n svg.setAttribute('height', svg.getAttribute('height') || '900');\n\n return svg;\n }\n\n /**\n * Return the SVG HTML text after cleaning\n *\n * @param {SVGElement} el The element to copy.\n * @returns {String} SVG text after cleaning\n * @api public\n */\n }, {\n key: 'getHTML',\n value: function getHTML(el) {\n var svg = this.cloneSVG(el);\n\n var html = svg.outerHTML;\n if (html) {\n return html;\n }\n\n // see http://stackoverflow.com/questions/19610089/unwanted-namespaces-on-svg-markup-when-using-xmlserializer-in-javascript-with-ie\n svg.removeAttribute('xmlns');\n svg.removeAttribute('xmlns:xlink');\n\n svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n return new window.XMLSerializer().serializeToString(svg);\n }\n\n /**\n * Return the SVG, after cleaning, as a text/xml Blob\n *\n * @param {SVGElement} el The element to copy.\n * @returns {Blog} SVG as a text/xml Blob\n * @api public\n */\n }, {\n key: 'getBlob',\n value: function getBlob(el) {\n var html = this.getHTML(el);\n return new Blob([html], { type: 'text/xml' });\n }\n\n /**\n * Return the SVG, after cleaning, as a image/svg+xml;base64 URI encoded string\n *\n * @param {SVGElement} el The element to copy.\n * @returns {String} SVG as image/svg+xml;base64 URI encoded string\n * @api public\n */\n }, {\n key: 'getUri',\n value: function getUri(el) {\n var html = encodeURIComponent(this.getHTML(el));\n if (isDefined(window.btoa)) {\n // see http://stackoverflow.com/questions/23223718/failed-to-execute-btoa-on-window-the-string-to-be-encoded-contains-characte\n return 'data:image/svg+xml;base64,' + window.btoa(unescape(html));\n }\n return 'data:image/svg+xml,' + html;\n }\n\n /**\n * Saves the SVG as a SVG file using method compatible with the browser\n *\n * @param {SVGElement} el The element to copy.\n * @param {string} [filename] The filename to save, defaults to the SVG title or 'untitled.svg'\n * @returns {SvgSaver} The SvgSaver instance\n * @api public\n */\n }, {\n key: 'asSvg',\n value: function asSvg(el, filename) {\n el = SvgSaver.getSvg(el);\n filename = SvgSaver.getFilename(el, filename, 'svg');\n if (isFunction(Blob)) {\n return _fileSaver2['default'].saveAs(this.getBlob(el), filename);\n }\n return saveUri(this.getUri(el), filename);\n }\n\n /**\n * Gets the SVG as a PNG data URI.\n *\n * @param {SVGElement} el The element to copy.\n * @param {Function} cb Call back called with the PNG data uri.\n * @api public\n */\n }, {\n key: 'getPngUri',\n value: function getPngUri(el, cb) {\n if (isIE11) {\n console.error('svgsaver: getPngUri not supported on IE11');\n }\n el = SvgSaver.getSvg(el);\n var filename = SvgSaver.getFilename(el, null, 'png');\n return createCanvas(this.getUri(el), filename, function (canvas) {\n cb(canvas.toDataURL('image/png'));\n });\n }\n\n /**\n * Saves the SVG as a PNG file using method compatible with the browser\n *\n * @param {SVGElement} el The element to copy.\n * @param {string} [filename] The filename to save, defaults to the SVG title or 'untitled.png'\n * @returns {SvgSaver} The SvgSaver instance\n * @api public\n */\n }, {\n key: 'asPng',\n value: function asPng(el, filename) {\n if (isIE11) {\n console.error('svgsaver: asPng not supported on IE11');\n }\n el = SvgSaver.getSvg(el);\n filename = SvgSaver.getFilename(el, filename, 'png');\n return savePng(this.getUri(el), filename);\n }\n }]);\n\n return SvgSaver;\n})();\n\nexports['default'] = SvgSaver;\nmodule.exports = exports['default'];\n","import AugurCards from './components/AugurCards'\nimport GrowthMaturityDeclineCard from './components/GrowthMaturityDeclineCard'\nimport ExperimentalCard from './components/ExperimentalCard'\nimport VueRouter from 'vue-router'\nimport Vue from 'vue'\n\nVue.use(VueRouter)\n \n\n\nexport default new VueRouter({\n routes: [\n {path: '/', component: Vue.component('augur-cards',require('./components/AugurCards'))},\n // {path: '/gmd', component: GrowthMaturityDeclineCard},\n // {path: '/exp', component: ExperimentalCard}\n ]\n})\n","import Vue from 'vue'\nimport Router from 'vue-router'\nimport MetricsStatusCard from '../components/MetricsStatusCard.vue'\nimport BaseRepoActivityCard from '../components/BaseRepoActivityCard.vue'\nimport BaseRepoEcosystemCard from '../components/BaseRepoEcosystemCard.vue'\nimport GrowthMaturityDeclineCard from '../components/GrowthMaturityDeclineCard'\nimport RiskCard from '../components/RiskCard'\nimport ValueCard from '../components/ValueCard'\nimport DiversityInclusionCard from '../components/DiversityInclusionCard'\nimport GitCard from '../components/GitCard'\nimport OverviewCard from '../components/OverviewCard.vue'\nimport ExperimentalCard from '../components/ExperimentalCard'\nimport DownloadedReposCard from '../components/DownloadedReposCard.vue'\nimport LoginForm from '../components/LoginForm'\nimport AugurCards from '../components/AugurCards.vue'\nimport MainControls from '../components/MainControls.vue'\nimport AugurHeader from '../components/AugurHeader.vue'\nimport Tabs from '../components/Tabs.vue'\nimport TableView from '../components/TableView.vue'\n\nlet routes = [\n {path: '/', component: AugurCards,\n children: [\n {\n path: \"\",\n name: \"reposcard\",\n components: {\n header: AugurHeader,\n content: DownloadedReposCard\n }\n },\n ]\n },\n {path: '/login', component: LoginForm},\n {path: '/metrics_status', \n components: {\n header: AugurHeader,\n content: MainControls\n }\n }, \n {path: '/single/:owner?/:repo', name: 'single', props: true, canReuse: false, component: AugurCards,\n children: [\n {\n path: \"gmd\",\n name: \"gmd\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: GrowthMaturityDeclineCard\n }\n },\n {\n path: \"diversityinclusion\",\n name: \"diversityinclusion\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: DiversityInclusionCard\n }\n },\n {\n path: \"risk\",\n name: \"risk\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: RiskCard\n }\n },\n {\n path: \"activity\",\n name: \"activity\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: BaseRepoActivityCard\n }\n },\n {\n path: \"value\",\n name: \"value\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: ValueCard\n }\n },\n {\n path: \"experimental\",\n name: \"experimental\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: ExperimentalCard\n }\n },\n {\n path: \"git\",\n name: \"git\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: GitCard\n }\n },\n {\n path: \"overview\",\n name: \"overview\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: OverviewCard\n }\n },\n ]\n },\n // {path: '/:tab/:domain/:owner/:repo/comparedto/:comparedowner/:comparedrepo', component: AugurCards, name: 'gitsinglecompare'},\n {path: '/compare/:owner?/:repo/comparedto/:comparedowner/:comparedrepo', component: AugurCards, name: 'singlecompare', props: true, canReuse: false,\n children: [\n {\n path: \"gmd\",\n name: \"gmdcompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: GrowthMaturityDeclineCard\n }\n },\n {\n path: \"diversityinclusion\",\n name: \"diversityinclusioncompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: DiversityInclusionCard\n }\n },\n {\n path: \"risk\",\n name: \"riskcompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: RiskCard\n }\n },\n {\n path: \"value\",\n name: \"valuecompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: ValueCard\n }\n },\n {\n path: \"activity\",\n name: \"activitycompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: BaseRepoActivityCard\n }\n },\n {\n path: \"experimental\",\n name: \"experimentalcompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: ExperimentalCard\n }\n },\n {\n path: \"git\",\n name: \"gitcompare\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: GitCard\n }\n },\n ]\n },\n {path: '/groupcompare/:groupid', component: AugurCards, name: 'group', props: true, canReuse: false,\n children: [\n {\n path: \"gmd\",\n name: \"gmdgroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: GrowthMaturityDeclineCard\n }\n },\n {\n path: \"diversityinclusion\",\n name: \"diversityinclusiongroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: DiversityInclusionCard\n }\n },\n {\n path: \"risk\",\n name: \"riskgroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: RiskCard\n }\n },\n {\n path: \"value\",\n name: \"valuegroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: ValueCard\n }\n },\n {\n path: \"activity\",\n name: \"activitygroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: BaseRepoActivityCard\n }\n },\n {\n path: \"experimental\",\n name: \"experimentalgroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: ExperimentalCard\n }\n },\n {\n path: \"git\",\n name: \"gitgroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: GitCard\n }\n },\n {\n path: \"overview\",\n name: \"overviewgroup\",\n components: {\n header: AugurHeader,\n tabs: Tabs,\n controls: MainControls,\n content: OverviewCard\n }\n },\n ]\n },\n]\nlet downloadedRepos = [], repos = [], projects = []\nwindow.AugurAPI.getDownloadedGitRepos().then((data) => {\n\n repos = window._.groupBy(data, 'project_name')\n projects = Object.keys(repos)\n\n})\n// const routes = routerOptions.map(route => {\n// // let route1 = Object.assign({}, route);\n// return {\n// route,\n// component: () => require(`@/components/${route.component}.vue`)\n// }\n// })\n\n\nexport default new Router({\n // routes,\n routes,\n mode: 'history',\n hashbang: false\n})"]}
\ No newline at end of file
diff --git a/frontend/public/docs/_modules/augur/application.html b/frontend/public/docs/_modules/augur/application.html
index fa689dc217..43c3dfe56b 100644
--- a/frontend/public/docs/_modules/augur/application.html
+++ b/frontend/public/docs/_modules/augur/application.html
@@ -360,6 +360,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/augurplugin.html b/frontend/public/docs/_modules/augur/augurplugin.html
index c04a02fff4..e6626657e7 100644
--- a/frontend/public/docs/_modules/augur/augurplugin.html
+++ b/frontend/public/docs/_modules/augur/augurplugin.html
@@ -74,6 +74,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/datasources/downloads/downloads.html b/frontend/public/docs/_modules/augur/datasources/downloads/downloads.html
index 477b81a730..bd25a94df8 100644
--- a/frontend/public/docs/_modules/augur/datasources/downloads/downloads.html
+++ b/frontend/public/docs/_modules/augur/datasources/downloads/downloads.html
@@ -158,6 +158,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/datasources/facade/facade.html b/frontend/public/docs/_modules/augur/datasources/facade/facade.html
index e313c995c0..a5b4f1a49e 100644
--- a/frontend/public/docs/_modules/augur/datasources/facade/facade.html
+++ b/frontend/public/docs/_modules/augur/datasources/facade/facade.html
@@ -178,6 +178,93 @@
Source code for augur.datasources.facade.facade <
ORDER BY YEAR, WEEK, email ASC
""" )
results = pd . read_sql ( commitsByMonthSQL , self . db , params = { "repourl" : '% {} %' . format ( repo_url )})
+ return results
+ @annotate ( tag = 'top-new-repos-this-year-commits' )
+ def top_new_repos_this_year_commits ( self , repo_url ):
+ """
+ Returns top new repos this year by commits
+ :param limit: number of repos the user wishes to display
+ """
+
+ topNewReposCommits = s . sql . text ( """
+ SELECT repos_id, sum(cast(repo_annual_cache.added as signed) - cast(removed as signed) - cast(whitespace as signed)) as net, patches, projects.name
+ FROM repo_annual_cache, projects, repos
+ where projects.name = (SELECT projects.name FROM repos, projects
+ WHERE git LIKE :repourl
+ and repos.projects_id = projects.id
+ and YEAR(repos.added) = YEAR(CURDATE())
+ LIMIT 1)
+ and repo_annual_cache.repos_id = repos.id
+ and repos.projects_id = projects.id
+ group by repos_id
+ ORDER BY net desc
+ LIMIT 10
+ """ )
+ results = pd . read_sql ( topNewReposCommits , self . db , params = { "repourl" : '% {} %' . format ( repo_url )})
+ return results
+ @annotate ( tag = 'top-new-repos-this-year-lines-of-code' )
+ def top_new_repos_this_year_lines_of_code ( self , repo_url ):
+ """
+ Returns top new repos this year by lines of code
+ :param limit: number of repos the user wishes to display
+ """
+ topNewReposLines = s . sql . text ( """
+ SELECT repos_id, sum(cast(repo_annual_cache.added as signed) - cast(removed as signed) - cast(whitespace as signed)) as net, patches, projects.name
+ FROM repo_annual_cache, projects, repos
+ where projects.name = (SELECT projects.name FROM repos, projects
+ WHERE git LIKE :repourl
+ and YEAR(repos.added) = YEAR(CURDATE())
+ and repos.projects_id = projects.id
+ LIMIT 1)
+ and repo_annual_cache.repos_id = repos.id
+ and repos.projects_id = projects.id
+ group by repos_id
+ ORDER BY net desc
+ LIMIT 10
+ """ )
+ results = pd . read_sql ( topNewReposLines , self . db , params = { "repourl" : '% {} %' . format ( repo_url )})
+ return results
+ @annotate ( tag = 'top-repos-all-time-commits' )
+ def top_repos_all_time_commits ( self , repo_url ):
+ """
+ Returns top new repos of all time by commits
+ :param limit: number of repos the user wishes to display
+ """
+ topNewReposCommitsAllTime = s . sql . text ( """
+ SELECT repos_id, repos.name as name, sum(cast(repo_annual_cache.added as signed) - cast(removed as signed) - cast(whitespace as signed)) as net, patches
+ FROM repo_annual_cache, projects, repos
+ where projects.name = (SELECT projects.name FROM repos, projects
+ WHERE git LIKE :repourl
+ and repos.projects_id = projects.id
+ LIMIT 1)
+ and repo_annual_cache.repos_id = repos.id
+ and repos.projects_id = projects.id
+ group by repos_id
+ ORDER BY net desc
+ LIMIT 10
+ """ )
+ results = pd . read_sql ( topNewReposCommitsAllTime , self . db , params = { "repourl" : '% {} %' . format ( repo_url )})
+ return results
+ @annotate ( tag = 'top-repos-all-time-lines-of-code' )
+ def top_repos_all_time_lines_of_code ( self , repo_url ):
+ """
+ Returns top new repos of all time by lines of code
+ :param limit: number of repos the user wishes to display
+ """
+ topNewReposLinesAllTime = s . sql . text ( """
+ SELECT repos_id, repos.name as name, sum(cast(repo_annual_cache.added as signed) - cast(removed as signed) - cast(whitespace as signed)) as net, patches
+ FROM repo_annual_cache, projects, repos
+ where projects.name = (SELECT projects.name FROM repos, projects
+ WHERE git LIKE :repourl
+ and repos.projects_id = projects.id
+ LIMIT 1)
+ and repo_annual_cache.repos_id = repos.id
+ and repos.projects_id = projects.id
+ group by repos_id
+ ORDER BY net desc
+ LIMIT 10
+ """ )
+ results = pd . read_sql ( topNewReposLinesAllTime , self . db , params = { "repourl" : '% {} %' . format ( repo_url )})
return results
@@ -195,6 +282,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/datasources/ghtorrent/ghtorrent.html b/frontend/public/docs/_modules/augur/datasources/ghtorrent/ghtorrent.html
index 32ee1f76b0..221ebaca41 100644
--- a/frontend/public/docs/_modules/augur/datasources/ghtorrent/ghtorrent.html
+++ b/frontend/public/docs/_modules/augur/datasources/ghtorrent/ghtorrent.html
@@ -1095,6 +1095,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/datasources/githubapi/githubapi.html b/frontend/public/docs/_modules/augur/datasources/githubapi/githubapi.html
index fa6dba83f2..3f2b05f618 100644
--- a/frontend/public/docs/_modules/augur/datasources/githubapi/githubapi.html
+++ b/frontend/public/docs/_modules/augur/datasources/githubapi/githubapi.html
@@ -493,6 +493,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/datasources/librariesio/librariesio.html b/frontend/public/docs/_modules/augur/datasources/librariesio/librariesio.html
index 04c4f454d8..a3e3ff37e7 100644
--- a/frontend/public/docs/_modules/augur/datasources/librariesio/librariesio.html
+++ b/frontend/public/docs/_modules/augur/datasources/librariesio/librariesio.html
@@ -206,6 +206,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/datasources/localcsv/localcsv.html b/frontend/public/docs/_modules/augur/datasources/localcsv/localcsv.html
index 2e8d7d5045..1f57acd70e 100644
--- a/frontend/public/docs/_modules/augur/datasources/localcsv/localcsv.html
+++ b/frontend/public/docs/_modules/augur/datasources/localcsv/localcsv.html
@@ -96,6 +96,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/augur/server.html b/frontend/public/docs/_modules/augur/server.html
index 7dd9807cf3..09a802b4ff 100644
--- a/frontend/public/docs/_modules/augur/server.html
+++ b/frontend/public/docs/_modules/augur/server.html
@@ -422,6 +422,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_modules/index.html b/frontend/public/docs/_modules/index.html
index 6871b2b7a9..0eece3df96 100644
--- a/frontend/public/docs/_modules/index.html
+++ b/frontend/public/docs/_modules/index.html
@@ -58,6 +58,7 @@
Augur Python Library
Development Guide
Docker Installation
+
Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/_sources/dev-guide/2-install.rst.txt b/frontend/public/docs/_sources/dev-guide/2-install.rst.txt
index e0a56e15b5..a32809a2db 100644
--- a/frontend/public/docs/_sources/dev-guide/2-install.rst.txt
+++ b/frontend/public/docs/_sources/dev-guide/2-install.rst.txt
@@ -128,7 +128,7 @@ Clone the repo and install the libraries and tools needed by Augur
git checkout dev
# Install the Python and Node tools and libraries needed
- make install-dev-admin # some libraries require a root install.
+ sudo make install-dev # some libraries require a root install.
# Ignore node-pre-gyp install errors asking for cairo library or install cairo library. Augur works either way.
@@ -167,15 +167,3 @@ For local API testing, you will need a `Postman
`__
**You're ready to rock! To start both the frontend and backend, run:**
``make dev``
-
-
-2. Getting Started with Vagrant
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you've got trouble getting all the dependcies installed, don't want to mess with your system, or are working using an OS we don't currenly support, we provide an option to develop Augur using `Vagrant `__.
-
-Using Vagrant, you can set up a (relatively) lightweight headless Ubuntu 16.04 VM that comes with Augur and all its dependencies preinstalled. To get started, you'll need a VM provider (we currently only support `Virtualbox `__) and Vagrant installed on your local machine. To begin, simply clone the repository, enter the root directory, and type ``make vagrant``.
-
-The first time you run this command, Vagrant will need to download the box configuration, which shouldn't take too long. After that, it'll provision the machine and install Augur alongside all the required dependencies. Additionally, it'll create a lightweight version of both the `Facade `__ and `GHTorrent `__ datasets which we rely on for a lot of our metrics. Note: you'll probably see a fair bit of errors during this provisioning process as Augur is getting installed. Don't worry about them, most of them are harmless. Probably.
-
-After this process has completed, the VM should be up and running. You'll then but automatically logged in to your newly provisioned VM. Log in as ``root`` with ``sudo su -`` and then navigate to ``/vagrant/augur``. This folder is where you'll be working, as it's synced with your local installation of Augur, meaning you won't have to worry about losing your changes after you shutdown the VM. You'll also be able to use your preferred editor. After you're in this directory, you're ready to start developing! See the section above to make sure you have all the necessary API keys.
diff --git a/frontend/public/docs/_sources/dev-guide/3-backend.rst.txt b/frontend/public/docs/_sources/dev-guide/3-backend.rst.txt
index c3f6886aeb..0a74ea765b 100644
--- a/frontend/public/docs/_sources/dev-guide/3-backend.rst.txt
+++ b/frontend/public/docs/_sources/dev-guide/3-backend.rst.txt
@@ -7,10 +7,10 @@ Structure of the Backend
Augur utilizes a plugin architecture. Plugins can be found in two
directories: ``plugins/`` and ``datasources/``. ``plugins/`` is for
generic plugins, while ``datasources/`` is specifically for plugins that
-provide a new datsource, like ``ghtorrent`` or ``facade``.
+provide a new data source, like ``ghtorrent`` or ``facade``.
-Inside each plugin directory are 4 required files: ``__init__.py``
-``plugin_name.py`` ``routes.py`` ``test_plugin_name.py``
+Inside each plugin directory are 4 required files: ``__init__.py``,
+``plugin_name.py``, ``routes.py``, and ``test_plugin_name.py``.
We will go over these more in-depth in the following sections.
@@ -18,7 +18,7 @@ Setting up your environment
---------------------------
Before you begin, make sure to activate the augur Anaconda environment
-by running ``conda activate augur``. If this environment doesn't exist,
+by running ``conda activate augur`` if you're using one. If this environment doesn't exist,
try running ``make install-dev`` again and watch out for any errors.
Writing a Plugin
@@ -31,7 +31,7 @@ Setting up a plugin
~~~~~~~~~~~~~~~~~~~
``__init__.py`` contains the plugin class, any code that is needed to
-initialize the datasource, plugin metadata, and the code needed to
+initialize the datasource, as well as the plugin metadata and boilerplate needed to
register the plugin. ``__init__.py`` must also contain a
``create_routes`` function that takes in a ``flask_app``, which is
responsible for adding the plugin's data source routes to the API.
@@ -137,7 +137,7 @@ definition, call the ``@annotate`` decorator as follows:
.. code:: python
- @annotate(metric_name='hello-world')
+ @annotate(tag='hello-world')
def hello_world(self, owner, repo):
It is currently standard practice to pass in the ``tag``, which should
diff --git a/frontend/public/docs/_sources/index.rst.txt b/frontend/public/docs/_sources/index.rst.txt
index a2b546ebf9..d29216d883 100644
--- a/frontend/public/docs/_sources/index.rst.txt
+++ b/frontend/public/docs/_sources/index.rst.txt
@@ -15,9 +15,11 @@ Augur is a software suite that provides open source health and sustainability me
augurcontext
architecture
python
- dev-guide-toc
+ dev-guide-toc
docker-install
+ windows-install
+
deployment
ghtorrent-restore
use-cases-toc
diff --git a/frontend/public/docs/_sources/windows-install.rst.txt b/frontend/public/docs/_sources/windows-install.rst.txt
new file mode 100644
index 0000000000..7356401d9d
--- /dev/null
+++ b/frontend/public/docs/_sources/windows-install.rst.txt
@@ -0,0 +1,101 @@
+Windows Installation
+==========================
+
+We currently don't support local installation of Augur for Windows. However, we do provide a Vagrant box which can be used to spin up an Ubuntu VM with Augur pre-installed.
+
+Dependencies
+^^^^^^^^^^^^
+
+- `Git client `__
+- `Vagrant `__
+- `Virtualbox `__
+- `GitHub Access Token `__ (no
+ write access required)
+
+To get started, you’ll need a VM provider- we currently only support
+`Virtualbox `__. You’ll also need to
+install `Vagrant `__ and a Git client. To
+begin, clone the repository using your Git client, enter the root directory of the repo using Command Prompt, and run
+``vagrant up``.
+
+.. code:: bash
+
+ # on your local machine
+
+ # using your Git client:
+ git clone https://github.com/chaoss/augur.git
+
+ # using Command Prompt
+ cd augur
+ vagrant up
+ vagrant ssh
+
+The first time you run this command, Vagrant will need to download the
+base box configuration. After that, it will provision the VM and then
+install Augur and its dependencies. Note: you’ll probably see a fair bit
+of errors during this provisioning process as Augur is getting
+installed. Don’t worry about them, most of them are harmless.
+*Probably.*
+
+After this process has completed, the VM should be up and running. Log in to the VM ``vagrant ssh``. Log
+in as ``root`` with ``sudo su -`` and then navigate to
+``/vagrant/augur``. This folder is where you’ll be working, as it’s
+synced with your local version of Augur, meaning you won’t have to worry
+about losing your changes after you shutdown the VM. You’ll also be able
+to use your preferred editor. During the provisioning process, Augur
+will create a lightweight version of both the
+`Facade `__ and `GHTorrent `__
+datasets, both of which we rely on for a lot of our metrics. You’ll need
+to provide Augur with a `GitHub Access
+Token `__ (no write access
+required).
+
+.. code:: bash
+
+ # inside the vagrant VM
+ sudo su -
+ cd /vagrant/augur
+
+ # due to vagrant weirdness, we have to manually install the python packages
+ sudo $AUGUR_PIP install --upgrade .
+
+
+Augur will automatically create a config file called ``augur.config.json``. Add your GitHub API key to this file under the section ``GitHub``. At this point, you're ready to start developing!
+Run the backend with ``augur``, or the frontend and backend together with ``make dev``.
+
+.. code:: bash
+ make dev
+
+If you’re interested in adding a new plugin, data source, or metric,
+check out the `backend development
+guide `__.
+If new visualizations are more your speed, you’ll want the `frontend
+development
+guide `__.
+
+TL;DR
+'''''
+
+.. code:: bash
+
+ # on your local machine
+
+ # using your Git client:
+ git clone https://github.com/chaoss/augur.git
+
+ # using Command Prompt
+ cd augur
+ vagrant up
+ vagrant ssh
+
+ # inside the vagrant VM
+ sudo su -
+ cd /vagrant/augur
+
+ # due to vagrant weirdness, we have to manually install the python packages
+ sudo $AUGUR_PIP install --upgrade .
+
+ # add your GitHub personal access token to augur.config.json
+
+ make dev
+ # full steam ahead!
diff --git a/frontend/public/docs/application/augur.application.Application.html b/frontend/public/docs/application/augur.application.Application.html
index 328d7985ab..13210ac224 100644
--- a/frontend/public/docs/application/augur.application.Application.html
+++ b/frontend/public/docs/application/augur.application.Application.html
@@ -131,6 +131,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/application/augur.augurplugin.AugurPlugin.html b/frontend/public/docs/application/augur.augurplugin.AugurPlugin.html
index 21c6f8b41f..b536668445 100644
--- a/frontend/public/docs/application/augur.augurplugin.AugurPlugin.html
+++ b/frontend/public/docs/application/augur.augurplugin.AugurPlugin.html
@@ -83,6 +83,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/application/augur.runtime.html b/frontend/public/docs/application/augur.runtime.html
index 30665482a7..f39662c976 100644
--- a/frontend/public/docs/application/augur.runtime.html
+++ b/frontend/public/docs/application/augur.runtime.html
@@ -78,6 +78,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/application/augur.server.Server.html b/frontend/public/docs/application/augur.server.Server.html
index 9ee7ec437e..1e92d1bd46 100644
--- a/frontend/public/docs/application/augur.server.Server.html
+++ b/frontend/public/docs/application/augur.server.Server.html
@@ -95,6 +95,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/application/augur.util.html b/frontend/public/docs/application/augur.util.html
index c60fc83fb7..70e075c186 100644
--- a/frontend/public/docs/application/augur.util.html
+++ b/frontend/public/docs/application/augur.util.html
@@ -75,6 +75,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/architecture.html b/frontend/public/docs/architecture.html
index d91976d401..99417a4115 100644
--- a/frontend/public/docs/architecture.html
+++ b/frontend/public/docs/architecture.html
@@ -108,6 +108,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/augurcontext.html b/frontend/public/docs/augurcontext.html
index e5ce8bb160..b77f4f7ca8 100644
--- a/frontend/public/docs/augurcontext.html
+++ b/frontend/public/docs/augurcontext.html
@@ -110,6 +110,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/datasources/augur.datasources.downloads.downloads.Downloads.html b/frontend/public/docs/datasources/augur.datasources.downloads.downloads.Downloads.html
index 6d024d394b..a75412d069 100644
--- a/frontend/public/docs/datasources/augur.datasources.downloads.downloads.Downloads.html
+++ b/frontend/public/docs/datasources/augur.datasources.downloads.downloads.Downloads.html
@@ -86,6 +86,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/datasources/augur.datasources.facade.facade.Facade.html b/frontend/public/docs/datasources/augur.datasources.facade.facade.Facade.html
index b3197ca39b..7cb5ced889 100644
--- a/frontend/public/docs/datasources/augur.datasources.facade.facade.Facade.html
+++ b/frontend/public/docs/datasources/augur.datasources.facade.facade.Facade.html
@@ -97,6 +97,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/datasources/augur.datasources.ghtorrent.ghtorrent.GHTorrent.html b/frontend/public/docs/datasources/augur.datasources.ghtorrent.ghtorrent.GHTorrent.html
index f4eb397e6d..55b6d20f4f 100644
--- a/frontend/public/docs/datasources/augur.datasources.ghtorrent.ghtorrent.GHTorrent.html
+++ b/frontend/public/docs/datasources/augur.datasources.ghtorrent.ghtorrent.GHTorrent.html
@@ -178,6 +178,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/datasources/augur.datasources.githubapi.githubapi.GitHubAPI.html b/frontend/public/docs/datasources/augur.datasources.githubapi.githubapi.GitHubAPI.html
index 14b8921723..7b3a30b8b8 100644
--- a/frontend/public/docs/datasources/augur.datasources.githubapi.githubapi.GitHubAPI.html
+++ b/frontend/public/docs/datasources/augur.datasources.githubapi.githubapi.GitHubAPI.html
@@ -109,6 +109,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/datasources/augur.datasources.librariesio.librariesio.LibrariesIO.html b/frontend/public/docs/datasources/augur.datasources.librariesio.librariesio.LibrariesIO.html
index fd560956db..7f4a95b0d4 100644
--- a/frontend/public/docs/datasources/augur.datasources.librariesio.librariesio.LibrariesIO.html
+++ b/frontend/public/docs/datasources/augur.datasources.librariesio.librariesio.LibrariesIO.html
@@ -94,6 +94,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/datasources/augur.datasources.localcsv.localcsv.LocalCSV.html b/frontend/public/docs/datasources/augur.datasources.localcsv.localcsv.LocalCSV.html
index 4bb5f1cc7f..af43027c81 100644
--- a/frontend/public/docs/datasources/augur.datasources.localcsv.localcsv.LocalCSV.html
+++ b/frontend/public/docs/datasources/augur.datasources.localcsv.localcsv.LocalCSV.html
@@ -95,6 +95,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/deployment.html b/frontend/public/docs/deployment.html
index 191eb7294b..d7c538e0a6 100644
--- a/frontend/public/docs/deployment.html
+++ b/frontend/public/docs/deployment.html
@@ -17,7 +17,7 @@
-
+
@@ -104,6 +104,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
@@ -112,7 +113,7 @@
Related Topics
diff --git a/frontend/public/docs/dev-guide-toc.html b/frontend/public/docs/dev-guide-toc.html
index 3c5743a176..634f039dcb 100644
--- a/frontend/public/docs/dev-guide-toc.html
+++ b/frontend/public/docs/dev-guide-toc.html
@@ -90,6 +90,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/dev-guide/1-overview.html b/frontend/public/docs/dev-guide/1-overview.html
index 6da85daef7..2d375da2ad 100644
--- a/frontend/public/docs/dev-guide/1-overview.html
+++ b/frontend/public/docs/dev-guide/1-overview.html
@@ -208,6 +208,7 @@
Augur Python Library
Development Guide
Docker Installation
+Windows Installation
Deployment Guide
GHTorrent Restoration
Use Cases
diff --git a/frontend/public/docs/dev-guide/2-install.html b/frontend/public/docs/dev-guide/2-install.html
index e2fe8e97bb..cabb0cdd34 100644
--- a/frontend/public/docs/dev-guide/2-install.html
+++ b/frontend/public/docs/dev-guide/2-install.html
@@ -156,7 +156,7 @@ 2.3. Augur Installation Instructions
@@ -189,13 +189,6 @@