diff --git a/.gitignore b/.gitignore
index 5fc5ecc8b..e2fa9ac88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,9 +34,19 @@ packages/
#Ignore git-related files
*.orig
+.gitattributes
#Rider
.idea
#wwwroot
-wwwroot/
\ No newline at end of file
+wwwroot/
+
+#npm
+node_modules/
+.babelrc
+.stylelintrc.yml
+.eslintrc.yml
+
+#github
+.github/
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ClientApp/package-lock.json b/src/Flowsharp.Web.Components/ClientApp/package-lock.json
new file mode 100644
index 000000000..b02e9ea10
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/package-lock.json
@@ -0,0 +1,6725 @@
+{
+ "name": "flowsharp-components",
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@aspnet/signalr": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@aspnet/signalr/-/signalr-1.0.4.tgz",
+ "integrity": "sha512-q7HMlTZPkZCa/0UclsXvEyqNirpjRfRuwhjEeADD1i6pqe0Yx5OwuCO7+Xsc6MNKR8vE1C9MyxnSj0SecvUbTA=="
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.8.tgz",
+ "integrity": "sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.7.8",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
+ "@webassemblyjs/wast-parser": "1.7.8"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz",
+ "integrity": "sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz",
+ "integrity": "sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz",
+ "integrity": "sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz",
+ "integrity": "sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.7.8"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz",
+ "integrity": "sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz",
+ "integrity": "sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz",
+ "integrity": "sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz",
+ "integrity": "sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/helper-buffer": "1.7.8",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
+ "@webassemblyjs/wasm-gen": "1.7.8"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz",
+ "integrity": "sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.8.tgz",
+ "integrity": "sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.1"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.8.tgz",
+ "integrity": "sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz",
+ "integrity": "sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/helper-buffer": "1.7.8",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
+ "@webassemblyjs/helper-wasm-section": "1.7.8",
+ "@webassemblyjs/wasm-gen": "1.7.8",
+ "@webassemblyjs/wasm-opt": "1.7.8",
+ "@webassemblyjs/wasm-parser": "1.7.8",
+ "@webassemblyjs/wast-printer": "1.7.8"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz",
+ "integrity": "sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
+ "@webassemblyjs/ieee754": "1.7.8",
+ "@webassemblyjs/leb128": "1.7.8",
+ "@webassemblyjs/utf8": "1.7.8"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz",
+ "integrity": "sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/helper-buffer": "1.7.8",
+ "@webassemblyjs/wasm-gen": "1.7.8",
+ "@webassemblyjs/wasm-parser": "1.7.8"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz",
+ "integrity": "sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/helper-api-error": "1.7.8",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.8",
+ "@webassemblyjs/ieee754": "1.7.8",
+ "@webassemblyjs/leb128": "1.7.8",
+ "@webassemblyjs/utf8": "1.7.8"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz",
+ "integrity": "sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/floating-point-hex-parser": "1.7.8",
+ "@webassemblyjs/helper-api-error": "1.7.8",
+ "@webassemblyjs/helper-code-frame": "1.7.8",
+ "@webassemblyjs/helper-fsm": "1.7.8",
+ "@xtuc/long": "4.2.1"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz",
+ "integrity": "sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/wast-parser": "1.7.8",
+ "@xtuc/long": "4.2.1"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
+ "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
+ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.0"
+ }
+ },
+ "ajv": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
+ "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz",
+ "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
+ "dev": true
+ },
+ "ansi-colors": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.1.0.tgz",
+ "integrity": "sha512-hTv1qPdi+sVEk3jYsdjox5nQI0C9HTbjKShbCdYLKb1LOfNbb7wsF4d7OEKIZoxIHx02tSp3m94jcPW2EfMjmA==",
+ "dev": true
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
+ "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "aspnet-webpack": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/aspnet-webpack/-/aspnet-webpack-3.0.0.tgz",
+ "integrity": "sha512-umUYjAoWkszsH3GmN6BN9CR9QluhUBx/FH1bn72mC6/VcgeoC1uzlw/J2fi+HyiIuSQHfzNd1rx57GBc7hNqZg==",
+ "dev": true,
+ "requires": {
+ "connect": "^3.4.1",
+ "es6-promise": "^3.1.2",
+ "memory-fs": "^0.3.0",
+ "require-from-string": "^1.1.0",
+ "webpack-node-externals": "^1.4.3"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ }
+ }
+ },
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "babel-generator": "^6.26.0",
+ "babel-helpers": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-register": "^6.26.0",
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "convert-source-map": "^1.5.1",
+ "debug": "^2.6.9",
+ "json5": "^0.5.1",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.4",
+ "path-is-absolute": "^1.0.1",
+ "private": "^0.1.8",
+ "slash": "^1.0.0",
+ "source-map": "^0.5.7"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+ "dev": true,
+ "requires": {
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "detect-indent": "^4.0.0",
+ "jsesc": "^1.3.0",
+ "lodash": "^4.17.4",
+ "source-map": "^0.5.7",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-assignable-expression": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-builder-react-jsx": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
+ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "esutils": "^2.0.2"
+ }
+ },
+ "babel-helper-call-delegate": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
+ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-define-map": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
+ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-helper-explode-assignable-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
+ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+ "dev": true,
+ "requires": {
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-optimise-call-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
+ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-regex": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
+ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-helper-remap-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-replace-supers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
+ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
+ "dev": true,
+ "requires": {
+ "babel-helper-optimise-call-expression": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-loader": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz",
+ "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^1.0.0",
+ "loader-utils": "^1.0.2",
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-check-es2015-constants": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
+ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-syntax-async-functions": {
+ "version": "6.13.0",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
+ "dev": true
+ },
+ "babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.13.0",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
+ "dev": true
+ },
+ "babel-plugin-syntax-flow": {
+ "version": "6.18.0",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
+ "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=",
+ "dev": true
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
+ "dev": true
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
+ "dev": true
+ },
+ "babel-plugin-transform-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "^6.24.1",
+ "babel-plugin-syntax-async-functions": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoped-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoping": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
+ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-plugin-transform-es2015-classes": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-define-map": "^6.24.1",
+ "babel-helper-function-name": "^6.24.1",
+ "babel-helper-optimise-call-expression": "^6.24.1",
+ "babel-helper-replace-supers": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-destructuring": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-duplicate-keys": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
+ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-for-of": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-amd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
+ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
+ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-strict-mode": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-types": "^6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-systemjs": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
+ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-umd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
+ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-object-super": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
+ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
+ "dev": true,
+ "requires": {
+ "babel-helper-replace-supers": "^6.24.1",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-parameters": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
+ "dev": true,
+ "requires": {
+ "babel-helper-call-delegate": "^6.24.1",
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-spread": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-sticky-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
+ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-template-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-typeof-symbol": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
+ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-unicode-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
+ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "regexpu-core": "^2.0.0"
+ }
+ },
+ "babel-plugin-transform-exponentiation-operator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
+ "dev": true,
+ "requires": {
+ "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
+ "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-flow-strip-types": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
+ "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-flow": "^6.18.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-react-display-name": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz",
+ "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-react-jsx": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
+ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
+ "dev": true,
+ "requires": {
+ "babel-helper-builder-react-jsx": "^6.24.1",
+ "babel-plugin-syntax-jsx": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-react-jsx-self": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz",
+ "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-jsx": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-react-jsx-source": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
+ "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-jsx": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-regenerator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
+ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.10.0"
+ }
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-preset-env": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
+ "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-check-es2015-constants": "^6.22.0",
+ "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
+ "babel-plugin-transform-async-to-generator": "^6.22.0",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "^6.23.0",
+ "babel-plugin-transform-es2015-classes": "^6.23.0",
+ "babel-plugin-transform-es2015-computed-properties": "^6.22.0",
+ "babel-plugin-transform-es2015-destructuring": "^6.23.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0",
+ "babel-plugin-transform-es2015-for-of": "^6.23.0",
+ "babel-plugin-transform-es2015-function-name": "^6.22.0",
+ "babel-plugin-transform-es2015-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "^6.22.0",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0",
+ "babel-plugin-transform-es2015-modules-umd": "^6.23.0",
+ "babel-plugin-transform-es2015-object-super": "^6.22.0",
+ "babel-plugin-transform-es2015-parameters": "^6.23.0",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0",
+ "babel-plugin-transform-es2015-spread": "^6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.22.0",
+ "babel-plugin-transform-es2015-template-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.22.0",
+ "babel-plugin-transform-exponentiation-operator": "^6.22.0",
+ "babel-plugin-transform-regenerator": "^6.22.0",
+ "browserslist": "^3.2.6",
+ "invariant": "^2.2.2",
+ "semver": "^5.3.0"
+ }
+ },
+ "babel-preset-flow": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz",
+ "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-flow-strip-types": "^6.22.0"
+ }
+ },
+ "babel-preset-react": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz",
+ "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-jsx": "^6.3.13",
+ "babel-plugin-transform-react-display-name": "^6.23.0",
+ "babel-plugin-transform-react-jsx": "^6.24.1",
+ "babel-plugin-transform-react-jsx-self": "^6.22.0",
+ "babel-plugin-transform-react-jsx-source": "^6.22.0",
+ "babel-preset-flow": "^6.23.0"
+ }
+ },
+ "babel-register": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+ "dev": true,
+ "requires": {
+ "babel-core": "^6.26.0",
+ "babel-runtime": "^6.26.0",
+ "core-js": "^2.5.0",
+ "home-or-tmp": "^2.0.0",
+ "lodash": "^4.17.4",
+ "mkdirp": "^0.5.1",
+ "source-map-support": "^0.4.15"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "debug": "^2.6.8",
+ "globals": "^9.18.0",
+ "invariant": "^2.2.2",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.4",
+ "to-fast-properties": "^1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
+ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
+ "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.18.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
+ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "~1.6.3",
+ "iconv-lite": "0.4.23",
+ "on-finished": "~2.3.0",
+ "qs": "6.5.2",
+ "raw-body": "2.3.3",
+ "type-is": "~1.6.16"
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "dev": true,
+ "requires": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30000844",
+ "electron-to-chromium": "^1.3.47"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
+ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^5.2.4",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000892",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000892.tgz",
+ "integrity": "sha512-X9rxMaWZNbJB5qjkDqPtNv/yfViTeUL6ILk0QJNxLV3OhKC5Acn5vxsuUvllR6B48mog8lmS+whwHq/QIYSL9w==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "chokidar": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.0",
+ "braces": "^2.3.0",
+ "fsevents": "^1.2.2",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "lodash.debounce": "^4.0.8",
+ "normalize-path": "^2.1.1",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0",
+ "upath": "^1.0.5"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
+ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
+ "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
+ "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
+ "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.36.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.14",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.1",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "connect": {
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+ "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.0",
+ "parseurl": "~1.3.2",
+ "utils-merge": "1.0.1"
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+ "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "dev": true
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+ "dev": true
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
+ "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+ "dev": true,
+ "requires": {
+ "xregexp": "4.0.0"
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ },
+ "default-gateway": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz",
+ "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.10.0",
+ "ip-regex": "^2.1.0"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "dev": true,
+ "requires": {
+ "globby": "^6.1.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "p-map": "^1.1.1",
+ "pify": "^3.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "detect-node": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+ "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "^1.0.0"
+ }
+ },
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "requires": {
+ "utila": "~0.4"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "~1.1.1",
+ "entities": "~1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
+ "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dotnetify": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dotnetify/-/dotnetify-3.0.3.tgz",
+ "integrity": "sha512-bzeRSF075dM5AzAKFKikvzSlEGPrgT1qz0IFj+wmj5YxAMX/sY7HSe1ZEt70r1GTG+TTB4qkubeYF4ONfAWvCA==",
+ "requires": {
+ "@aspnet/signalr": "~1.0.3",
+ "jquery-deferred": "~0.3.1",
+ "prop-types": "~15.6.1"
+ }
+ },
+ "duplexify": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
+ "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.3.79",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.79.tgz",
+ "integrity": "sha512-LQdY3j4PxuUl6xfxiFruTSlCniTrTrzAd8/HfsLEMi0PUpaQ0Iy+Pr4N4VllDYjs0Hyu2lkTbvzqlG+PX9NsNw==",
+ "dev": true
+ },
+ "elliptic": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.4.0",
+ "tapable": "^1.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
+ "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.1.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.1",
+ "is-callable": "^1.1.3",
+ "is-regex": "^1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es6-promise": {
+ "version": "3.3.1",
+ "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
+ "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "eventemitter3": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
+ "dev": true
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+ "dev": true,
+ "requires": {
+ "original": ">=0.0.5"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "express": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
+ "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.3",
+ "content-disposition": "0.5.2",
+ "content-type": "~1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.1.1",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.4",
+ "qs": "6.5.2",
+ "range-parser": "~1.2.0",
+ "safe-buffer": "5.1.2",
+ "send": "0.16.2",
+ "serve-static": "1.13.2",
+ "setprototypeof": "1.1.0",
+ "statuses": "~1.4.0",
+ "type-is": "~1.6.16",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+ "dev": true
+ },
+ "finalhandler": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.4.0",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.3.1",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "find-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^1.0.0",
+ "pkg-dir": "^2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
+ "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz",
+ "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==",
+ "dev": true,
+ "requires": {
+ "debug": "=3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.9.2",
+ "node-pre-gyp": "^0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.21",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "minipass": {
+ "version": "2.2.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.0",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.1.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.1.10",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.2.4",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "global-modules-path": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz",
+ "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==",
+ "dev": true
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "handle-thing": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
+ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
+ "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "home-or-tmp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.1"
+ }
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+ "dev": true
+ },
+ "html-minifier": {
+ "version": "3.5.20",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz",
+ "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==",
+ "dev": true,
+ "requires": {
+ "camel-case": "3.0.x",
+ "clean-css": "4.2.x",
+ "commander": "2.17.x",
+ "he": "1.1.x",
+ "param-case": "2.1.x",
+ "relateurl": "0.2.x",
+ "uglify-js": "3.4.x"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.4.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.17.1",
+ "source-map": "~0.6.1"
+ }
+ }
+ }
+ },
+ "html-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+ "dev": true,
+ "requires": {
+ "html-minifier": "^3.2.3",
+ "loader-utils": "^0.2.16",
+ "lodash": "^4.17.3",
+ "pretty-error": "^2.0.2",
+ "tapable": "^1.0.0",
+ "toposort": "^1.0.0",
+ "util.promisify": "1.0.0"
+ },
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true,
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ }
+ }
+ },
+ "htmlparser2": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
+ "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1",
+ "domhandler": "2.1",
+ "domutils": "1.1",
+ "readable-stream": "1.0"
+ },
+ "dependencies": {
+ "domutils": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
+ "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "dev": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "dependencies": {
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "dev": true
+ }
+ }
+ },
+ "http-parser-js": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
+ "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "^3.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.18.0",
+ "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
+ "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
+ "dev": true,
+ "requires": {
+ "http-proxy": "^1.16.2",
+ "is-glob": "^4.0.0",
+ "lodash": "^4.17.5",
+ "micromatch": "^3.1.9"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ieee754": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
+ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ }
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "internal-ip": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz",
+ "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==",
+ "dev": true,
+ "requires": {
+ "default-gateway": "^2.6.0",
+ "ipaddr.js": "^1.5.2"
+ }
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "jquery-deferred": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/jquery-deferred/-/jquery-deferred-0.3.1.tgz",
+ "integrity": "sha1-WW7KHKr/VPYbEQlisjyv6nTDU1U="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json3": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsplumb": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/jsplumb/-/jsplumb-2.8.0.tgz",
+ "integrity": "sha512-l/3ob98NhBNJOc+Wct/4JYMuK7I2SgIioE3UtOmgG5FftPxHWvFEurN7TmM4DwViL0uDo5Vq6QjLoaNLxrHXpw=="
+ },
+ "killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "loader-runner": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz",
+ "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "dev": true,
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "dev": true
+ },
+ "loglevel": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
+ "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
+ "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "map-age-cleaner": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz",
+ "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "dev": true
+ },
+ "mem": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
+ "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^1.0.0",
+ "p-is-promise": "^1.1.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz",
+ "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
+ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.36.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
+ "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.20",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
+ "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.36.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mississippi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
+ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^2.0.1",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "dev": true,
+ "requires": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.11.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
+ "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "requires": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node-forge": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^1.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.10.3",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "open": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz",
+ "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=",
+ "dev": true
+ },
+ "open-browser-webpack-plugin": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/open-browser-webpack-plugin/-/open-browser-webpack-plugin-0.0.5.tgz",
+ "integrity": "sha1-Xm3G+Lh5czHiEphd4hhXLYTAUh8=",
+ "dev": true,
+ "requires": {
+ "open": "0.0.5"
+ }
+ },
+ "opn": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
+ "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "original": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+ "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+ "dev": true,
+ "requires": {
+ "url-parse": "^1.4.3"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
+ "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.10.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "dev": true
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.1",
+ "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
+ "portfinder": {
+ "version": "1.0.17",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz",
+ "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==",
+ "dev": true,
+ "requires": {
+ "async": "^1.5.2",
+ "debug": "^2.2.0",
+ "mkdirp": "0.5.x"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "pretty-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "dev": true,
+ "requires": {
+ "renderkid": "^2.0.1",
+ "utila": "~0.4"
+ }
+ },
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+ "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+ "dev": true,
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.8.0"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "querystringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
+ "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
+ "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.3",
+ "iconv-lite": "0.4.23",
+ "unpipe": "1.0.0"
+ }
+ },
+ "react": {
+ "version": "16.5.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.5.2.tgz",
+ "integrity": "sha512-FDCSVd3DjVTmbEAjUNX6FgfAmQ+ypJfHUsqUJOYNCBUp1h8lqmtC+0mXJ+JjsWx4KAVTkk1vKd1hLQPvEviSuw==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "schedule": "^0.5.0"
+ }
+ },
+ "react-dom": {
+ "version": "16.5.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.5.2.tgz",
+ "integrity": "sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2",
+ "schedule": "^0.5.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.18.0",
+ "babel-types": "^6.19.0",
+ "private": "^0.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpu-core": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
+ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.2.1",
+ "regjsgen": "^0.2.0",
+ "regjsparser": "^0.1.4"
+ }
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "renderkid": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz",
+ "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==",
+ "dev": true,
+ "requires": {
+ "css-select": "^1.1.0",
+ "dom-converter": "~0.2",
+ "htmlparser2": "~3.3.0",
+ "strip-ansi": "^3.0.0",
+ "utila": "^0.4.0"
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-from-string": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
+ "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "schedule": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/schedule/-/schedule-0.5.0.tgz",
+ "integrity": "sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw==",
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
+ },
+ "schema-utils": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "dev": true
+ },
+ "selfsigned": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
+ "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
+ "dev": true,
+ "requires": {
+ "node-forge": "0.7.5"
+ }
+ },
+ "semver": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "dev": true
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ }
+ }
+ },
+ "serialize-javascript": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz",
+ "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==",
+ "dev": true
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.2",
+ "send": "0.16.2"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sockjs": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+ "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+ "dev": true,
+ "requires": {
+ "faye-websocket": "^0.10.0",
+ "uuid": "^3.0.1"
+ }
+ },
+ "sockjs-client": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz",
+ "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.6",
+ "eventsource": "0.1.6",
+ "faye-websocket": "~0.11.0",
+ "inherits": "^2.0.1",
+ "json3": "^3.3.2",
+ "url-parse": "^1.1.8"
+ },
+ "dependencies": {
+ "faye-websocket": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ }
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.5.6"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spdy": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
+ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "handle-thing": "^1.2.5",
+ "http-deceiver": "^1.2.7",
+ "safe-buffer": "^5.0.1",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^2.0.18"
+ }
+ },
+ "spdy-transport": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
+ "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "detect-node": "^2.0.3",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.1",
+ "readable-stream": "^2.2.9",
+ "safe-buffer": "^5.0.1",
+ "wbuf": "^1.7.2"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "ssri": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
+ "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "tapable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz",
+ "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ }
+ },
+ "thunky": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
+ "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
+ "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.16",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.18"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uglify-es": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.13.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "uglifyjs-webpack-plugin": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz",
+ "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==",
+ "dev": true,
+ "requires": {
+ "cacache": "^10.0.4",
+ "find-cache-dir": "^1.0.0",
+ "schema-utils": "^0.4.5",
+ "serialize-javascript": "^1.4.0",
+ "source-map": "^0.6.1",
+ "uglify-es": "^3.3.4",
+ "webpack-sources": "^1.1.0",
+ "worker-farm": "^1.5.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
+ "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
+ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+ "dev": true
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "url-parse": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
+ "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
+ "dev": true,
+ "requires": {
+ "querystringify": "^2.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
+ "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
+ "dev": true
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ }
+ },
+ "wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "dev": true,
+ "requires": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "webpack": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.21.0.tgz",
+ "integrity": "sha512-CGBeop4AYR0dcmk9Afl33qQULwTHQCXQPAIBTHMJoy9DpY8FPUDna/NUlAGTr5o5y9QC901Ww3wCY4wNo1X9Lw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.7.8",
+ "@webassemblyjs/helper-module-context": "1.7.8",
+ "@webassemblyjs/wasm-edit": "1.7.8",
+ "@webassemblyjs/wasm-parser": "1.7.8",
+ "acorn": "^5.6.2",
+ "acorn-dynamic-import": "^3.0.0",
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0",
+ "chrome-trace-event": "^1.0.0",
+ "enhanced-resolve": "^4.1.0",
+ "eslint-scope": "^4.0.0",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.3.0",
+ "loader-utils": "^1.1.0",
+ "memory-fs": "~0.4.1",
+ "micromatch": "^3.1.8",
+ "mkdirp": "~0.5.0",
+ "neo-async": "^2.5.0",
+ "node-libs-browser": "^2.0.0",
+ "schema-utils": "^0.4.4",
+ "tapable": "^1.1.0",
+ "uglifyjs-webpack-plugin": "^1.2.4",
+ "watchpack": "^1.5.0",
+ "webpack-sources": "^1.3.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "webpack-cli": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz",
+ "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "enhanced-resolve": "^4.1.0",
+ "global-modules-path": "^2.3.0",
+ "import-local": "^2.0.0",
+ "interpret": "^1.1.0",
+ "loader-utils": "^1.1.0",
+ "supports-color": "^5.5.0",
+ "v8-compile-cache": "^2.0.2",
+ "yargs": "^12.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz",
+ "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
+ "dev": true,
+ "requires": {
+ "memory-fs": "~0.4.1",
+ "mime": "^2.3.1",
+ "range-parser": "^1.0.3",
+ "webpack-log": "^2.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "webpack-dev-server": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.9.tgz",
+ "integrity": "sha512-fqPkuNalLuc/hRC2QMkVYJkgNmRvxZQo7ykA2e1XRg/tMJm3qY7ZaD6d89/Fqjxtj9bOrn5wZzLD2n84lJdvWg==",
+ "dev": true,
+ "requires": {
+ "ansi-html": "0.0.7",
+ "bonjour": "^3.5.0",
+ "chokidar": "^2.0.0",
+ "compression": "^1.5.2",
+ "connect-history-api-fallback": "^1.3.0",
+ "debug": "^3.1.0",
+ "del": "^3.0.0",
+ "express": "^4.16.2",
+ "html-entities": "^1.2.0",
+ "http-proxy-middleware": "~0.18.0",
+ "import-local": "^2.0.0",
+ "internal-ip": "^3.0.1",
+ "ip": "^1.1.5",
+ "killable": "^1.0.0",
+ "loglevel": "^1.4.1",
+ "opn": "^5.1.0",
+ "portfinder": "^1.0.9",
+ "schema-utils": "^1.0.0",
+ "selfsigned": "^1.9.1",
+ "serve-index": "^1.7.2",
+ "sockjs": "0.3.19",
+ "sockjs-client": "1.1.5",
+ "spdy": "^3.4.1",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^5.1.0",
+ "webpack-dev-middleware": "3.4.0",
+ "webpack-log": "^2.0.0",
+ "yargs": "12.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "webpack-hot-middleware": {
+ "version": "2.24.3",
+ "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.24.3.tgz",
+ "integrity": "sha512-pPlmcdoR2Fn6UhYjAhp1g/IJy1Yc9hD+T6O9mjRcWV2pFbBjIFoJXhP0CoD0xPOhWJuWXuZXGBga9ybbOdzXpg==",
+ "dev": true,
+ "requires": {
+ "ansi-html": "0.0.7",
+ "html-entities": "^1.2.0",
+ "querystring": "^0.2.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "webpack-node-externals": {
+ "version": "1.7.2",
+ "resolved": "http://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz",
+ "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==",
+ "dev": true
+ },
+ "webpack-sources": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
+ "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "dev": true,
+ "requires": {
+ "http-parser-js": ">=0.4.0",
+ "websocket-extensions": ">=0.1.1"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "worker-farm": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
+ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xregexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
+ "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
+ "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^2.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^10.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ }
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Components/ClientApp/package.json b/src/Flowsharp.Web.Components/ClientApp/package.json
new file mode 100644
index 000000000..e7a78fe24
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "flowsharp-components",
+ "scripts": {
+ "build": "webpack"
+ },
+ "babel": {
+ "presets": [
+ "env",
+ "react"
+ ]
+ },
+ "dependencies": {
+ "dotnetify": "~3.0.3",
+ "react": "~16.5.0",
+ "react-dom": "~16.5.0",
+ "jsplumb": "^2.8.0"
+ },
+ "devDependencies": {
+ "aspnet-webpack": "^3.0.0",
+ "babel-core": "~6.26.3",
+ "babel-loader": "~7.1.4",
+ "babel-preset-env": "~1.7.0",
+ "babel-preset-react": "~6.24.1",
+ "open-browser-webpack-plugin": "0.0.5",
+ "webpack": "^4.21.0",
+ "webpack-cli": "^3.1.0",
+ "webpack-dev-middleware": "^3.4.0",
+ "webpack-dev-server": "^3.1.9",
+ "webpack-hot-middleware": "^2.24.3",
+ "html-webpack-plugin": "^3.2.0"
+ }
+}
diff --git a/src/Flowsharp.Web.Components/ClientApp/src/js/Activity.js b/src/Flowsharp.Web.Components/ClientApp/src/js/Activity.js
new file mode 100644
index 000000000..5bab4a342
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/src/js/Activity.js
@@ -0,0 +1,18 @@
+import React from 'react';
+import dotnetify from 'dotnetify';
+
+export default class Activity extends React.Component {
+ constructor(props) {
+ super(props);
+ dotnetify.react.connect('Activity', this);
+ this.state = { Title: 'Activity 1' };
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ClientApp/src/js/WorkflowCanvas.js b/src/Flowsharp.Web.Components/ClientApp/src/js/WorkflowCanvas.js
new file mode 100644
index 000000000..616e44212
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/src/js/WorkflowCanvas.js
@@ -0,0 +1,67 @@
+import React from 'react';
+import dotnetify from 'dotnetify';
+import { jsPlumb, jsPlumbInstance, Connection, ConnectionMadeEventInfo } from 'jsplumb';
+import * as ReactDOM from "react-dom";
+import * as Flowsharp from './flowsharp';
+import Activity from "./Activity";
+
+export default class WorkflowCanvas extends React.Component {
+ constructor(props) {
+ super(props);
+ dotnetify.react.connect('WorkflowCanvas', this);
+
+ this.state = { workflow: null };
+
+ jsPlumb.ready(() => {
+ this.container = ReactDOM.findDOMNode(this);
+ this.plumber = WorkflowCanvas.createPlumber(this.container);
+ });
+ }
+
+ render() {
+ return (
+
+ );
+ }
+
+ static createPlumber(container: HTMLDivElement){
+ return jsPlumb.getInstance({
+ Anchor: "Continuous",
+ DragOptions: {
+ cursor: 'pointer', zIndex: 2000
+ },
+ EndpointStyles: [{ fillStyle: '#225588' }],
+ Endpoints: [["Dot", { radius: 7 }], ["Blank"]],
+ ConnectionOverlays: [
+ ['Arrow', {
+ location: 1,
+ visible: true,
+ width: 11,
+ length: 11
+ }],
+ ['Label', {
+ location: 0.5,
+ id: 'label',
+ cssClass: 'connection-label'
+ }]
+ ],
+ ConnectorZIndex: 5,
+ Container: container
+ });
+ }
+
+ static setupJsPlumb(plumber: jsPlumbInstance){
+
+ // Listen for new connections.
+ plumber.bind('connection', function (connectionInfo: ConnectionMadeEventInfo, originalEvent: Event) {
+ const connection: Connection = connectionInfo.connection;
+ const endpoint: Flowsharp.Endpoint = connection.getParameters().endpoint;
+ const label: any = connection.getOverlay('label');
+ label.setLabel(endpoint.Name);
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ClientApp/src/js/WorkflowEditor.js b/src/Flowsharp.Web.Components/ClientApp/src/js/WorkflowEditor.js
new file mode 100644
index 000000000..fd0c5bf6e
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/src/js/WorkflowEditor.js
@@ -0,0 +1,21 @@
+import React from 'react';
+import dotnetify from 'dotnetify';
+import WorkflowCanvas from "./WorkflowCanvas";
+
+export default class WorkflowEditor extends React.Component {
+ constructor(props) {
+ super(props);
+ dotnetify.react.connect('WorkflowEditor', this);
+ this.state = { Greetings: '', ServerTime: '' };
+ }
+
+ render() {
+ return (
+
+
{this.state.Greetings}
+
Server time is: {this.state.ServerTime}
+
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ClientApp/src/js/flowsharp.js b/src/Flowsharp.Web.Components/ClientApp/src/js/flowsharp.js
new file mode 100644
index 000000000..4fc7d1451
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/src/js/flowsharp.js
@@ -0,0 +1,7 @@
+const Endpoint = {
+ Name: ''
+};
+
+module.exports = {
+ Endpoint: Endpoint
+};
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ClientApp/src/js/index.js b/src/Flowsharp.Web.Components/ClientApp/src/js/index.js
new file mode 100644
index 000000000..e69f6b407
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/src/js/index.js
@@ -0,0 +1,5 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import WorkflowEditor from './WorkflowEditor';
+
+ReactDOM.render(, document.getElementById('FlowsharpWorkflowEditor'));
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ClientApp/src/scss/WorkflowCanvas.scss b/src/Flowsharp.Web.Components/ClientApp/src/scss/WorkflowCanvas.scss
new file mode 100644
index 000000000..af5b64cf9
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/src/scss/WorkflowCanvas.scss
@@ -0,0 +1,99 @@
+.workflow-container {
+ .workflow-canvas-container {
+ border: 1px solid #e4e5e6;
+ border-radius: 0.25em;
+ padding: 15px;
+ }
+}
+
+.modal-activities {
+ h4.card-title {
+ .fa {
+ margin-right: 0.5em;
+ }
+ }
+}
+
+.workflow-canvas {
+ overflow: auto !important;
+ position: relative;
+ touch-action: none;
+ min-height: 400px;
+
+ .activity {
+ display: none;
+ border: 1px solid #346789;
+ box-shadow: 2px 2px 19px #aaa;
+ -o-box-shadow: 2px 2px 9px #aaa;
+ -webkit-box-shadow: 2px 2px 9px #aaa;
+ -moz-box-shadow: 2px 2px 9px #aaa;
+ -moz-border-radius: 0.5em;
+ border-radius: 0.5em;
+ opacity: 0.8;
+ min-width: 80px;
+ min-height: 80px;
+ text-align: left;
+ z-index: 20;
+ position: absolute;
+ background-color: #eeeeef;
+ color: #000000;
+ font-family: helvetica, sans-serif;
+ padding: 1em;
+ font-size: 0.7em;
+ -webkit-transition: -webkit-box-shadow 0.15s ease-in;
+ -moz-transition: -moz-box-shadow 0.15s ease-in;
+ -o-transition: -o-box-shadow 0.15s ease-in;
+ transition: box-shadow 0.15s ease-in;
+
+ &.activity-task {
+ border: 1px solid #7ab02c;
+ }
+
+ &.activity-event {
+ border: 1px solid #3a8acd;
+ }
+
+ &.activity-start, &.activity-blocking {
+ background-color: #7ab02c;
+ color: #ffffff;
+ border: 1px solid #507b11;
+ }
+
+ header {
+ h4 {
+ font-size: 1.4em;
+
+ .fa {
+ margin-right: 0.5em;
+ }
+ }
+ }
+ }
+
+ .jtk-connector {
+ z-index: 4;
+ }
+
+ .jtk-endpoint, .endpointTargetLabel, .endpointSourceLabel {
+ z-index: 21;
+ cursor: pointer;
+ }
+
+ .endpointTargetLabel, .endpointSourceLabel {
+ font-size: 8px;
+ }
+
+ .jtk-overlay {
+ background-color: transparent;
+ }
+
+ .connection-label {
+ z-index: 31;
+ border: 1px solid #cccccc;
+ padding: 0 0.5em;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ background-color: white;
+ }
+}
diff --git a/src/Flowsharp.Web.Components/ClientApp/webpack.config.js b/src/Flowsharp.Web.Components/ClientApp/webpack.config.js
new file mode 100644
index 000000000..aa1040f0e
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ClientApp/webpack.config.js
@@ -0,0 +1,20 @@
+'use strict';
+const webpack = require('webpack');
+
+module.exports = {
+ mode: 'development',
+ entry: { main: './src/js/index.js' },
+ output: {
+ path: __dirname + '/../wwwroot',
+ publicPath: '/'
+ },
+ resolve: {
+ modules: [ 'src', 'node_modules' ]
+ },
+ module: {
+ rules: [ { test: /\.jsx?$/, use: 'babel-loader', exclude: /node_modules/ } ]
+ },
+ plugins: [
+ new webpack.HotModuleReplacementPlugin()
+ ]
+};
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/Configuration/EmbeddedFilesConfigureOptions.cs b/src/Flowsharp.Web.Components/Configuration/EmbeddedFilesConfigureOptions.cs
new file mode 100644
index 000000000..83a953953
--- /dev/null
+++ b/src/Flowsharp.Web.Components/Configuration/EmbeddedFilesConfigureOptions.cs
@@ -0,0 +1,26 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.StaticFiles;
+using Microsoft.Extensions.FileProviders;
+using Microsoft.Extensions.Options;
+
+namespace Flowsharp.Web.Components.Configuration
+{
+ internal class EmbeddedFilesConfigureOptions : IPostConfigureOptions
+ {
+ private readonly IHostingEnvironment environment;
+
+ public EmbeddedFilesConfigureOptions(IHostingEnvironment environment)
+ {
+ this.environment = environment;
+ }
+
+ public void PostConfigure(string name, StaticFileOptions options)
+ {
+ options.ContentTypeProvider = options.ContentTypeProvider ?? new FileExtensionContentTypeProvider();
+ options.FileProvider = options.FileProvider ?? environment.WebRootFileProvider;
+ var embeddedFileProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, "wwwroot");
+ options.FileProvider = new CompositeFileProvider(options.FileProvider, embeddedFileProvider);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/Extensions/ApplicationBuilderExtensions.cs b/src/Flowsharp.Web.Components/Extensions/ApplicationBuilderExtensions.cs
new file mode 100644
index 000000000..8c03c074e
--- /dev/null
+++ b/src/Flowsharp.Web.Components/Extensions/ApplicationBuilderExtensions.cs
@@ -0,0 +1,17 @@
+using DotNetify;
+using Flowsharp.Web.Components.ViewModels;
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.AspNetCore.Builder
+{
+ public static class ApplicationBuilderExtensions
+ {
+ public static IApplicationBuilder UseFlowsharpComponents(this IApplicationBuilder app)
+ {
+ return app
+ .UseWebSockets()
+ .UseSignalR(routes => routes.MapDotNetifyHub())
+ .UseDotNetify(options => options.RegisterAssembly(typeof(WorkflowEditor).Assembly));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/Extensions/ServiceCollectionExtensions.cs b/src/Flowsharp.Web.Components/Extensions/ServiceCollectionExtensions.cs
new file mode 100644
index 000000000..092738ff0
--- /dev/null
+++ b/src/Flowsharp.Web.Components/Extensions/ServiceCollectionExtensions.cs
@@ -0,0 +1,19 @@
+using DotNetify;
+using Flowsharp.Web.Components.Configuration;
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.Extensions.DependencyInjection
+{
+ public static class ServiceCollectionExtensions
+ {
+ public static IServiceCollection AddFlowsharpComponents(this IServiceCollection services)
+ {
+ services.AddSignalR();
+ services.ConfigureOptions(typeof(EmbeddedFilesConfigureOptions));
+
+ return services
+ .AddMemoryCache()
+ .AddDotNetify();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/Flowsharp.Web.Components.csproj b/src/Flowsharp.Web.Components/Flowsharp.Web.Components.csproj
index 601dcb2c3..3d6f3f609 100644
--- a/src/Flowsharp.Web.Components/Flowsharp.Web.Components.csproj
+++ b/src/Flowsharp.Web.Components/Flowsharp.Web.Components.csproj
@@ -7,21 +7,21 @@
-
+
-
-
+
+
-
+
$(IncludeRazorContentInPack)
-
+
@@ -30,15 +30,15 @@
-
+
-
+
-
+
diff --git a/src/Flowsharp.Web.Components/ViewModels/Activity.cs b/src/Flowsharp.Web.Components/ViewModels/Activity.cs
new file mode 100644
index 000000000..2fa6c354a
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ViewModels/Activity.cs
@@ -0,0 +1,11 @@
+using DotNetify;
+
+namespace Flowsharp.Web.Components.ViewModels
+{
+ public class Activity : BaseVM
+ {
+ public Activity()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ViewModels/WorkflowCanvas.cs b/src/Flowsharp.Web.Components/ViewModels/WorkflowCanvas.cs
new file mode 100644
index 000000000..b586ba885
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ViewModels/WorkflowCanvas.cs
@@ -0,0 +1,11 @@
+using DotNetify;
+
+namespace Flowsharp.Web.Components.ViewModels
+{
+ public class WorkflowCanvas : BaseVM
+ {
+ public WorkflowCanvas()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Components/ViewModels/WorkflowEditor.cs b/src/Flowsharp.Web.Components/ViewModels/WorkflowEditor.cs
new file mode 100644
index 000000000..5098c60cb
--- /dev/null
+++ b/src/Flowsharp.Web.Components/ViewModels/WorkflowEditor.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Threading;
+using DotNetify;
+
+namespace Flowsharp.Web.Components.ViewModels
+{
+ public class WorkflowEditor : BaseVM
+ {
+ private Timer _timer;
+ public string Greetings => "Hello World!";
+ public DateTime ServerTime => DateTime.Now;
+
+ public WorkflowEditor()
+ {
+ _timer = new Timer(state =>
+ {
+ Changed(nameof(ServerTime));
+ PushUpdates();
+ }, null, 0, 1000);
+ }
+
+ public override void Dispose() => _timer.Dispose();
+ }
+}
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/.editorconfig b/src/Flowsharp.Web.Dashboard/ClientApp/.editorconfig
new file mode 100644
index 000000000..8d69c1245
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/.editorconfig
@@ -0,0 +1,33 @@
+# -----------------------------
+# General
+# -----------------------------
+
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+# top-most EditorConfig file
+root = true
+
+
+
+# -----------------------------
+# All Files
+# -----------------------------
+
+[*]
+end_of_line = lf
+charset = utf-8
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 2
+
+
+
+# -----------------------------
+# Markdown Files
+# -----------------------------
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/.gitignore b/src/Flowsharp.Web.Dashboard/ClientApp/.gitignore
new file mode 100644
index 000000000..9848098bd
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/.gitignore
@@ -0,0 +1,32 @@
+# ----------------------------
+# Generated Files & Folders
+# ----------------------------
+
+# [1] : Windows thumbnail cache files.
+# [2] : Folder config file.
+# [3] : Recycle Bin used on file shares.
+
+.idea
+.DS_Store
+.sass-cache
+Thumbs.db # [1]
+ehthumbs.db # [1]
+Desktop.ini # [2]
+$RECYCLE.BIN # [3]
+
+# ----------------------------
+# Packaging
+# ----------------------------
+
+logs
+*.log
+npm-debug.log*
+node_modules
+yarn.lock
+package-lock.json
+
+# ----------------------------
+# Project Folders
+# ----------------------------
+
+build/
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/CHANGELOG.md b/src/Flowsharp.Web.Dashboard/ClientApp/CHANGELOG.md
new file mode 100644
index 000000000..f44368400
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/CHANGELOG.md
@@ -0,0 +1,5 @@
+### Changelog
+
+#### 1.0.0
+
+- Intial release
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/CODE_OF_CONDUCT.md b/src/Flowsharp.Web.Dashboard/ClientApp/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..2e0ce45d9
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/CODE_OF_CONDUCT.md
@@ -0,0 +1,46 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at support at colorlib.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/LICENSE b/src/Flowsharp.Web.Dashboard/ClientApp/LICENSE
new file mode 100644
index 000000000..027fadcd5
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Aigars Silkalns
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/README.md b/src/Flowsharp.Web.Dashboard/ClientApp/README.md
new file mode 100644
index 000000000..f4ae885a7
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/README.md
@@ -0,0 +1,167 @@
+# Adminator HTML5 Admin Template
+**Adminator** is a responsive Bootstrap 4 Admin Template. It provides you with a collection of ready to use code snippets and utilities, custom pages, a collection of applications and some useful widgets. Preview of this awesome admin template available here: https://colorlib.com/polygon/adminator/index.html
+
+# Preview
+
+### Screenshot
+
+
+
+### Demo Site: [Here](https://colorlib.com/polygon/adminator/index.html)
+
+## TOC
+- [Getting Started](#getting-started)
+ - [Prerequisites](#prerequisites)
+ - [Installing & Local Development](#installing--local-development)
+- [Files/Folder Structure](#filesfolders-structure)
+- [Deployment](#deployment)
+- [Built With](#built-with)
+- [Changelog](#changelog)
+- [Authors](#authors)
+- [License](#license)
+
+
+## Getting Started
+In order to run **Adminator** on your local machine all what you need to do is to have the prerequisites stated below installed on your machine and follow the installation steps down below.
+
+#### Prerequisites
+ - Node.js
+ - Yarn or NPM
+ - Git
+ - libpng-dev *linux only*
+
+#### Installing & Local Development
+Start by typing the following commands in your terminal in order to get **Adminator** full package on your machine and starting a local development server with live reload feature.
+
+```
+> git clone https://github.com/puikinsh/Adminator-admin-dashboard.git adminator
+> cd adminator
+> npm install
+> npm run dev
+```
+
+
+## Files/Folders Structure
+Here is a brief explanation of the template folder structure and some of its main files usage:
+
+```
+└── src # Contains all template source files.
+│ └── assets # Contains JS, CSS, images and icon fonts.
+│ │ └── scripts # Contains all JavaScript files.
+│ │ │ └── charts # Chart.js, Sparkline & Pie Chart plugins init.
+│ │ │ └── chat # All chat app JS code.
+│ │ │ └── constants # Template constant values like color values.
+│ │ │ └── datatable # Date table plugin init.
+│ │ │ └── datepicker # Bootstrap datepicker init.
+│ │ │ └── email # All email app code.
+│ │ │ └── fullcalendar # Fullcalendar plugin init.
+│ │ │ └── googleMaps # Google maps API integration code.
+│ │ │ └── masonry # Masonry layout code.
+│ │ │ └── popover # Bootstrap popover plugin init.
+│ │ │ └── scrollbar # Perfect scrollbar plugin init.
+│ │ │ └── search # Topbar toggle search init.
+│ │ │ └── sidebar # Sidebar JS code.
+│ │ │ └── skycons # Animated icons plugin init.
+│ │ │ └── utils # Basic utils used for proper rendering.
+│ │ │ └── vectorMaps # Vector maps plugin init.
+│ │ │ └── index.js # Indicator file.
+│ │ │
+│ │ └── static # Contains the non-code files.
+│ │ │ └── fonts # Contains icon fonts.
+│ │ │ └── images # Contains all template images/svg.
+│ │ │
+│ │ └── styles # Contains all SCSS files.
+│ │ └── spec # Contains custom SCSS files.
+│ │ │ └── components # Contains all template components.
+│ │ │ └── generic # Contains basic scaffolding styles.
+│ │ │ └── screens # Contains views specific styles.
+│ │ │ └── settings # Contains all template variables.
+│ │ │ └── tools # Contains all mixins.
+│ │ │ └── utils # Contains helper classes.
+│ │ │ └── index.scss # Indicator file.
+│ │ │
+│ │ └── vendor # Contains all plugin files & custom styles.
+│ │ └── index.scss # Indicator file.
+│ │
+│ └── *.html # All HTML pages files .
+└── webpack # Contains Webpack init code.
+│ └── plugins # Contains all Webpack plugins config.
+│ └── rules # Contains Loaders config code.
+│ └── config.js # Contains Webpack config object.
+│ └── devServer.js # Webpack dev server config code.
+│ └── manifest.js # All build system constants.
+│
+└── .babelrc # Babel ES6 Transpiler.
+└── .editorconfig # Keep same coding styles between code editors.
+└── .eslintrc.yml # JavaScript Linting.
+└── .gitattributes # Git Attributes.
+└── .gitignore # Ignored files in Git.
+└── .stylelintrc.yml # SCSS/CSS Linting.
+└── browserslist # Supported Browsers.
+└── CHANGELOG.md # Versioning.
+└── package.json # Package metadata.
+└── README.md # Manual file.
+└── webpack.config.js # Webpack main config file.
+└── yarn.lock # Yarn metadata.
+```
+
+## Deployment
+In deployment process, you have two commands:
+
+1. Build command
+Used to generate the final result of compiling src files into build folder. This can be achieved by running the following command:
+```
+> npm run build
+```
+
+2. Preview command
+Used to create a local dev server in order to preview the final output of build process. This can be achieved by running the following command:
+```
+> npm run preview
+```
+
+## Built With
+- [Babel](https://babeljs.io/)
+- [Webpack](https://webpack.js.org/)
+- [Eslint](https://eslint.org/)
+- [Sass](http://sass-lang.com/)
+- [Postcss](http://postcss.org/)
+- [Stylelint](https://stylelint.io/)
+- [Bootstrap](http://getbootstrap.com/)
+- [Chart.js](http://www.chartjs.org/)
+- [Datatables](https://datatables.net/)
+- [Easy Pie Chart](http://rendro.github.io/easy-pie-chart/)
+- [Fullcalendar](https://fullcalendar.io/)
+- [Jquery](https://jquery.com/)
+- [Jquery Sparkline](https://omnipotent.net/jquery.sparkline/)
+- [Jvectormap](http://jvectormap.com/)
+- [Load Google Maps API](https://github.com/yuanqing/load-google-maps-api)
+- [Lodash](https://lodash.com/)
+- [Masonry](https://masonry.desandro.com/)
+- [Moment](https://momentjs.com/)
+- [Perfect Scrollbar](https://github.com/utatti/perfect-scrollbar)
+- [Skycons](https://darkskyapp.github.io/skycons/)
+- [Fontawesome](http://fontawesome.io/)
+- [Themify Icons](https://themify.me/themify-icons)
+- [Roboto Font](https://fonts.google.com/specimen/Roboto)
+- [Bootstrap Datepicker](https://bootstrap-datepicker.readthedocs.io/en/latest/)
+
+## Changelog
+#### V 1.0.0
+Initial Release
+
+## Authors
+[Colorlib](https://colorlib.com)
+
+## More info
+- [Boostrap Dashboards](https://colorlib.com/wp/free-bootstrap-admin-dashboard-templates/)
+- [Bootstrap Templates](https://colorlib.com/wp/free-bootstrap-templates/)
+- [HTML Templates](https://colorlib.com/wp/free-html-website-templates/)
+- [Free Admin Dashboards](https://colorlib.com/wp/free-html5-admin-dashboard-templates/)
+- [Website Templates](https://colorlib.com/wp/templates/)
+- [Free CSS Templates](https://colorlib.com/wp/free-css-website-templates/)
+- [WordPress Themes](https://colorlib.com/wp/free-wordpress-themes/)
+
+## License
+
+Adminator is licensed under The MIT License (MIT). Which means that you can use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the final products. But you always need to state that Colorlib is the original author of this template.
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/browserslist b/src/Flowsharp.Web.Dashboard/ClientApp/browserslist
new file mode 100644
index 000000000..ba620219e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/browserslist
@@ -0,0 +1 @@
+Last 3 versions
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/package.json b/src/Flowsharp.Web.Dashboard/ClientApp/package.json
new file mode 100644
index 000000000..217d73a92
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "adminator",
+ "version": "1.0.0",
+ "private": true,
+ "description": "HTML Admin Template",
+ "scripts": {
+ "start": "webpack-dev-server",
+ "dev": "webpack-dashboard -t 'Project' -- webpack-dev-server",
+ "clean": "shx rm -rf ./build",
+ "build": "npm run clean && cross-env NODE_ENV=\"production\" webpack",
+ "preview": "cross-env NODE_ENV=\"production\" webpack-dev-server",
+ "lint:js": "eslint ./src ./webpack ./*.js -f table --ext .js --ext .jsx",
+ "lint:scss": "stylelint ./src/**/*.scss --syntax scss",
+ "lint": "npm run lint:js && npm run lint:scss"
+ },
+ "devDependencies": {
+ "aspnet-webpack": "^3.0.0",
+ "babel-core": "^6.26.0",
+ "babel-eslint": "^8.0.1",
+ "babel-loader": "^7.1.2",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-plugin-transform-runtime": "^6.23.0",
+ "babel-preset-env": "^1.6.1",
+ "babel-preset-stage-0": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "case-sensitive-paths-webpack-plugin": "^2.1.1",
+ "copy-webpack-plugin": "^4.2.0",
+ "cross-env": "^5.1.0",
+ "css-loader": "^0.28.7",
+ "eslint": "^4.9.0",
+ "eslint-config-airbnb-base": "^12.1.0",
+ "eslint-plugin-import": "2.7.0",
+ "extract-text-webpack-plugin": "^3.0.1",
+ "html-webpack-plugin": "^2.30.1",
+ "imagemin-webpack-plugin": "^1.5.2",
+ "node-sass": "^4.5.3",
+ "postcss-cssnext": "^3.0.2",
+ "postcss-loader": "^2.0.8",
+ "sass-loader": "^6.0.6",
+ "shx": "^0.2.2",
+ "style-loader": "^0.19.0",
+ "stylelint": "^8.2.0",
+ "stylelint-config-standard": "^17.0.0",
+ "webpack": "^3.8.1",
+ "webpack-dashboard": "^1.0.0",
+ "webpack-dev-server": "^2.9.3",
+ "webpack-hot-middleware": "^2.24.3"
+ },
+ "dependencies": {
+ "babel-polyfill": "^6.26.0",
+ "bootstrap": "^4.0.0",
+ "bootstrap-datepicker": "^1.7.1",
+ "chart.js": "^2.7.1",
+ "datatables": "^1.10.13",
+ "easy-pie-chart": "^2.1.7",
+ "file-loader": "^1.1.5",
+ "fullcalendar": "^3.6.2",
+ "jquery": "^3.2.1",
+ "jquery-sparkline": "^2.4.0",
+ "jvectormap": "^2.0.4",
+ "load-google-maps-api": "^1.0.0",
+ "lodash": "^4.17.4",
+ "masonry-layout": "^4.2.0",
+ "moment": "^2.19.1",
+ "perfect-scrollbar": "^1.1.0",
+ "popper.js": "^1.12.6",
+ "skycons": "^1.0.0"
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/chartJS/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/chartJS/index.js
new file mode 100644
index 000000000..58e0de169
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/chartJS/index.js
@@ -0,0 +1,147 @@
+import Chart from 'chart.js';
+import { COLORS } from '../../constants/colors';
+
+export default (function () {
+ // ------------------------------------------------------
+ // @Line Charts
+ // ------------------------------------------------------
+
+ const lineChartBox = document.getElementById('line-chart');
+
+ if (lineChartBox) {
+ const lineCtx = lineChartBox.getContext('2d');
+ lineChartBox.height = 80;
+
+ new Chart(lineCtx, {
+ type: 'line',
+ data: {
+ labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
+ datasets: [{
+ label : 'Series A',
+ backgroundColor : 'rgba(237, 231, 246, 0.5)',
+ borderColor : COLORS['deep-purple-500'],
+ pointBackgroundColor : COLORS['deep-purple-700'],
+ borderWidth : 2,
+ data : [60, 50, 70, 60, 50, 70, 60],
+ }, {
+ label : 'Series B',
+ backgroundColor : 'rgba(232, 245, 233, 0.5)',
+ borderColor : COLORS['blue-500'],
+ pointBackgroundColor : COLORS['blue-700'],
+ borderWidth : 2,
+ data : [70, 75, 85, 70, 75, 85, 70],
+ }],
+ },
+
+ options: {
+ legend: {
+ display: false,
+ },
+ },
+
+ });
+ }
+
+ // ------------------------------------------------------
+ // @Bar Charts
+ // ------------------------------------------------------
+
+ const barChartBox = document.getElementById('bar-chart');
+
+ if (barChartBox) {
+ const barCtx = barChartBox.getContext('2d');
+
+ new Chart(barCtx, {
+ type: 'bar',
+ data: {
+ labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
+ datasets: [{
+ label : 'Dataset 1',
+ backgroundColor : COLORS['deep-purple-500'],
+ borderColor : COLORS['deep-purple-800'],
+ borderWidth : 1,
+ data : [10, 50, 20, 40, 60, 30, 70],
+ }, {
+ label : 'Dataset 2',
+ backgroundColor : COLORS['light-blue-500'],
+ borderColor : COLORS['light-blue-800'],
+ borderWidth : 1,
+ data : [10, 50, 20, 40, 60, 30, 70],
+ }],
+ },
+
+ options: {
+ responsive: true,
+ legend: {
+ position: 'bottom',
+ },
+ },
+ });
+ }
+
+ // ------------------------------------------------------
+ // @Area Charts
+ // ------------------------------------------------------
+
+ const areaChartBox = document.getElementById('area-chart');
+
+ if (areaChartBox) {
+ const areaCtx = areaChartBox.getContext('2d');
+
+ new Chart(areaCtx, {
+ type: 'line',
+ data: {
+ labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
+ datasets: [{
+ backgroundColor : 'rgba(3, 169, 244, 0.5)',
+ borderColor : COLORS['light-blue-800'],
+ data : [10, 50, 20, 40, 60, 30, 70],
+ label : 'Dataset',
+ fill : 'start',
+ }],
+ },
+ });
+ }
+
+ // ------------------------------------------------------
+ // @Scatter Charts
+ // ------------------------------------------------------
+
+ const scatterChartBox = document.getElementById('scatter-chart');
+
+ if (scatterChartBox) {
+ const scatterCtx = scatterChartBox.getContext('2d');
+
+ Chart.Scatter(scatterCtx, {
+ data: {
+ datasets: [{
+ label : 'My First dataset',
+ borderColor : COLORS['red-500'],
+ backgroundColor : COLORS['red-500'],
+ data: [
+ { x: 10, y: 20 },
+ { x: 30, y: 40 },
+ { x: 50, y: 60 },
+ { x: 70, y: 80 },
+ { x: 90, y: 100 },
+ { x: 110, y: 120 },
+ { x: 130, y: 140 },
+ ],
+ }, {
+ label : 'My Second dataset',
+ borderColor : COLORS['green-500'],
+ backgroundColor : COLORS['green-500'],
+ data: [
+ { x: 150, y: 160 },
+ { x: 170, y: 180 },
+ { x: 190, y: 200 },
+ { x: 210, y: 220 },
+ { x: 230, y: 240 },
+ { x: 250, y: 260 },
+ { x: 270, y: 280 },
+ ],
+ }],
+ },
+ });
+ }
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/easyPieChart/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/easyPieChart/index.js
new file mode 100644
index 000000000..4eea28538
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/easyPieChart/index.js
@@ -0,0 +1,13 @@
+import * as $ from 'jquery';
+import 'easy-pie-chart/dist/jquery.easypiechart.min.js';
+
+export default (function () {
+ if ($('.easy-pie-chart').length > 0) {
+ $('.easy-pie-chart').easyPieChart({
+ onStep(from, to, percent) {
+ this.el.children[0].innerHTML = `${Math.round(percent)} %`;
+ },
+ });
+ }
+}())
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/index.js
new file mode 100644
index 000000000..3c6e09843
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/index.js
@@ -0,0 +1,3 @@
+import './chartJS';
+import './easyPieChart';
+import './sparkline';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/sparkline/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/sparkline/index.js
new file mode 100644
index 000000000..6ef99d31d
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/charts/sparkline/index.js
@@ -0,0 +1,248 @@
+import * as $ from 'jquery';
+import 'jquery-sparkline';
+import { debounce } from 'lodash';
+import { COLORS } from '../../constants/colors';
+
+export default (function () {
+ // ------------------------------------------------------
+ // @Dashboard Sparklines
+ // ------------------------------------------------------
+
+ const drawSparklines = () => {
+ if ($('#sparklinedash').length > 0) {
+ $('#sparklinedash').sparkline([0, 5, 6, 10, 9, 12, 4, 9], {
+ type: 'bar',
+ height: '20',
+ barWidth: '3',
+ resize: true,
+ barSpacing: '3',
+ barColor: '#4caf50',
+ });
+ }
+
+ if ($('#sparklinedash2').length > 0) {
+ $('#sparklinedash2').sparkline([0, 5, 6, 10, 9, 12, 4, 9], {
+ type: 'bar',
+ height: '20',
+ barWidth: '3',
+ resize: true,
+ barSpacing: '3',
+ barColor: '#9675ce',
+ });
+ }
+
+ if ($('#sparklinedash3').length > 0) {
+ $('#sparklinedash3').sparkline([0, 5, 6, 10, 9, 12, 4, 9], {
+ type: 'bar',
+ height: '20',
+ barWidth: '3',
+ resize: true,
+ barSpacing: '3',
+ barColor: '#03a9f3',
+ });
+ }
+
+ if ($('#sparklinedash4').length > 0) {
+ $('#sparklinedash4').sparkline([0, 5, 6, 10, 9, 12, 4, 9], {
+ type: 'bar',
+ height: '20',
+ barWidth: '3',
+ resize: true,
+ barSpacing: '3',
+ barColor: '#f96262',
+ });
+ }
+ };
+
+ drawSparklines();
+
+ // Redraw sparklines on resize
+ $(window).resize(debounce(drawSparklines, 150));
+
+ // ------------------------------------------------------
+ // @Other Sparklines
+ // ------------------------------------------------------
+
+ $('#sparkline').sparkline(
+ [5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7],
+ {
+ type: 'line',
+ resize: true,
+ height: '20',
+ }
+ );
+
+ $('#compositebar').sparkline(
+ 'html',
+ {
+ type: 'bar',
+ resize: true,
+ barColor: '#aaf',
+ height: '20',
+ }
+ );
+
+ $('#compositebar').sparkline(
+ [4, 1, 5, 7, 9, 9, 8, 7, 6, 6, 4, 7, 8, 4, 3, 2, 2, 5, 6, 7],
+ {
+ composite: true,
+ fillColor: false,
+ lineColor: 'red',
+ resize: true,
+ height: '20',
+ }
+ );
+
+ $('#normalline').sparkline(
+ 'html',
+ {
+ fillColor: false,
+ normalRangeMin: -1,
+ resize: true,
+ normalRangeMax: 8,
+ height: '20',
+ }
+ );
+
+ $('.sparktristate').sparkline(
+ 'html',
+ {
+ type: 'tristate',
+ resize: true,
+ height: '20',
+ }
+ );
+
+ $('.sparktristatecols').sparkline(
+ 'html',
+ {
+ type: 'tristate',
+ colorMap: {
+ '-2': '#fa7',
+ resize: true,
+ '2': '#44f',
+ height: '20',
+ },
+ }
+ );
+
+ const values = [5, 4, 5, -2, 0, 3, -5, 6, 7, 9, 9, 5, -3, -2, 2, -4];
+ const valuesAlt = [1, 1, 0, 1, -1, -1, 1, -1, 0, 0, 1, 1];
+
+ $('.sparkline').sparkline(values, {
+ type: 'line',
+ barWidth: 4,
+ barSpacing: 5,
+ fillColor: '',
+ lineColor: COLORS['red-500'],
+ lineWidth: 2,
+ spotRadius: 3,
+ spotColor: COLORS['red-500'],
+ maxSpotColor: COLORS['red-500'],
+ minSpotColor: COLORS['red-500'],
+ highlightSpotColor: COLORS['red-500'],
+ highlightLineColor: '',
+ tooltipSuffix: ' Bzzt',
+ tooltipPrefix: 'Hello ',
+ width: 100,
+ height: undefined,
+ barColor: '9f0',
+ negBarColor: 'ff0',
+ stackedBarColor: ['ff0', '9f0', '999', 'f60'],
+ sliceColors: ['ff0', '9f0', '000', 'f60'],
+ offset: '30',
+ borderWidth: 1,
+ borderColor: '000',
+ });
+
+ $('.sparkbar').sparkline(values, {
+ type: 'bar',
+ barWidth: 4,
+ barSpacing: 1,
+ fillColor: '',
+ lineColor: COLORS['deep-purple-500'],
+ tooltipSuffix: 'Celsius',
+ width: 100,
+ barColor: '39f',
+ negBarColor: COLORS['deep-purple-500'],
+ stackedBarColor: ['ff0', '9f0', '999', 'f60'],
+ sliceColors: ['ff0', '9f0', '000', 'f60'],
+ offset: '30',
+ borderWidth: 1,
+ borderColor: '000',
+ });
+
+ $('.sparktri').sparkline(valuesAlt, {
+ type: 'tristate',
+ barWidth: 4,
+ barSpacing: 1,
+ fillColor: '',
+ lineColor: COLORS['light-blue-500'],
+ tooltipSuffix: 'Celsius',
+ width: 100,
+ barColor: COLORS['light-blue-500'],
+ posBarColor: COLORS['light-blue-500'],
+ negBarColor: 'f90',
+ zeroBarColor: '000',
+ stackedBarColor: ['ff0', '9f0', '999', 'f60'],
+ sliceColors: ['ff0', '9f0', '000', 'f60'],
+ offset: '30',
+ borderWidth: 1,
+ borderColor: '000',
+ });
+
+ $('.sparkdisc').sparkline(values, {
+ type: 'discrete',
+ barWidth: 4,
+ barSpacing: 5,
+ fillColor: '',
+ lineColor: '9f0',
+ tooltipSuffix: 'Celsius',
+ width: 100,
+ barColor: '9f0',
+
+ negBarColor: 'f90',
+
+ stackedBarColor: ['ff0', '9f0', '999', 'f60'],
+ sliceColors: ['ff0', '9f0', '000', 'f60'],
+ offset: '30',
+ borderWidth: 1,
+ borderColor: '000',
+ });
+
+ $('.sparkbull').sparkline(values, {
+ type: 'bullet',
+ barWidth: 4,
+ barSpacing: 5,
+ fillColor: '',
+ lineColor: COLORS['amber-500'],
+ tooltipSuffix: 'Celsius',
+ height: 'auto',
+ width: 'auto',
+ targetWidth: 'auto',
+ barColor: COLORS['amber-500'],
+ negBarColor: 'ff0',
+ stackedBarColor: ['ff0', '9f0', '999', 'f60'],
+ sliceColors: ['ff0', '9f0', '000', 'f60'],
+ offset: '30',
+ borderWidth: 1,
+ borderColor: '000',
+ });
+
+ $('.sparkbox').sparkline(values, {
+ type: 'box',
+ barWidth: 4,
+ barSpacing: 5,
+ fillColor: '',
+ lineColor: '9f0',
+ tooltipSuffix: 'Celsius',
+ width: 100,
+ barColor: '9f0',
+ negBarColor: 'ff0',
+ stackedBarColor: ['ff0', '9f0', '999', 'f60'],
+ sliceColors: ['ff0', '9f0', '000', 'f60'],
+ offset: '30',
+ borderWidth: 1,
+ borderColor: '000',
+ });
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/chat/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/chat/index.js
new file mode 100644
index 000000000..8adcf83e8
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/chat/index.js
@@ -0,0 +1,8 @@
+import * as $ from 'jquery';
+
+export default (function () {
+ $('#chat-sidebar-toggle').on('click', e => {
+ $('#chat-sidebar').toggleClass('open');
+ e.preventDefault();
+ });
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/constants/colors.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/constants/colors.js
new file mode 100644
index 000000000..3adb18af6
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/constants/colors.js
@@ -0,0 +1,274 @@
+const COLORS = {
+ 'white' : '#ffffff',
+ 'red-50' : '#ffebee',
+ 'red-100' : '#ffcdd2',
+ 'red-200' : '#ef9a9a',
+ 'red-300' : '#e57373',
+ 'red-400' : '#ef5350',
+ 'red-500' : '#f44336',
+ 'red-600' : '#e53935',
+ 'red-700' : '#d32f2f',
+ 'red-800' : '#c62828',
+ 'red-900' : '#b71c1c',
+ 'red-a100' : '#ff8a80',
+ 'red-a200' : '#ff5252',
+ 'red-a400' : '#ff1744',
+ 'red-a700' : '#d50000',
+ 'pink-50' : '#fce4ec',
+ 'pink-100' : '#f8bbd0',
+ 'pink-200' : '#f48fb1',
+ 'pink-300' : '#f06292',
+ 'pink-400' : '#ec407a',
+ 'pink-500' : '#e91e63',
+ 'pink-600' : '#d81b60',
+ 'pink-700' : '#c2185b',
+ 'pink-800' : '#ad1457',
+ 'pink-900' : '#880e4f',
+ 'pink-a100' : '#ff80ab',
+ 'pink-a200' : '#ff4081',
+ 'pink-a400' : '#f50057',
+ 'pink-a700' : '#c51162',
+ 'purple-50' : '#f3e5f5',
+ 'purple-100' : '#e1bee7',
+ 'purple-200' : '#ce93d8',
+ 'purple-300' : '#ba68c8',
+ 'purple-400' : '#ab47bc',
+ 'purple-500' : '#9c27b0',
+ 'purple-600' : '#8e24aa',
+ 'purple-700' : '#7b1fa2',
+ 'purple-800' : '#6a1b9a',
+ 'purple-900' : '#4a148c',
+ 'purple-a100' : '#ea80fc',
+ 'purple-a200' : '#e040fb',
+ 'purple-a400' : '#d500f9',
+ 'purple-a700' : '#aa00ff',
+ 'deep-purple-50' : '#ede7f6',
+ 'deep-purple-100' : '#d1c4e9',
+ 'deep-purple-200' : '#b39ddb',
+ 'deep-purple-300' : '#9575cd',
+ 'deep-purple-400' : '#7e57c2',
+ 'deep-purple-500' : '#673ab7',
+ 'deep-purple-600' : '#5e35b1',
+ 'deep-purple-700' : '#512da8',
+ 'deep-purple-800' : '#4527a0',
+ 'deep-purple-900' : '#311b92',
+ 'deep-purple-a100' : '#b388ff',
+ 'deep-purple-a200' : '#7c4dff',
+ 'deep-purple-a400' : '#651fff',
+ 'deep-purple-a700' : '#6200ea',
+ 'indigo-50' : '#e8eaf6',
+ 'indigo-100' : '#c5cae9',
+ 'indigo-200' : '#9fa8da',
+ 'indigo-300' : '#7986cb',
+ 'indigo-400' : '#5c6bc0',
+ 'indigo-500' : '#3f51b5',
+ 'indigo-600' : '#3949ab',
+ 'indigo-700' : '#303f9f',
+ 'indigo-800' : '#283593',
+ 'indigo-900' : '#1a237e',
+ 'indigo-a100' : '#8c9eff',
+ 'indigo-a200' : '#536dfe',
+ 'indigo-a400' : '#3d5afe',
+ 'indigo-a700' : '#304ffe',
+ 'blue-50' : '#e3f2fd',
+ 'blue-100' : '#bbdefb',
+ 'blue-200' : '#90caf9',
+ 'blue-300' : '#64b5f6',
+ 'blue-400' : '#42a5f5',
+ 'blue-500' : '#2196f3',
+ 'blue-600' : '#1e88e5',
+ 'blue-700' : '#1976d2',
+ 'blue-800' : '#1565c0',
+ 'blue-900' : '#0d47a1',
+ 'blue-a100' : '#82b1ff',
+ 'blue-a200' : '#448aff',
+ 'blue-a400' : '#2979ff',
+ 'blue-a700' : '#2962ff',
+ 'light-blue-50' : '#e1f5fe',
+ 'light-blue-100' : '#b3e5fc',
+ 'light-blue-200' : '#81d4fa',
+ 'light-blue-300' : '#4fc3f7',
+ 'light-blue-400' : '#29b6f6',
+ 'light-blue-500' : '#03a9f4',
+ 'light-blue-600' : '#039be5',
+ 'light-blue-700' : '#0288d1',
+ 'light-blue-800' : '#0277bd',
+ 'light-blue-900' : '#01579b',
+ 'light-blue-a100' : '#80d8ff',
+ 'light-blue-a200' : '#40c4ff',
+ 'light-blue-a400' : '#00b0ff',
+ 'light-blue-a700' : '#0091ea',
+ 'cyan-50' : '#e0f7fa',
+ 'cyan-100' : '#b2ebf2',
+ 'cyan-200' : '#80deea',
+ 'cyan-300' : '#4dd0e1',
+ 'cyan-400' : '#26c6da',
+ 'cyan-500' : '#00bcd4',
+ 'cyan-600' : '#00acc1',
+ 'cyan-700' : '#0097a7',
+ 'cyan-800' : '#00838f',
+ 'cyan-900' : '#006064',
+ 'cyan-a100' : '#84ffff',
+ 'cyan-a200' : '#18ffff',
+ 'cyan-a400' : '#00e5ff',
+ 'cyan-a700' : '#00b8d4',
+ 'teal-50' : '#e0f2f1',
+ 'teal-100' : '#b2dfdb',
+ 'teal-200' : '#80cbc4',
+ 'teal-300' : '#4db6ac',
+ 'teal-400' : '#26a69a',
+ 'teal-500' : '#009688',
+ 'teal-600' : '#00897b',
+ 'teal-700' : '#00796b',
+ 'teal-800' : '#00695c',
+ 'teal-900' : '#004d40',
+ 'teal-a100' : '#a7ffeb',
+ 'teal-a200' : '#64ffda',
+ 'teal-a400' : '#1de9b6',
+ 'teal-a700' : '#00bfa5',
+ 'green-50' : '#e8f5e9',
+ 'green-100' : '#c8e6c9',
+ 'green-200' : '#a5d6a7',
+ 'green-300' : '#81c784',
+ 'green-400' : '#66bb6a',
+ 'green-500' : '#4caf50',
+ 'green-600' : '#43a047',
+ 'green-700' : '#388e3c',
+ 'green-800' : '#2e7d32',
+ 'green-900' : '#1b5e20',
+ 'green-a100' : '#b9f6ca',
+ 'green-a200' : '#69f0ae',
+ 'green-a400' : '#00e676',
+ 'green-a700' : '#00c853',
+ 'light-green-50' : '#f1f8e9',
+ 'light-green-100' : '#dcedc8',
+ 'light-green-200' : '#c5e1a5',
+ 'light-green-300' : '#aed581',
+ 'light-green-400' : '#9ccc65',
+ 'light-green-500' : '#8bc34a',
+ 'light-green-600' : '#7cb342',
+ 'light-green-700' : '#689f38',
+ 'light-green-800' : '#558b2f',
+ 'light-green-900' : '#33691e',
+ 'light-green-a100' : '#ccff90',
+ 'light-green-a200' : '#b2ff59',
+ 'light-green-a400' : '#76ff03',
+ 'light-green-a700' : '#64dd17',
+ 'lime-50' : '#f9fbe7',
+ 'lime-100' : '#f0f4c3',
+ 'lime-200' : '#e6ee9c',
+ 'lime-300' : '#dce775',
+ 'lime-400' : '#d4e157',
+ 'lime-500' : '#cddc39',
+ 'lime-600' : '#c0ca33',
+ 'lime-700' : '#afb42b',
+ 'lime-800' : '#9e9d24',
+ 'lime-900' : '#827717',
+ 'lime-a100' : '#f4ff81',
+ 'lime-a200' : '#eeff41',
+ 'lime-a400' : '#c6ff00',
+ 'lime-a700' : '#aeea00',
+ 'yellow-50' : '#fffde7',
+ 'yellow-100' : '#fff9c4',
+ 'yellow-200' : '#fff59d',
+ 'yellow-300' : '#fff176',
+ 'yellow-400' : '#ffee58',
+ 'yellow-500' : '#ffeb3b',
+ 'yellow-600' : '#fdd835',
+ 'yellow-700' : '#fbc02d',
+ 'yellow-800' : '#f9a825',
+ 'yellow-900' : '#f57f17',
+ 'yellow-a100' : '#ffff8d',
+ 'yellow-a200' : '#ffff00',
+ 'yellow-a400' : '#ffea00',
+ 'yellow-a700' : '#ffd600',
+ 'amber-50' : '#fff8e1',
+ 'amber-100' : '#ffecb3',
+ 'amber-200' : '#ffe082',
+ 'amber-300' : '#ffd54f',
+ 'amber-400' : '#ffca28',
+ 'amber-500' : '#ffc107',
+ 'amber-600' : '#ffb300',
+ 'amber-700' : '#ffa000',
+ 'amber-800' : '#ff8f00',
+ 'amber-900' : '#ff6f00',
+ 'amber-a100' : '#ffe57f',
+ 'amber-a200' : '#ffd740',
+ 'amber-a400' : '#ffc400',
+ 'amber-a700' : '#ffab00',
+ 'orange-50' : '#fff3e0',
+ 'orange-100' : '#ffe0b2',
+ 'orange-200' : '#ffcc80',
+ 'orange-300' : '#ffb74d',
+ 'orange-400' : '#ffa726',
+ 'orange-500' : '#ff9800',
+ 'orange-600' : '#fb8c00',
+ 'orange-700' : '#f57c00',
+ 'orange-800' : '#ef6c00',
+ 'orange-900' : '#e65100',
+ 'orange-a100' : '#ffd180',
+ 'orange-a200' : '#ffab40',
+ 'orange-a400' : '#ff9100',
+ 'orange-a700' : '#ff6d00',
+ 'deep-orange-50' : '#fbe9e7',
+ 'deep-orange-100' : '#ffccbc',
+ 'deep-orange-200' : '#ffab91',
+ 'deep-orange-300' : '#ff8a65',
+ 'deep-orange-400' : '#ff7043',
+ 'deep-orange-500' : '#ff5722',
+ 'deep-orange-600' : '#f4511e',
+ 'deep-orange-700' : '#e64a19',
+ 'deep-orange-800' : '#d84315',
+ 'deep-orange-900' : '#bf360c',
+ 'deep-orange-a100' : '#ff9e80',
+ 'deep-orange-a200' : '#ff6e40',
+ 'deep-orange-a400' : '#ff3d00',
+ 'deep-orange-a700' : '#dd2c00',
+ 'brown-50' : '#efebe9',
+ 'brown-100' : '#d7ccc8',
+ 'brown-200' : '#bcaaa4',
+ 'brown-300' : '#a1887f',
+ 'brown-400' : '#8d6e63',
+ 'brown-500' : '#795548',
+ 'brown-600' : '#6d4c41',
+ 'brown-700' : '#5d4037',
+ 'brown-800' : '#4e342e',
+ 'brown-900' : '#3e2723',
+ 'grey-50' : '#fafafa',
+ 'grey-100' : '#f5f5f5',
+ 'grey-200' : '#eeeeee',
+ 'grey-300' : '#e0e0e0',
+ 'grey-400' : '#bdbdbd',
+ 'grey-500' : '#9e9e9e',
+ 'grey-600' : '#757575',
+ 'grey-700' : '#616161',
+ 'grey-800' : '#424242',
+ 'grey-900' : '#212121',
+ 'blue-grey-50' : '#eceff1',
+ 'blue-grey-100' : '#cfd8dc',
+ 'blue-grey-200' : '#b0bec5',
+ 'blue-grey-300' : '#90a4ae',
+ 'blue-grey-400' : '#78909c',
+ 'blue-grey-500' : '#607d8b',
+ 'blue-grey-600' : '#546e7a',
+ 'blue-grey-700' : '#455a64',
+ 'blue-grey-800' : '#37474f',
+ 'blue-grey-900' : '#263238',
+};
+
+const GREYS = {
+ 'grey-100' : '#f9fafb',
+ 'grey-200' : '#f2f3f5',
+ 'grey-300' : '#e6eaf0',
+ 'grey-400' : '#d3d9e3',
+ 'grey-500' : '#b9c2d0',
+ 'grey-600' : '#7c8695',
+ 'grey-700' : '#72777a',
+ 'grey-800' : '#565a5c',
+ 'grey-900' : '#313435',
+};
+
+export {
+ COLORS,
+ GREYS,
+};
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/datatable/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/datatable/index.js
new file mode 100644
index 000000000..f02fded41
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/datatable/index.js
@@ -0,0 +1,6 @@
+import * as $ from 'jquery';
+import 'datatables';
+
+export default (function () {
+ $('#dataTable').DataTable();
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/datepicker/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/datepicker/index.js
new file mode 100644
index 000000000..57f8b99f9
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/datepicker/index.js
@@ -0,0 +1,8 @@
+import * as $ from 'jquery';
+import 'bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js';
+import 'bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css';
+
+export default (function () {
+ $('.start-date').datepicker();
+ $('.end-date').datepicker();
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/email/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/email/index.js
new file mode 100644
index 000000000..97c7906d3
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/email/index.js
@@ -0,0 +1,13 @@
+import * as $ from 'jquery';
+
+export default (function () {
+ $('.email-side-toggle').on('click', e => {
+ $('.email-app').toggleClass('side-active');
+ e.preventDefault();
+ });
+
+ $('.email-list-item, .back-to-mailbox').on('click', e => {
+ $('.email-content').toggleClass('open');
+ e.preventDefault();
+ });
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/fullcalendar/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/fullcalendar/index.js
new file mode 100644
index 000000000..de3ebba92
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/fullcalendar/index.js
@@ -0,0 +1,59 @@
+import * as $ from 'jquery';
+import 'fullcalendar/dist/fullcalendar.min.js';
+import 'fullcalendar/dist/fullcalendar.min.css';
+
+export default (function () {
+ const date = new Date();
+ const d = date.getDate();
+ const m = date.getMonth();
+ const y = date.getFullYear();
+
+ const events = [{
+ title : 'All Day Event',
+ start : new Date(y, m, 1),
+ desc : 'Meetings',
+ bullet : 'success',
+ }, {
+ title : 'Long Event',
+ start : new Date(y, m, d - 5),
+ end : new Date(y, m, d - 2),
+ desc : 'Hangouts',
+ bullet : 'success',
+ }, {
+ title : 'Repeating Event',
+ start : new Date(y, m, d - 3, 16, 0),
+ allDay : false,
+ desc : 'Product Checkup',
+ bullet : 'warning',
+ }, {
+ title : 'Repeating Event',
+ start : new Date(y, m, d + 4, 16, 0),
+ allDay : false,
+ desc : 'Conference',
+ bullet : 'danger',
+ }, {
+ title : 'Birthday Party',
+ start : new Date(y, m, d + 1, 19, 0),
+ end : new Date(y, m, d + 1, 22, 30),
+ allDay : false,
+ desc : 'Gathering',
+ }, {
+ title : 'Click for Google',
+ start : new Date(y, m, 28),
+ end : new Date(y, m, 29),
+ url : 'http ://google.com/',
+ desc : 'Google',
+ bullet : 'success',
+ }];
+
+ $('#full-calendar').fullCalendar({
+ events,
+ height : 800,
+ editable : true,
+ header: {
+ left : 'month,agendaWeek,agendaDay',
+ center : 'title',
+ right : 'today prev,next',
+ },
+ });
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/googleMaps/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/googleMaps/index.js
new file mode 100644
index 000000000..0974c6ad2
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/googleMaps/index.js
@@ -0,0 +1,78 @@
+import * as $ from 'jquery';
+import loadGoogleMapsAPI from 'load-google-maps-api';
+
+export default (function () {
+ if ($('#google-map').length > 0) {
+ loadGoogleMapsAPI({
+ key: 'AIzaSyDW8td30_gj6sGXjiMU0ALeMu1SDEwUnEA',
+ }).then(() => {
+ const latitude = 26.8206;
+ const longitude = 30.8025;
+ const mapZoom = 5;
+ const { google } = window;
+
+ const mapOptions = {
+ center : new google.maps.LatLng(latitude, longitude),
+ zoom : mapZoom,
+ mapTypeId : google.maps.MapTypeId.ROADMAP,
+ styles: [{
+ 'featureType': 'landscape',
+ 'stylers': [
+ { 'hue' : '#FFBB00' },
+ { 'saturation' : 43.400000000000006 },
+ { 'lightness' : 37.599999999999994 },
+ { 'gamma' : 1 },
+ ],
+ }, {
+ 'featureType': 'road.highway',
+ 'stylers': [
+ { 'hue' : '#FFC200' },
+ { 'saturation' : -61.8 },
+ { 'lightness' : 45.599999999999994 },
+ { 'gamma' : 1 },
+ ],
+ }, {
+ 'featureType': 'road.arterial',
+ 'stylers': [
+ { 'hue' : '#FF0300' },
+ { 'saturation' : -100 },
+ { 'lightness' : 51.19999999999999 },
+ { 'gamma' : 1 },
+ ],
+ }, {
+ 'featureType': 'road.local',
+ 'stylers': [
+ { 'hue' : '#FF0300' },
+ { 'saturation' : -100 },
+ { 'lightness' : 52 },
+ { 'gamma' : 1 },
+ ],
+ }, {
+ 'featureType': 'water',
+ 'stylers': [
+ { 'hue' : '#0078FF' },
+ { 'saturation' : -13.200000000000003 },
+ { 'lightness' : 2.4000000000000057 },
+ { 'gamma' : 1 },
+ ],
+ }, {
+ 'featureType': 'poi',
+ 'stylers': [
+ { 'hue' : '#00FF6A' },
+ { 'saturation' : -1.0989010989011234 },
+ { 'lightness' : 11.200000000000017 },
+ { 'gamma' : 1 },
+ ],
+ }],
+ };
+
+ const map = new google.maps.Map(document.getElementById('google-map'), mapOptions);
+
+ new google.maps.Marker({
+ map,
+ position : new google.maps.LatLng(latitude, longitude),
+ visible : true,
+ });
+ });
+ }
+}())
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/index.js
new file mode 100644
index 000000000..7795bdd39
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/index.js
@@ -0,0 +1,11 @@
+import '../styles/index.scss';
+
+import './masonry';
+import './popover';
+import './scrollbar';
+import './search';
+import './sidebar';
+import './skycons';
+import './datatable';
+import './datepicker';
+import './utils';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/masonry/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/masonry/index.js
new file mode 100644
index 000000000..1b52abb78
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/masonry/index.js
@@ -0,0 +1,14 @@
+import * as $ from 'jquery';
+import Masonry from 'masonry-layout';
+
+export default (function () {
+ window.addEventListener('load', () => {
+ if ($('.masonry').length > 0) {
+ new Masonry('.masonry', {
+ itemSelector: '.masonry-item',
+ columnWidth: '.masonry-sizer',
+ percentPosition: true,
+ });
+ }
+ });
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/popover/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/popover/index.js
new file mode 100644
index 000000000..f226de712
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/popover/index.js
@@ -0,0 +1,16 @@
+import * as $ from 'jquery';
+import 'bootstrap';
+
+export default (function () {
+ // ------------------------------------------------------
+ // @Popover
+ // ------------------------------------------------------
+
+ $('[data-toggle="popover"]').popover();
+
+ // ------------------------------------------------------
+ // @Tooltips
+ // ------------------------------------------------------
+
+ $('[data-toggle="tooltip"]').tooltip();
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/scrollbar/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/scrollbar/index.js
new file mode 100644
index 000000000..3f57aa64e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/scrollbar/index.js
@@ -0,0 +1,11 @@
+import * as $ from 'jquery';
+import PerfectScrollbar from 'perfect-scrollbar';
+
+export default (function () {
+ const scrollables = $('.scrollable');
+ if (scrollables.length > 0) {
+ scrollables.each((index, el) => {
+ new PerfectScrollbar(el);
+ });
+ }
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/search/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/search/index.js
new file mode 100644
index 000000000..bbd983b6e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/search/index.js
@@ -0,0 +1,9 @@
+import * as $ from 'jquery';
+
+export default (function () {
+ $('.search-toggle').on('click', e => {
+ $('.search-box, .search-input').toggleClass('active');
+ $('.search-input input').focus();
+ e.preventDefault();
+ });
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/sidebar/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/sidebar/index.js
new file mode 100644
index 000000000..ab26f9961
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/sidebar/index.js
@@ -0,0 +1,76 @@
+import * as $ from 'jquery';
+
+export default (function () {
+ // Sidebar links
+ $('.sidebar .sidebar-menu li a').on('click', function () {
+ const $this = $(this);
+
+ if ($this.parent().hasClass('open')) {
+ $this
+ .parent()
+ .children('.dropdown-menu')
+ .slideUp(200, () => {
+ $this.parent().removeClass('open');
+ });
+ } else {
+ $this
+ .parent()
+ .parent()
+ .children('li.open')
+ .children('.dropdown-menu')
+ .slideUp(200);
+
+ $this
+ .parent()
+ .parent()
+ .children('li.open')
+ .children('a')
+ .removeClass('open');
+
+ $this
+ .parent()
+ .parent()
+ .children('li.open')
+ .removeClass('open');
+
+ $this
+ .parent()
+ .children('.dropdown-menu')
+ .slideDown(200, () => {
+ $this.parent().addClass('open');
+ });
+ }
+ });
+
+ // Sidebar Activity Class
+ const sidebarLinks = $('.sidebar').find('.sidebar-link');
+
+ sidebarLinks
+ .each((index, el) => {
+ $(el).removeClass('active');
+ })
+ .filter(function () {
+ const href = $(this).attr('href');
+ const pattern = href[0] === '/' ? href.substr(1) : href;
+ return pattern === (window.location.pathname).substr(1);
+ })
+ .addClass('active');
+
+ // ٍSidebar Toggle
+ $('.sidebar-toggle').on('click', e => {
+ $('.app').toggleClass('is-collapsed');
+ e.preventDefault();
+ });
+
+ /**
+ * Wait untill sidebar fully toggled (animated in/out)
+ * then trigger window resize event in order to recalculate
+ * masonry layout widths and gutters.
+ */
+ $('#sidebar-toggle').click(e => {
+ e.preventDefault();
+ setTimeout(() => {
+ window.dispatchEvent(window.EVENT);
+ }, 300);
+ });
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/skycons/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/skycons/index.js
new file mode 100644
index 000000000..f2cce430e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/skycons/index.js
@@ -0,0 +1,33 @@
+import SkyconsInit from 'skycons';
+
+const Skycons = SkyconsInit(window);
+
+export default (function () {
+ const icons = new Skycons({ 'color': '#ff6849' });
+ const list = [
+ 'clear-day',
+ 'clear-night',
+ 'partly-cloudy-day',
+ 'partly-cloudy-night',
+ 'cloudy',
+ 'rain',
+ 'sleet',
+ 'snow',
+ 'wind',
+ 'fog',
+ ];
+ let i = list.length;
+
+ while (i--) {
+ const
+ weatherType = list[i],
+ elements = document.getElementsByClassName(weatherType);
+ let j = elements.length;
+
+ while (j--) {
+ icons.set(elements[j], weatherType);
+ }
+ }
+
+ icons.play();
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/utils/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/utils/index.js
new file mode 100644
index 000000000..33f59bcc8
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/utils/index.js
@@ -0,0 +1,43 @@
+import * as $ from 'jquery';
+
+export default (function () {
+ // ------------------------------------------------------
+ // @Window Resize
+ // ------------------------------------------------------
+
+ /**
+ * NOTE: Register resize event for Masonry layout
+ */
+ const EVENT = document.createEvent('UIEvents');
+ window.EVENT = EVENT;
+ EVENT.initUIEvent('resize', true, false, window, 0);
+
+
+ window.addEventListener('load', () => {
+ /**
+ * Trigger window resize event after page load
+ * for recalculation of masonry layout.
+ */
+ window.dispatchEvent(EVENT);
+ });
+
+ // ------------------------------------------------------
+ // @External Links
+ // ------------------------------------------------------
+
+ // Open external links in new window
+ $('a')
+ .filter('[href^="http"], [href^="//"]')
+ .not(`[href*="${window.location.host}"]`)
+ .attr('rel', 'noopener noreferrer')
+ .attr('target', '_blank');
+
+ // ------------------------------------------------------
+ // @Resize Trigger
+ // ------------------------------------------------------
+
+ // Trigger resize on any element click
+ document.addEventListener('click', () => {
+ window.dispatchEvent(window.EVENT);
+ });
+}());
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/vectorMaps/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/vectorMaps/index.js
new file mode 100644
index 000000000..f8d44263f
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/vectorMaps/index.js
@@ -0,0 +1,94 @@
+import * as $ from 'jquery';
+import 'jvectormap';
+import 'jvectormap/jquery-jvectormap.css';
+import './jquery-jvectormap-world-mill.js';
+import { debounce } from 'lodash';
+
+export default (function () {
+ const vectorMapInit = () => {
+ if ($('#world-map-marker').length > 0) {
+ // This is a hack, as the .empty() did not do the work
+ $('#vmap').remove();
+
+ // we recreate (after removing it) the container div, to reset all the data of the map
+ $('#world-map-marker').append(`
+
+
+ `);
+
+ $('#vmap').vectorMap({
+ map: 'world_mill',
+ backgroundColor: '#fff',
+ borderColor: '#fff',
+ borderOpacity: 0.25,
+ borderWidth: 0,
+ color: '#e6e6e6',
+ regionStyle : {
+ initial : {
+ fill : '#e4ecef',
+ },
+ },
+
+ markerStyle: {
+ initial: {
+ r: 7,
+ 'fill': '#fff',
+ 'fill-opacity':1,
+ 'stroke': '#000',
+ 'stroke-width' : 2,
+ 'stroke-opacity': 0.4,
+ },
+ },
+
+ markers : [{
+ latLng : [21.00, 78.00],
+ name : 'INDIA : 350',
+ }, {
+ latLng : [-33.00, 151.00],
+ name : 'Australia : 250',
+ }, {
+ latLng : [36.77, -119.41],
+ name : 'USA : 250',
+ }, {
+ latLng : [55.37, -3.41],
+ name : 'UK : 250',
+ }, {
+ latLng : [25.20, 55.27],
+ name : 'UAE : 250',
+ }],
+ series: {
+ regions: [{
+ values: {
+ 'US': 298,
+ 'SA': 200,
+ 'AU': 760,
+ 'IN': 200,
+ 'GB': 120,
+ },
+ scale: ['#03a9f3', '#02a7f1'],
+ normalizeFunction: 'polynomial',
+ }],
+ },
+ hoverOpacity: null,
+ normalizeFunction: 'linear',
+ zoomOnScroll: false,
+ scaleColors: ['#b6d6ff', '#005ace'],
+ selectedColor: '#c9dfaf',
+ selectedRegions: [],
+ enableZoom: false,
+ hoverColor: '#fff',
+ });
+ }
+ };
+
+ vectorMapInit();
+ $(window).resize(debounce(vectorMapInit, 150));
+})();
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/vectorMaps/jquery-jvectormap-world-mill.js b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/vectorMaps/jquery-jvectormap-world-mill.js
new file mode 100644
index 000000000..cedfa5565
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/scripts/vectorMaps/jquery-jvectormap-world-mill.js
@@ -0,0 +1 @@
+jQuery.fn.vectorMap('addMap', 'world_mill',{"insets": [{"width": 900, "top": 0, "height": 440.7063107441331, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.025135122, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z", "name": "Bangladesh"}, "BE": {"path": "M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z", "name": "Belgium"}, "BF": {"path": "M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z", "name": "Burkina Faso"}, "BG": {"path": "M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z", "name": "Bulgaria"}, "BA": {"path": "M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z", "name": "Bosnia and Herz."}, "BN": {"path": "M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z", "name": "Bolivia"}, "JP": {"path": "M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z", "name": "Japan"}, "BI": {"path": "M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z", "name": "Burundi"}, "BJ": {"path": "M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z", "name": "Benin"}, "BT": {"path": "M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z", "name": "Bhutan"}, "JM": {"path": "M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z", "name": "Jamaica"}, "BW": {"path": "M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z", "name": "Botswana"}, "BR": {"path": "M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z", "name": "Brazil"}, "BS": {"path": "M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z", "name": "Bahamas"}, "BY": {"path": "M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z", "name": "Belarus"}, "BZ": {"path": "M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z", "name": "Belize"}, "RU": {"path": "M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM871.88,65.81l2.17,-0.13l3.19,1.16l-2.39,1.09l-5.63,0.48l-0.26,-0.84l2.92,-1.76ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z", "name": "Russia"}, "RW": {"path": "M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z", "name": "Rwanda"}, "RS": {"path": "M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z", "name": "Serbia"}, "TL": {"path": "M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z", "name": "Timor-Leste"}, "TM": {"path": "M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z", "name": "Tajikistan"}, "RO": {"path": "M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z", "name": "Romania"}, "GW": {"path": "M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z", "name": "Guinea-Bissau"}, "GT": {"path": "M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z", "name": "Guatemala"}, "GR": {"path": "M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z", "name": "Greece"}, "GQ": {"path": "M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z", "name": "Eq. Guinea"}, "GY": {"path": "M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z", "name": "Guyana"}, "GE": {"path": "M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z", "name": "Georgia"}, "GB": {"path": "M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z", "name": "United Kingdom"}, "GA": {"path": "M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z", "name": "Gabon"}, "GN": {"path": "M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z", "name": "Guinea"}, "GM": {"path": "M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z", "name": "Gambia"}, "GL": {"path": "M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z", "name": "Greenland"}, "GH": {"path": "M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z", "name": "Ghana"}, "OM": {"path": "M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z", "name": "Oman"}, "TN": {"path": "M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z", "name": "Tunisia"}, "JO": {"path": "M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z", "name": "Jordan"}, "HR": {"path": "M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z", "name": "Croatia"}, "HT": {"path": "M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z", "name": "Haiti"}, "HU": {"path": "M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z", "name": "Hungary"}, "HN": {"path": "M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z", "name": "Honduras"}, "PR": {"path": "M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z", "name": "Puerto Rico"}, "PS": {"path": "M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z", "name": "Palestine"}, "PT": {"path": "M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z", "name": "Portugal"}, "PY": {"path": "M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z", "name": "Paraguay"}, "PA": {"path": "M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z", "name": "Panama"}, "PG": {"path": "M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z", "name": "Peru"}, "PK": {"path": "M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z", "name": "Pakistan"}, "PH": {"path": "M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z", "name": "Philippines"}, "PL": {"path": "M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z", "name": "Poland"}, "ZM": {"path": "M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z", "name": "Zambia"}, "EH": {"path": "M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z", "name": "W. Sahara"}, "EE": {"path": "M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z", "name": "Estonia"}, "EG": {"path": "M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z", "name": "Egypt"}, "ZA": {"path": "M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z", "name": "South Africa"}, "EC": {"path": "M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z", "name": "Ecuador"}, "IT": {"path": "M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z", "name": "Italy"}, "VN": {"path": "M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z", "name": "Vietnam"}, "SB": {"path": "M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z", "name": "Solomon Is."}, "ET": {"path": "M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z", "name": "Ethiopia"}, "SO": {"path": "M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z", "name": "Somalia"}, "ZW": {"path": "M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z", "name": "Zimbabwe"}, "ES": {"path": "M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z", "name": "Spain"}, "ER": {"path": "M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z", "name": "Eritrea"}, "ME": {"path": "M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z", "name": "Montenegro"}, "MD": {"path": "M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z", "name": "Moldova"}, "MG": {"path": "M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z", "name": "Madagascar"}, "MA": {"path": "M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z", "name": "Morocco"}, "UZ": {"path": "M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z", "name": "Uzbekistan"}, "MM": {"path": "M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z", "name": "Myanmar"}, "ML": {"path": "M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z", "name": "Mali"}, "MN": {"path": "M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z", "name": "Mongolia"}, "MK": {"path": "M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z", "name": "Macedonia"}, "MW": {"path": "M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z", "name": "Malawi"}, "MR": {"path": "M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z", "name": "Mauritania"}, "UG": {"path": "M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z", "name": "Uganda"}, "MY": {"path": "M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z", "name": "Malaysia"}, "MX": {"path": "M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z", "name": "Mexico"}, "IL": {"path": "M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z", "name": "Israel"}, "FR": {"path": "M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z", "name": "France"}, "XS": {"path": "M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z", "name": "Somaliland"}, "FI": {"path": "M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z", "name": "Finland"}, "FJ": {"path": "M869.95,326.98l-1.21,0.41l-0.08,-0.23l2.97,-1.21l-0.14,0.42l-1.54,0.61ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z", "name": "Fiji"}, "FK": {"path": "M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z", "name": "Falkland Is."}, "NI": {"path": "M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z", "name": "Nicaragua"}, "NL": {"path": "M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z", "name": "Netherlands"}, "NO": {"path": "M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z", "name": "Norway"}, "NA": {"path": "M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z", "name": "Namibia"}, "VU": {"path": "M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z", "name": "Vanuatu"}, "NC": {"path": "M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z", "name": "New Caledonia"}, "NE": {"path": "M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z", "name": "Niger"}, "NG": {"path": "M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z", "name": "Nigeria"}, "NZ": {"path": "M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z", "name": "New Zealand"}, "NP": {"path": "M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z", "name": "Nepal"}, "XK": {"path": "M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z", "name": "Kosovo"}, "CI": {"path": "M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z", "name": "C\u00f4te d'Ivoire"}, "CH": {"path": "M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z", "name": "Switzerland"}, "CO": {"path": "M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z", "name": "Colombia"}, "CN": {"path": "M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z", "name": "China"}, "CM": {"path": "M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z", "name": "Cameroon"}, "CL": {"path": "M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z", "name": "Chile"}, "XC": {"path": "M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z", "name": "N. Cyprus"}, "CA": {"path": "M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z", "name": "Canada"}, "CG": {"path": "M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z", "name": "Congo"}, "CF": {"path": "M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z", "name": "Central African Rep."}, "CD": {"path": "M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z", "name": "Dem. Rep. Congo"}, "CZ": {"path": "M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z", "name": "Czech Rep."}, "CY": {"path": "M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z", "name": "Cyprus"}, "CR": {"path": "M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z", "name": "Costa Rica"}, "CU": {"path": "M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z", "name": "Cuba"}, "SZ": {"path": "M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z", "name": "Swaziland"}, "SY": {"path": "M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z", "name": "Syria"}, "KG": {"path": "M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z", "name": "Kyrgyzstan"}, "KE": {"path": "M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z", "name": "Kenya"}, "SS": {"path": "M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z", "name": "S. Sudan"}, "SR": {"path": "M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z", "name": "Suriname"}, "KH": {"path": "M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z", "name": "Cambodia"}, "SV": {"path": "M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z", "name": "El Salvador"}, "SK": {"path": "M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z", "name": "Slovakia"}, "KR": {"path": "M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z", "name": "Korea"}, "SI": {"path": "M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z", "name": "Slovenia"}, "KP": {"path": "M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z", "name": "Dem. Rep. Korea"}, "KW": {"path": "M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z", "name": "Kuwait"}, "SN": {"path": "M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z", "name": "Senegal"}, "SL": {"path": "M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z", "name": "Sierra Leone"}, "KZ": {"path": "M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z", "name": "Kazakhstan"}, "SA": {"path": "M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z", "name": "Saudi Arabia"}, "SE": {"path": "M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z", "name": "Sudan"}, "DO": {"path": "M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z", "name": "Dominican Rep."}, "DJ": {"path": "M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z", "name": "Djibouti"}, "DK": {"path": "M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z", "name": "Denmark"}, "DE": {"path": "M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z", "name": "Germany"}, "YE": {"path": "M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z", "name": "Yemen"}, "DZ": {"path": "M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z", "name": "Algeria"}, "US": {"path": "M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z", "name": "United States"}, "UY": {"path": "M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z", "name": "Uruguay"}, "LB": {"path": "M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z", "name": "Lebanon"}, "LA": {"path": "M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z", "name": "Lao PDR"}, "TW": {"path": "M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z", "name": "Taiwan"}, "TT": {"path": "M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z", "name": "Turkey"}, "LK": {"path": "M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z", "name": "Sri Lanka"}, "LV": {"path": "M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z", "name": "Latvia"}, "LT": {"path": "M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z", "name": "Lithuania"}, "LU": {"path": "M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z", "name": "Luxembourg"}, "LR": {"path": "M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z", "name": "Liberia"}, "LS": {"path": "M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z", "name": "Lesotho"}, "TH": {"path": "M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z", "name": "Thailand"}, "TF": {"path": "M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z", "name": "Fr. S. Antarctic Lands"}, "TG": {"path": "M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z", "name": "Togo"}, "TD": {"path": "M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z", "name": "Chad"}, "LY": {"path": "M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z", "name": "Libya"}, "AE": {"path": "M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z", "name": "Venezuela"}, "AF": {"path": "M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z", "name": "Afghanistan"}, "IQ": {"path": "M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z", "name": "Iraq"}, "IS": {"path": "M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z", "name": "Iceland"}, "IR": {"path": "M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z", "name": "Iran"}, "AM": {"path": "M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z", "name": "Armenia"}, "AL": {"path": "M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z", "name": "Albania"}, "AO": {"path": "M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z", "name": "Angola"}, "AR": {"path": "M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z", "name": "Argentina"}, "AU": {"path": "M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z", "name": "Australia"}, "AT": {"path": "M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z", "name": "Austria"}, "IN": {"path": "M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z", "name": "India"}, "TZ": {"path": "M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z", "name": "Tanzania"}, "AZ": {"path": "M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z", "name": "Azerbaijan"}, "IE": {"path": "M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z", "name": "Ireland"}, "ID": {"path": "M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z", "name": "Indonesia"}, "UA": {"path": "M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z", "name": "Ukraine"}, "QA": {"path": "M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z", "name": "Qatar"}, "MZ": {"path": "M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z", "name": "Mozambique"}}, "height": 440.7063107441331, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0});
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/FontAwesome.otf b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/FontAwesome.otf
new file mode 100644
index 000000000..401ec0f36
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/FontAwesome.otf differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.eot b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.eot
new file mode 100644
index 000000000..e9f60ca95
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.eot differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.svg b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.svg
new file mode 100644
index 000000000..855c845e5
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.svg
@@ -0,0 +1,2671 @@
+
+
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.ttf b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.ttf
new file mode 100644
index 000000000..35acda2fa
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.ttf differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.woff b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.woff
new file mode 100644
index 000000000..400014a4b
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.woff differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.woff2 b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.woff2
new file mode 100644
index 000000000..4d13fc604
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/fontawesome/fontawesome-webfont.woff2 differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.eot b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.eot
new file mode 100644
index 000000000..9ec298b9d
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.eot differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.svg b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.svg
new file mode 100644
index 000000000..3d5385441
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.svg
@@ -0,0 +1,362 @@
+
+
+
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.ttf b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.ttf
new file mode 100644
index 000000000..5d627e701
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.ttf differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.woff b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.woff
new file mode 100644
index 000000000..847ebd183
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/fonts/icons/themify/themify.woff differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/404.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/404.png
new file mode 100644
index 000000000..1849c39a2
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/404.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/500.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/500.png
new file mode 100644
index 000000000..6e75cb3ae
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/500.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/bg.jpg b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/bg.jpg
new file mode 100644
index 000000000..24f837917
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/bg.jpg differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_asc.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_asc.png
new file mode 100644
index 000000000..e1ba61a80
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_asc.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_asc_disabled.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_asc_disabled.png
new file mode 100644
index 000000000..fb11dfe24
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_asc_disabled.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_both.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_both.png
new file mode 100644
index 000000000..af5bc7c5a
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_both.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_desc.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_desc.png
new file mode 100644
index 000000000..0e156deb5
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_desc.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_desc_disabled.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_desc_disabled.png
new file mode 100644
index 000000000..c9fdd8a15
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/datatables/sort_desc_disabled.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/logo.png b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/logo.png
new file mode 100644
index 000000000..109a159cf
Binary files /dev/null and b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/logo.png differ
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/logo.svg b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/logo.svg
new file mode 100644
index 000000000..789e92571
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/static/images/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/index.scss
new file mode 100644
index 000000000..6c7b16cfc
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/index.scss
@@ -0,0 +1,6 @@
+@import 'spec/settings/index';
+@import 'spec/tools/index';
+@import "~bootstrap/scss/bootstrap";
+@import 'spec/index';
+@import 'vendor/index';
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/easyPieChart.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/easyPieChart.scss
new file mode 100644
index 000000000..ffe949ec6
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/easyPieChart.scss
@@ -0,0 +1,11 @@
+.easy-pie-chart {
+ position: relative;
+
+ span {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ line-height: 0;
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/footer.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/footer.scss
new file mode 100644
index 000000000..e3bc289c8
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/footer.scss
@@ -0,0 +1,4 @@
+footer {
+ z-index: 1;
+ position: relative;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/forms.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/forms.scss
new file mode 100644
index 000000000..3b9f27a58
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/forms.scss
@@ -0,0 +1,257 @@
+.checkbox label {
+ display: inline-block;
+ vertical-align: middle;
+ position: relative;
+ padding-left: 17px;
+ margin-bottom: 0;
+}
+
+.checkbox label::before {
+ content: "";
+ display: inline-block;
+ position: absolute;
+ width: 17px;
+ height: 17px;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ margin-left: -12px;
+ border: 1px solid $grey-300;
+ border-radius: 3px;
+ background-color: $md-white;
+ -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
+ -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
+ transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
+}
+
+.checkbox label::after {
+ display: inline-block;
+ position: absolute;
+ width: 17px;
+ height: 17px;
+ text-align: center;
+ font-size: 10px !important;
+ line-height: 17px;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ margin-left: -12px;
+ color: $grey-500;
+}
+
+.checkbox input[type="checkbox"] {
+ opacity: 0;
+ z-index: 1;
+}
+
+.checkbox input[type="checkbox"]:focus + label::before {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.checkbox input[type="checkbox"]:checked + label::after {
+ font-family: 'FontAwesome';
+ content: "\f00c";
+ font-size: 13px;
+}
+
+.checkbox input[type="checkbox"]:disabled + label {
+ opacity: 0.65;
+}
+
+.checkbox input[type="checkbox"]:disabled + label::before {
+ background-color: $grey-400;
+ cursor: not-allowed;
+}
+
+.checkbox.checkbox-circle label::before {
+ border-radius: 50%;
+}
+
+.checkbox.checkbox-inline {
+ margin-top: 0;
+}
+
+.checkbox-primary input[type="checkbox"]:checked + label::before {
+ background-color: $default-primary;
+ border-color: $default-primary;
+}
+
+.checkbox-primary input[type="checkbox"]:checked + label::after {
+ color: #fff;
+}
+
+.checkbox-danger input[type="checkbox"]:checked + label::before {
+ background-color: $default-danger;
+ border-color: $default-danger;
+}
+
+.checkbox-danger input[type="checkbox"]:checked + label::after {
+ color: $md-white;
+}
+
+.checkbox-info input[type="checkbox"]:checked + label::before {
+ background-color: $default-info;
+ border-color: $default-info;
+}
+
+.checkbox-info input[type="checkbox"]:checked + label::after {
+ color: $md-white;
+}
+
+.checkbox-warning input[type="checkbox"]:checked + label::before {
+ background-color: $default-warning;
+ border-color: $default-warning;
+}
+
+.checkbox-warning input[type="checkbox"]:checked + label::after {
+ color: $md-white;
+}
+
+.checkbox-success input[type="checkbox"]:checked + label::before {
+ background-color: $default-success;
+ border-color: $default-success;
+}
+
+.checkbox-success input[type="checkbox"]:checked + label::after {
+ color: $md-white;
+}
+
+.radio {
+ padding-left: 20px;
+}
+
+.radio label {
+ display: inline-block;
+ vertical-align: middle;
+ position: relative;
+ padding-left: 5px;
+}
+
+.radio label::before {
+ content: "";
+ display: inline-block;
+ position: absolute;
+ width: 17px;
+ height: 17px;
+ left: 0;
+ margin-left: -20px;
+ border: 1px solid #cccccc;
+ border-radius: 50%;
+ background-color: #fff;
+ -webkit-transition: border 0.15s ease-in-out;
+ -o-transition: border 0.15s ease-in-out;
+ transition: border 0.15s ease-in-out;
+}
+
+.radio label::after {
+ display: inline-block;
+ position: absolute;
+ content: " ";
+ width: 11px;
+ height: 11px;
+ left: 3px;
+ top: 3px;
+ margin-left: -20px;
+ border-radius: 50%;
+ background-color: #555555;
+ -webkit-transform: scale(0, 0);
+ -ms-transform: scale(0, 0);
+ -o-transform: scale(0, 0);
+ transform: scale(0, 0);
+ -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
+ -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
+ -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
+ transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
+}
+
+.radio input[type="radio"] {
+ opacity: 0;
+ z-index: 1;
+}
+
+.radio input[type="radio"]:focus + label::before {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.radio input[type="radio"]:checked + label::after {
+ -webkit-transform: scale(1, 1);
+ -ms-transform: scale(1, 1);
+ -o-transform: scale(1, 1);
+ transform: scale(1, 1);
+}
+
+.radio input[type="radio"]:disabled + label {
+ opacity: 0.65;
+}
+
+.radio input[type="radio"]:disabled + label::before {
+ cursor: not-allowed;
+}
+
+.radio.radio-inline {
+ margin-top: 0;
+}
+
+.radio-primary input[type="radio"] + label::after {
+ background-color: #428bca;
+}
+
+.radio-primary input[type="radio"]:checked + label::before {
+ border-color: #428bca;
+}
+
+.radio-primary input[type="radio"]:checked + label::after {
+ background-color: #428bca;
+}
+
+.radio-danger input[type="radio"] + label::after {
+ background-color: #d9534f;
+}
+
+.radio-danger input[type="radio"]:checked + label::before {
+ border-color: #d9534f;
+}
+
+.radio-danger input[type="radio"]:checked + label::after {
+ background-color: #d9534f;
+}
+
+.radio-info input[type="radio"] + label::after {
+ background-color: #5bc0de;
+}
+
+.radio-info input[type="radio"]:checked + label::before {
+ border-color: #5bc0de;
+}
+
+.radio-info input[type="radio"]:checked + label::after {
+ background-color: #5bc0de;
+}
+
+.radio-warning input[type="radio"] + label::after {
+ background-color: #f0ad4e;
+}
+
+.radio-warning input[type="radio"]:checked + label::before {
+ border-color: #f0ad4e;
+}
+
+.radio-warning input[type="radio"]:checked + label::after {
+ background-color: #f0ad4e;
+}
+
+.radio-success input[type="radio"] + label::after {
+ background-color: #5cb85c;
+}
+
+.radio-success input[type="radio"]:checked + label::before {
+ border-color: #5cb85c;
+}
+
+.radio-success input[type="radio"]:checked + label::after {
+ background-color: #5cb85c;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/index.scss
new file mode 100644
index 000000000..bac130905
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/index.scss
@@ -0,0 +1,8 @@
+@import 'sidebar';
+@import 'topbar';
+@import 'pageContainer';
+@import 'progressBar';
+@import 'forms';
+@import 'masonry';
+@import 'loader';
+@import 'footer';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/loader.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/loader.scss
new file mode 100644
index 000000000..f97b16765
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/loader.scss
@@ -0,0 +1,43 @@
+#loader {
+ transition: all 0.3s ease-in-out;
+ opacity: 1;
+ display: default;
+}
+
+#loader.fadeOut {
+ opacity: 0;
+ display: none;
+}
+
+
+
+.spinner {
+ width: 40px;
+ height: 40px;
+ position: absolute;
+ top: calc(50% - 20px);
+ left: calc(50% - 20px);
+ background-color: #333;
+ border-radius: 100%;
+ -webkit-animation: sk-scaleout 1.0s infinite ease-in-out;
+ animation: sk-scaleout 1.0s infinite ease-in-out;
+}
+
+@-webkit-keyframes sk-scaleout {
+ 0% { -webkit-transform: scale(0) }
+ 100% {
+ -webkit-transform: scale(1.0);
+ opacity: 0;
+ }
+}
+
+@keyframes sk-scaleout {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ } 100% {
+ -webkit-transform: scale(1.0);
+ transform: scale(1.0);
+ opacity: 0;
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/masonry.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/masonry.scss
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/masonry.scss
@@ -0,0 +1 @@
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/pageContainer.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/pageContainer.scss
new file mode 100644
index 000000000..1c632e3a8
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/pageContainer.scss
@@ -0,0 +1,96 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Page Container
+// + @Main Content
+// + @Full Container
+// + @Collapsed State
+
+// ---------------------------------------------------------
+// @Page Container
+// ---------------------------------------------------------
+
+.page-container {
+ min-height: 100vh;
+ padding-left: $offscreen-size;
+ transition: all 0.2s ease;
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ padding-left: $collapsed-size;
+ }
+
+ @include to($breakpoint-md) {
+ padding-left: 0;
+ }
+}
+
+// ---------------------------------------------------------
+// @Main Content
+// ---------------------------------------------------------
+
+.main-content {
+ padding: 85px 20px 20px;
+ min-height: calc(100vh - 61px);
+
+ @include to($breakpoint-md) {
+ padding: 85px 5px 5px;
+ }
+}
+
+.remain-height {
+ height: calc(100vh - 126px);
+}
+
+// ---------------------------------------------------------
+// @Full Container
+// ---------------------------------------------------------
+
+.full-container {
+ left: $offscreen-size;
+ min-height: calc(100vh - #{$header-height});
+ position: absolute;
+ right: 0;
+ top: $header-height;
+ transition: all 0.2s ease;
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ left: 0;
+ padding-left: $collapsed-size;
+ }
+
+ @include to($breakpoint-md) {
+ left: 0;
+ }
+}
+
+// ---------------------------------------------------------
+// @Collapsed State
+// ---------------------------------------------------------
+
+.is-collapsed {
+ .page-container {
+ padding-left: $collapsed-size;
+
+ @include to($breakpoint-md) {
+ padding-left: 0;
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ padding-left: $offscreen-size;
+ }
+ }
+
+ .full-container {
+ left: $collapsed-size;
+
+ @include to($breakpoint-md) {
+ left: 0;
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ left: $offscreen-size;
+ padding-left: 0;
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/progressBar.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/progressBar.scss
new file mode 100644
index 000000000..87a8e679a
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/progressBar.scss
@@ -0,0 +1,6 @@
+.progress {
+ height: 4px;
+ background-color: #eaeef3;
+ border-radius: 4px;
+ margin-bottom: 10px;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/sidebar.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/sidebar.scss
new file mode 100644
index 000000000..838c16d4a
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/sidebar.scss
@@ -0,0 +1,448 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Sidebar
+// + @Sidebar Inner
+// + @Sidebar Header
+// + @Sidebar Menu
+// + @Sidebar Collapsed
+
+// ---------------------------------------------------------
+// @Sidebar
+// ---------------------------------------------------------
+
+.sidebar {
+ background-color: $default-white;
+ bottom: 0;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ transition: all 0.2s ease;
+ width: $offscreen-size;
+ z-index: 1000;
+
+ ul {
+ list-style-type: none;
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ width: $collapsed-size;
+
+ .sidebar-inner {
+ .sidebar-logo {
+ border-bottom: 1px solid transparent;
+ padding: 0;
+
+ a {
+ .logo {
+ background-position: center center;
+ width: $collapsed-size;
+ }
+ }
+ }
+
+ .sidebar-menu {
+ overflow-x: hidden;
+
+ > li {
+ > a {
+ .title {
+ display: none;
+ }
+ }
+ }
+
+ li {
+ &.dropdown {
+ .arrow {
+ opacity: 0;
+ }
+
+ &.open {
+ ul.dropdown-menu {
+ display: none !important;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ &:hover {
+ width: $offscreen-size;
+
+ .sidebar-inner {
+ .sidebar-logo {
+ border-bottom: 1px solid $border-color;
+ padding: 0 20px;
+ }
+
+ .sidebar-menu {
+ > li {
+ > a {
+ .title {
+ display: inline-block;
+ }
+ }
+ }
+
+ li {
+ &.dropdown {
+ .arrow {
+ opacity: 1;
+ }
+ }
+
+ &.open {
+ > ul.dropdown-menu {
+ display: block !important;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @include to($breakpoint-md) {
+ left: -$offscreen-size;
+ width: calc(#{$offscreen-size} - 30px);
+ }
+}
+
+// ---------------------------------------------------------
+// @Sidebar Inner
+// ---------------------------------------------------------
+
+.sidebar-inner {
+ position: relative;
+ height: 100%;
+}
+
+// ---------------------------------------------------------
+// @Sidebar Header
+// ---------------------------------------------------------
+
+.sidebar-logo {
+ border-bottom: 1px solid $border-color;
+ border-right: 1px solid $border-color;
+ line-height: 0;
+ padding: 0 20px;
+ transition: all 0.2s ease;
+
+ a {
+ display: inline-block;
+ width: 100%;
+
+ .logo {
+ background-position: center left;
+ background-repeat: no-repeat;
+ display: inline-block;
+ min-height: calc(#{$header-height} - 1px);
+ width: 100%;
+ width: 70px;
+ }
+
+ .logo-text {
+ color: $grey-900;
+ }
+ }
+
+ .mobile-toggle {
+ display: none;
+ float: right;
+ font-size: 18px;
+ line-height: calc(#{$header-height} - 1px);
+
+ a {
+ color: $default-text-color;
+ }
+
+ @include to($breakpoint-md) {
+ display: inline-block;
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ display: none;
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Sidebar Menu
+// ---------------------------------------------------------
+
+.sidebar-menu {
+ @include clearfix;
+ border-right: 1px solid $border-color;
+ height: calc(100vh - #{$header-height});
+ list-style: none;
+ margin: 0;
+ overflow: auto;
+ padding: 0;
+ position: relative;
+
+ .dropdown-toggle::after {
+ display: none;
+ }
+
+ .sidebar-link {
+ &.active::before {
+ background: $md-blue-500;
+ border-radius: 50%;
+ content: '';
+ display: block;
+ height: 8px;
+ left: -4px;
+ position: absolute;
+ top: calc(50% - 4px);
+ width: 8px;
+ }
+ }
+
+ li {
+ position: relative;
+
+ &.dropdown {
+ .arrow {
+ font-size: 10px;
+ line-height: 40px;
+ position: absolute;
+ right: 30px;
+ transition: all 0.05s ease-in;
+
+ @include to($breakpoint-md) {
+ right: 25px;
+ }
+ }
+
+ &.open {
+ > a {
+ color: $default-dark;
+
+ .icon-holder {
+ color: $default-info;
+ }
+
+ > .arrow {
+ transform: rotate(90deg);
+ }
+ }
+
+ > .dropdown-menu {
+ display: block;
+
+ .dropdown-menu {
+ padding-left: 20px;
+ }
+
+ .arrow {
+ line-height: 25px;
+ }
+ }
+ }
+ }
+
+ a {
+ color: $default-text-color;
+ transition: all 0.3s ease;
+
+ &:hover,
+ &:focus {
+ color: $default-dark;
+ text-decoration: none;
+
+ .icon-holder {
+ color: $default-info;
+ }
+ }
+ }
+ }
+
+ > li {
+ &.dropdown {
+ ul {
+ &.dropdown-menu {
+ background-color: transparent;
+ border-radius: 0;
+ border: 0;
+ box-shadow: none;
+ float: none;
+ padding-left: 50px;
+ padding-top: 0;
+ position: relative;
+ width: 100%;
+
+ > li {
+ > a {
+ display: block;
+ padding: 10px 15px;
+
+ &:hover,
+ &:focus {
+ background-color: transparent;
+ color: $default-dark;
+ }
+ }
+
+ &.active {
+ a {
+ color: $default-dark;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ > a {
+ display: block;
+ font-size: 15px;
+ font-weight: 500;
+ padding: 5px 15px;
+ position: relative;
+ white-space: nowrap;
+
+ .icon-holder {
+ border-radius: 6px;
+ display: inline-block;
+ font-size: 17px;
+ height: 35px;
+ left: 0;
+ line-height: 35px;
+ margin-right: 14px;
+ position: relative;
+ text-align: center;
+ transition: all 0.3s ease;
+ width: 35px;
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Sidebar Collapsed
+// ---------------------------------------------------------
+
+.is-collapsed {
+ .sidebar {
+ @include from($breakpoint-xl) {
+ width: $collapsed-size;
+
+ .sidebar-inner {
+ .sidebar-logo {
+ border-bottom: 1px solid transparent;
+ padding: 0;
+ }
+
+ .sidebar-menu {
+ overflow-x: hidden;
+
+ > li {
+ > a {
+ .title {
+ display: none;
+ }
+ }
+ }
+
+ li {
+ &.dropdown {
+ .arrow {
+ opacity: 0;
+ }
+
+ &.open {
+ ul.dropdown-menu {
+ display: none !important;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ &:hover {
+ width: $offscreen-size;
+
+ .sidebar-inner {
+ .sidebar-logo {
+ border-bottom: 1px solid $border-color;
+ padding: 0 20px;
+ }
+
+ .sidebar-menu {
+ > li {
+ > a {
+ .title {
+ display: inline-block;
+ }
+ }
+ }
+
+ li {
+ &.dropdown {
+ .arrow {
+ opacity: 1;
+ }
+ }
+
+ &.open {
+ > ul.dropdown-menu {
+ display: block !important;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ width: $offscreen-size;
+
+ .sidebar-inner {
+ .sidebar-logo {
+ border-bottom: 1px solid $border-color;
+ padding: 0 20px;
+
+ > a {
+ .logo {
+ background-position: center left;
+ width: 150px;
+ }
+ }
+ }
+
+ .sidebar-menu {
+ > li {
+ > a {
+ .title {
+ display: inline-block;
+ }
+ }
+ }
+
+ li {
+ &.dropdown {
+ .arrow {
+ opacity: 1;
+ }
+ }
+
+ &.open {
+ > ul.dropdown-menu {
+ display: block !important;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @include to($breakpoint-md) {
+ left: 0;
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/topbar.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/topbar.scss
new file mode 100644
index 000000000..996acc61e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/components/topbar.scss
@@ -0,0 +1,207 @@
+// ---------------------------------------------------------
+// @TOC
+
+// + @Topbar
+// + @Collapsed State
+
+// ---------------------------------------------------------
+// @Topbar
+// ---------------------------------------------------------
+
+.header {
+ background-color: $default-white;
+ border-bottom: 1px solid $border-color;
+ display: block;
+ margin-bottom: 0;
+ padding: 0;
+ position: fixed;
+ transition: all 0.2s ease;
+ width: calc(100% - #{$offscreen-size});
+ z-index: 800;
+
+ @include to($breakpoint-md) {
+ width: 100%;
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ width: calc(100% - #{$collapsed-size});
+ }
+
+ .header-container {
+ @include clearfix;
+
+ height: $header-height;
+
+ .nav-left,
+ .nav-right {
+ list-style: none;
+ margin-bottom: 0;
+ padding-left: 0;
+ position: relative;
+
+ > li {
+ float: left;
+
+ > a {
+ color: $default-text-color;
+ display: block;
+ line-height: $header-height;
+ min-height: $header-height;
+ padding: 0 15px;
+ transition: all 0.2s ease-in-out;
+
+ i {
+ font-size: 17px;
+ }
+
+ &:hover,
+ &:focus {
+ color: $default-dark;
+ text-decoration: none;
+ }
+
+ @include to($breakpoint-md) {
+ padding: 0 15px;
+ }
+ }
+ }
+
+ .notifications {
+ position: relative;
+
+ .counter {
+ background-color: $default-danger;
+ border-radius: 50px;
+ color: $default-white;
+ font-size: 10px;
+ line-height: 1;
+ padding: 3px 5.5px;
+ position: absolute;
+ right: 6px;
+ top: 12px;
+ }
+
+ .dropdown-menu {
+ min-width: 350px;
+ padding: 0;
+
+ @include to($breakpoint-sm) {
+ max-width: 300px;
+ }
+ }
+ }
+ }
+
+ .dropdown-menu {
+ display: block;
+ margin: 0;
+ transform-origin: top right;
+ transform: scale(0, 0);
+ transition: transform 0.15s ease-out;
+
+ .divider {
+ border-bottom: 1px solid $border-color;
+ height: 1px;
+ overflow: hidden;
+ }
+
+ > li {
+ > a {
+ transition: all 0.2s ease-out;
+ }
+ }
+ }
+
+ .show {
+ .dropdown-menu {
+ transform: scale(1, 1);
+ }
+ }
+
+ .nav-left {
+ float: left;
+ margin-left: 15px;
+ }
+
+ .nav-right {
+ float: right;
+
+ .dropdown-menu {
+ left: auto;
+ right: 0;
+
+ > li {
+ width: 100%;
+
+ > a {
+ line-height: 1.5;
+ min-height: auto;
+ padding: 10px 15px;
+ }
+ }
+ }
+ }
+ }
+
+ .search-box {
+ .search-icon-close {
+ display: none;
+ }
+
+ &.active {
+ .search-icon {
+ display: none;
+ }
+
+ .search-icon-close {
+ display: inline-block;
+ }
+ }
+ }
+
+ .search-input {
+ display: none;
+
+ &.active {
+ display: inline-block;
+ }
+
+ input {
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ font-size: 18px;
+ height: 40px;
+ margin-top: 12px;
+ outline: none;
+ padding: 5px;
+
+ @include to($breakpoint-sm) {
+ width: 85px;
+ }
+
+ @include placeholder {
+ color: lighten($default-text-color, 20%);
+ font-style: italic;
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Collapsed State
+// ---------------------------------------------------------
+
+.is-collapsed {
+ .header {
+ width: calc(100% - #{$collapsed-size});
+
+ @include to($breakpoint-md) {
+ width: 100%;
+ }
+
+ @include between($breakpoint-md, $breakpoint-xl) {
+ width: calc(100% - #{$offscreen-size});
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/generic/base.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/generic/base.scss
new file mode 100644
index 000000000..86d4aa61a
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/generic/base.scss
@@ -0,0 +1,79 @@
+html, html a, body {
+ -webkit-font-smoothing: antialiased;
+}
+
+a {
+ transition: all 0.3s ease-in-out;
+}
+
+body {
+ font-family: $font-primary;
+ font-size: 14px;
+ color: $default-text-color;
+ line-height: 1.5;
+ letter-spacing: 0.2px;
+ overflow-x: hidden;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: $font-secondary;
+ letter-spacing: 0.5px;
+ line-height: 1.5;
+
+ a {
+ font-family: $font-secondary;
+ }
+
+ small {
+ font-weight: 300;
+ color: lighten($default-dark, 5%);
+ }
+}
+
+p {
+ font-family: $font-primary;
+ line-height: 1.9;
+}
+
+.lead {
+ font-size: 18px;
+}
+
+ul {
+ margin-bottom: 0;
+}
+
+a {
+ color: $default-info;
+
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ color: darken($default-info, 10%);
+ }
+
+ &:focus {
+ outline: none;
+ }
+
+ &.text-gray {
+ &:hover,
+ &:focus,
+ &.active {
+ color: $default-dark !important;
+ }
+ }
+}
+
+:focus {
+ outline: none;
+}
+
+hr {
+ border-top: 1px solid $border-color;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/generic/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/generic/index.scss
new file mode 100644
index 000000000..d71f710be
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/generic/index.scss
@@ -0,0 +1 @@
+@import 'base';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/index.scss
new file mode 100644
index 000000000..a196210b3
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/index.scss
@@ -0,0 +1,3 @@
+@import 'generic/index';
+@import 'components/index';
+@import 'utils/index';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/chat.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/chat.scss
new file mode 100644
index 000000000..6d56e76bf
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/chat.scss
@@ -0,0 +1,19 @@
+#chat-sidebar {
+ width: 250px;
+ height: calc(100vh - #{$header-height} - 60px);
+ overflow: auto;
+
+ @include to($breakpoint-md) {
+ transition: all 0.3s ease-in-out;
+ margin-left: -250px;
+
+ &.open {
+ margin-left: 0;
+ }
+ }
+}
+
+#chat-box {
+ height: calc(100vh - #{$header-height} - 60px);
+ overflow: auto;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/email.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/email.scss
new file mode 100644
index 000000000..5e1dadfec
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/email.scss
@@ -0,0 +1,104 @@
+.email-app {
+ .email-side-nav {
+ background: $default-white;
+ position: fixed;
+ border-right: 1px solid $border-color;
+ float: left;
+ width: 250px;
+ transition: all 0.3s ease-in-out;
+
+ @include to($breakpoint-md) {
+ z-index: 1;
+ left: -250px;
+ }
+ }
+
+ .email-wrapper {
+ margin: 0;
+ padding: 0;
+ overflow: auto;
+ min-height: 100%;
+ transition: all 0.3s ease-in-out;
+
+ @include to($breakpoint-md) {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ overflow-x: hidden;
+ }
+
+ @include from($breakpoint-md) {
+ margin-left: 250px;
+ }
+
+ .email-list {
+ position: relative;
+ padding: 0;
+ width: 100%;
+ overflow-y: hidden;
+ background-color: $default-white;
+ height: calc(100vh - #{$header-height});
+
+ @include to($breakpoint-md) {
+ max-height: calc(100vh - 65px);
+ }
+
+ @include from($breakpoint-md) {
+ width: 40%;
+ border-right: 1px solid $border-color;
+ float: left;
+ }
+ }
+
+ .email-content {
+ float: left;
+ width: 60%;
+ position: relative;
+ padding: 0;
+ background-color: $default-white;
+ // min-height: calc(100vh - #{$header-height});
+
+ &.no-inbox-view {
+ width: 100%;
+ }
+
+ @include to($breakpoint-md) {
+ position: absolute;
+ top: 0;
+ left: 100%;
+ width: 100%;
+ height: 100%;
+ transition: all 0.3s ease-in-out;
+ max-height: calc(100vh - #{$header-height});
+ overflow-y: scroll;
+
+ &.open {
+ left: 0;
+ }
+ }
+ }
+
+ .email-compose {
+ position: relative;
+ .email-compose-body {
+ padding: 30px 20px;
+
+ }
+ }
+ }
+
+
+ &.side-active {
+ .email-side-nav {
+ @include to($breakpoint-md) {
+ left: 0;
+ }
+ }
+
+ .email-wrapper {
+ @include to($breakpoint-md) {
+ left: 250px;
+ }
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/index.scss
new file mode 100644
index 000000000..d8f21661c
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/screens/index.scss
@@ -0,0 +1,2 @@
+@import 'chat';
+@import 'email';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/baseColors.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/baseColors.scss
new file mode 100644
index 000000000..70947ca45
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/baseColors.scss
@@ -0,0 +1,100 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Greyscale Colors
+// + @Bootstrap Color System
+// + @Default Colors
+// + @Inverted Colors
+// + @Others
+// + @Header Themes
+// + @Social Networks Colors
+
+// ---------------------------------------------------------
+// @Greyscale Colors
+// ---------------------------------------------------------
+
+// Colors below are ordered from lightest to darkest
+
+$grey-100 : #f9fafb;
+$grey-200 : #f2f3f5;
+$grey-300 : #e6eaf0;
+$grey-400 : #d3d9e3;
+$grey-500 : #b9c2d0;
+$grey-600 : #7c8695;
+$grey-700 : #72777a;
+$grey-800 : #565a5c;
+$grey-900 : #313435;
+
+$grey-colors-alt: (
+ grey-100 : #f9fafb,
+ grey-200 : #f2f3f5,
+ grey-300 : #e6eaf0,
+ grey-400 : #d3d9e3,
+ grey-500 : #b9c2d0,
+ grey-600 : #7c8695,
+ grey-700 : #72777a,
+ grey-800 : #565a5c,
+ grey-900 : #313435,
+);
+
+// ---------------------------------------------------------
+// @Bootstrap Color System
+// ---------------------------------------------------------
+
+$blue : $md-blue-500;
+$indigo : $md-indigo-500;
+$purple : $md-purple-500;
+$pink : $md-pink-500;
+$red : $md-red-500;
+$orange : $md-orange-500;
+$yellow : $md-yellow-500;
+$green : $md-green-500;
+$teal : $md-teal-500;
+$cyan : $md-cyan-500;
+
+// ---------------------------------------------------------
+// @Default Colors
+// ---------------------------------------------------------
+
+$default-danger : #ff3c7e;
+$default-dark : #313435;
+$default-grey : #565a5c;
+$default-info : #0f9aee;
+$default-primary : #7774e7;
+$default-success : #37c936;
+$default-text-color : #72777a;
+$default-warning : #fc0;
+$default-white : #fff;
+
+// ---------------------------------------------------------
+// @Inverted Colors
+// ---------------------------------------------------------
+
+$inverse-danger : lighten($default-danger, 35%);
+$inverse-info : lighten($default-info, 45%);
+$inverse-primary : lighten($default-primary, 30%);
+$inverse-success : lighten($default-success, 45%);
+$inverse-warning : lighten($default-warning, 45%);
+
+// ---------------------------------------------------------
+// @Others
+// ---------------------------------------------------------
+
+$border-color : #e6ecf5;
+$collapsed-size : 70px;
+$header-height : 65px;
+$offscreen-size : 280px;
+$side-nav-dark : #313644;
+$side-nav-dark-border : rgba(120, 130, 140, 0.3);
+$side-nav-dark-font : #99abb4;
+
+// ---------------------------------------------------------
+// @Header Themes
+// ---------------------------------------------------------
+
+$theme-danger : #f53f61;
+$theme-dark : lighten($side-nav-dark, 10%);
+$theme-info : $default-info;
+$theme-primary : $default-primary;
+$theme-success : desaturate($default-success, 5%);
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/borders.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/borders.scss
new file mode 100644
index 000000000..daca1b304
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/borders.scss
@@ -0,0 +1,6 @@
+// ---------------------------------------------------------
+// @Borders
+// ---------------------------------------------------------
+
+$border-width: 1px;
+$border-color: rgba(0, 0, 0, 0.0625);
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/brandColors.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/brandColors.scss
new file mode 100644
index 000000000..c82d4fde5
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/brandColors.scss
@@ -0,0 +1,1858 @@
+// @preserve brand-colors 2.0.1
+// http://reimertz.github.io/brand-colors
+// (c) 2017 Pierre Reimertz
+// may be freely distributed under the MIT license.
+
+$bc-4ormat: #ee3440;
+$bc-500px: #0099e5;
+$bc-500px-2: #ff4c4c;
+$bc-500px-3: #34bf49;
+$bc-about-me: #00a98f;
+$bc-about-me-2: #062f3c;
+$bc-about-me-3: #2b82ad;
+$bc-about-me-4: #cc7a00;
+$bc-about-me-5: #ffcc33;
+$bc-addvocate: #ff3322;
+$bc-adobe: #ff0000;
+$bc-adobe-2: #fbb034;
+$bc-adobe-3: #ffdd00;
+$bc-adobe-4: #c1d82f;
+$bc-adobe-5: #00a4e4;
+$bc-adobe-6: #8a7967;
+$bc-adobe-7: #6a737b;
+$bc-aer-lingus: #008374;
+$bc-aer-lingus-2: #89ba16;
+$bc-aer-lingus-3: #fefefe;
+$bc-aetna: #d20962;
+$bc-aetna-2: #f47721;
+$bc-aetna-3: #7ac143;
+$bc-aetna-4: #00a78e;
+$bc-aetna-5: #00bce4;
+$bc-aetna-6: #7d3f98;
+$bc-aim: #ffd900;
+$bc-airbnb: #fd5c63;
+$bc-akamai: #0099cc;
+$bc-akamai-2: #ff9933;
+$bc-alcon: #0079c1;
+$bc-alcon-2: #49176d;
+$bc-alcon-3: #00a0af;
+$bc-alcon-4: #49a942;
+$bc-algolia: #050f2c;
+$bc-algolia-2: #003666;
+$bc-algolia-3: #00aeff;
+$bc-algolia-4: #3369e7;
+$bc-algolia-5: #8e43e7;
+$bc-algolia-6: #b84592;
+$bc-algolia-7: #ff4f81;
+$bc-algolia-8: #ff6c5f;
+$bc-algolia-9: #ffc168;
+$bc-algolia-10: #2dde98;
+$bc-algolia-11: #1cc7d0;
+$bc-alibaba: #ff6a00;
+$bc-alienware: #0c3866;
+$bc-alienware-2: #49c0b6;
+$bc-alienware-3: #222;
+$bc-alienware-4: #ce181e;
+$bc-alienware-5: #007cc0;
+$bc-alienware-6: #ffc20e;
+$bc-alienware-7: #00a0f0;
+$bc-alienware-8: #9000f0;
+$bc-alienware-9: #f00000;
+$bc-alphabet: #ed1c24;
+$bc-amazon: #ff9900;
+$bc-amazon-2: #146eb4;
+$bc-american-express: #002663;
+$bc-american-express-2: #4d4f53;
+$bc-american-red-cross: #ed1b2e;
+$bc-american-red-cross-2: #6d6e70;
+$bc-american-red-cross-3: #d7d7d8;
+$bc-american-red-cross-4: #b4a996;
+$bc-american-red-cross-5: #ecb731;
+$bc-american-red-cross-6: #8ec06c;
+$bc-american-red-cross-7: #537b35;
+$bc-american-red-cross-8: #c4dff6;
+$bc-american-red-cross-9: #56a0d3;
+$bc-american-red-cross-10: #0091cd;
+$bc-american-red-cross-11: #004b79;
+$bc-american-red-cross-12: #7f181b;
+$bc-american-red-cross-13: #d7d7d8;
+$bc-american-red-cross-14: #9f9fa3;
+$bc-american-red-cross-15: #000000;
+$bc-android: #a4c639;
+$bc-angies-list: #7fbb00;
+$bc-angularjs: #b52e31;
+$bc-angularjs-2: #000000;
+$bc-answers: #136ad5;
+$bc-answers-2: #fb8a2e;
+$bc-aol: #ff0b00;
+$bc-aol-2: #00c4ff;
+$bc-arch-linux: #1793d1;
+$bc-arch-linux-2: #333333;
+$bc-arizona-state-university-asu: #990033;
+$bc-arizona-state-university-asu-2: #ffb310;
+$bc-arriva-danmark: #004d73;
+$bc-arriva-danmark-2: #00334e;
+$bc-arriva-danmark-3: #007fbd;
+$bc-arriva-danmark-4: #dbebfa;
+$bc-asana: #3be8b0;
+$bc-asana-2: #1aafd0;
+$bc-asana-3: #6a67ce;
+$bc-asana-4: #ffb900;
+$bc-asana-5: #fc636b;
+$bc-askfm: #db3552;
+$bc-associated-press: #ff322e;
+$bc-atlanta-falcons: #000000;
+$bc-atlanta-falcons-2: #a71930;
+$bc-atlanta-falcons-3: #a5acaf;
+$bc-atlantic-coast-conference-acc: #013ca6;
+$bc-atlantic-coast-conference-acc-2: #a5a9ab;
+$bc-atlassian: #003366;
+$bc-att: #00a8e0;
+$bc-att-2: #fcb314;
+$bc-att-3: #067ab4;
+$bc-att-4: #3aa5dc;
+$bc-auth0: #16214d;
+$bc-auth0-2: #44c7f4;
+$bc-auth0-3: #eb5424;
+$bc-auth0-4: #d0d2d3;
+$bc-avira: #d40000;
+$bc-baidu: #de0f17;
+$bc-baidu-2: #2529d8;
+$bc-bandcamp: #629aa9;
+$bc-bandpage: #3eabff;
+$bc-bandpage-2: #2c3235;
+$bc-barclays: #00aeef;
+$bc-barclays-2: #00395d;
+$bc-barnes-noble: #2a5934;
+$bc-basecamp: #b3dcff;
+$bc-basecamp-2: #5ecc62;
+$bc-basecamp-3: #00ad45;
+$bc-beats-by-dre: #e01f3d;
+$bc-bebo: #e04646;
+$bc-behance: #1769ff;
+$bc-best-buy: #003b64;
+$bc-best-buy-2: #fff200;
+$bc-big-cartel: #a0ac48;
+$bc-big-cartel-2: #70b29c;
+$bc-bing: #ffb900;
+$bc-bing-2: #505050;
+$bc-bing-3: #a3a3a3;
+$bc-bitbucket: #205081;
+$bc-bitly: #ee6123;
+$bc-bitly-2: #61b3de;
+$bc-blackberry: #005387;
+$bc-blackberry-2: #8cb811;
+$bc-blackberry-3: #fdb813;
+$bc-blackberry-4: #88aca1;
+$bc-blackberry-5: #000000;
+$bc-blackberry-6: #788cb6;
+$bc-blackberry-7: #a1a1a4;
+$bc-blackberry-8: #8f8f8c;
+$bc-blockchain: #123962;
+$bc-blockchain-2: #2754ba;
+$bc-blockchain-3: #00aee6;
+$bc-blockchain-4: #799eb2;
+$bc-blockchain-5: #b1d4e5;
+$bc-blogger: #f57d00;
+$bc-boeing: #0033a1;
+$bc-boise-state-university: #09347a;
+$bc-boise-state-university-2: #007dc3;
+$bc-boise-state-university-3: #0169a4;
+$bc-boise-state-university-4: #3399cc;
+$bc-boise-state-university-5: #f1632a;
+$bc-boise-state-university-6: #464646;
+$bc-boise-state-university-7: #b7b7b7;
+$bc-boise-state-university-8: #f6f6f5;
+$bc-bombardier: #8996a0;
+$bc-booking-com: #003580;
+$bc-booking-com-2: #009fe3;
+$bc-booking-com-3: #feba02;
+$bc-booking-com-4: #666;
+$bc-booking-com-5: #f2f6fa;
+$bc-bower: #ffcc2f;
+$bc-bower-2: #ef5734;
+$bc-bower-3: #00acee;
+$bc-bower-4: #2baf2b;
+$bc-bower-5: #543729;
+$bc-bower-6: #cecece;
+$bc-box: #0061d5;
+$bc-boy-scouts-of-america: #ce1126;
+$bc-boy-scouts-of-america-2: #003f87;
+$bc-british-airways: #075aaa;
+$bc-british-airways-2: #eb2226;
+$bc-british-airways-3: #01295c;
+$bc-british-airways-4: #efe9e5;
+$bc-british-airways-5: #aca095;
+$bc-british-airways-6: #b9cfed;
+$bc-british-airways-7: #a7a9ac;
+$bc-bt: #d52685;
+$bc-bt-2: #553a99;
+$bc-bt-3: #6cbc35;
+$bc-bt-4: #fd9f3e;
+$bc-bt-5: #08538c;
+$bc-buffer: #168eea;
+$bc-buffer-2: #ee4f4f;
+$bc-buffer-3: #fff9ea;
+$bc-buffer-4: #76b852;
+$bc-buffer-5: #323b43;
+$bc-buffer-6: #59626a;
+$bc-buffer-7: #ced7df;
+$bc-buffer-8: #eff3f6;
+$bc-buffer-9: #f4f7f9;
+$bc-burger-king: #ec1c24;
+$bc-burger-king-2: #fdbd10;
+$bc-burger-king-3: #0066b2;
+$bc-burger-king-4: #ed7902;
+$bc-buzzfeed: #ee3322;
+$bc-bynder: #00aaff;
+$bc-bynder-2: #343a4e;
+$bc-cadbury: #472f92;
+$bc-canon: #bc0024;
+$bc-canon-2: #000000;
+$bc-capital-one: #004977;
+$bc-capital-one-2: #d03027;
+$bc-carbonmade: #613854;
+$bc-carrefour: #00387b;
+$bc-carrefour-2: #bb1e10;
+$bc-carrefour-3: #f67828;
+$bc-carrefour-4: #237f52;
+$bc-carrot: #388ed1;
+$bc-carrot-2: #d74e26;
+$bc-carrot-3: #006837;
+$bc-carrot-4: #fa9f1e;
+$bc-carrot-5: #f7931e;
+$bc-cartoon-network: #00aeef;
+$bc-cartoon-network-2: #ed008c;
+$bc-cartoon-network-3: #fff000;
+$bc-cartoon-network-4: #000000;
+$bc-case-mate: #84754e;
+$bc-case-mate-2: #a6192e;
+$bc-case-mate-3: #decba5;
+$bc-case-mate-4: #000000;
+$bc-change-org: #ec2c22;
+$bc-channel-4: #2e1f54;
+$bc-channel-4-2: #52057f;
+$bc-channel-4-3: #bf033b;
+$bc-channel-4-4: #f00a36;
+$bc-channel-4-5: #ed3b21;
+$bc-channel-4-6: #ff6908;
+$bc-channel-4-7: #ffc719;
+$bc-channel-4-8: #598c14;
+$bc-channel-4-9: #335238;
+$bc-channel-4-10: #4a8594;
+$bc-channel-4-11: #051736;
+$bc-channel-4-12: #000000;
+$bc-channel-4-13: #706357;
+$bc-channel-4-14: #b0a696;
+$bc-channel-4-15: #dbe0e3;
+$bc-channel-4-16: #dbeede;
+$bc-charity-water: #ffc907;
+$bc-charity-water-2: #2e9df7;
+$bc-charity-water-3: #231f20;
+$bc-cheddar: #ff7243;
+$bc-citymapper: #37ab2e;
+$bc-clemson-university: #f66733;
+$bc-clemson-university-2: #522d80;
+$bc-clemson-university-3: #d4c99e;
+$bc-clemson-university-4: #685c53;
+$bc-clemson-university-5: #a25016;
+$bc-clemson-university-6: #562e19;
+$bc-clemson-university-7: #86898c;
+$bc-clemson-university-8: #f9e498;
+$bc-clemson-university-9: #566127;
+$bc-clemson-university-10: #3a4958;
+$bc-clemson-university-11: #b5c327;
+$bc-clemson-university-12: #109dc0;
+$bc-coca-cola: #ed1c16;
+$bc-code-school: #616f67;
+$bc-code-school-2: #c68143;
+$bc-codecademy: #f65a5b;
+$bc-codecademy-2: #204056;
+$bc-codepen: #0ebeff;
+$bc-codepen-2: #47cf73;
+$bc-codepen-3: #ae63e4;
+$bc-codepen-4: #fcd000;
+$bc-codepen-5: #ff3c41;
+$bc-codepen-6: #76daff;
+$bc-connexxion: #d2ea32;
+$bc-connexxion-2: #016773;
+$bc-continental-ag: #ffa500;
+$bc-continental-ag-2: #00a5dc;
+$bc-continental-ag-3: #004eaf;
+$bc-continental-ag-4: #2db928;
+$bc-continental-ag-5: #057855;
+$bc-continental-ag-6: #ff2d37;
+$bc-continental-ag-7: #000000;
+$bc-continental-ag-8: #737373;
+$bc-continental-ag-9: #969696;
+$bc-continental-ag-10: #cdcdcd;
+$bc-continental-ag-11: #f0f0f0;
+$bc-couchsurfing: #d5490c;
+$bc-courtyard: #689550;
+$bc-courtyard-2: #85c446;
+$bc-courtyard-3: #c0de9e;
+$bc-courtyard-4: #b9dca4;
+$bc-craft-cms: #da5a47;
+$bc-creative-commons: #b62b6e;
+$bc-creative-commons-2: #9628c6;
+$bc-creative-commons-3: #4374b7;
+$bc-creative-commons-4: #abb8af;
+$bc-creative-commons-5: #98c807;
+$bc-creative-commons-6: #b1a24a;
+$bc-creative-commons-7: #edd812;
+$bc-creative-commons-8: #ef9421;
+$bc-creative-commons-9: #d13814;
+$bc-creative-market: #8ba753;
+$bc-crowdin: #30660f;
+$bc-crowdin-2: #b8cc1c;
+$bc-crowne-plaza: #830051;
+$bc-crowne-plaza-2: #cf0072;
+$bc-crowne-plaza-3: #d9e506;
+$bc-crowne-plaza-4: #ff7900;
+$bc-crowne-plaza-5: #00c6d7;
+$bc-crowne-plaza-6: #766a65;
+$bc-crunchbase: #2292a7;
+$bc-culvers: #005696;
+$bc-cunard: #1d1d1b;
+$bc-cunard-2: #ae9a64;
+$bc-cunard-3: #e42313;
+$bc-cunard-4: #8b8c8d;
+$bc-cvs: #cc0000;
+$bc-dailymotion: #00aaff;
+$bc-dailymotion-2: #00d2f3;
+$bc-daimler: #263f6a;
+$bc-daimler-2: #182b45;
+$bc-daimler-3: #6b0f24;
+$bc-daimler-4: #193725;
+$bc-daimler-5: #606061;
+$bc-debian: #a80030;
+$bc-deezer: #ff0000;
+$bc-deezer-2: #ffed00;
+$bc-deezer-3: #ff0092;
+$bc-deezer-4: #c2ff00;
+$bc-deezer-5: #00c7f2;
+$bc-deezer-6: #c1f1fc;
+$bc-deezer-7: #ebffac;
+$bc-deezer-8: #ffc2e5;
+$bc-deezer-9: #ffaaaa;
+$bc-delectable: #334858;
+$bc-delectable-2: #cd595a;
+$bc-delectable-3: #94938f;
+$bc-delectable-4: #a3a7a6;
+$bc-delectable-5: #dbc5b0;
+$bc-delectable-6: #f8dfc2;
+$bc-delectable-7: #f9ebdf;
+$bc-delicious: #3399ff;
+$bc-delicious-2: #222222;
+$bc-delicious-3: #eeeeee;
+$bc-dell: #0085c3;
+$bc-dell-2: #7ab800;
+$bc-dell-3: #f2af00;
+$bc-dell-4: #dc5034;
+$bc-dell-5: #ce1126;
+$bc-dell-6: #b7295a;
+$bc-dell-7: #6e2585;
+$bc-dell-8: #71c6c1;
+$bc-dell-9: #5482ab;
+$bc-dell-10: #009bbb;
+$bc-dell-11: #444444;
+$bc-dell-12: #eeeeee;
+$bc-delta-airlines: #c8102e;
+$bc-delta-airlines-2: #862633;
+$bc-delta-airlines-3: #003a70;
+$bc-dental-plans: #f99104;
+$bc-dental-plans-2: #00b7c9;
+$bc-designer-news: #2d72d9;
+$bc-designmoo: #e64b50;
+$bc-designmoo-2: #dbc65d;
+$bc-deutsche-bahn: #ff0000;
+$bc-deviantart: #05cc47;
+$bc-deviantart-2: #4dc47d;
+$bc-deviantart-3: #181a1b;
+$bc-devour: #ff0000;
+$bc-dewalt: #febd17;
+$bc-dhl: #ba0c2f;
+$bc-dhl-2: #ffcd00;
+$bc-dhl-3: #c9c9c9;
+$bc-diebold: #007dc3;
+$bc-diebold-2: #003f69;
+$bc-diebold-3: #954010;
+$bc-diebold-4: #445c6e;
+$bc-diebold-5: #005238;
+$bc-diebold-6: #97824b;
+$bc-digg: #005be2;
+$bc-digg-2: #000000;
+$bc-digital-ocean: #008bcf;
+$bc-dindr: #fdb94e;
+$bc-dindr-2: #f9a852;
+$bc-dindr-3: #f69653;
+$bc-dindr-4: #f38654;
+$bc-dindr-5: #f07654;
+$bc-dindr-6: #ed6856;
+$bc-dindr-7: #ef5956;
+$bc-dindr-8: #ee4c58;
+$bc-dindr-9: #56c1ab;
+$bc-dindr-10: #6a6b6a;
+$bc-direct-energy: #f05d21;
+$bc-direct-energy-2: #2c5770;
+$bc-direct-energy-3: #0f723a;
+$bc-direct-energy-4: #c7c8ca;
+$bc-direct-energy-5: #666666;
+$bc-directv: #00a6d6;
+$bc-directv-2: #00629b;
+$bc-directv-3: #003865;
+$bc-discogs: #000000;
+$bc-discogs-2: #333333;
+$bc-discogs-3: #f5df2e;
+$bc-discord: #7289da;
+$bc-discord-2: #99aab5;
+$bc-discord-3: #2c2f33;
+$bc-discord-4: #23272a;
+$bc-dish-network: #ec1944;
+$bc-disney-xd: #0af167;
+$bc-disney-xd-2: #ee70a6;
+$bc-disney-xd-3: #520099;
+$bc-disney-xd-4: #39eafd;
+$bc-disney-xd-5: #0d0735;
+$bc-disney-xd-6: #f5f5f5;
+$bc-disqus: #2e9fff;
+$bc-django: #092e20;
+$bc-docker: #0db7ed;
+$bc-docker-2: #384d54;
+$bc-dominos: #0b648f;
+$bc-dominos-2: #e21737;
+$bc-dow: #e80033;
+$bc-dow-2: #fdbb30;
+$bc-dow-3: #ed8b00;
+$bc-dow-4: #f15d22;
+$bc-dow-5: #bf0d3e;
+$bc-dow-6: #910048;
+$bc-dow-7: #d0006f;
+$bc-dow-8: #00a5db;
+$bc-dribbble: #444444;
+$bc-dribbble-2: #ea4c89;
+$bc-dribbble-3: #8aba56;
+$bc-dribbble-4: #ff8833;
+$bc-dribbble-5: #00b6e3;
+$bc-dribbble-6: #9ba5a8;
+$bc-dropbox: #007ee5;
+$bc-dropbox-2: #7b8994;
+$bc-dropbox-3: #47525d;
+$bc-dropbox-4: #3d464d;
+$bc-droplr: #5654a4;
+$bc-drupal: #0077c0;
+$bc-drupal-2: #81ceff;
+$bc-drupal-3: #00598e;
+$bc-dunked: #2da9d7;
+$bc-dunked-2: #212a3e;
+$bc-dunked-3: #3fc380;
+$bc-duolingo: #7ac70c;
+$bc-duolingo-2: #8ee000;
+$bc-duolingo-3: #faa918;
+$bc-duolingo-4: #ffc715;
+$bc-duolingo-5: #d33131;
+$bc-duolingo-6: #e53838;
+$bc-duolingo-7: #1cb0f6;
+$bc-duolingo-8: #14d4f4;
+$bc-duolingo-9: #8549ba;
+$bc-duolingo-10: #a560e8;
+$bc-duolingo-11: #4c4c4c;
+$bc-duolingo-12: #6f6f6f;
+$bc-duolingo-13: #cfcfcf;
+$bc-duolingo-14: #f0f0f0;
+$bc-duolingo-15: #bff199;
+$bc-duolingo-16: #f7c8c9;
+$bc-dwolla: #ff7404;
+$bc-e4: #6d1d7c;
+$bc-easy-jet: #ff6600;
+$bc-easy-jet-2: #000000;
+$bc-easy-jet-3: #58595b;
+$bc-ebay: #e53238;
+$bc-ebay-2: #0064d2;
+$bc-ebay-3: #f5af02;
+$bc-ebay-4: #86b817;
+$bc-el-al: #131137;
+$bc-el-al-2: #918978;
+$bc-elance: #0d69af;
+$bc-ello: #000000;
+$bc-ember: #f23819;
+$bc-emma: #314855;
+$bc-emma-2: #5cc3e8;
+$bc-emma-3: #ffdb00;
+$bc-emma-4: #79ceb8;
+$bc-emma-5: #e95f5c;
+$bc-endomundo: #87aa14;
+$bc-engadget: #40b3ff;
+$bc-envato: #82b541;
+$bc-epam: #39c2d7;
+$bc-epam-2: #a3c644;
+$bc-epam-3: #464547;
+$bc-epam-4: #b22746;
+$bc-epam-5: #8e244d;
+$bc-epictions: #ff2052;
+$bc-epictions-2: #e6e6e6;
+$bc-epictions-3: #404040;
+$bc-epictions-4: #01b5dd;
+$bc-epictions-5: #b0db64;
+$bc-ericsson: #002561;
+$bc-esl: #0d9ddb;
+$bc-esl-2: #48b8e7;
+$bc-esl-3: #efecea;
+$bc-esl-4: #2c2b2b;
+$bc-espn: #ff0033;
+$bc-estimote: #6a9c84;
+$bc-estimote-2: #790f59;
+$bc-estimote-3: #373b9c;
+$bc-estimote-4: #f784b6;
+$bc-estimote-5: #39b7dd;
+$bc-estimote-6: #ccc900;
+$bc-etrade: #6633cc;
+$bc-etrade-2: #99cc00;
+$bc-etsy: #d5641c;
+$bc-evaneos: #33cc99;
+$bc-evaneos-2: #4ba6f5;
+$bc-evaneos-3: #fdca30;
+$bc-evaneos-4: #f79400;
+$bc-evaneos-5: #f34235;
+$bc-eventbrite: #ff8000;
+$bc-evernote: #2dbe60;
+$bc-evernote-2: #7b868a;
+$bc-evernote-3: #2facb2;
+$bc-evernote-4: #166a8f;
+$bc-evernote-5: #3b4446;
+$bc-evernote-6: #525e61;
+$bc-evernote-7: #7b868a;
+$bc-evernote-8: #aeb6b8;
+$bc-evernote-9: #d7dcdd;
+$bc-evernote-10: #eff2f3;
+$bc-execucar: #203143;
+$bc-execucar-2: #da9a39;
+$bc-fab-com: #dd0017;
+$bc-fab-com-2: #000000;
+$bc-facebook: #3b5998;
+$bc-fairfield-inn-suites: #6caddf;
+$bc-fairfield-inn-suites-2: #b06010;
+$bc-fairfield-inn-suites-3: #004990;
+$bc-fairfield-inn-suites-4: #b50938;
+$bc-fairmont: #a6a685;
+$bc-fairmont-2: #000000;
+$bc-famo-us: #fa5c4f;
+$bc-famo-us-2: #333333;
+$bc-fancy: #3098dc;
+$bc-fancy-2: #494e58;
+$bc-fedex: #660099;
+$bc-fedex-2: #ff6600;
+$bc-fedex-3: #00cc00;
+$bc-fedex-4: #0099cc;
+$bc-fedex-5: #ff0033;
+$bc-fedex-6: #ffcc00;
+$bc-fedex-7: #999999;
+$bc-fedora: #294172;
+$bc-fedora-2: #325191;
+$bc-fedora-3: #3C6EB4;
+$bc-fedora-4: #81DC3E;
+$bc-fedora-5: #9970B5;
+$bc-feedly: #2bb24c;
+$bc-ferrari: #e32119;
+$bc-fiat: #96172e;
+$bc-fiat-2: #6d2d41;
+$bc-film4: #000000;
+$bc-film4-2: #d6182a;
+$bc-firefox: #e66000;
+$bc-firefox-2: #ff9500;
+$bc-firefox-3: #ffcb00;
+$bc-firefox-4: #00539f;
+$bc-firefox-5: #0095dd;
+$bc-firefox-6: #331e54;
+$bc-firefox-7: #002147;
+$bc-fiskars: #ff8e00;
+$bc-fiskars-2: #000000;
+$bc-fiskars-3: #955214;
+$bc-fiskars-4: #55601c;
+$bc-fiskars-5: #005172;
+$bc-fitbit: #4cc2c4;
+$bc-fitbit-2: #f54785;
+$bc-fitbit-3: #343434;
+$bc-five-guys: #ed174f;
+$bc-five-guys-2: #fbb040;
+$bc-five-guys-3: #efc402;
+$bc-five-guys-4: #d4891c;
+$bc-fiverr: #00b22d;
+$bc-flattr: #f67c1a;
+$bc-flattr-2: #338d11;
+$bc-flavors-me: #f10087;
+$bc-flavors-me-2: #009ae7;
+$bc-flickr: #0063dc;
+$bc-flickr-2: #ff0084;
+$bc-flipboard: #e12828;
+$bc-flixster: #2971b2;
+$bc-follr: #4dc9f6;
+$bc-follr-2: #f67019;
+$bc-follr-3: #f53794;
+$bc-follr-4: #537bc4;
+$bc-follr-5: #acc236;
+$bc-ford: #1c396d;
+$bc-forrst: #5b9a68;
+$bc-foursquare: #f94877;
+$bc-foursquare-2: #0732a2;
+$bc-foursquare-3: #2d5be3;
+$bc-freecodecamp: #006400;
+$bc-freecodecamp-2: #ff9c2a;
+$bc-freecodecamp-3: #ff4025;
+$bc-freecodecamp-4: #3949ab;
+$bc-freecodecamp-5: #efefef;
+$bc-friend2friend: #0f99d6;
+$bc-gallaudet-university: #00457c;
+$bc-gallaudet-university-2: #e8d4a2;
+$bc-gannett: #009bff;
+$bc-garmin: #007cc3;
+$bc-garuda: #484848;
+$bc-garuda-2: #002561;
+$bc-garuda-3: #2f6f7e;
+$bc-generatepress: #1b212b;
+$bc-generatepress-2: #1e72bd;
+$bc-generatepress-3: #efefef;
+$bc-geocaching: #4a742c;
+$bc-georgia-southern-university: #041e42;
+$bc-georgia-southern-university-2: #a99260;
+$bc-getglue: #2d75a2;
+$bc-ghost: #212425;
+$bc-ghost-2: #718087;
+$bc-ghost-3: #5ba4e5;
+$bc-ghost-4: #9fbb58;
+$bc-ghost-5: #e9e8dd;
+$bc-gibson: #000000;
+$bc-gibson-2: #436f8e;
+$bc-gibson-3: #887d59;
+$bc-gibson-4: #8f9696;
+$bc-gimmebar: #d6156c;
+$bc-github: #4078c0;
+$bc-github-2: #6cc644;
+$bc-github-3: #bd2c00;
+$bc-github-4: #c9510c;
+$bc-github-5: #6e5494;
+$bc-github-6: #fafafa;
+$bc-github-7: #f5f5f5;
+$bc-github-8: #333;
+$bc-gitlab: #fca326;
+$bc-gitlab-2: #fc6d26;
+$bc-gitlab-3: #e24329;
+$bc-gitlab-4: #554488;
+$bc-gitter: #46bc99;
+$bc-gitter-2: #f68d42;
+$bc-gitter-3: #ed1965;
+$bc-gitter-4: #f2f0ed;
+$bc-gitter-5: #3a3133;
+$bc-gittip: #663300;
+$bc-gittip-2: #339966;
+$bc-godaddy: #7db701;
+$bc-godaddy-2: #ff8a00;
+$bc-gogo: #e80029;
+$bc-gogo-2: #40b4e5;
+$bc-gogo-3: #7c868d;
+$bc-goodreads: #553b08;
+$bc-google: #4285f4;
+$bc-google-2: #34a853;
+$bc-google-3: #fbbc05;
+$bc-google-4: #ea4335;
+$bc-google-5: #e7e6dd;
+$bc-google-allo: #fbbc05;
+$bc-google-duo: #4285f4;
+$bc-google-plus: #dd4b39;
+$bc-googleplus: #dc4e41;
+$bc-gravatar: #1e8cbe;
+$bc-gravit: #e30061;
+$bc-gravit-2: #d5df00;
+$bc-gravit-3: #475258;
+$bc-grooveshark: #f77f00;
+$bc-groupon: #82b548;
+$bc-grunt: #fba919;
+$bc-grunt-2: #463014;
+$bc-gulp: #CF4646;
+$bc-gulp-2: #FFFFFF;
+$bc-gumtree: #72ef36;
+$bc-gumtree-2: #3b3141;
+$bc-gumtree-3: #f0ece6;
+$bc-gvb: #0863b5;
+$bc-gvb-2: #fec600;
+$bc-gvb-3: #f39100;
+$bc-gvb-4: #e3001f;
+$bc-gvb-5: #e50064;
+$bc-gvb-6: #954a97;
+$bc-gvb-7: #009ee3;
+$bc-gvb-8: #13a538;
+$bc-hacker-news: #ff6600;
+$bc-hangouts: #0f9d58;
+$bc-happn: #0087b4;
+$bc-hatena-bookmark: #00a4de;
+$bc-heineken: #008200;
+$bc-heineken-2: #205527;
+$bc-heineken-3: #ff2b00;
+$bc-heineken-4: #c3c3c3;
+$bc-hellowallet: #0093d0;
+$bc-help-scout: #3197d6;
+$bc-help-scout-2: #394956;
+$bc-help-scout-3: #d6dde3;
+$bc-here: #124191;
+$bc-heroku: #c9c3e6;
+$bc-heroku-2: #6762a6;
+$bc-hewlett-packard-enterprise: #00b388;
+$bc-hewlett-packard-enterprise-2: #425563;
+$bc-hi5: #fd9827;
+$bc-highfive: #a26eea;
+$bc-highfive-2: #f7afff;
+$bc-highfive-3: #5d70ea;
+$bc-highfive-4: #46b7fd;
+$bc-home-depot: #f96305;
+$bc-homeaway: #2a6ebb;
+$bc-homeaway-2: #ff8a00;
+$bc-hootsuite: #003265;
+$bc-hootsuite-2: #f7e8d5;
+$bc-hootsuite-3: #ffbd0a;
+$bc-hootsuite-4: #c6af92;
+$bc-hootsuite-5: #71685f;
+$bc-hootsuite-6: #54493f;
+$bc-hootsuite-7: #38322d;
+$bc-houzz: #7ac142;
+$bc-houzz-2: #000000;
+$bc-hp: #0096d6;
+$bc-hp-2: #d7410b;
+$bc-hsbc: #db0011;
+$bc-html5: #e34f26;
+$bc-hulu: #66aa33;
+$bc-hulu-2: #99cc33;
+$bc-hulu-3: #41811e;
+$bc-hulu-4: #222222;
+$bc-hulu-5: #666666;
+$bc-hulu-6: #e8e8e8;
+$bc-hyatt: #6d6e71;
+$bc-hyatt-2: #bf5b20;
+$bc-hyatt-3: #006e96;
+$bc-hyatt-4: #8c8700;
+$bc-hyatt-5: #ad5f7d;
+$bc-hyatt-6: #d79100;
+$bc-ibm: #006699;
+$bc-icons8: #32c24d;
+$bc-ideal: #cc0066;
+$bc-ideal-2: #79afc1;
+$bc-ideal-3: #000000;
+$bc-identi-ca: #789240;
+$bc-identi-ca-2: #7d0100;
+$bc-identi-ca-3: #8baaff;
+$bc-ifttt: #33ccff;
+$bc-ifttt-2: #ff4400;
+$bc-ifttt-3: #000000;
+$bc-iheartradio: #c6002b;
+$bc-ikea: #ffcc00;
+$bc-ikea-2: #003399;
+$bc-imdb: #f5de50;
+$bc-imgur: #85bf25;
+$bc-indeed: #2164f4;
+$bc-indeed-2: #ff6600;
+$bc-indiegogo: #eb1478;
+$bc-instacart: #60ab59;
+$bc-instagram: #405de6;
+$bc-instagram-2: #5851db;
+$bc-instagram-3: #833ab4;
+$bc-instagram-4: #c13584;
+$bc-instagram-5: #e1306c;
+$bc-instagram-6: #fd1d1d;
+$bc-instagram-7: #f56040;
+$bc-instagram-8: #f77737;
+$bc-instagram-9: #fcaf45;
+$bc-instagram-10: #ffdc80;
+$bc-instapage: #0d1a2b;
+$bc-instapage-2: #1565c0;
+$bc-instapage-3: #1e88e5;
+$bc-instapage-4: #bcced6;
+$bc-instapage-5: #f2f7f9;
+$bc-instapaper: #000000;
+$bc-instapaper-2: #428bca;
+$bc-intel: #0f7dc2;
+$bc-intuit: #365ebf;
+$bc-ios: #5fc9f8;
+$bc-ios-2: #fecb2e;
+$bc-ios-3: #fd9426;
+$bc-ios-4: #fc3158;
+$bc-ios-5: #147efb;
+$bc-ios-6: #53d769;
+$bc-ios-7: #fc3d39;
+$bc-ios-8: #8e8e93;
+$bc-issuu: #f36d5d;
+$bc-istock: #fe423f;
+$bc-istock-2: #02a388;
+$bc-istock-3: #0c0d0d;
+$bc-istock-4: #e8eded;
+$bc-istock-5: #dce1e1;
+$bc-javascript: #f7df1e;
+$bc-jawbone: #000000;
+$bc-jbl: #ff6600;
+$bc-jetpack: #669c34;
+$bc-jetpack-2: #72af3a;
+$bc-joomla: #f44321;
+$bc-joomla-2: #5091cd;
+$bc-joomla-3: #f9a541;
+$bc-joomla-4: #7ac143;
+$bc-joyent: #ff6600;
+$bc-jquery: #0769ad;
+$bc-jquery-2: #7acef4;
+$bc-kaspersky-lab: #006c54;
+$bc-kaspersky-lab-2: #d52a1d;
+$bc-keeeb: #00a9c0;
+$bc-khan-academy: #9cb443;
+$bc-khan-academy-2: #242f3a;
+$bc-kia: #c21a30;
+$bc-kickstarter: #2bde73;
+$bc-kickstarter-2: #0f2105;
+$bc-kik: #82bc23;
+$bc-kik-2: #3db4e7;
+$bc-kippt: #d51007;
+$bc-kitkat: #d70021;
+$bc-kiva: #63a541;
+$bc-kiva-2: #236133;
+$bc-kiva-3: #26b6e8;
+$bc-kiwipay: #00b0df;
+$bc-klm: #00a1e4;
+$bc-kodery: #00af81;
+$bc-labs64: #E14817;
+$bc-labs64-2: #F08B53;
+$bc-labs64-3: #7B2A10;
+$bc-labs64-4: #AB6543;
+$bc-labs64-5: #F2951C;
+$bc-labs64-6: #87888A;
+$bc-lamborghini: #ddb321;
+$bc-laravel: #f55247;
+$bc-lastfm: #d51007;
+$bc-lastpass: #d32d27;
+$bc-lastpass-2: #af0809;
+$bc-lastpass-3: #000000;
+$bc-lastpass-4: #0c2340;
+$bc-lastpass-5: #00a3e0;
+$bc-lastpass-6: #ede04b;
+$bc-lastpass-7: #333f48;
+$bc-lastpass-8: #d9e1e2;
+$bc-lego: #f6ec35;
+$bc-lego-2: #d11013;
+$bc-lego-3: #000000;
+$bc-line: #00c300;
+$bc-linkedin: #0077b5;
+$bc-linkedin-2: #000000;
+$bc-linkedin-3: #313335;
+$bc-linkedin-4: #86888a;
+$bc-linkedin-5: #caccce;
+$bc-linkedin-6: #00a0dc;
+$bc-linkedin-7: #8d6cab;
+$bc-linkedin-8: #dd5143;
+$bc-linkedin-9: #e68523;
+$bc-livestream: #cf202e;
+$bc-livestream-2: #232121;
+$bc-livestream-3: #f78822;
+$bc-livestream-4: #f6db35;
+$bc-livestream-5: #6dc067;
+$bc-livestream-6: #4185be;
+$bc-livestream-7: #8f499c;
+$bc-lloyds: #d81f2a;
+$bc-lloyds-2: #ff9900;
+$bc-lloyds-3: #e0d86e;
+$bc-lloyds-4: #9ea900;
+$bc-lloyds-5: #6ec9e0;
+$bc-lloyds-6: #007ea3;
+$bc-lloyds-7: #9e4770;
+$bc-lloyds-8: #631d76;
+$bc-lloyds-9: #1e1e1e;
+$bc-lomo: #eb0028;
+$bc-lomo-2: #00a0df;
+$bc-london-underground: #000099;
+$bc-london-underground-2: #cc3333;
+$bc-lumo: #576396;
+$bc-lyft: #ff00bf;
+$bc-lyft-2: #352384;
+$bc-lyft-3: #333447;
+$bc-lyft-4: #f3f3f5;
+$bc-magento: #f46f25;
+$bc-mail-ru: #168de2;
+$bc-mail-ru-2: #ffa930;
+$bc-mailchimp: #239ab9;
+$bc-mailchimp-2: #52bad5;
+$bc-mailchimp-3: #6dc5dc;
+$bc-mailchimp-4: #373737;
+$bc-mailchimp-5: #5d5c5d;
+$bc-mailchimp-6: #b7b7b7;
+$bc-mailru: #168de2;
+$bc-mailru-2: #ffa930;
+$bc-makita: #d82028;
+$bc-makita-2: #29a0b7;
+$bc-mapbox: #3bb2d0;
+$bc-mapbox-2: #3887be;
+$bc-mapbox-3: #8a8acb;
+$bc-mapbox-4: #56b881;
+$bc-mapbox-5: #50667f;
+$bc-mapbox-6: #41afa5;
+$bc-mapbox-7: #f9886c;
+$bc-mapbox-8: #e55e5e;
+$bc-mapbox-9: #ed6498;
+$bc-mapbox-10: #fbb03b;
+$bc-mapbox-11: #142736;
+$bc-mapbox-12: #28353d;
+$bc-mapbox-13: #222b30;
+$bc-massy-group: #004a77;
+$bc-massy-group-2: #00adee;
+$bc-massy-group-3: #ff8100;
+$bc-massy-group-4: #ffd200;
+$bc-mastercard: #cc0000;
+$bc-mastercard-2: #ff9900;
+$bc-mastercard-3: #000066;
+$bc-mcdonalds: #bf0c0c;
+$bc-mcdonalds-2: #e76a05;
+$bc-mcdonalds-3: #ffc600;
+$bc-mcdonalds-4: #47bc00;
+$bc-mcdonalds-5: #05007b;
+$bc-mcdonalds-6: #9748a8;
+$bc-mcdonalds-7: #2bb3f3;
+$bc-mcdonalds-8: #865200;
+$bc-medium: #00ab6c;
+$bc-meetup: #e0393e;
+$bc-meijer: #0a4d8c;
+$bc-meijer-2: #dd1321;
+$bc-mercadolibre-com: #ffe600;
+$bc-mercadolibre-com-2: #2d3277;
+$bc-messenger: #0084ff;
+$bc-mic: #21c1ff;
+$bc-microsoft: #f65314;
+$bc-microsoft-2: #7cbb00;
+$bc-microsoft-3: #00a1f1;
+$bc-microsoft-4: #ffbb00;
+$bc-microsoft-band: #783bd2;
+$bc-microsoft-office: #ea3e23;
+$bc-microsoft-surface: #0078d7;
+$bc-microsoft-surface-2: #eeeeee;
+$bc-microsoft-surface-3: #737373;
+$bc-microsoft-surface-4: #505050;
+$bc-microsoft-surface-5: #000000;
+$bc-milligram: #9b4dca;
+$bc-milligram-2: #f4f5f6;
+$bc-milligram-3: #606c76;
+$bc-mixcloud: #52aad8;
+$bc-mixcloud-2: #273a4b;
+$bc-mixcloud-3: #1d2d3b;
+$bc-mixpanel: #a086d3;
+$bc-mobilink: #ee1d23;
+$bc-mollie: #c6d6df;
+$bc-mollie-2: #ec4534;
+$bc-mongodb: #589636;
+$bc-montclair-state-university: #ce1141;
+$bc-montclair-state-university-2: #eeb111;
+$bc-montclair-state-university-3: #e87d1e;
+$bc-montclair-state-university-4: #94ce08;
+$bc-montclair-state-university-5: #00386b;
+$bc-montclair-state-university-6: #969491;
+$bc-more4: #949483;
+$bc-more4-2: #f47b7b;
+$bc-more4-3: #9f1f5c;
+$bc-more4-4: #ef9020;
+$bc-more4-5: #00af3e;
+$bc-more4-6: #85b7e2;
+$bc-more4-7: #29245c;
+$bc-more4-8: #ffd616;
+$bc-more4-9: #e5352b;
+$bc-more4-10: #e990ab;
+$bc-more4-11: #0081b4;
+$bc-more4-12: #96cbb3;
+$bc-more4-13: #91be3e;
+$bc-more4-14: #39a6dd;
+$bc-more4-15: #eb0973;
+$bc-more4-16: #dde2e0;
+$bc-more4-17: #333c41;
+$bc-motorola: #5c92fa;
+$bc-mozilla: #c13832;
+$bc-mozilla-2: #d7d3c8;
+$bc-mozilla-3: #4d4e53;
+$bc-musixmatch: #ff6050;
+$bc-musixmatch-2: #ff0e83;
+$bc-musixmatch-3: #d54262;
+$bc-musixmatch-4: #813867;
+$bc-musixmatch-5: #66336e;
+$bc-musixmatch-6: #341539;
+$bc-musixmatch-7: #5677fc;
+$bc-musixmatch-8: #9013fe;
+$bc-musixmatch-9: #ffc208;
+$bc-musixmatch-10: #00cc99;
+$bc-muut: #1fadc5;
+$bc-muut-2: #ff8000;
+$bc-myspace: #000000;
+$bc-mysql: #00758f;
+$bc-mysql-2: #f29111;
+$bc-nanowrimo: #93dee8;
+$bc-nanowrimo-2: #5a2e14;
+$bc-nasa: #fc3d21;
+$bc-nasa-2: #0b3d91;
+$bc-national-geographic: #ffcc00;
+$bc-national-geographic-2: #000000;
+$bc-nationwide: #0071bf;
+$bc-nationwide-2: #000000;
+$bc-nbc: #e1ac26;
+$bc-nbc-2: #dc380f;
+$bc-nbc-3: #9f0812;
+$bc-nbc-4: #6347b2;
+$bc-nbc-5: #368dd5;
+$bc-nbc-6: #70af1e;
+$bc-nbc-7: #7e887a;
+$bc-nc-state-university: #cc0000;
+$bc-nc-state-university-2: #000000;
+$bc-nest: #00afd8;
+$bc-nest-2: #7b858e;
+$bc-netflix: #e50914;
+$bc-netflix-2: #221f1f;
+$bc-netflix-3: #f5f5f1;
+$bc-netlicensing: #E14817;
+$bc-netlicensing-2: #F08B53;
+$bc-netlicensing-3: #7B2A10;
+$bc-netlicensing-4: #AB6543;
+$bc-netlicensing-5: #F2951C;
+$bc-netlicensing-6: #87888A;
+$bc-netvibes: #39bd00;
+$bc-new-balance: #ce2724;
+$bc-new-balance-2: #f3ec19;
+$bc-new-balance-3: #207c88;
+$bc-new-balance-4: #aac1bf;
+$bc-new-balance-5: #e8e9d7;
+$bc-new-balance-6: #4c4d4f;
+$bc-new-balance-7: #231f20;
+$bc-new-york-post: #cc3333;
+$bc-new-york-post-2: #2a2a2a;
+$bc-nexar: #fbb040;
+$bc-nexar-2: #44355b;
+$bc-nexar-3: #31263e;
+$bc-nexar-4: #ee5622;
+$bc-nexar-5: #221e22;
+$bc-nexmo: #0077c8;
+$bc-nexmo-2: #ff8200;
+$bc-nexmo-3: #f0537a;
+$bc-nextdoor: #19975d;
+$bc-nfl: #013369;
+$bc-nfl-2: #d50a0a;
+$bc-nike-football: #504847;
+$bc-nike-football-2: #27a770;
+$bc-nikefuel: #4bad31;
+$bc-nikefuel-2: #f5dc00;
+$bc-nikefuel-3: #e95814;
+$bc-nikefuel-4: #e2142d;
+$bc-ning: #75af42;
+$bc-node-js: #215732;
+$bc-node-js-2: #6cc24a;
+$bc-node-js-3: #44883e;
+$bc-node-js-4: #333333;
+$bc-nokia: #124191;
+$bc-norsan-media: #0390d8;
+$bc-northern-arizona-university: #003466;
+$bc-northern-arizona-university-2: #557665;
+$bc-northwestern-university: #4e2a84;
+$bc-northwestern-university-2: #836eaa;
+$bc-northwestern-university-3: #401f68;
+$bc-northwestern-university-4: #b6acd1;
+$bc-northwestern-university-5: #e4e0ee;
+$bc-northwestern-university-6: #342f2e;
+$bc-northwestern-university-7: #716c6b;
+$bc-northwestern-university-8: #bbb8b8;
+$bc-northwestern-university-9: #d8d6d6;
+$bc-novartis: #765438;
+$bc-novartis-2: #a13323;
+$bc-novartis-3: #e65124;
+$bc-novartis-4: #ec7f22;
+$bc-novartis-5: #f8b22a;
+$bc-novartis-6: #ffd430;
+$bc-npm: #cb3837;
+$bc-ns: #ffc61e;
+$bc-ns-2: #00337f;
+$bc-nvidia: #76b900;
+$bc-obb: #e2002a;
+$bc-obb-2: #6e6e6e;
+$bc-odnoklassniki: #ed812b;
+$bc-office-sway: #008272;
+$bc-oktopost: #001f2d;
+$bc-oktopost-2: #008fd4;
+$bc-oktopost-3: #696969;
+$bc-oktopost-4: #cccccc;
+$bc-oktopost-5: #eeeeee;
+$bc-ola: #D7E021;
+$bc-ola-2: #010101;
+$bc-olark: #8d989a;
+$bc-olark-2: #744da8;
+$bc-olark-3: #1fb3e0;
+$bc-olark-4: #49c219;
+$bc-olark-5: #f4dc2a;
+$bc-olark-6: #eeb417;
+$bc-olark-7: #d65129;
+$bc-olympus: #08107b;
+$bc-olympus-2: #dfb226;
+$bc-olympus-3: #777777;
+$bc-oneplus: #eb0029;
+$bc-onshape: #1b5faa;
+$bc-onshape-2: #90cef1;
+$bc-onshape-3: #ffc20e;
+$bc-oovoo: #eeaf00;
+$bc-opera: #cc0f16;
+$bc-opera-2: #9c9e9f;
+$bc-oracle: #ff0000;
+$bc-oracle-2: #000000;
+$bc-oracle-3: #7f7f7f;
+$bc-oregon-state-university: #dc4405;
+$bc-oregon-state-university-2: #000000;
+$bc-overstock: #c7202c;
+$bc-oxford-university-press: #002147;
+$bc-oxford-university-press-2: #000000;
+$bc-oxford-university-press-3: #666666;
+$bc-pac-12: #004b91;
+$bc-pac-12-2: #00274d;
+$bc-pac-12-3: #0076c0;
+$bc-pac-12-4: #000007;
+$bc-pac-12-5: #d6e03d;
+$bc-pac-12-6: #a1a1a4;
+$bc-pac-12-7: #d3c4a;
+$bc-panasonic: #0f58a8;
+$bc-panasonic-2: #000000;
+$bc-pandora: #005483;
+$bc-path: #ee3423;
+$bc-patreon: #f96854;
+$bc-patreon-2: #052d49;
+$bc-paymill: #f05000;
+$bc-paypal: #003087;
+$bc-paypal-2: #009cde;
+$bc-paypal-3: #012169;
+$bc-paypal-dark: #1e477a;
+$bc-paypal-dark-2: #3b7bbf;
+$bc-pearson: #ed6b06;
+$bc-pearson-2: #9d1348;
+$bc-pearson-3: #008b5d;
+$bc-pearson-4: #364395;
+$bc-penguin-books: #ff6900;
+$bc-pepsi: #e32934;
+$bc-pepsi-2: #004883;
+$bc-periscope: #3aa4c6;
+$bc-periscope-2: #d75444;
+$bc-pfizer: #0093d0;
+$bc-pfizer-2: #000000;
+$bc-pfizer-3: #616365;
+$bc-pfizer-4: #00aeef;
+$bc-pfizer-5: #d6006e;
+$bc-pfizer-6: #75d1e0;
+$bc-pfizer-7: #7dba00;
+$bc-pfizer-8: #cc292b;
+$bc-pfizer-9: #00a950;
+$bc-pfizer-10: #f8971d;
+$bc-pfizer-11: #f7d417;
+$bc-pfizer-12: #4a245e;
+$bc-pfizer-13: #f26649;
+$bc-philips: #0e5fd8;
+$bc-photobucket: #0ea0db;
+$bc-photobucket-2: #000000;
+$bc-php: #8892be;
+$bc-php-2: #4f5b93;
+$bc-php-3: #99cc99;
+$bc-pinboard: #0000e6;
+$bc-pinterest: #bd081c;
+$bc-pizza-hut: #ee3124;
+$bc-pizza-hut-2: #00a160;
+$bc-pizza-hut-3: #ffc425;
+$bc-plasso: #6585ed;
+$bc-plasso-2: #f5756c;
+$bc-plasso-3: #98afc0;
+$bc-plasso-4: #2f3148;
+$bc-plaxo: #414f5a;
+$bc-playstation: #003087;
+$bc-playstr: #d91e18;
+$bc-pocket: #ef4056;
+$bc-pocket-2: #50bcb6;
+$bc-polariod: #00a3e2;
+$bc-polariod-2: #1ba548;
+$bc-polariod-3: #fdc800;
+$bc-polariod-4: #f1860e;
+$bc-polariod-5: #e41b13;
+$bc-portfolium: #0099ff;
+$bc-portfolium-2: #fb0a2a;
+$bc-portfolium-3: #17ad49;
+$bc-portfolium-4: #333333;
+$bc-postman: #ef5b25;
+$bc-postmates: #000000;
+$bc-postmates-2: #36454f;
+$bc-prestashop: #df0067;
+$bc-prestashop-2: #251b5b;
+$bc-prestashop-3: #25b9d7;
+$bc-prestashop-4: #fbbb22;
+$bc-prestashop-5: #68737f;
+$bc-prestashop-6: #bbbfc3;
+$bc-prezi: #318bff;
+$bc-priceline: #1885bf;
+$bc-princeton-university: #ee7f2d;
+$bc-princeton-university-2: #000000;
+$bc-product-hunt: #da552f;
+$bc-product-hunt-2: #534540;
+$bc-product-hunt-3: #988f8c;
+$bc-product-hunt-4: #00b27f;
+$bc-protonmail: #505264;
+$bc-protonmail-2: #8a90c7;
+$bc-puma: #000000;
+$bc-puma-2: #44403f;
+$bc-puma-3: #696965;
+$bc-puma-4: #ba2026;
+$bc-puma-5: #ae946d;
+$bc-purdue-university: #c28e0e;
+$bc-purdue-university-2: #98700d;
+$bc-purdue-university-3: #000000;
+$bc-pusha: #0f71b4;
+$bc-python: #ffde57;
+$bc-python-2: #4584b6;
+$bc-python-3: #646464;
+$bc-qantas-airlines: #e0001b;
+$bc-qq: #000000;
+$bc-qq-2: #FFA600;
+$bc-qq-3: #FB0009;
+$bc-qq-4: #FFFFFF;
+$bc-qualtrics: #e10019;
+$bc-quizup: #ff5454;
+$bc-quora: #a82400;
+$bc-quote-fm: #66ceff;
+$bc-rambler: #315efb;
+$bc-raspberry-pi: #c7053d;
+$bc-raspberry-pi-2: #8cc04b;
+$bc-razer: #00ff00;
+$bc-rdio: #007dc3;
+$bc-react: #00d8ff;
+$bc-readability: #990000;
+$bc-realex-payments: #f29023;
+$bc-realex-payments-2: #4d5255;
+$bc-red-hat: #cc0000;
+$bc-reddit: #ff4500;
+$bc-reddit-2: #5f99cf;
+$bc-reddit-3: #cee3f8;
+$bc-redfin: #a02021;
+$bc-redox: #0a2239;
+$bc-redox-2: #01b287;
+$bc-redox-3: #ff9f1c;
+$bc-redox-4: #e5505a;
+$bc-redox-5: #854c9e;
+$bc-reliance: #0072BB;
+$bc-remax: #e11b22;
+$bc-remax-2: #0054a4;
+$bc-renaissance-hotels: #000000;
+$bc-renaissance-hotels-2: #999999;
+$bc-renaissance-hotels-3: #f58021;
+$bc-renaissance-hotels-4: #f58021;
+$bc-rentler: #ed1c27;
+$bc-residence-inn: #b32317;
+$bc-residence-inn-2: #f58025;
+$bc-residence-inn-3: #3a6e8f;
+$bc-residence-inn-4: #87b2d8;
+$bc-residence-inn-5: #8d8b00;
+$bc-residence-inn-6: #c1d72f;
+$bc-resource: #7eb400;
+$bc-reverbnation: #e43526;
+$bc-rochester-institute-of-technology: #f36e21;
+$bc-rochester-institute-of-technology-2: #513127;
+$bc-rockpack: #0ba6ab;
+$bc-roku: #6f1ab1;
+$bc-rolls-royce: #680021;
+$bc-rolls-royce-2: #fffaec;
+$bc-rolls-royce-3: #939598;
+$bc-rolls-royce-4: #000000;
+$bc-roo-kids: #e22027;
+$bc-roo-kids-2: #a1cd3d;
+$bc-roo-kids-3: #003e70;
+$bc-roon: #62b0d9;
+$bc-rosetta-stone: #0098db;
+$bc-rosetta-stone-2: #ecc400;
+$bc-rounds: #fdd800;
+$bc-rowan-university: #3f1a0a;
+$bc-rowan-university-2: #edd51c;
+$bc-royal-mail: #ff0000;
+$bc-royal-mail-2: #ffff00;
+$bc-royal-mail-3: #000000;
+$bc-rss: #ee802f;
+$bc-rss-2: #f26522;
+$bc-ruby: #cc342d;
+$bc-ruby-on-rails: #cc0000;
+$bc-rutgers-university: #cc0033;
+$bc-ryanair: #073590;
+$bc-ryanair-2: #f1c933;
+$bc-ryanair-3: #2091eb;
+$bc-sage: #00dc06;
+$bc-sainsburys: #ec8a00;
+$bc-salesforce: #1798c1;
+$bc-salesforce-2: #ff1100;
+$bc-samsung: #1428a0;
+$bc-samsung-2: #75787b;
+$bc-samsung-3: #0689d8;
+$bc-samsung-4: #ffc600;
+$bc-samsung-5: #ff6900;
+$bc-samsung-6: #e4002b;
+$bc-samsung-7: #c800a1;
+$bc-samsung-8: #685bc7;
+$bc-samsung-9: #0057b8;
+$bc-samsung-10: #00a9e0;
+$bc-samsung-11: #009ca6;
+$bc-samsung-12: #00b140;
+$bc-san-francisco-49ers: #e91e22;
+$bc-san-francisco-49ers-2: #c8aa76;
+$bc-san-francisco-49ers-3: #000000;
+$bc-san-francisco-giants: #fd5a1e;
+$bc-san-francisco-giants-2: #000000;
+$bc-sap: #003366;
+$bc-sap-2: #999999;
+$bc-scouts-uk: #4d2177;
+$bc-scouts-uk-2: #84a40b;
+$bc-scouts-uk-3: #004851;
+$bc-scouts-uk-4: #009a44;
+$bc-scouts-uk-5: #0095c8;
+$bc-scouts-uk-6: #003da5;
+$bc-scouts-uk-7: #002855;
+$bc-scouts-uk-8: #004851;
+$bc-scouts-uk-9: #ffcd00;
+$bc-scouts-uk-10: #ff8200;
+$bc-scouts-uk-11: #ba0c2f;
+$bc-scouts-uk-12: #ad1aac;
+$bc-scouts-uk-13: #7c3a2d;
+$bc-scouts-uk-14: #8c857b;
+$bc-scratch: #F7A83A;
+$bc-scratch-2: #25AFF4;
+$bc-scribd: #1a7bba;
+$bc-septa: #1f4fa3;
+$bc-septa-2: #f14728;
+$bc-seton-hall-university: #004488;
+$bc-shazam: #0088ff;
+$bc-shazam-2: #ffaa00;
+$bc-shazam-3: #ff7700;
+$bc-shazam-4: #ff0033;
+$bc-shazam-5: #9911aa;
+$bc-shazam-6: #cc2288;
+$bc-shazam-7: #aadd22;
+$bc-shazam-8: #242424;
+$bc-shazam-9: #646464;
+$bc-shazam-10: #949494;
+$bc-shazam-11: #e4e4e4;
+$bc-shazam-12: #f4f4f4;
+$bc-sherwin-williams: #0168b3;
+$bc-sherwin-williams-2: #ee3e34;
+$bc-shopify: #96bf48;
+$bc-shopify-2: #479ccf;
+$bc-shopify-3: #2d3538;
+$bc-shopify-4: #f5f5f5;
+$bc-shopify-5: #f2f7fa;
+$bc-shopify-6: #666666;
+$bc-shopmium: #f01f74;
+$bc-siemens: #009999;
+$bc-sina: #e71d34;
+$bc-sina-2: #232021;
+$bc-skillshare: #f26b21;
+$bc-skillshare-2: #68b8be;
+$bc-skoda: #00800d;
+$bc-skype: #00aff0;
+$bc-skywest: #00338d;
+$bc-slack: #6ecadc;
+$bc-slack-2: #e9a820;
+$bc-slack-3: #e01563;
+$bc-slack-4: #3eb991;
+$bc-slideshare: #0077b5;
+$bc-slipcase: #7c9cb0;
+$bc-smashing-magazine: #e53b2c;
+$bc-smashing-magazine-2: #41b7d8;
+$bc-snagajob: #f36f21;
+$bc-snapchat: #fffc00;
+$bc-socialbro: #29c4d0;
+$bc-socialbro-2: #f29556;
+$bc-socialbro-3: #84afa2;
+$bc-socialbro-4: #72c427;
+$bc-socialbro-5: #f24c7c;
+$bc-socialbro-6: #00aaf2;
+$bc-softonic: #008ace;
+$bc-songkick: #f80046;
+$bc-sonicbids: #ff6600;
+$bc-sonicbids-2: #0c88b1;
+$bc-sony: #000000;
+$bc-sony-2: #7c8285;
+$bc-sony-3: #bfbdb0;
+$bc-sony-4: #b1b134;
+$bc-sony-5: #bbd634;
+$bc-sony-6: #dbe3b6;
+$bc-sony-7: #b2c8bd;
+$bc-sony-8: #165b65;
+$bc-sony-9: #697d99;
+$bc-sony-10: #96b8db;
+$bc-sony-11: #00a4e8;
+$bc-sony-12: #a4dbdb;
+$bc-sony-13: #fdd666;
+$bc-sony-14: #dc9018;
+$bc-sony-15: #e31a22;
+$bc-sony-16: #df8f2d;
+$bc-sony-17: #b24f3f;
+$bc-sony-18: #b51f29;
+$bc-sony-19: #f58268;
+$bc-sony-20: #f4979c;
+$bc-soulcycle: #fedf00;
+$bc-soulcycle-2: #1e1e1e;
+$bc-soulcycle-3: #a7a8aa;
+$bc-soundcloud: #ff8800;
+$bc-soundcloud-2: #ff3300;
+$bc-space-box: #f86960;
+$bc-spoken: #fc00c1;
+$bc-spoken-2: #000000;
+$bc-spotify: #1db954;
+$bc-spotify-2: #191414;
+$bc-sprint: #ffe100;
+$bc-sprout-social: #75dd66;
+$bc-sprout-social-2: #59cb59;
+$bc-sprout-social-3: #2bb656;
+$bc-sprout-social-4: #0ca750;
+$bc-sprout-social-5: #f3f4f4;
+$bc-sprout-social-6: #364141;
+$bc-square-cash: #28c101;
+$bc-squarespace: #222222;
+$bc-stack-exchange: #1e5397;
+$bc-stack-exchange-2: #376db6;
+$bc-stack-exchange-3: #4ca2da;
+$bc-stack-exchange-4: #91d8f4;
+$bc-stackoverflow: #f48024;
+$bc-stackoverflow-2: #222426;
+$bc-stackoverflow-3: #bcbbbb;
+$bc-staples: #cc0000;
+$bc-staples-2: #2c8aec;
+$bc-staples-3: #ffcc00;
+$bc-starbucks: #00704a;
+$bc-state-farm: #e1261c;
+$bc-status-chart: #d7584f;
+$bc-steam: #00adee;
+$bc-steam-2: #000000;
+$bc-sterling-hotels: #3b5a6f;
+$bc-sterling-hotels-2: #828a87;
+$bc-sterling-hotels-3: #000000;
+$bc-sterling-hotels-4: #9db7c4;
+$bc-sterling-hotels-5: #ccd7dd;
+$bc-sterling-hotels-6: #838f97;
+$bc-sterling-hotels-7: #002054;
+$bc-stockton-university: #000000;
+$bc-stockton-university-2: #79bde9;
+$bc-stockton-university-3: #ffc423;
+$bc-stockton-university-4: #bc9b6a;
+$bc-stockton-university-5: #a7a9ac;
+$bc-storyful: #f97200;
+$bc-storyful-2: #010101;
+$bc-storyful-3: #8b8b64;
+$bc-storyful-4: #bbbdc0;
+$bc-strava: #fc4c02;
+$bc-streamable: #0f90fa;
+$bc-stripe: #00afe1;
+$bc-stubhub: #004b91;
+$bc-stubhub-2: #ff7300;
+$bc-studyblue: #00afe1;
+$bc-stumbleupon: #eb4924;
+$bc-subway: #489e3b;
+$bc-subway-2: #fabd42;
+$bc-subway-3: #cd0a20;
+$bc-subway-4: #fabd42;
+$bc-subway-5: #cd0a20;
+$bc-sugarcrm: #e61718;
+$bc-sugarcrm-2: #e8e9ea;
+$bc-sugarcrm-3: #595a5c;
+$bc-sugarcrm-4: #282828;
+$bc-suntrust: #00447c;
+$bc-suntrust-2: #fdb913;
+$bc-suntrust-3: #e36f1e;
+$bc-supershuttle: #4285f4;
+$bc-supershuttle-2: #ffcd1a;
+$bc-swarm: #f06d1f;
+$bc-swarm-2: #ffa633;
+$bc-t-mobile: #e20074;
+$bc-tableless: #D71E24;
+$bc-tableless-2: #303030;
+$bc-tagstr: #e74635;
+$bc-tagstr-2: #e74635;
+$bc-taiga: #444444;
+$bc-taiga-2: #b8b8b8;
+$bc-taiga-3: #72a114;
+$bc-taiga-4: #9dce0a;
+$bc-taiga-5: #879b89;
+$bc-taobao: #FF4200;
+$bc-target: #cc0000;
+$bc-technorati: #339900;
+$bc-ted: #e62b1e;
+$bc-telegram: #0088cc;
+$bc-temple: #a41e35;
+$bc-temple-2: #222222;
+$bc-temple-3: #899197;
+$bc-tesco: #ee1c2e;
+$bc-tesco-2: #00539f;
+$bc-tesla: #cc0000;
+$bc-texas-am-university: #500000;
+$bc-texas-am-university-2: #003c71;
+$bc-texas-am-university-3: #5b6236;
+$bc-texas-am-university-4: #744f28;
+$bc-texas-am-university-5: #998542;
+$bc-texas-am-university-6: #332c2c;
+$bc-texas-am-university-7: #707373;
+$bc-texas-am-university-8: #d6d3c4;
+$bc-texas-tech-university: #cc0000;
+$bc-texas-tech-university-2: #000000;
+$bc-the-audience-awards: #ee8421;
+$bc-the-audience-awards-2: #8c8a8a;
+$bc-the-audience-awards-3: #222222;
+$bc-the-college-of-new-jersey: #293f6f;
+$bc-the-college-of-new-jersey-2: #a67a00;
+$bc-the-next-web: #ff3c1f;
+$bc-the-next-web-2: #26313b;
+$bc-the-next-web-3: #4e5860;
+$bc-the-next-web-4: #a6abaf;
+$bc-the-next-web-5: #d9e0e2;
+$bc-the-next-web-6: #fafbfc;
+$bc-the-ritz-carlton: #006b95;
+$bc-the-ritz-carlton-2: #4f5b65;
+$bc-the-ritz-carlton-3: #b3812a;
+$bc-the-ritz-carlton-4: #a01a1f;
+$bc-the-sun: #ed1c24;
+$bc-the-sun-2: #b90c13;
+$bc-the-sun-goals: #00745e;
+$bc-the-sun-goals-2: #086556;
+$bc-the-sun-perks: #8560a8;
+$bc-the-sun-perks-2: #431c69;
+$bc-the-times: #000000;
+$bc-thomson-reuters: #ff8000;
+$bc-thomson-reuters-2: #555555;
+$bc-thomson-reuters-3: #444444;
+$bc-thomson-reuters-4: #666666;
+$bc-thomson-reuters-5: #cccccc;
+$bc-thomson-reuters-6: #e9e9e9;
+$bc-thomson-reuters-7: #f7f7f7;
+$bc-tivo: #da3d34;
+$bc-tivo-2: #00a480;
+$bc-tivo-3: #ed9f40;
+$bc-tivo-4: #6a76ac;
+$bc-tivo-5: #17170e;
+$bc-tivo-6: #534b38;
+$bc-tivo-7: #a6a480;
+$bc-totaljobs: #66bd00;
+$bc-treehouse: #6fbc6d;
+$bc-treehouse-2: #47535b;
+$bc-trello: #0079bf;
+$bc-trello-2: #70b500;
+$bc-trello-3: #ff9f1a;
+$bc-trello-4: #eb5a46;
+$bc-trello-5: #f2d600;
+$bc-trello-6: #c377e0;
+$bc-trello-7: #ff78cb;
+$bc-trello-8: #00c2e0;
+$bc-trello-9: #51e898;
+$bc-trello-10: #c4c9cc;
+$bc-tripadvisor: #00af87;
+$bc-trulia: #5eab1f;
+$bc-tumblr: #35465c;
+$bc-tunngle: #c30f24;
+$bc-turbotax: #355ebe;
+$bc-turbotax-2: #d52b1d;
+$bc-tvtag: #e92c4c;
+$bc-tvtag-2: #c82641;
+$bc-twentythree: #1ec95b;
+$bc-twentythree-2: #043623;
+$bc-twentythree-3: #eff5f0;
+$bc-twitch-tv: #6441a5;
+$bc-twitch-tv-2: #b9a3e3;
+$bc-twitch-tv-3: #262626;
+$bc-twitch-tv-4: #f1f1f1;
+$bc-twitter: #1da1f2;
+$bc-twitter-2: #14171a;
+$bc-twitter-3: #657786;
+$bc-twitter-4: #aab8c2;
+$bc-twitter-5: #e1e8ed;
+$bc-twitter-6: #f5f8fa;
+$bc-typekit: #98ce1e;
+$bc-typepad: #d2de61;
+$bc-typo3: #ff8700;
+$bc-uber: #09091a;
+$bc-uber-2: #c0c0c8;
+$bc-uber-3: #1fbad6;
+$bc-ubuntu: #dd4814;
+$bc-ubuntu-2: #77216f;
+$bc-ubuntu-3: #5e2750;
+$bc-ubuntu-4: #2c001e;
+$bc-ubuntu-5: #aea79f;
+$bc-ubuntu-6: #333333;
+$bc-uc-berkeley: #003262;
+$bc-uc-berkeley-2: #3b7ea1;
+$bc-uc-berkeley-3: #fdb515;
+$bc-uc-berkeley-4: #c4820e;
+$bc-ucsf: #052049;
+$bc-ucsf-2: #18a3ac;
+$bc-ucsf-3: #90bd31;
+$bc-ucsf-4: #178ccb;
+$bc-ucsf-5: #f48024;
+$bc-united-way: #10167f;
+$bc-united-way-2: #fe230a;
+$bc-united-way-3: #ff9600;
+$bc-united-way-4: #000064;
+$bc-united-way-5: #b41428;
+$bc-united-way-6: #f57814;
+$bc-united-way-7: #e6d7aa;
+$bc-united-way-8: #505050;
+$bc-united-way-9: #f0e6c8;
+$bc-united-way-10: #969696;
+$bc-united-way-11: #7c81b8;
+$bc-united-way-12: #ff967d;
+$bc-united-way-13: #ffc87d;
+$bc-unity: #222c37;
+$bc-unity-2: #00cccc;
+$bc-unity-3: #fff600;
+$bc-unity-4: #ff0066;
+$bc-unity-5: #19e3b1;
+$bc-unity-6: #ff7f33;
+$bc-unity-7: #b83c82;
+$bc-universitat-hamburg: #e2001a;
+$bc-universitat-hamburg-2: #009cd1;
+$bc-universitat-hamburg-3: #3b515b;
+$bc-university-of-alberta: #007c41;
+$bc-university-of-alberta-2: #ffdb05;
+$bc-university-of-arizona: #cc0033;
+$bc-university-of-arizona-2: #003366;
+$bc-university-of-cambridge: #d6083b;
+$bc-university-of-cambridge-2: #0072cf;
+$bc-university-of-cambridge-3: #ea7125;
+$bc-university-of-cambridge-4: #55a51c;
+$bc-university-of-cambridge-5: #8f2bbc;
+$bc-university-of-cambridge-6: #00b1c1;
+$bc-university-of-florida: #fa4616;
+$bc-university-of-florida-2: #0021a5;
+$bc-university-of-illinois-urbana-champaign: #131f33;
+$bc-university-of-illinois-urbana-champaign-2: #fa6300;
+$bc-university-of-kentucky: #005daa;
+$bc-university-of-michigan: #00274c;
+$bc-university-of-michigan-2: #ffcb05;
+$bc-university-of-oregon: #fce122;
+$bc-university-of-oregon-2: #18453b;
+$bc-university-of-texas: #bf5700;
+$bc-university-of-texas-2: #333f48;
+$bc-university-of-texas-3: #005f86;
+$bc-university-of-texas-4: #43695b;
+$bc-university-of-texas-5: #f2a900;
+$bc-university-of-texas-6: #382f2d;
+$bc-university-of-texas-7: #d6d2c4;
+$bc-university-of-victoria: #005493;
+$bc-university-of-victoria-2: #f5aa1c;
+$bc-university-of-victoria-3: #c63527;
+$bc-university-of-victoria-4: #002754;
+$bc-university-of-washington: #4b2e83;
+$bc-university-of-washington-2: #b7a57a;
+$bc-university-of-washington-3: #85754d;
+$bc-university-of-waterloo: #ffd54f;
+$bc-university-of-waterloo-2: #000;
+$bc-university-of-wisconsin-milwaukee: #ffbd00;
+$bc-university-of-wisconsin-milwaukee-2: #000000;
+$bc-university-of-wisconsin-milwaukee-3: #98c646;
+$bc-university-of-wisconsin-milwaukee-4: #694d88;
+$bc-university-of-wisconsin-milwaukee-5: #5382af;
+$bc-university-of-wisconsin-milwaukee-6: #d06d34;
+$bc-university-of-wisconsin-milwaukee-7: #5f9a38;
+$bc-university-of-wisconsin-milwaukee-8: #474d52;
+$bc-univision: #c822b0;
+$bc-ups: #351c15;
+$bc-ups-2: #ffb500;
+$bc-ups-3: #64a70b;
+$bc-usps: #333366;
+$bc-usps-2: #e71921;
+$bc-usps-3: #218748;
+$bc-ustream: #3388ff;
+$bc-utorrent: #00853f;
+$bc-verizon: #ff0000;
+$bc-verizon-2: #f2f2f2;
+$bc-verizon-3: #3285dc;
+$bc-viadeo: #f07355;
+$bc-viber: #59267c;
+$bc-viber-2: #8f5db7;
+$bc-viber-3: #e2d4e7;
+$bc-viber-4: #a5cfd5;
+$bc-viber-5: #81cd50;
+$bc-vidme: #f82a53;
+$bc-vidme-2: #111111;
+$bc-vidme-3: #f5f5f5;
+$bc-vidme-4: #9f2af8;
+$bc-vidme-5: #aaaaaa;
+$bc-vidme-6: #dff0d8;
+$bc-viki: #3c9cd7;
+$bc-viki-2: #d24663;
+$bc-vimeo: #162221;
+$bc-vimeo-2: #1ab7ea;
+$bc-vine: #00b488;
+$bc-virb: #1e91d0;
+$bc-virgin-media: #c3092d;
+$bc-virgin-media-2: #222221;
+$bc-virgin-money: #cc0000;
+$bc-virgin-money-2: #333333;
+$bc-virgin-money-3: #a93c3b;
+$bc-virgin-money-4: #a896a0;
+$bc-virgin-money-5: #7a3671;
+$bc-virgin-money-6: #bd1d65;
+$bc-visa: #1a1f71;
+$bc-visa-2: #f7b600;
+$bc-visualcv: #31577a;
+$bc-visually: #14acf2;
+$bc-visually-2: #f04494;
+$bc-visually-3: #0ac578;
+$bc-vkontakte: #45668e;
+$bc-vodafone: #e60000;
+$bc-vodafone-2: #4a4d4e;
+$bc-vodafone-3: #9c2aa0;
+$bc-vodafone-4: #5e2750;
+$bc-vodafone-5: #00b0ca;
+$bc-vodafone-6: #007c92;
+$bc-vodafone-7: #a8b400;
+$bc-vodafone-8: #fecb00;
+$bc-vodafone-9: #eb9800;
+$bc-vodafone-10: #000000;
+$bc-volvo: #003057;
+$bc-volvo-2: #115740;
+$bc-volvo-3: #65665c;
+$bc-volvo-4: #425563;
+$bc-volvo-5: #517891;
+$bc-volvo-6: #212721;
+$bc-vue-js: #42b883;
+$bc-vue-js-2: #35495e;
+$bc-walgreens: #e31837;
+$bc-walgreens-2: #f37520;
+$bc-walgreens-3: #489cd4;
+$bc-walgreens-4: #2774a6;
+$bc-walgreens-5: #35393d;
+$bc-walmart: #007dc6;
+$bc-walmart-2: #79b9e7;
+$bc-walmart-3: #f47421;
+$bc-walmart-4: #76c143;
+$bc-walmart-5: #ffc120;
+$bc-walmart-6: #e7f0f7;
+$bc-walmart-7: #f2f8fd;
+$bc-walmart-8: #222222;
+$bc-walmart-9: #444444;
+$bc-warby-parker: #414b56;
+$bc-warby-parker-2: #00a2e1;
+$bc-wave-apps: #1c2d37;
+$bc-wave-apps-2: #4ec7c4;
+$bc-wave-apps-3: #00959f;
+$bc-wave-apps-4: #3b9bcc;
+$bc-webzunder: #eea642;
+$bc-wechat: #7bb32e;
+$bc-weibo: #e71d34;
+$bc-weixin: #93d034;
+$bc-wendys: #e2203d;
+$bc-wendys-2: #199fda;
+$bc-western-digital: #005195;
+$bc-western-digital-2: #028948;
+$bc-western-digital-3: #ffd400;
+$bc-western-digital-4: #0067b3;
+$bc-western-digital-5: #9d0a0e;
+$bc-western-digital-6: #003369;
+$bc-whatsapp: #075e54;
+$bc-whatsapp-2: #128c7e;
+$bc-whatsapp-3: #25d366;
+$bc-whatsapp-4: #dcf8c6;
+$bc-whatsapp-5: #34b7f1;
+$bc-whatsapp-6: #ece5dd;
+$bc-whoosnap-designer: #2fa5d6;
+$bc-whoosnap-designer-2: #b52f2c;
+$bc-wikipedia: #000000;
+$bc-wikipedia-2: #636466;
+$bc-wikipedia-3: #939598;
+$bc-wikipedia-4: #c7c8ca;
+$bc-windows: #0078d7;
+$bc-windows-2: #002050;
+$bc-windows-3: #ffb900;
+$bc-windows-4: #d83b01;
+$bc-windows-5: #e81123;
+$bc-windows-6: #b4009e;
+$bc-windows-7: #5c2d91;
+$bc-windows-8: #008272;
+$bc-windows-9: #107c10;
+$bc-windows-phone: #68217a;
+$bc-wolfram-alpha: #f68d1e;
+$bc-woocommerce: #96588a;
+$bc-woocommerce-2: #3c3c3c;
+$bc-woocommerce-3: #71b02f;
+$bc-wooga: #5b009c;
+$bc-wordpress: #21759b;
+$bc-wordpress-2: #d54e21;
+$bc-wordpress-3: #464646;
+$bc-wordpress-com: #0087be;
+$bc-wordpress-com-2: #78dcfa;
+$bc-wordpress-com-3: #00aadc;
+$bc-wordpress-com-4: #005082;
+$bc-wordpress-com-5: #87a6bc;
+$bc-wordpress-com-6: #f3f6f8;
+$bc-wordpress-com-7: #e9eff3;
+$bc-wordpress-com-8: #e9eff3;
+$bc-wordpress-com-9: #a8bece;
+$bc-wordpress-com-10: #668eaa;
+$bc-wordpress-com-11: #4f748e;
+$bc-wordpress-com-12: #3d596d;
+$bc-wordpress-com-13: #2e4453;
+$bc-wordpress-com-14: #d54e21;
+$bc-wordpress-com-15: #f0821e;
+$bc-wordpress-com-16: #4ab866;
+$bc-wordpress-com-17: #f0b849;
+$bc-wordpress-com-18: #d94f4f;
+$bc-world-organisation-of-the-scout-movement-wosm: #622599;
+$bc-world-organisation-of-the-scout-movement-wosm-2: #0054a0;
+$bc-world-organisation-of-the-scout-movement-wosm-3: #aaba0a;
+$bc-world-organisation-of-the-scout-movement-wosm-4: #dd7500;
+$bc-world-organisation-of-the-scout-movement-wosm-5: #e23d28;
+$bc-world-organisation-of-the-scout-movement-wosm-6: #3d8e33;
+$bc-world-organisation-of-the-scout-movement-wosm-7: #3399ff;
+$bc-world-organisation-of-the-scout-movement-wosm-8: #ff3399;
+$bc-world-organisation-of-the-scout-movement-wosm-9: #fcd116;
+$bc-world-organisation-of-the-scout-movement-wosm-10: #999999;
+$bc-worldline: #0066a1;
+$bc-wufoo: #e66760;
+$bc-wufoo-2: #8c88cd;
+$bc-wufoo-3: #69c5e4;
+$bc-wufoo-4: #ffdf8b;
+$bc-wufoo-5: #61e064;
+$bc-wunderlist: #2b96f1;
+$bc-wwe: #d7182a;
+$bc-xbox: #52b043;
+$bc-xing: #026466;
+$bc-xing-2: #cfdc00;
+$bc-xy-gaming: #3299cc;
+$bc-xy-gaming-2: #333333;
+$bc-yahoo: #410093;
+$bc-yandex: #ffcc00;
+$bc-yellow-pages: #ffd400;
+$bc-yellow-pages-2: #000000;
+$bc-yelp: #af0606;
+$bc-yii-framework: #d8582b;
+$bc-yii-framework-2: #16a314;
+$bc-yii-framework-3: #3b6fba;
+$bc-yo: #9b59b6;
+$bc-yo-2: #e74c3c;
+$bc-yo-3: #8e44ad;
+$bc-yo-4: #2980b9;
+$bc-yo-5: #f1c40f;
+$bc-yo-6: #16a085;
+$bc-yo-7: #34495e;
+$bc-yo-8: #3498db;
+$bc-yo-9: #2ecc71;
+$bc-yo-10: #1abc9c;
+$bc-youtube: #ff0000;
+$bc-youtube-2: #282828;
+$bc-zalongo: #5498dc;
+$bc-zapier: #ff4a00;
+$bc-zapier-2: #fd7622;
+$bc-zapier-3: #ffc43e;
+$bc-zapier-4: #5f6c72;
+$bc-zapier-5: #499df3;
+$bc-zapier-6: #13d0ab;
+$bc-zendesk: #00363d;
+$bc-zendesk-2: #f79a3e;
+$bc-zendesk-3: #eb6651;
+$bc-zendesk-4: #30aabc;
+$bc-zendesk-5: #eb4962;
+$bc-zendesk-6: #37b8af;
+$bc-zendesk-7: #78a300;
+$bc-zendesk-8: #f0ca28;
+$bc-zerply: #9dbc7a;
+$bc-zillow: #1277e1;
+$bc-zomato: #cb202d;
+$bc-zomato-2: #2d2d2d;
+$bc-zomato-3: #f4f4f2;
+$bc-zootool: #5e8b1d;
+$bc-zopim: #ff9d3b;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/breakpoints.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/breakpoints.scss
new file mode 100644
index 000000000..dfc520fe6
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/breakpoints.scss
@@ -0,0 +1,26 @@
+// ---------------------------------------------------------
+// @Breakpoints
+// ---------------------------------------------------------
+
+$breakpoint-xl : 1440px;
+$breakpoint-lg : 1200px;
+$breakpoint-md : 992px;
+$breakpoint-sm : 768px;
+$breakpoint-xs : 0;
+
+$breakpoints: (
+ "xl\\+" "screen and (min-width: #{$breakpoint-xl})",
+ "lg\\+" "screen and (min-width: #{$breakpoint-lg})",
+ "md\\+" "screen and (min-width: #{$breakpoint-md})",
+ "sm\\+" "screen and (min-width: #{$breakpoint-sm})",
+ "xs\\+" "screen and (min-width: #{$breakpoint-xs})",
+
+ "xl-" "screen and (max-width: #{$breakpoint-xl - 1px})",
+ "lg-" "screen and (max-width: #{$breakpoint-lg - 1px})",
+ "md-" "screen and (max-width: #{$breakpoint-md - 1px})",
+ "sm-" "screen and (max-width: #{$breakpoint-sm - 1px})",
+
+ "lg" "screen and (min-width: #{$breakpoint-lg - 1px}) and (max-width: #{$breakpoint-xl - 1px})",
+ "md" "screen and (min-width: #{$breakpoint-md - 1px}) and (max-width: #{$breakpoint-lg - 1px})",
+ "sm" "screen and (min-width: #{$breakpoint-sm - 1px}) and (max-width: #{$breakpoint-md - 1px})",
+);
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/fonts.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/fonts.scss
new file mode 100644
index 000000000..687b23f4b
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/fonts.scss
@@ -0,0 +1,4 @@
+$font-primary:
+ Roboto, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
+$font-secondary: $font-primary;
+$font-size-base: 0.875rem;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/index.scss
new file mode 100644
index 000000000..3185ef002
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/index.scss
@@ -0,0 +1,6 @@
+@import 'breakpoints';
+@import 'fonts';
+@import 'brandColors';
+@import 'materialColors';
+@import 'baseColors';
+@import 'borders';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/materialColors.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/materialColors.scss
new file mode 100644
index 000000000..703cbf219
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/settings/materialColors.scss
@@ -0,0 +1,550 @@
+$md-red-50 : #ffebee;
+$md-red-100 : #ffcdd2;
+$md-red-200 : #ef9a9a;
+$md-red-300 : #e57373;
+$md-red-400 : #ef5350;
+$md-red-500 : #f44336;
+$md-red-600 : #e53935;
+$md-red-700 : #d32f2f;
+$md-red-800 : #c62828;
+$md-red-900 : #b71c1c;
+$md-red-a100 : #ff8a80;
+$md-red-a200 : #ff5252;
+$md-red-a400 : #ff1744;
+$md-red-a700 : #d50000;
+
+$md-pink-50 : #fce4ec;
+$md-pink-100 : #f8bbd0;
+$md-pink-200 : #f48fb1;
+$md-pink-300 : #f06292;
+$md-pink-400 : #ec407a;
+$md-pink-500 : #e91e63;
+$md-pink-600 : #d81b60;
+$md-pink-700 : #c2185b;
+$md-pink-800 : #ad1457;
+$md-pink-900 : #880e4f;
+$md-pink-a100 : #ff80ab;
+$md-pink-a200 : #ff4081;
+$md-pink-a400 : #f50057;
+$md-pink-a700 : #c51162;
+
+$md-purple-50 : #f3e5f5;
+$md-purple-100 : #e1bee7;
+$md-purple-200 : #ce93d8;
+$md-purple-300 : #ba68c8;
+$md-purple-400 : #ab47bc;
+$md-purple-500 : #9c27b0;
+$md-purple-600 : #8e24aa;
+$md-purple-700 : #7b1fa2;
+$md-purple-800 : #6a1b9a;
+$md-purple-900 : #4a148c;
+$md-purple-a100 : #ea80fc;
+$md-purple-a200 : #e040fb;
+$md-purple-a400 : #d500f9;
+$md-purple-a700 : #aa00ff;
+
+$md-deep-purple-50 : #ede7f6;
+$md-deep-purple-100 : #d1c4e9;
+$md-deep-purple-200 : #b39ddb;
+$md-deep-purple-300 : #9575cd;
+$md-deep-purple-400 : #7e57c2;
+$md-deep-purple-500 : #673ab7;
+$md-deep-purple-600 : #5e35b1;
+$md-deep-purple-700 : #512da8;
+$md-deep-purple-800 : #4527a0;
+$md-deep-purple-900 : #311b92;
+$md-deep-purple-a100 : #b388ff;
+$md-deep-purple-a200 : #7c4dff;
+$md-deep-purple-a400 : #651fff;
+$md-deep-purple-a700 : #6200ea;
+
+$md-indigo-50 : #e8eaf6;
+$md-indigo-100 : #c5cae9;
+$md-indigo-200 : #9fa8da;
+$md-indigo-300 : #7986cb;
+$md-indigo-400 : #5c6bc0;
+$md-indigo-500 : #3f51b5;
+$md-indigo-600 : #3949ab;
+$md-indigo-700 : #303f9f;
+$md-indigo-800 : #283593;
+$md-indigo-900 : #1a237e;
+$md-indigo-a100 : #8c9eff;
+$md-indigo-a200 : #536dfe;
+$md-indigo-a400 : #3d5afe;
+$md-indigo-a700 : #304ffe;
+
+$md-blue-50 : #e3f2fd;
+$md-blue-100 : #bbdefb;
+$md-blue-200 : #90caf9;
+$md-blue-300 : #64b5f6;
+$md-blue-400 : #42a5f5;
+$md-blue-500 : #2196f3;
+$md-blue-600 : #1e88e5;
+$md-blue-700 : #1976d2;
+$md-blue-800 : #1565c0;
+$md-blue-900 : #0d47a1;
+$md-blue-a100 : #82b1ff;
+$md-blue-a200 : #448aff;
+$md-blue-a400 : #2979ff;
+$md-blue-a700 : #2962ff;
+
+$md-light-blue-50 : #e1f5fe;
+$md-light-blue-100 : #b3e5fc;
+$md-light-blue-200 : #81d4fa;
+$md-light-blue-300 : #4fc3f7;
+$md-light-blue-400 : #29b6f6;
+$md-light-blue-500 : #03a9f4;
+$md-light-blue-600 : #039be5;
+$md-light-blue-700 : #0288d1;
+$md-light-blue-800 : #0277bd;
+$md-light-blue-900 : #01579b;
+$md-light-blue-a100 : #80d8ff;
+$md-light-blue-a200 : #40c4ff;
+$md-light-blue-a400 : #00b0ff;
+$md-light-blue-a700 : #0091ea;
+
+$md-cyan-50 : #e0f7fa;
+$md-cyan-100 : #b2ebf2;
+$md-cyan-200 : #80deea;
+$md-cyan-300 : #4dd0e1;
+$md-cyan-400 : #26c6da;
+$md-cyan-500 : #00bcd4;
+$md-cyan-600 : #00acc1;
+$md-cyan-700 : #0097a7;
+$md-cyan-800 : #00838f;
+$md-cyan-900 : #006064;
+$md-cyan-a100 : #84ffff;
+$md-cyan-a200 : #18ffff;
+$md-cyan-a400 : #00e5ff;
+$md-cyan-a700 : #00b8d4;
+
+$md-teal-50 : #e0f2f1;
+$md-teal-100 : #b2dfdb;
+$md-teal-200 : #80cbc4;
+$md-teal-300 : #4db6ac;
+$md-teal-400 : #26a69a;
+$md-teal-500 : #009688;
+$md-teal-600 : #00897b;
+$md-teal-700 : #00796b;
+$md-teal-800 : #00695c;
+$md-teal-900 : #004d40;
+$md-teal-a100 : #a7ffeb;
+$md-teal-a200 : #64ffda;
+$md-teal-a400 : #1de9b6;
+$md-teal-a700 : #00bfa5;
+
+$md-green-50 : #e8f5e9;
+$md-green-100 : #c8e6c9;
+$md-green-200 : #a5d6a7;
+$md-green-300 : #81c784;
+$md-green-400 : #66bb6a;
+$md-green-500 : #4caf50;
+$md-green-600 : #43a047;
+$md-green-700 : #388e3c;
+$md-green-800 : #2e7d32;
+$md-green-900 : #1b5e20;
+$md-green-a100 : #b9f6ca;
+$md-green-a200 : #69f0ae;
+$md-green-a400 : #00e676;
+$md-green-a700 : #00c853;
+
+$md-light-green-50 : #f1f8e9;
+$md-light-green-100 : #dcedc8;
+$md-light-green-200 : #c5e1a5;
+$md-light-green-300 : #aed581;
+$md-light-green-400 : #9ccc65;
+$md-light-green-500 : #8bc34a;
+$md-light-green-600 : #7cb342;
+$md-light-green-700 : #689f38;
+$md-light-green-800 : #558b2f;
+$md-light-green-900 : #33691e;
+$md-light-green-a100 : #ccff90;
+$md-light-green-a200 : #b2ff59;
+$md-light-green-a400 : #76ff03;
+$md-light-green-a700 : #64dd17;
+
+$md-lime-50 : #f9fbe7;
+$md-lime-100 : #f0f4c3;
+$md-lime-200 : #e6ee9c;
+$md-lime-300 : #dce775;
+$md-lime-400 : #d4e157;
+$md-lime-500 : #cddc39;
+$md-lime-600 : #c0ca33;
+$md-lime-700 : #afb42b;
+$md-lime-800 : #9e9d24;
+$md-lime-900 : #827717;
+$md-lime-a100 : #f4ff81;
+$md-lime-a200 : #eeff41;
+$md-lime-a400 : #c6ff00;
+$md-lime-a700 : #aeea00;
+
+$md-yellow-50 : #fffde7;
+$md-yellow-100 : #fff9c4;
+$md-yellow-200 : #fff59d;
+$md-yellow-300 : #fff176;
+$md-yellow-400 : #ffee58;
+$md-yellow-500 : #ffeb3b;
+$md-yellow-600 : #fdd835;
+$md-yellow-700 : #fbc02d;
+$md-yellow-800 : #f9a825;
+$md-yellow-900 : #f57f17;
+$md-yellow-a100 : #ffff8d;
+$md-yellow-a200 : #ffff00;
+$md-yellow-a400 : #ffea00;
+$md-yellow-a700 : #ffd600;
+
+$md-amber-50 : #fff8e1;
+$md-amber-100 : #ffecb3;
+$md-amber-200 : #ffe082;
+$md-amber-300 : #ffd54f;
+$md-amber-400 : #ffca28;
+$md-amber-500 : #ffc107;
+$md-amber-600 : #ffb300;
+$md-amber-700 : #ffa000;
+$md-amber-800 : #ff8f00;
+$md-amber-900 : #ff6f00;
+$md-amber-a100 : #ffe57f;
+$md-amber-a200 : #ffd740;
+$md-amber-a400 : #ffc400;
+$md-amber-a700 : #ffab00;
+
+$md-orange-50 : #fff3e0;
+$md-orange-100 : #ffe0b2;
+$md-orange-200 : #ffcc80;
+$md-orange-300 : #ffb74d;
+$md-orange-400 : #ffa726;
+$md-orange-500 : #ff9800;
+$md-orange-600 : #fb8c00;
+$md-orange-700 : #f57c00;
+$md-orange-800 : #ef6c00;
+$md-orange-900 : #e65100;
+$md-orange-a100 : #ffd180;
+$md-orange-a200 : #ffab40;
+$md-orange-a400 : #ff9100;
+$md-orange-a700 : #ff6d00;
+
+$md-deep-orange-50 : #fbe9e7;
+$md-deep-orange-100 : #ffccbc;
+$md-deep-orange-200 : #ffab91;
+$md-deep-orange-300 : #ff8a65;
+$md-deep-orange-400 : #ff7043;
+$md-deep-orange-500 : #ff5722;
+$md-deep-orange-600 : #f4511e;
+$md-deep-orange-700 : #e64a19;
+$md-deep-orange-800 : #d84315;
+$md-deep-orange-900 : #bf360c;
+$md-deep-orange-a100 : #ff9e80;
+$md-deep-orange-a200 : #ff6e40;
+$md-deep-orange-a400 : #ff3d00;
+$md-deep-orange-a700 : #dd2c00;
+
+$md-brown-50 : #efebe9;
+$md-brown-100 : #d7ccc8;
+$md-brown-200 : #bcaaa4;
+$md-brown-300 : #a1887f;
+$md-brown-400 : #8d6e63;
+$md-brown-500 : #795548;
+$md-brown-600 : #6d4c41;
+$md-brown-700 : #5d4037;
+$md-brown-800 : #4e342e;
+$md-brown-900 : #3e2723;
+
+$md-grey-50 : #fafafa;
+$md-grey-100 : #f5f5f5;
+$md-grey-200 : #eeeeee;
+$md-grey-300 : #e0e0e0;
+$md-grey-400 : #bdbdbd;
+$md-grey-500 : #9e9e9e;
+$md-grey-600 : #757575;
+$md-grey-700 : #616161;
+$md-grey-800 : #424242;
+$md-grey-900 : #212121;
+
+$md-blue-grey-50 : #eceff1;
+$md-blue-grey-100 : #cfd8dc;
+$md-blue-grey-200 : #b0bec5;
+$md-blue-grey-300 : #90a4ae;
+$md-blue-grey-400 : #78909c;
+$md-blue-grey-500 : #607d8b;
+$md-blue-grey-600 : #546e7a;
+$md-blue-grey-700 : #455a64;
+$md-blue-grey-800 : #37474f;
+$md-blue-grey-900 : #263238;
+
+$md-dark-text-primary : rgba(0, 0, 0, 0.87);
+$md-dark-text-secondary : rgba(0, 0, 0, 0.54);
+$md-dark-text-disabled : rgba(0, 0, 0, 0.38);
+$md-dark-text-dividers : rgba(0, 0, 0, 0.12);
+
+$md-light-text-primary : rgba(255, 255, 255, 1);
+$md-light-text-secondary : rgba(255, 255, 255, 0.7);
+$md-light-text-disabled : rgba(255, 255, 255, 0.5);
+$md-light-text-dividers : rgba(255, 255, 255, 0.12);
+
+$md-dark-icons-active : rgba(0, 0, 0, 0.54);
+$md-dark-icons-inactive : rgba(0, 0, 0, 0.38);
+
+$md-light-icons-active : rgba(255, 255, 255, 1);
+$md-light-icons-inactive : rgba(255, 255, 255, 0.5);
+
+$md-white : #ffffff;
+
+$md-black : #000000;
+
+$md-colors: (
+ white : #ffffff,
+ red-50 : #ffebee,
+ red-100 : #ffcdd2,
+ red-200 : #ef9a9a,
+ red-300 : #e57373,
+ red-400 : #ef5350,
+ red-500 : #f44336,
+ red-600 : #e53935,
+ red-700 : #d32f2f,
+ red-800 : #c62828,
+ red-900 : #b71c1c,
+ red-a100 : #ff8a80,
+ red-a200 : #ff5252,
+ red-a400 : #ff1744,
+ red-a700 : #d50000,
+ pink-50 : #fce4ec,
+ pink-100 : #f8bbd0,
+ pink-200 : #f48fb1,
+ pink-300 : #f06292,
+ pink-400 : #ec407a,
+ pink-500 : #e91e63,
+ pink-600 : #d81b60,
+ pink-700 : #c2185b,
+ pink-800 : #ad1457,
+ pink-900 : #880e4f,
+ pink-a100 : #ff80ab,
+ pink-a200 : #ff4081,
+ pink-a400 : #f50057,
+ pink-a700 : #c51162,
+ purple-50 : #f3e5f5,
+ purple-100 : #e1bee7,
+ purple-200 : #ce93d8,
+ purple-300 : #ba68c8,
+ purple-400 : #ab47bc,
+ purple-500 : #9c27b0,
+ purple-600 : #8e24aa,
+ purple-700 : #7b1fa2,
+ purple-800 : #6a1b9a,
+ purple-900 : #4a148c,
+ purple-a100 : #ea80fc,
+ purple-a200 : #e040fb,
+ purple-a400 : #d500f9,
+ purple-a700 : #aa00ff,
+ deep-purple-50 : #ede7f6,
+ deep-purple-100 : #d1c4e9,
+ deep-purple-200 : #b39ddb,
+ deep-purple-300 : #9575cd,
+ deep-purple-400 : #7e57c2,
+ deep-purple-500 : #673ab7,
+ deep-purple-600 : #5e35b1,
+ deep-purple-700 : #512da8,
+ deep-purple-800 : #4527a0,
+ deep-purple-900 : #311b92,
+ deep-purple-a100 : #b388ff,
+ deep-purple-a200 : #7c4dff,
+ deep-purple-a400 : #651fff,
+ deep-purple-a700 : #6200ea,
+ indigo-50 : #e8eaf6,
+ indigo-100 : #c5cae9,
+ indigo-200 : #9fa8da,
+ indigo-300 : #7986cb,
+ indigo-400 : #5c6bc0,
+ indigo-500 : #3f51b5,
+ indigo-600 : #3949ab,
+ indigo-700 : #303f9f,
+ indigo-800 : #283593,
+ indigo-900 : #1a237e,
+ indigo-a100 : #8c9eff,
+ indigo-a200 : #536dfe,
+ indigo-a400 : #3d5afe,
+ indigo-a700 : #304ffe,
+ blue-50 : #e3f2fd,
+ blue-100 : #bbdefb,
+ blue-200 : #90caf9,
+ blue-300 : #64b5f6,
+ blue-400 : #42a5f5,
+ blue-500 : #2196f3,
+ blue-600 : #1e88e5,
+ blue-700 : #1976d2,
+ blue-800 : #1565c0,
+ blue-900 : #0d47a1,
+ blue-a100 : #82b1ff,
+ blue-a200 : #448aff,
+ blue-a400 : #2979ff,
+ blue-a700 : #2962ff,
+ light-blue-50 : #e1f5fe,
+ light-blue-100 : #b3e5fc,
+ light-blue-200 : #81d4fa,
+ light-blue-300 : #4fc3f7,
+ light-blue-400 : #29b6f6,
+ light-blue-500 : #03a9f4,
+ light-blue-600 : #039be5,
+ light-blue-700 : #0288d1,
+ light-blue-800 : #0277bd,
+ light-blue-900 : #01579b,
+ light-blue-a100 : #80d8ff,
+ light-blue-a200 : #40c4ff,
+ light-blue-a400 : #00b0ff,
+ light-blue-a700 : #0091ea,
+ cyan-50 : #e0f7fa,
+ cyan-100 : #b2ebf2,
+ cyan-200 : #80deea,
+ cyan-300 : #4dd0e1,
+ cyan-400 : #26c6da,
+ cyan-500 : #00bcd4,
+ cyan-600 : #00acc1,
+ cyan-700 : #0097a7,
+ cyan-800 : #00838f,
+ cyan-900 : #006064,
+ cyan-a100 : #84ffff,
+ cyan-a200 : #18ffff,
+ cyan-a400 : #00e5ff,
+ cyan-a700 : #00b8d4,
+ teal-50 : #e0f2f1,
+ teal-100 : #b2dfdb,
+ teal-200 : #80cbc4,
+ teal-300 : #4db6ac,
+ teal-400 : #26a69a,
+ teal-500 : #009688,
+ teal-600 : #00897b,
+ teal-700 : #00796b,
+ teal-800 : #00695c,
+ teal-900 : #004d40,
+ teal-a100 : #a7ffeb,
+ teal-a200 : #64ffda,
+ teal-a400 : #1de9b6,
+ teal-a700 : #00bfa5,
+ green-50 : #e8f5e9,
+ green-100 : #c8e6c9,
+ green-200 : #a5d6a7,
+ green-300 : #81c784,
+ green-400 : #66bb6a,
+ green-500 : #4caf50,
+ green-600 : #43a047,
+ green-700 : #388e3c,
+ green-800 : #2e7d32,
+ green-900 : #1b5e20,
+ green-a100 : #b9f6ca,
+ green-a200 : #69f0ae,
+ green-a400 : #00e676,
+ green-a700 : #00c853,
+ light-green-50 : #f1f8e9,
+ light-green-100 : #dcedc8,
+ light-green-200 : #c5e1a5,
+ light-green-300 : #aed581,
+ light-green-400 : #9ccc65,
+ light-green-500 : #8bc34a,
+ light-green-600 : #7cb342,
+ light-green-700 : #689f38,
+ light-green-800 : #558b2f,
+ light-green-900 : #33691e,
+ light-green-a100 : #ccff90,
+ light-green-a200 : #b2ff59,
+ light-green-a400 : #76ff03,
+ light-green-a700 : #64dd17,
+ lime-50 : #f9fbe7,
+ lime-100 : #f0f4c3,
+ lime-200 : #e6ee9c,
+ lime-300 : #dce775,
+ lime-400 : #d4e157,
+ lime-500 : #cddc39,
+ lime-600 : #c0ca33,
+ lime-700 : #afb42b,
+ lime-800 : #9e9d24,
+ lime-900 : #827717,
+ lime-a100 : #f4ff81,
+ lime-a200 : #eeff41,
+ lime-a400 : #c6ff00,
+ lime-a700 : #aeea00,
+ yellow-50 : #fffde7,
+ yellow-100 : #fff9c4,
+ yellow-200 : #fff59d,
+ yellow-300 : #fff176,
+ yellow-400 : #ffee58,
+ yellow-500 : #ffeb3b,
+ yellow-600 : #fdd835,
+ yellow-700 : #fbc02d,
+ yellow-800 : #f9a825,
+ yellow-900 : #f57f17,
+ yellow-a100 : #ffff8d,
+ yellow-a200 : #ffff00,
+ yellow-a400 : #ffea00,
+ yellow-a700 : #ffd600,
+ amber-50 : #fff8e1,
+ amber-100 : #ffecb3,
+ amber-200 : #ffe082,
+ amber-300 : #ffd54f,
+ amber-400 : #ffca28,
+ amber-500 : #ffc107,
+ amber-600 : #ffb300,
+ amber-700 : #ffa000,
+ amber-800 : #ff8f00,
+ amber-900 : #ff6f00,
+ amber-a100 : #ffe57f,
+ amber-a200 : #ffd740,
+ amber-a400 : #ffc400,
+ amber-a700 : #ffab00,
+ orange-50 : #fff3e0,
+ orange-100 : #ffe0b2,
+ orange-200 : #ffcc80,
+ orange-300 : #ffb74d,
+ orange-400 : #ffa726,
+ orange-500 : #ff9800,
+ orange-600 : #fb8c00,
+ orange-700 : #f57c00,
+ orange-800 : #ef6c00,
+ orange-900 : #e65100,
+ orange-a100 : #ffd180,
+ orange-a200 : #ffab40,
+ orange-a400 : #ff9100,
+ orange-a700 : #ff6d00,
+ deep-orange-50 : #fbe9e7,
+ deep-orange-100 : #ffccbc,
+ deep-orange-200 : #ffab91,
+ deep-orange-300 : #ff8a65,
+ deep-orange-400 : #ff7043,
+ deep-orange-500 : #ff5722,
+ deep-orange-600 : #f4511e,
+ deep-orange-700 : #e64a19,
+ deep-orange-800 : #d84315,
+ deep-orange-900 : #bf360c,
+ deep-orange-a100 : #ff9e80,
+ deep-orange-a200 : #ff6e40,
+ deep-orange-a400 : #ff3d00,
+ deep-orange-a700 : #dd2c00,
+ brown-50 : #efebe9,
+ brown-100 : #d7ccc8,
+ brown-200 : #bcaaa4,
+ brown-300 : #a1887f,
+ brown-400 : #8d6e63,
+ brown-500 : #795548,
+ brown-600 : #6d4c41,
+ brown-700 : #5d4037,
+ brown-800 : #4e342e,
+ brown-900 : #3e2723,
+ grey-50 : #fafafa,
+ grey-100 : #f5f5f5,
+ grey-200 : #eeeeee,
+ grey-300 : #e0e0e0,
+ grey-400 : #bdbdbd,
+ grey-500 : #9e9e9e,
+ grey-600 : #757575,
+ grey-700 : #616161,
+ grey-800 : #424242,
+ grey-900 : #212121,
+ blue-grey-50 : #eceff1,
+ blue-grey-100 : #cfd8dc,
+ blue-grey-200 : #b0bec5,
+ blue-grey-300 : #90a4ae,
+ blue-grey-400 : #78909c,
+ blue-grey-500 : #607d8b,
+ blue-grey-600 : #546e7a,
+ blue-grey-700 : #455a64,
+ blue-grey-800 : #37474f,
+ blue-grey-900 : #263238,
+) !global;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/index.scss
new file mode 100644
index 000000000..f453d7ac8
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/index.scss
@@ -0,0 +1 @@
+@import 'mixins/index';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/clearfix.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/clearfix.scss
new file mode 100644
index 000000000..dfc93b706
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/clearfix.scss
@@ -0,0 +1,15 @@
+//----------------------------------------------------------
+// @Clearfix
+//----------------------------------------------------------
+
+@mixin clearfix {
+ &::before,
+ &::after {
+ content: ' ';
+ display: table;
+ }
+
+ &::after {
+ clear: both;
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/index.scss
new file mode 100644
index 000000000..d7308a49c
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/index.scss
@@ -0,0 +1,3 @@
+@import 'placeholder';
+@import 'clearfix';
+@import 'mediaQueriesRanges';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/mediaQueriesRanges.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/mediaQueriesRanges.scss
new file mode 100644
index 000000000..1b0f0cdbe
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/mediaQueriesRanges.scss
@@ -0,0 +1,58 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @General Media Query
+// + @All Above Media Query
+// + @All Under Media Query
+// + @Between Two Devices Media Query
+
+// ---------------------------------------------------------
+// @General Media Query Mixin
+// ---------------------------------------------------------
+
+// Mixin used for custom rules that don't follow
+// any of the following premade media queries.
+
+@mixin mq($condition) {
+ @media #{$condition} {
+ @content;
+ }
+}
+
+// ---------------------------------------------------------
+// @All Above Media Query Mixin
+// ---------------------------------------------------------
+
+// Mixin used to match certain breakpoint
+// and all devices above it.
+
+@mixin from($breakpoint) {
+ @media screen and (min-width: $breakpoint){
+ @content;
+ }
+}
+
+// ---------------------------------------------------------
+// @All Under Media Query Mixin
+// ---------------------------------------------------------
+
+// Mixin used to match all devices under certain breakpoint.
+
+@mixin to($breakpoint) {
+ @media screen and (max-width: $breakpoint - 1px) {
+ @content;
+ }
+}
+
+// ---------------------------------------------------------
+// @Between Two Devices Media Query Mixin
+// ---------------------------------------------------------
+
+// Mixin used to match the devices between 2 breakpoints.
+
+@mixin between($start, $end){
+ @media screen and (min-width: $start) and (max-width: $end - 1px) {
+ @content;
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/placeholder.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/placeholder.scss
new file mode 100644
index 000000000..1de45f77d
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/tools/mixins/placeholder.scss
@@ -0,0 +1,10 @@
+//----------------------------------------------------------
+// @Placeholder
+//----------------------------------------------------------
+
+@mixin placeholder {
+ &::-webkit-input-placeholder { @content; }
+ &:-moz-placeholder { @content; }
+ &::-moz-placeholder { @content; }
+ &:-ms-input-placeholder { @content; }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/colors.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/colors.scss
new file mode 100644
index 000000000..06c851345
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/colors.scss
@@ -0,0 +1,30 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Material Color
+// + @Grey Colors
+
+// ---------------------------------------------------------
+// @Material Color
+// ---------------------------------------------------------
+
+@each $item, $color in $md-colors {
+ .c-#{$item}, .cH-#{$item}:hover { color: $color !important; }
+ .bgc-#{$item}, .bgcH-#{$item}:hover { background-color: $color !important; }
+ .bdc-#{$item}, .bdcH-#{$item}:hover { border-color: $color !important; }
+ .fill-#{$item}, .fillH-#{$item}:hover { fill: $color !important; }
+ .str-#{$item}, .strH-#{$item}:hover { stroke: $color !important; }
+}
+
+// ---------------------------------------------------------
+// @Grey Colors
+// ---------------------------------------------------------
+
+@each $item, $color in $grey-colors-alt {
+ .c-#{$item}, .cH-#{$item}:hover { color: $color !important; }
+ .bgc-#{$item}, .bgcH-#{$item}:hover { background-color: $color !important; }
+ .bdc-#{$item}, .bdcH-#{$item}:hover { border-color: $color !important; }
+ .fill-#{$item}, .fillH-#{$item}:hover { fill: $color !important; }
+ .str-#{$item}, .strH-#{$item}:hover { stroke: $color !important; }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/index.scss
new file mode 100644
index 000000000..c1fbc6e6d
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/index.scss
@@ -0,0 +1,2 @@
+@import 'layout/index';
+@import 'colors';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/border.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/border.scss
new file mode 100644
index 000000000..ed75f8c7a
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/border.scss
@@ -0,0 +1,75 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Quick Border Helpers
+// + @Border Width
+// + @Border Radius
+// + @Border Style
+
+// ---------------------------------------------------------
+// @Quick Border Helpers
+// ---------------------------------------------------------
+
+.bd { border: #{$border-width} solid #{$border-color} !important; }
+.bdT { border-top: #{$border-width} solid #{$border-color} !important; }
+.bdR { border-right: #{$border-width} solid #{$border-color} !important; }
+.bdB { border-bottom: #{$border-width} solid #{$border-color} !important; }
+.bdL { border-left: #{$border-width} solid #{$border-color} !important; }
+
+// ---------------------------------------------------------
+// @Border Width
+// ---------------------------------------------------------
+
+@for $i from 0 through 5 {
+ .bdw-#{$i} { border-width: #{$i}px !important; }
+ .bdwT-#{$i} { border-top-width: #{$i}px !important; }
+ .bdwR-#{$i} { border-right-width: #{$i}px !important; }
+ .bdwB-#{$i} { border-bottom-width: #{$i}px !important; }
+ .bdwL-#{$i} { border-left-width: #{$i}px !important; }
+}
+
+// ---------------------------------------------------------
+// @Border Radius
+// ---------------------------------------------------------
+
+@for $i from 0 to 5 {
+ .bdrs-#{$i} { border-radius: #{$i}px !important; }
+
+ .bdrsT-#{$i} {
+ border-top-left-radius: #{$i}px !important;
+ border-top-right-radius: #{$i}px !important;
+ }
+
+ .bdrsR-#{$i} {
+ border-top-right-radius: #{$i}px !important;
+ border-bottom-right-radius: #{$i}px !important;
+ }
+
+ .bdrsB-#{$i} {
+ border-bottom-left-radius: #{$i}px !important;
+ border-bottom-right-radius: #{$i}px !important;
+ }
+
+ .bdrsL-#{$i} {
+ border-top-left-radius: #{$i}px !important;
+ border-bottom-left-radius: #{$i}px !important;
+ }
+}
+
+.bdrs-50p { border-radius: 50% !important; }
+.bdrs-10em { border-radius: 10em !important; }
+
+// ---------------------------------------------------------
+// @Border Style
+// ---------------------------------------------------------
+
+.bds-n { border-style: none !important; }
+.bds-s { border-style: solid !important; }
+.bds-dt { border-style: dotted !important; }
+.bds-ds { border-style: dashed !important; }
+.bds-db { border-style: double !important; }
+.bds-g { border-style: groove !important; }
+.bds-r { border-style: ridge !important; }
+.bds-i { border-style: inset !important; }
+.bds-o { border-style: outset !important; }
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/flex.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/flex.scss
new file mode 100644
index 000000000..1eb9d8fb7
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/flex.scss
@@ -0,0 +1,218 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Flex Wrap
+// + @Flex Direction
+// + @Flex
+// + @Flex Basis
+// + @Flex Grow
+// + @Flex Shrink
+// + @Flex Order
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Display
+// ---------------------------------------------------------
+
+.d-f { display: flex; }
+.d-if { display: inline-flex; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .d-f\@#{$breakpointAlias} { display: flex; }
+ .d-if\@#{$breakpointAlias} { display: inline-flex; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex Wrap
+// ---------------------------------------------------------
+
+.fxw-w { flex-wrap: wrap; }
+.fxw-wr { flex-wrap: wrap-reverse; }
+.fxw-nw { flex-wrap: nowrap; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fxw-w\@#{$breakpointAlias} { flex-wrap: wrap; }
+ .fxw-wr\@#{$breakpointAlias} { flex-wrap: wrap-reverse; }
+ .fxw-nw\@#{$breakpointAlias} { flex-wrap: nowrap; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex Direction
+// ---------------------------------------------------------
+
+.fxd-c { flex-direction: column; }
+.fxd-cr { flex-direction: column-reverse; }
+.fxd-r { flex-direction: row; }
+.fxd-rr { flex-direction: row-reverse; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fxd-c\@#{$breakpointAlias} { flex-direction: column; }
+ .fxd-cr\@#{$breakpointAlias} { flex-direction: column-reverse; }
+ .fxd-r\@#{$breakpointAlias} { flex-direction: row; }
+ .fxd-rr\@#{$breakpointAlias} { flex-direction: row-reverse; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Align Items
+// ---------------------------------------------------------
+
+.ai-fs { align-items: flex-start; }
+.ai-fe { align-items: flex-end; }
+.ai-c { align-items: center; }
+.ai-b { align-items: baseline; }
+.ai-s { align-items: stretch; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .ai-fs\@#{$breakpointAlias} { align-items: flex-start; }
+ .ai-fe\@#{$breakpointAlias} { align-items: flex-end; }
+ .ai-c\@#{$breakpointAlias} { align-items: center; }
+ .ai-b\@#{$breakpointAlias} { align-items: baseline; }
+ .ai-s\@#{$breakpointAlias} { align-items: stretch; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Align Self
+// ---------------------------------------------------------
+
+.as-fs { align-self: flex-start; }
+.as-fe { align-self: flex-end; }
+.as-c { align-self: center; }
+.as-b { align-self: baseline; }
+.as-s { align-self: stretch; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .as-fs\@#{$breakpointAlias} { align-self: flex-start; }
+ .as-fe\@#{$breakpointAlias} { align-self: flex-end; }
+ .as-c\@#{$breakpointAlias} { align-self: center; }
+ .as-b\@#{$breakpointAlias} { align-self: baseline; }
+ .as-s\@#{$breakpointAlias} { align-self: stretch; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Align Content
+// ---------------------------------------------------------
+
+.ac-fs { align-content: flex-start; }
+.ac-fe { align-content: flex-end; }
+.ac-c { align-content: center; }
+.ac-s { align-content: stretch; }
+.ac-sb { align-content: space-between; }
+.ac-sa { align-content: space-around; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .ac-fs\@#{$breakpointAlias} { align-content: flex-start; }
+ .ac-fe\@#{$breakpointAlias} { align-content: flex-end; }
+ .ac-c\@#{$breakpointAlias} { align-content: center; }
+ .ac-s\@#{$breakpointAlias} { align-content: stretch; }
+ .ac-sb\@#{$breakpointAlias} { align-content: space-between; }
+ .ac-sa\@#{$breakpointAlias} { align-content: space-around; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Justify Content
+// ---------------------------------------------------------
+
+.jc-fs { justify-content: flex-start; }
+.jc-fe { justify-content: flex-end; }
+.jc-c { justify-content: center; }
+.jc-sb { justify-content: space-between; }
+.jc-sa { justify-content: space-around; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .jc-fs\@#{$breakpointAlias} { justify-content: flex-start; }
+ .jc-fe\@#{$breakpointAlias} { justify-content: flex-end; }
+ .jc-c\@#{$breakpointAlias} { justify-content: center; }
+ .jc-sb\@#{$breakpointAlias} { justify-content: space-between; }
+ .jc-sa\@#{$breakpointAlias} { justify-content: space-around; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex
+// ---------------------------------------------------------
+
+.fx-n { flex: none; }
+.fx-1 { flex: 1; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fx-n\@#{$breakpointAlias} { flex: none; }
+ .fx-1\@#{$breakpointAlias} { flex: 1; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex Basis
+// ---------------------------------------------------------
+
+.fxb-a { flex-basis: auto; }
+.fxb-0 { flex-basis: 0; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fxb-a\@#{$breakpointAlias} { flex-basis: auto; }
+ .fxb-0\@#{$breakpointAlias} { flex-basis: 0; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex Grow
+// ---------------------------------------------------------
+
+.fxg-1 { flex-grow: 1; }
+.fxg-0 { flex-grow: 0; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fxg-1\@#{$breakpointAlias} { flex-grow: 1; }
+ .fxg-0\@#{$breakpointAlias} { flex-grow: 0; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex Shrink
+// ---------------------------------------------------------
+
+.fxs-1 { flex-shrink: 1; }
+.fxs-0 { flex-shrink: 0; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fxs-1\@#{$breakpointAlias} { flex-shrink: 1; }
+ .fxs-0\@#{$breakpointAlias} { flex-shrink: 0; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Flex Order
+// ---------------------------------------------------------
+
+@for $i from 0 through 12 {
+ .ord-#{$i} { order: $i; }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .ord-#{$i}\@#{$breakpointAlias} { order: $i; }
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/index.scss
new file mode 100644
index 000000000..ab7581ca1
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/index.scss
@@ -0,0 +1,11 @@
+@import 'flex';
+@import 'layout';
+@import 'lists';
+@import 'margin';
+@import 'objects';
+@import 'padding';
+@import 'positions';
+@import 'sizes';
+@import 'typography';
+@import 'border';
+@import 'pseudo';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/layout.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/layout.scss
new file mode 100644
index 000000000..254573733
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/layout.scss
@@ -0,0 +1,135 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Display
+// + @Overflow
+// + @Float
+// + @Vertical Align
+// + @Position
+// + @Z-Index
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Display
+// ---------------------------------------------------------
+
+.d-b { display: block !important; }
+.d-ib { display: inline-block !important; }
+.d-i { display: inline !important; }
+.d-tb { display: table !important; }
+.d-tbc { display: table-cell !important; }
+.d-n { display: none !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .d-b\@#{$breakpointAlias} { display: block !important; }
+ .d-ib\@#{$breakpointAlias} { display: inline-block !important; }
+ .d-i\@#{$breakpointAlias} { display: inline !important; }
+ .d-tb\@#{$breakpointAlias} { display: table !important; }
+ .d-tbc\@#{$breakpointAlias} { display: table-cell !important; }
+ .d-n\@#{$breakpointAlias} { display: none !important; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Overflow
+// ---------------------------------------------------------
+
+.ov-h { overflow: hidden !important; }
+.ov-a { overflow: auto !important; }
+.ov-s { overflow: scroll !important; }
+
+.ovY-h { overflow-y: hidden !important; }
+.ovX-h { overflow-x: hidden !important; }
+.ovY-a { overflow-y: auto !important; }
+.ovX-a { overflow-x: auto !important; }
+.ovY-s { overflow-y: scroll !important; }
+.ovX-s { overflow-x: scroll !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .ov-h\@#{$breakpointAlias} { overflow: hidden !important; }
+ .ov-a\@#{$breakpointAlias} { overflow: auto !important; }
+ .ov-s\@#{$breakpointAlias} { overflow: scroll !important; }
+
+ .ovY-h\@#{$breakpointAlias} { overflow-y: hidden !important; }
+ .ovX-h\@#{$breakpointAlias} { overflow-x: hidden !important; }
+ .ovY-a\@#{$breakpointAlias} { overflow-y: auto !important; }
+ .ovX-a\@#{$breakpointAlias} { overflow-x: auto !important; }
+ .ovY-s\@#{$breakpointAlias} { overflow-y: scroll !important; }
+ .ovX-s\@#{$breakpointAlias} { overflow-x: scroll !important; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Float
+// ---------------------------------------------------------
+
+.fl-l { float: left !important; }
+.fl-r { float: right !important; }
+.fl-n { float: none !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .fl-l\@#{$breakpointAlias} { float: left !important; }
+ .fl-r\@#{$breakpointAlias} { float: right !important; }
+ .fl-n\@#{$breakpointAlias} { float: none !important; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Vertical Align
+// ---------------------------------------------------------
+
+.va-t { vertical-align: top !important; }
+.va-m { vertical-align: middle !important; }
+.va-b { vertical-align: bottom !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .va-t\@#{$breakpointAlias} { vertical-align: top !important; }
+ .va-m\@#{$breakpointAlias} { vertical-align: middle !important; }
+ .va-b\@#{$breakpointAlias} { vertical-align: bottom !important; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Position
+// ---------------------------------------------------------
+
+.pos-s { position: static !important; }
+.pos-st { position: sticky !important; }
+.pos-r { position: relative !important; }
+.pos-a { position: absolute !important; }
+.pos-f { position: fixed !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .pos-s\@#{$breakpointAlias} { position: static !important; }
+ .pos-st\@#{$breakpointAlias} { position: sticky !important; }
+ .pos-r\@#{$breakpointAlias} { position: relative !important; }
+ .pos-a\@#{$breakpointAlias} { position: absolute !important; }
+ .pos-f\@#{$breakpointAlias} { position: fixed !important; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Z-Index
+// ---------------------------------------------------------
+
+@for $i from 0 through 9 {
+ .z-#{$i} { z-index: ($i * 1000) !important; }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .z-#{$i}\@#{$breakpointAlias} { z-index: ($i * 1000) !important; }
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/lists.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/lists.scss
new file mode 100644
index 000000000..764202e49
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/lists.scss
@@ -0,0 +1,23 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @List Style Position
+// + @List Style Type
+
+// ---------------------------------------------------------
+// @List Style Position
+// ---------------------------------------------------------
+
+.lisp-i { list-style-position: inside; }
+.lisp-o { list-style-position: outside; }
+
+// ---------------------------------------------------------
+// @List Style Type
+// ---------------------------------------------------------
+
+.lis-n { list-style: none; }
+.list-c { list-style-type: circle; }
+.list-s { list-style-type: square; }
+.list-u { list-style-type: upper-roman; }
+.list-l { list-style-type: lower-alpha; }
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/margin.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/margin.scss
new file mode 100644
index 000000000..60c2aa349
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/margin.scss
@@ -0,0 +1,264 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Margin (0 > 4 Step 1)
+// + @Margin (5 > 35 Step 5)
+// + @Margin (40 > 160 Step 10)
+// + @Margin Auto
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Padding (0 > 4 Step 1)
+// ---------------------------------------------------------
+
+@for $i from 0 through 4 {
+ .m-#{$i} { margin: #{$i}px !important; }
+ .mT-#{$i} { margin-top: #{$i}px !important; }
+ .mR-#{$i} { margin-right: #{$i}px !important; }
+ .mB-#{$i} { margin-bottom: #{$i}px !important; }
+ .mL-#{$i} { margin-left: #{$i}px !important; }
+
+ .mY-#{$i} {
+ margin-top: #{$i}px !important;
+ margin-bottom: #{$i}px !important;
+ }
+
+ .mX-#{$i} {
+ margin-left: #{$i}px !important;
+ margin-right: #{$i}px !important;
+ }
+
+ .m-nv-#{$i} { margin: -#{$i}px !important; }
+ .mT-nv-#{$i} { margin-top: -#{$i}px !important; }
+ .mR-nv-#{$i} { margin-right: -#{$i}px !important; }
+ .mB-nv-#{$i} { margin-bottom:- #{$i}px !important; }
+ .mL-nv-#{$i} { margin-left: -#{$i}px !important; }
+
+ .mY-nv-#{$i} {
+ margin-top: -#{$i}px !important;
+ margin-bottom: -#{$i}px !important;
+ }
+
+ .mX-nv-#{$i} {
+ margin-left: -#{$i}px !important;
+ margin-right: -#{$i}px !important;
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .m-#{$i}\@#{$breakpointAlias} { margin: #{$i}px !important; }
+ .mT-#{$i}\@#{$breakpointAlias} { margin-top: #{$i}px !important; }
+ .mR-#{$i}\@#{$breakpointAlias} { margin-right: #{$i}px !important; }
+ .mB-#{$i}\@#{$breakpointAlias} { margin-bottom: #{$i}px !important; }
+ .mL-#{$i}\@#{$breakpointAlias} { margin-left: #{$i}px !important; }
+
+ .mY-#{$i}\@#{$breakpointAlias} {
+ margin-top: #{$i}px !important;
+ margin-bottom: #{$i}px !important;
+ }
+
+ .mX-#{$i}\@#{$breakpointAlias} {
+ margin-left: #{$i}px !important;
+ margin-right: #{$i}px !important;
+ }
+
+ .m-nv-#{$i}\@#{$breakpointAlias} { margin: -#{$i}px !important; }
+ .mT-nv-#{$i}\@#{$breakpointAlias} { margin-top: -#{$i}px !important; }
+ .mR-nv-#{$i}\@#{$breakpointAlias} { margin-right: -#{$i}px !important; }
+ .mB-nv-#{$i}\@#{$breakpointAlias} { margin-bottom: -#{$i}px !important; }
+ .mL-nv-#{$i}\@#{$breakpointAlias} { margin-left: -#{$i}px !important; }
+
+ .mY-nv-#{$i}\@#{$breakpointAlias} {
+ margin-top: -#{$i}px !important;
+ margin-bottom: -#{$i}px !important;
+ }
+
+ .mX-nv-#{$i}\@#{$breakpointAlias} {
+ margin-left: -#{$i}px !important;
+ margin-right: -#{$i}px !important;
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Padding (5 > 35 Step 5)
+// ---------------------------------------------------------
+
+@for $i from 5 through 35 {
+ @if $i % 5 == 0 {
+ .m-#{$i} { margin: #{$i}px !important; }
+ .mT-#{$i} { margin-top: #{$i}px !important; }
+ .mR-#{$i} { margin-right: #{$i}px !important; }
+ .mB-#{$i} { margin-bottom: #{$i}px !important; }
+ .mL-#{$i} { margin-left: #{$i}px !important; }
+
+ .mY-#{$i} {
+ margin-top: #{$i}px !important;
+ margin-bottom: #{$i}px !important;
+ }
+
+ .mX-#{$i} {
+ margin-left: #{$i}px !important;
+ margin-right: #{$i}px !important;
+ }
+
+ .m-nv-#{$i} { margin: -#{$i}px !important; }
+ .mT-nv-#{$i} { margin-top: -#{$i}px !important; }
+ .mR-nv-#{$i} { margin-right: -#{$i}px !important; }
+ .mB-nv-#{$i} { margin-bottom: -#{$i}px !important; }
+ .mL-nv-#{$i} { margin-left: -#{$i}px !important; }
+
+ .mY-nv-#{$i} {
+ margin-top: -#{$i}px !important;
+ margin-bottom: -#{$i}px !important;
+ }
+
+ .mX-nv-#{$i} {
+ margin-left: -#{$i}px !important;
+ margin-right: -#{$i}px !important;
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .m-#{$i}\@#{$breakpointAlias} { margin: #{$i}px !important; }
+ .mT-#{$i}\@#{$breakpointAlias} { margin-top: #{$i}px !important; }
+ .mR-#{$i}\@#{$breakpointAlias} { margin-right: #{$i}px !important; }
+ .mB-#{$i}\@#{$breakpointAlias} { margin-bottom: #{$i}px !important; }
+ .mL-#{$i}\@#{$breakpointAlias} { margin-left: #{$i}px !important; }
+
+ .mY-#{$i}\@#{$breakpointAlias} {
+ margin-top: #{$i}px !important;
+ margin-bottom: #{$i}px !important;
+ }
+
+ .mX-#{$i}\@#{$breakpointAlias} {
+ margin-left: #{$i}px !important;
+ margin-right: #{$i}px !important;
+ }
+
+ .m-nv-#{$i}\@#{$breakpointAlias} { margin: -#{$i}px !important; }
+ .mT-nv-#{$i}\@#{$breakpointAlias} { margin-top: -#{$i}px !important; }
+ .mR-nv-#{$i}\@#{$breakpointAlias} { margin-right: -#{$i}px !important; }
+ .mB-nv-#{$i}\@#{$breakpointAlias} { margin-bottom: -#{$i}px !important; }
+ .mL-nv-#{$i}\@#{$breakpointAlias} { margin-left: -#{$i}px !important; }
+
+ .mY-nv-#{$i}\@#{$breakpointAlias} {
+ margin-top: -#{$i}px !important;
+ margin-bottom: -#{$i}px !important;
+ }
+
+ .mX-nv-#{$i}\@#{$breakpointAlias} {
+ margin-left: -#{$i}px !important;
+ margin-right: -#{$i}px !important;
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Padding (40 > 160 Step 10)
+// ---------------------------------------------------------
+
+@for $i from 40 through 160 {
+ @if $i % 10 == 0 {
+
+ .m-#{$i} { margin: #{$i}px !important; }
+ .mT-#{$i} { margin-top: #{$i}px !important; }
+ .mR-#{$i} { margin-right: #{$i}px !important; }
+ .mB-#{$i} { margin-bottom: #{$i}px !important; }
+ .mL-#{$i} { margin-left: #{$i}px !important; }
+
+ .mY-#{$i} {
+ margin-top: #{$i}px !important;
+ margin-bottom: #{$i}px !important;
+ }
+
+ .mX-#{$i} {
+ margin-left: #{$i}px !important;
+ margin-right: #{$i}px !important;
+ }
+
+ .m-nv-#{$i} { margin: -#{$i}px !important; }
+ .mT-nv-#{$i} { margin-top: -#{$i}px !important; }
+ .mR-nv-#{$i} { margin-right: -#{$i}px !important; }
+ .mB-nv-#{$i} { margin-bottom: -#{$i}px !important; }
+ .mL-nv-#{$i} { margin-left: -#{$i}px !important; }
+
+ .mY-nv-#{$i} {
+ margin-top: -#{$i}px !important;
+ margin-bottom: -#{$i}px !important;
+ }
+
+ .mX-nv-#{$i} {
+ margin-left: -#{$i}px !important;
+ margin-right: -#{$i}px !important;
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .m-#{$i}\@#{$breakpointAlias} { margin: #{$i}px !important; }
+ .mT-#{$i}\@#{$breakpointAlias} { margin-top: #{$i}px !important; }
+ .mR-#{$i}\@#{$breakpointAlias} { margin-right: #{$i}px !important; }
+ .mB-#{$i}\@#{$breakpointAlias} { margin-bottom: #{$i}px !important; }
+ .mL-#{$i}\@#{$breakpointAlias} { margin-left: #{$i}px !important; }
+
+ .mY-#{$i}\@#{$breakpointAlias} {
+ margin-top: #{$i}px !important;
+ margin-bottom: #{$i}px !important;
+ }
+
+ .mX-#{$i}\@#{$breakpointAlias} {
+ margin-left: #{$i}px !important;
+ margin-right: #{$i}px !important;
+ }
+
+ .m-nv-#{$i}\@#{$breakpointAlias} { margin: -#{$i}px !important; }
+ .mT-nv-#{$i}\@#{$breakpointAlias} { margin-top: -#{$i}px !important; }
+ .mR-nv-#{$i}\@#{$breakpointAlias} { margin-right: -#{$i}px !important; }
+ .mB-nv-#{$i}\@#{$breakpointAlias} { margin-bottom: -#{$i}px !important; }
+ .mL-nv-#{$i}\@#{$breakpointAlias} { margin-left: -#{$i}px !important; }
+
+ .mY-nv-#{$i}\@#{$breakpointAlias} {
+ margin-top: -#{$i}px !important;
+ margin-bottom: -#{$i}px !important;
+ }
+
+ .mX-nv-#{$i}\@#{$breakpointAlias} {
+ margin-left: -#{$i}px !important;
+ margin-right: -#{$i}px !important;
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Padding Auto
+// ---------------------------------------------------------
+
+.m-a { margin: auto !important; }
+.mX-a { margin-left: auto !important; margin-right: auto !important; }
+.mT-a { margin-top: auto !important; }
+.mR-a { margin-right: auto !important; }
+.mB-a { margin-bottom: auto !important; }
+.mL-a { margin-left: auto !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .m-a\@#{$breakpointAlias} { margin: auto !important; }
+ .mX-a\@#{$breakpointAlias} { margin-left: auto !important; margin-right: auto !important; }
+ .mT-a\@#{$breakpointAlias} { margin-top: auto !important; }
+ .mR-a\@#{$breakpointAlias} { margin-right: auto !important; }
+ .mB-a\@#{$breakpointAlias} { margin-bottom: auto !important; }
+ .mL-a\@#{$breakpointAlias} { margin-left: auto !important; }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/objects.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/objects.scss
new file mode 100644
index 000000000..1f096dd89
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/objects.scss
@@ -0,0 +1,91 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Background Size
+// + @Background Position
+// + @Background Repeat
+// + @Object Fit
+// + @Resize
+// + @Opacity
+// + @Cursor
+// + @Visibility
+
+// ---------------------------------------------------------
+// @Background Size
+// ---------------------------------------------------------
+
+.bgsz-cv { background-size: cover; }
+.bgsz-ct { background-size: contain; }
+.bgsz-full { background-size: 100% 100%; }
+
+// ---------------------------------------------------------
+// @Background Position
+// ---------------------------------------------------------
+
+.bgpX-c { background-position-x: center; }
+.bgpX-t { background-position-x: top; }
+.bgpX-r { background-position-x: right; }
+.bgpX-l { background-position-x: left; }
+.bgpX-b { background-position-x: bottom; }
+.bgpY-c { background-position-y: center; }
+.bgpY-t { background-position-y: top; }
+.bgpY-r { background-position-y: right; }
+.bgpY-l { background-position-y: left; }
+.bgpY-b { background-position-y: bottom; }
+
+// ---------------------------------------------------------
+// @Background Repeat
+// ---------------------------------------------------------
+
+.bgr-n { background-repeat: no-repeat; }
+.bgr-y { background-repeat: repeat-y; }
+.bgr-x { background-repeat: repeat-x; }
+
+// ---------------------------------------------------------
+// @Object Fit
+// ---------------------------------------------------------
+
+.of-ct { object-fit: contain; }
+.of-cv { object-fit: cover; }
+.of-f { object-fit: fill; }
+.of-n { object-fit: none; }
+.of-sd { object-fit: scale-down; }
+
+// ---------------------------------------------------------
+// @Resize
+// ---------------------------------------------------------
+
+.rsz-v { resize: vertical; }
+.rsz-h { resize: horizontal; }
+
+// ---------------------------------------------------------
+// @Opacity
+// ---------------------------------------------------------
+
+.op-0 { opacity: 0; }
+.op-10p { opacity: 0.1; }
+.op-20p { opacity: 0.2; }
+.op-30p { opacity: 0.3; }
+.op-40p { opacity: 0.4; }
+.op-50p { opacity: 0.5; }
+.op-60p { opacity: 0.6; }
+.op-70p { opacity: 0.7; }
+.op-80p { opacity: 0.8; }
+.op-90p { opacity: 0.9; }
+.op-100p { opacity: 1; }
+
+// ---------------------------------------------------------
+// @Cursor
+// ---------------------------------------------------------
+
+.cur-na { cursor: not-allowed; }
+.cur-p { cursor: pointer; }
+.cur-a { cursor: auto; }
+
+// ---------------------------------------------------------
+// @Visibility
+// ---------------------------------------------------------
+
+.vis-v { visibility: visible; }
+.vis-h { visibility: hidden; }
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/padding.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/padding.scss
new file mode 100644
index 000000000..bbacba95d
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/padding.scss
@@ -0,0 +1,145 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Padding (0 > 4 Step 1)
+// + @Padding (5 > 35 Step 5)
+// + @Padding (40 > 160 Step 10)
+// + @Padding Auto
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Padding (0 > 4 Step 1)
+// ---------------------------------------------------------
+
+@for $i from 0 through 4 {
+ .p-#{$i} { padding: #{$i}px !important; }
+ .pT-#{$i} { padding-top: #{$i}px !important; }
+ .pR-#{$i} { padding-right: #{$i}px !important; }
+ .pB-#{$i} { padding-bottom: #{$i}px !important; }
+ .pL-#{$i} { padding-left: #{$i}px !important; }
+
+ .pY-#{$i} {
+ padding-top: #{$i}px !important;
+ padding-bottom: #{$i}px !important;
+ }
+
+ .pX-#{$i} {
+ padding-left: #{$i}px !important;
+ padding-right: #{$i}px !important;
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .p-#{$i}\@#{$breakpointAlias} { padding: #{$i}px !important; }
+ .pT-#{$i}\@#{$breakpointAlias} { padding-top: #{$i}px !important; }
+ .pR-#{$i}\@#{$breakpointAlias} { padding-right: #{$i}px !important; }
+ .pB-#{$i}\@#{$breakpointAlias} { padding-bottom: #{$i}px !important; }
+ .pL-#{$i}\@#{$breakpointAlias} { padding-left: #{$i}px !important; }
+
+ .pY-#{$i}\@#{$breakpointAlias} {
+ padding-top: #{$i}px !important;
+ padding-bottom: #{$i}px !important;
+ }
+
+ .pX-#{$i}\@#{$breakpointAlias} {
+ padding-left: #{$i}px !important;
+ padding-right: #{$i}px !important;
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Padding (5 > 35 Step 5)
+// ---------------------------------------------------------
+
+@for $i from 5 through 35 {
+ @if $i % 5 == 0 {
+ .p-#{$i} { padding: #{$i}px !important; }
+ .pT-#{$i} { padding-top: #{$i}px !important; }
+ .pR-#{$i} { padding-right: #{$i}px !important; }
+ .pB-#{$i} { padding-bottom: #{$i}px !important; }
+ .pL-#{$i} { padding-left: #{$i}px !important; }
+
+ .pY-#{$i} {
+ padding-top: #{$i}px !important;
+ padding-bottom: #{$i}px !important;
+ }
+
+ .pX-#{$i} {
+ padding-left: #{$i}px !important;
+ padding-right: #{$i}px !important;
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .p-#{$i}\@#{$breakpointAlias} { padding: #{$i}px !important; }
+ .pT-#{$i}\@#{$breakpointAlias} { padding-top: #{$i}px !important; }
+ .pR-#{$i}\@#{$breakpointAlias} { padding-right: #{$i}px !important; }
+ .pB-#{$i}\@#{$breakpointAlias} { padding-bottom: #{$i}px !important; }
+ .pL-#{$i}\@#{$breakpointAlias} { padding-left: #{$i}px !important; }
+
+ .pY-#{$i}\@#{$breakpointAlias} {
+ padding-top: #{$i}px !important;
+ padding-bottom: #{$i}px !important;
+ }
+
+ .pX-#{$i}\@#{$breakpointAlias} {
+ padding-left: #{$i}px !important;
+ padding-right: #{$i}px !important;
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Padding (40 > 160 Step 10)
+// ---------------------------------------------------------
+
+@for $i from 40 through 160 {
+ @if $i % 10 == 0 {
+ .p-#{$i} { padding: #{$i}px !important; }
+ .pT-#{$i} { padding-top: #{$i}px !important; }
+ .pR-#{$i} { padding-right: #{$i}px !important; }
+ .pB-#{$i} { padding-bottom: #{$i}px !important; }
+ .pL-#{$i} { padding-left: #{$i}px !important; }
+
+ .pY-#{$i} {
+ padding-top: #{$i}px !important;
+ padding-bottom: #{$i}px !important;
+ }
+
+ .pX-#{$i} {
+ padding-left: #{$i}px !important;
+ padding-right: #{$i}px !important;
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .p-#{$i}\@#{$breakpointAlias} { padding: #{$i}px !important; }
+ .pT-#{$i}\@#{$breakpointAlias} { padding-top: #{$i}px !important; }
+ .pR-#{$i}\@#{$breakpointAlias} { padding-right: #{$i}px !important; }
+ .pB-#{$i}\@#{$breakpointAlias} { padding-bottom: #{$i}px !important; }
+ .pL-#{$i}\@#{$breakpointAlias} { padding-left: #{$i}px !important; }
+
+ .pY-#{$i}\@#{$breakpointAlias} {
+ padding-top: #{$i}px !important;
+ padding-bottom: #{$i}px !important;
+ }
+
+ .pX-#{$i}\@#{$breakpointAlias} {
+ padding-left: #{$i}px !important;
+ padding-right: #{$i}px !important;
+ }
+ }
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/positions.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/positions.scss
new file mode 100644
index 000000000..a4c7e9732
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/positions.scss
@@ -0,0 +1,116 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Position (0 > 4 Step 1)
+// + @Position (5 > 35 Step 5)
+// + @Position (40 > 160 Step 10)
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Position (0 > 4 Step 1)
+// ---------------------------------------------------------
+
+@for $i from 0 through 4 {
+ .t-#{$i} { top: #{$i}px; }
+ .r-#{$i} { right: #{$i}px; }
+ .b-#{$i} { bottom: #{$i}px; }
+ .l-#{$i} { left: #{$i}px; }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .t-#{$i}\@#{$breakpointAlias} { top: #{$i}px; }
+ .r-#{$i}\@#{$breakpointAlias} { right: #{$i}px; }
+ .b-#{$i}\@#{$breakpointAlias} { bottom: #{$i}px; }
+ .l-#{$i}\@#{$breakpointAlias} { left: #{$i}px; }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Position (5 > 35 Step 5)
+// ---------------------------------------------------------
+
+@for $i from 5 through 35 {
+ @if $i % 5 == 0 {
+ .t-#{$i} { top: #{$i}px; }
+ .r-#{$i} { right: #{$i}px; }
+ .b-#{$i} { bottom: #{$i}px; }
+ .l-#{$i} { left: #{$i}px; }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .t-#{$i}\@#{$breakpointAlias} { top: #{$i}px; }
+ .r-#{$i}\@#{$breakpointAlias} { right: #{$i}px; }
+ .b-#{$i}\@#{$breakpointAlias} { bottom: #{$i}px; }
+ .l-#{$i}\@#{$breakpointAlias} { left: #{$i}px; }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Position (40 > 160 Step 10)
+// ---------------------------------------------------------
+
+@for $i from 40 through 160 {
+ @if $i % 10 == 0 {
+ .t-#{$i} { top: #{$i}px; }
+ .r-#{$i} { right: #{$i}px; }
+ .b-#{$i} { bottom: #{$i}px; }
+ .l-#{$i} { left: #{$i}px; }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .t-#{$i}\@#{$breakpointAlias} { top: #{$i}px; }
+ .r-#{$i}\@#{$breakpointAlias} { right: #{$i}px; }
+ .b-#{$i}\@#{$breakpointAlias} { bottom: #{$i}px; }
+ .l-#{$i}\@#{$breakpointAlias} { left: #{$i}px; }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Position (50%)
+// ---------------------------------------------------------
+
+.tl-50p {
+ top: 50%;
+ left: 50%;
+}
+
+.tr-50p {
+ top: 50%;
+ right: 50%;
+}
+
+.t-50p { top: 50%; }
+.r-50p { right: 50%; }
+.b-50p { bottom: 50%; }
+.l-50p { left: 50%; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .tl-50p\@#{$breakpointAlias} {
+ top: 50%;
+ left: 50%;
+ }
+
+ .tr-50p\@#{$breakpointAlias} {
+ top: 50%;
+ right: 50%;
+ }
+
+ .t-50p\@#{$breakpointAlias} { top: 50%; }
+ .r-50p\@#{$breakpointAlias} { right: 50%; }
+ .b-50p\@#{$breakpointAlias} { bottom: 50%; }
+ .l-50p\@#{$breakpointAlias} { left: 50%; }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/pseudo.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/pseudo.scss
new file mode 100644
index 000000000..b55a5a0a8
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/pseudo.scss
@@ -0,0 +1,6 @@
+// ---------------------------------------------------------
+// @Pseudo Elements
+// ---------------------------------------------------------
+
+.no-after::after { display: none !important; }
+.no-before::before { display: none !important; }
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/sizes.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/sizes.scss
new file mode 100644
index 000000000..1ae37881d
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/sizes.scss
@@ -0,0 +1,155 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Fixed Width
+// + @Relative Width
+// + @Fixed Height
+// + @Max Size
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Fixed Width
+// ---------------------------------------------------------
+
+.w-1\/4r, .sz-1\/4r { width: 0.25rem; }
+.w-1\/2r, .sz-1\/2r { width: 0.5rem; }
+.w-3\/4r, .sz-3\/4r { width: 0.75rem; }
+.w-1r, .sz-1r { width: 1rem; }
+.w-3\/2r, .sz-3\/2r { width: 1.5rem; }
+.w-2r, .sz-2r { width: 2rem; }
+.w-5\/2r, .sz-5\/2r { width: 2.5rem; }
+.w-3r, .sz-3r { width: 3rem; }
+.w-7\/2r, .sz-7\/2r { width: 3.5rem; }
+.w-4r, .sz-4r { width: 4rem; }
+.w-9\/2r, .sz-9\/2r { width: 4.5rem; }
+.w-5r, .sz-5r { width: 5rem; }
+.w-11\/2r, .sz-11\/2r { width: 5.5rem; }
+.w-6r, .sz-6r { width: 6rem; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .w-1\/4r\@#{$breakpointAlias}, .sz-1\/4r\@#{$breakpointAlias} { width: 0.25rem; }
+ .w-1\/2r\@#{$breakpointAlias}, .sz-1\/2r\@#{$breakpointAlias} { width: 0.5rem; }
+ .w-3\/4r\@#{$breakpointAlias}, .sz-3\/4r\@#{$breakpointAlias} { width: 0.75rem; }
+ .w-1r\@#{$breakpointAlias}, .sz-1r\@#{$breakpointAlias} { width: 1rem; }
+ .w-3\/2r\@#{$breakpointAlias}, .sz-3\/2r\@#{$breakpointAlias} { width: 1.5rem; }
+ .w-2r\@#{$breakpointAlias}, .sz-2r\@#{$breakpointAlias} { width: 2rem; }
+ .w-5\/2r\@#{$breakpointAlias}, .sz-5\/2r\@#{$breakpointAlias} { width: 2.5rem; }
+ .w-3r\@#{$breakpointAlias}, .sz-3r\@#{$breakpointAlias} { width: 3rem; }
+ .w-7\/2r\@#{$breakpointAlias}, .sz-7\/2r\@#{$breakpointAlias} { width: 3.5rem; }
+ .w-4r\@#{$breakpointAlias}, .sz-4r\@#{$breakpointAlias} { width: 4rem; }
+ .w-9\/2r\@#{$breakpointAlias}, .sz-9\/2r\@#{$breakpointAlias} { width: 4.5rem; }
+ .w-5r\@#{$breakpointAlias}, .sz-5r\@#{$breakpointAlias} { width: 5rem; }
+ .w-11\/2r\@#{$breakpointAlias}, .sz-11\/2r\@#{$breakpointAlias} { width: 5.5rem; }
+ .w-6r\@#{$breakpointAlias}, .sz-6r\@#{$breakpointAlias} { width: 6rem; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Relative Width
+// ---------------------------------------------------------
+
+.w-0 { width: 0px; }
+.w-10p { width: 10%; }
+.w-20p { width: 20%; }
+.w-30p { width: 30%; }
+.w-40p { width: 40%; }
+.w-50p { width: 50%; }
+.w-60p { width: 60%; }
+.w-70p { width: 70%; }
+.w-80p { width: 80%; }
+.w-90p { width: 90%; }
+.w-100p { width: 100%; }
+.w-1px { width: 1px; }
+.w-a { width: auto; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .w-0\@#{$breakpointAlias} { width: 0px; }
+ .w-10p\@#{$breakpointAlias} { width: 10%; }
+ .w-20p\@#{$breakpointAlias} { width: 20%; }
+ .w-30p\@#{$breakpointAlias} { width: 30%; }
+ .w-40p\@#{$breakpointAlias} { width: 40%; }
+ .w-50p\@#{$breakpointAlias} { width: 50%; }
+ .w-60p\@#{$breakpointAlias} { width: 60%; }
+ .w-70p\@#{$breakpointAlias} { width: 70%; }
+ .w-80p\@#{$breakpointAlias} { width: 80%; }
+ .w-90p\@#{$breakpointAlias} { width: 90%; }
+ .w-100p\@#{$breakpointAlias} { width: 100%; }
+ .w-1px\@#{$breakpointAlias} { width: 1px; }
+ .w-a\@#{$breakpointAlias} { width: auto; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Fixed Height
+// ---------------------------------------------------------
+
+.h-1\/4r, .sz-1\/4r { height: 0.25rem; }
+.h-1\/2r, .sz-1\/2r { height: 0.5rem; }
+.h-3\/4r, .sz-3\/4r { height: 0.75rem; }
+.h-1r, .sz-1r { height: 1rem; }
+.h-3\/2r, .sz-3\/2r { height: 1.5rem; }
+.h-2r, .sz-2r { height: 2rem; }
+.h-5\/2r, .sz-5\/2r { height: 2.5rem; }
+.h-3r, .sz-3r { height: 3rem; }
+.h-7\/2r, .sz-7\/2r { height: 3.5rem; }
+.h-4r, .sz-4r { height: 4rem; }
+.h-9\/2r, .sz-9\/2r { height: 4.5rem; }
+.h-5r, .sz-5r { height: 5rem; }
+.h-11\/2r, .sz-11\/2r { height: 5.5rem; }
+.h-6r, .sz-6r { height: 6rem; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .h-1\/4r\@#{$breakpointAlias}, .sz-1\/4r\@#{$breakpointAlias} { height: 0.25rem; }
+ .h-1\/2r\@#{$breakpointAlias}, .sz-1\/2r\@#{$breakpointAlias} { height: 0.5rem; }
+ .h-3\/4r\@#{$breakpointAlias}, .sz-3\/4r\@#{$breakpointAlias} { height: 0.75rem; }
+ .h-1r\@#{$breakpointAlias}, .sz-1r\@#{$breakpointAlias} { height: 1rem; }
+ .h-3\/2r\@#{$breakpointAlias}, .sz-3\/2r\@#{$breakpointAlias} { height: 1.5rem; }
+ .h-2r\@#{$breakpointAlias}, .sz-2r\@#{$breakpointAlias} { height: 2rem; }
+ .h-5\/2r\@#{$breakpointAlias}, .sz-5\/2r\@#{$breakpointAlias} { height: 2.5rem; }
+ .h-3r\@#{$breakpointAlias}, .sz-3r\@#{$breakpointAlias} { height: 3rem; }
+ .h-7\/2r\@#{$breakpointAlias}, .sz-7\/2r\@#{$breakpointAlias} { height: 3.5rem; }
+ .h-4r\@#{$breakpointAlias}, .sz-4r\@#{$breakpointAlias} { height: 4rem; }
+ .h-9\/2r\@#{$breakpointAlias}, .sz-9\/2r\@#{$breakpointAlias} { height: 4.5rem; }
+ .h-5r\@#{$breakpointAlias}, .sz-5r\@#{$breakpointAlias} { height: 5rem; }
+ .h-11\/2r\@#{$breakpointAlias}, .sz-11\/2r\@#{$breakpointAlias} { height: 5.5rem; }
+ .h-6r\@#{$breakpointAlias}, .sz-6r\@#{$breakpointAlias} { height: 6rem; }
+ }
+}
+
+.h-0 { height: 0; }
+.h-auto { height: auto; }
+.h-100p { height: 100%; }
+.h-100vh { height: 100vh; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .h-0\@#{$breakpointAlias} { height: 0; }
+ .h-auto\@#{$breakpointAlias} { height: auto; }
+ .h-100p\@#{$breakpointAlias} { height: 100%; }
+ .h-100vh\@#{$breakpointAlias} { height: 100vh; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Max Size
+// ---------------------------------------------------------
+
+.mw-100p { max-width: 100%; }
+.mh-100p { max-height: 100%; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .mw-100p\@#{$breakpointAlias} { max-width: 100%; }
+ .mh-100p\@#{$breakpointAlias} { max-height: 100%; }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/typography.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/typography.scss
new file mode 100644
index 000000000..db6a87384
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/helpers/typography.scss
@@ -0,0 +1,126 @@
+
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Text Align
+// + @Text Transform
+// + @Font Style
+// + @Text Decoration
+// + @White Space
+// + @Word Break
+// + @Word Wrap
+// + @Text Overflow
+// + @Font Size
+// + @Font Weight
+// + @Line Height
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Text Align
+// ---------------------------------------------------------
+
+.ta-c { text-align: center !important; }
+.ta-l { text-align: left !important; }
+.ta-r { text-align: right !important; }
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .ta-c\@#{$breakpointAlias} { text-align: center !important; }
+ .ta-l\@#{$breakpointAlias} { text-align: left !important; }
+ .ta-r\@#{$breakpointAlias} { text-align: right !important; }
+ }
+}
+
+// ---------------------------------------------------------
+// @Text Transform
+// ---------------------------------------------------------
+
+.tt-n { text-transform: none !important; }
+.tt-u { text-transform: uppercase !important; }
+.tt-l { text-transform: lowercase !important; }
+.tt-c { text-transform: capitalize !important; }
+
+// ---------------------------------------------------------
+// @Font Style
+// ---------------------------------------------------------
+
+.fs-i { font-style: italic !important; }
+.fs-o { font-style: oblique !important; }
+
+// ---------------------------------------------------------
+// @Text Decoration
+// ---------------------------------------------------------
+
+.td-n { text-decoration: none !important; }
+.td-o { text-decoration: overline !important; }
+.td-lt { text-decoration: line-through !important; }
+.td-u { text-decoration: underline !important; }
+
+// ---------------------------------------------------------
+// @White Space
+// ---------------------------------------------------------
+
+.whs-nw { white-space: nowrap !important; }
+.whs-p { white-space: pre !important; }
+.whs-n { white-space: normal !important; }
+
+// ---------------------------------------------------------
+// @Word Break
+// ---------------------------------------------------------
+
+.wob-n { word-break: normal !important; }
+.wob-ba { word-break: break-all !important; }
+.wob-k { word-break: keep-all !important; }
+
+// ---------------------------------------------------------
+// @Word Wrap
+// ---------------------------------------------------------
+
+.wow-bw { word-wrap: break-word !important; }
+.wow-n { word-wrap: normal !important; }
+
+// ---------------------------------------------------------
+// @Text Overflow
+// ---------------------------------------------------------
+
+.tov-e { text-overflow: ellipsis !important; }
+
+// ---------------------------------------------------------
+// @Font Size
+// ---------------------------------------------------------
+
+.fsz-xs { font-size: 0.75rem !important; }
+.fsz-sm { font-size: 0.87rem !important; }
+.fsz-def { font-size: 1rem !important; }
+.fsz-md { font-size: 1.15rem !important; }
+.fsz-lg { font-size: 1.4rem !important; }
+.fsz-xl { font-size: 1.7rem !important; }
+
+// ---------------------------------------------------------
+// @Font Weight
+// ---------------------------------------------------------
+
+.fw-100 { font-weight: 100 !important; }
+.fw-200 { font-weight: 200 !important; }
+.fw-300 { font-weight: 300 !important; }
+.fw-400 { font-weight: 400 !important; }
+.fw-500 { font-weight: 500 !important; }
+.fw-600 { font-weight: 600 !important; }
+.fw-700 { font-weight: 700 !important; }
+.fw-800 { font-weight: 800 !important; }
+.fw-900 { font-weight: 900 !important; }
+
+// ---------------------------------------------------------
+// @Line Height
+// ---------------------------------------------------------
+
+.lh-0 { line-height: 0 !important; }
+.lh-1 { line-height: 1 !important; }
+.lh-3\/2 { line-height: 1.5 !important; }
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/index.scss
new file mode 100644
index 000000000..5fa31e721
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/index.scss
@@ -0,0 +1,3 @@
+@import 'mixins/index';
+@import 'utils/index';
+@import 'helpers/index';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/generateResponsive.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/generateResponsive.scss
new file mode 100644
index 000000000..d7cd92c20
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/generateResponsive.scss
@@ -0,0 +1,19 @@
+// ---------------------------------------------------------
+// @Responsive Suffix Generator
+// ---------------------------------------------------------
+
+// Mixin used to generate responsive suffixes for classes (i.e. m-10@sm+).
+
+
+@mixin generateResponsive() {
+ @each $breakpoint in $breakpoints {
+ $breakpointAlias : nth($breakpoint, 1) !global;
+ $breakpointCondition : nth($breakpoint, 2);
+
+ @include mediaQueryCondition($breakpointAlias) {
+ @content;
+ }
+
+ $breakpointAlias: null !global;
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/index.scss
new file mode 100644
index 000000000..e2116418b
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/index.scss
@@ -0,0 +1,2 @@
+@import 'mediaQueryCondition';
+@import 'generateResponsive';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/mediaQueryCondition.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/mediaQueryCondition.scss
new file mode 100644
index 000000000..08537f4bb
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/mixins/mediaQueryCondition.scss
@@ -0,0 +1,26 @@
+// ---------------------------------------------------------
+// @Media Queries Generator
+// ---------------------------------------------------------
+
+// Mixin used to generate responsive versions of css rules.
+
+@mixin mediaQueryCondition($mq) {
+ $breakpointFound: false;
+
+ @each $breakpoint in $breakpoints {
+ $alias: nth($breakpoint, 1);
+ $condition: nth($breakpoint, 2);
+
+ @if $mq == $alias and $condition {
+ $breakpointFound: true;
+
+ @media #{$condition} {
+ @content;
+ }
+ }
+ }
+
+ @if $breakpointFound == false {
+ @warn "Oops! Breakpoint ‘#{$mq}’ does not exist \:";
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/center.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/center.scss
new file mode 100644
index 000000000..3c7a8280e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/center.scss
@@ -0,0 +1,52 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Centering
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Centering
+// ---------------------------------------------------------
+
+.centerY {
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+.centerX {
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.centerXY {
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+@if ($responsive == true) {
+ @include generateResponsive() {
+ .centerY\@#{$breakpointAlias} {
+ top: 50%;
+ transform: translateY(-50%);
+ }
+
+ .centerX\@#{$breakpointAlias} {
+ left: 50%;
+ transform: translateX(-50%);
+ }
+
+ .centerXY\@#{$breakpointAlias} {
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/gap.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/gap.scss
new file mode 100644
index 000000000..5697ea22e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/gap.scss
@@ -0,0 +1,226 @@
+// ---------------------------------------------------------
+// @TOC
+// ---------------------------------------------------------
+
+// + @Variables
+// + @Base
+// + @Gap (0 > 4 Step 1)
+// + @Gap (5 > 35 Step 5)
+// + @Gap (40 > 160 Step 10)
+
+// ---------------------------------------------------------
+// @Variables
+// ---------------------------------------------------------
+
+$responsive: true;
+
+// ---------------------------------------------------------
+// @Base
+// ---------------------------------------------------------
+
+[class*='gap'] {
+ width: auto !important;
+ overflow: hidden !important;
+}
+
+// ---------------------------------------------------------
+// @Gap (0 > 4 Step 1)
+// ---------------------------------------------------------
+
+@for $i from 0 through 4 {
+ .gapX-#{$i} {
+ margin-left: #{($i / -2)}px !important;
+ margin-right: #{($i / -2)}px !important;
+
+ & > * {
+ padding-left: #{($i / 2)}px !important;
+ padding-right: #{($i / 2)}px !important;
+ }
+ }
+
+ .gapY-#{$i} {
+ margin-top: #{($i / -2)}px !important;
+ margin-bottom: #{($i / -2)}px !important;
+
+ & > * {
+ padding-top: #{($i / 2)}px !important;
+ padding-bottom: #{($i / 2)}px !important;
+ }
+ }
+
+ .gap-#{$i} {
+ margin: #{($i / -2)}px !important;
+
+ & > * {
+ padding: #{($i / 2)}px !important;
+ }
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .gapX-#{$i}\@#{$breakpointAlias} {
+ margin-left: #{($i / -2)}px !important;
+ margin-right: #{($i / -2)}px !important;
+
+ & > * {
+ padding-left: #{($i / 2)}px !important;
+ padding-right: #{($i / 2)}px !important;
+ }
+ }
+
+ .gapY-#{$i}\@#{$breakpointAlias} {
+ margin-top: #{($i / -2)}px !important;
+ margin-bottom: #{($i / -2)}px !important;
+
+ & > * {
+ padding-top: #{($i / 2)}px !important;
+ padding-bottom: #{($i / 2)}px !important;
+ }
+ }
+
+ .gap-#{$i}\@#{$breakpointAlias} {
+ margin: #{($i / -2)}px !important;
+
+ & > * {
+ padding: #{($i / 2)}px !important;
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Gap (5 > 35 Step 5)
+// ---------------------------------------------------------
+
+@for $i from 5 through 35 {
+ @if $i % 5 == 0 {
+ .gapX-#{$i} {
+ margin-left: #{($i / -2)}px !important;
+ margin-right: #{($i / -2)}px !important;
+
+ & > * {
+ padding-left: #{($i / 2)}px !important;
+ padding-right: #{($i / 2)}px !important;
+ }
+ }
+
+ .gapY-#{$i} {
+ margin-top: #{($i / -2)}px !important;
+ margin-bottom: #{($i / -2)}px !important;
+
+ & > * {
+ padding-top: #{($i / 2)}px !important;
+ padding-bottom: #{($i / 2)}px !important;
+ }
+ }
+
+ .gap-#{$i} {
+ margin: #{($i / -2)}px !important;
+
+ & > * {
+ padding: #{($i / 2)}px !important;
+ }
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .gapX-#{$i}\@#{$breakpointAlias} {
+ margin-left: #{($i / -2)}px !important;
+ margin-right: #{($i / -2)}px !important;
+
+ & > * {
+ padding-left: #{($i / 2)}px !important;
+ padding-right: #{($i / 2)}px !important;
+ }
+ }
+
+ .gapY-#{$i}\@#{$breakpointAlias} {
+ margin-top: #{($i / -2)}px !important;
+ margin-bottom: #{($i / -2)}px !important;
+
+ & > * {
+ padding-top: #{($i / 2)}px !important;
+ padding-bottom: #{($i / 2)}px !important;
+ }
+ }
+
+ .gap-#{$i}\@#{$breakpointAlias} {
+ margin: #{($i / -2)}px !important;
+
+ & > * {
+ padding: #{($i / 2)}px !important;
+ }
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------
+// @Gap (40 > 160 Step 10)
+// ---------------------------------------------------------
+
+@for $i from 40 through 160 {
+ @if $i % 10 == 0 {
+ .gapX-#{$i} {
+ margin-left: #{($i / -2)}px !important;
+ margin-right: #{($i / -2)}px !important;
+
+ & > * {
+ padding-left: #{($i / 2)}px !important;
+ padding-right: #{($i / 2)}px !important;
+ }
+ }
+
+ .gapY-#{$i} {
+ margin-top: #{($i / -2)}px !important;
+ margin-bottom: #{($i / -2)}px !important;
+
+ & > * {
+ padding-top: #{($i / 2)}px !important;
+ padding-bottom: #{($i / 2)}px !important;
+ }
+ }
+
+ .gap-#{$i} {
+ margin: #{($i / -2)}px !important;
+
+ & > * {
+ padding: #{($i / 2)}px !important;
+ }
+ }
+
+ @if ($responsive == true) {
+ @include generateResponsive() {
+ .gapX-#{$i}\@#{$breakpointAlias} {
+ margin-left: #{($i / -2)}px !important;
+ margin-right: #{($i / -2)}px !important;
+
+ & > * {
+ padding-left: #{($i / 2)}px !important;
+ padding-right: #{($i / 2)}px !important;
+ }
+ }
+
+ .gapY-#{$i}\@#{$breakpointAlias} {
+ margin-top: #{($i / -2)}px !important;
+ margin-bottom: #{($i / -2)}px !important;
+
+ & > * {
+ padding-top: #{($i / 2)}px !important;
+ padding-bottom: #{($i / 2)}px !important;
+ }
+ }
+
+ .gap-#{$i}\@#{$breakpointAlias} {
+ margin: #{($i / -2)}px !important;
+
+ & > * {
+ padding: #{($i / 2)}px !important;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/index.scss
new file mode 100644
index 000000000..f80bfe237
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/index.scss
@@ -0,0 +1,5 @@
+@import 'center';
+@import 'gap';
+@import 'peers';
+@import 'layers';
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/layers.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/layers.scss
new file mode 100644
index 000000000..004c432c3
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/layers.scss
@@ -0,0 +1,5 @@
+.layers {
+ display: flex;
+ flex-flow: column nowrap;
+ align-items: center;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/peers.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/peers.scss
new file mode 100644
index 000000000..1f0861600
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/spec/utils/layout/utils/peers.scss
@@ -0,0 +1,35 @@
+.peers {
+ box-sizing: border-box;
+ display: flex !important;
+ align-items: flex-start;
+ justify-content: flex-start;
+ flex-flow: row wrap;
+ height: auto;
+ max-width: 100%;
+ margin: 0;
+ padding: 0;
+}
+
+.peer {
+ display: block;
+ height: auto;
+ flex: 0 0 auto;
+}
+
+.peer-greed {
+ flex: 1 1 auto;
+ // overflow: hidden;
+}
+
+.peers-greed > .peer,
+.peers-greed > .peers {
+ flex: 1 1 auto;
+}
+
+.peer > img {
+ max-width: none;
+}
+
+.peer-greed > img {
+ max-width: 100%;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/datepicker.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/datepicker.scss
new file mode 100644
index 000000000..7a22bf093
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/datepicker.scss
@@ -0,0 +1,178 @@
+.datepicker {
+ border-radius: 0;
+ padding: 25px;
+ box-shadow: none;
+ border: 1px solid $border-color;
+
+ table {
+ tr {
+ th,
+ td {
+ border-radius: 0;
+ width: 40px;
+ height: 35px;
+ }
+
+ td {
+ transition: all 0.2s ease-in-out;
+
+ span {
+ border-radius: 0;
+ }
+ }
+ }
+ }
+}
+
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.datepicker table tr td span.active.active:hover,
+.datepicker table tr td span.active:hover.active:hover,
+.datepicker table tr td.active:active,
+.datepicker table tr td.active.highlighted:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active.highlighted.active,
+.datepicker table tr td.active:active:hover,
+.datepicker table tr td.active.highlighted:active:hover,
+.datepicker table tr td.active.active:hover,
+.datepicker table tr td.active.highlighted.active:hover,
+.datepicker table tr td.active:active:focus,
+.datepicker table tr td.active.highlighted:active:focus,
+.datepicker table tr td.active.active:focus,
+.datepicker table tr td.active.highlighted.active:focus,
+.datepicker table tr td.active:active.focus,
+.datepicker table tr td.active.highlighted:active.focus,
+.datepicker table tr td.active.active.focus,
+.datepicker table tr td.active.highlighted.active.focus {
+ color: $default-white;
+ background-color: $default-primary;
+ border-color: transparent;
+}
+
+.datepicker table tr td span:hover,
+.datepicker table tr td span.focused {
+ background: $default-primary;
+ color: #fff;
+}
+
+.datepicker table tr td.day:hover,
+.datepicker table tr td.focused {
+ background: $default-primary;
+ color: #fff;
+ cursor: pointer;
+}
+
+.datepicker .datepicker-switch:hover,
+.datepicker .prev:hover,
+.datepicker .next:hover,
+.datepicker tfoot tr th:hover {
+ background: $default-primary;
+ color: #fff;
+ cursor: pointer;
+}
+
+.datepicker-inline {
+ width: 330px;
+}
+
+.daterangepicker {
+ border-radius: 0;
+ padding: 30px;
+ box-shadow: none;
+ border: 1px solid $border-color;
+
+ .input-mini {
+ border-radius: 0;
+ margin-bottom: 20px;
+ height: 40px;
+ padding: 0 6px 0 35px;
+
+ &.active {
+ border-radius: 0;
+ border-color: lighten($default-info, 20%);
+ }
+ }
+
+ .daterangepicker_input {
+ i {
+ position: absolute;
+ left: 10px;
+ top: 13px;
+ }
+ }
+
+ td,
+ th {
+ border-radius: 0;
+ width: 40px;
+ height: 35px;
+
+ &.available{
+ &:hover{
+ background: $default-primary;
+ color: #fff;
+ }
+ }
+ }
+
+ td {
+ &.in-range {
+ background-color: transparent;
+ color: $default-primary;
+ }
+
+ &.active {
+ background-color: $default-primary;
+ border-color: transparent;
+ color: #fff;
+
+ &:hover {
+ background-color: $default-primary;
+ border-color: transparent;
+ color: #fff;
+ }
+ }
+
+ &.start-date {
+ border-radius: 0;
+
+ &.end-date {
+ border-radius: 0;
+ }
+ }
+
+ &.end-date {
+ border-radius: 0;
+ }
+ }
+
+ select {
+ &.hourselect,
+ &.minuteselect,
+ &.secondselect,
+ &.ampmselect {
+ border: 1px solid $border-color;
+ min-height: 30px;
+ }
+ }
+
+ .calendar-time {
+ i {
+ top: 8px;
+ left: 35px;
+ }
+ }
+
+ @include from($breakpoint-sm) {
+ .calendar {
+ margin-right: 20px !important;
+ }
+ }
+}
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/font-awesome.css b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/font-awesome.css
new file mode 100644
index 000000000..09800af1f
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/font-awesome.css
@@ -0,0 +1,2337 @@
+/*!
+ * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('../static/fonts/icons/fontawesome/fontawesome-webfont.eot?v=4.7.0');
+ src: url('../static/fonts/icons/fontawesome/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../static/fonts/icons/fontawesome/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../static/fonts/icons/fontawesome/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../static/fonts/icons/fontawesome/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../static/fonts/icons/fontawesome/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font: normal normal normal 14px/1 FontAwesome;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.28571429em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.14285714em;
+ width: 2.14285714em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.85714286em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.fa-pull-left {
+ float: left;
+}
+.fa-pull-right {
+ float: right;
+}
+.fa.fa-pull-left {
+ margin-right: .3em;
+}
+.fa.fa-pull-right {
+ margin-left: .3em;
+}
+/* Deprecated as of 4.4.0 */
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+.fa-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+ filter: none;
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook-f:before,
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-feed:before,
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before,
+.fa-gratipay:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+.fa-space-shuttle:before {
+ content: "\f197";
+}
+.fa-slack:before {
+ content: "\f198";
+}
+.fa-envelope-square:before {
+ content: "\f199";
+}
+.fa-wordpress:before {
+ content: "\f19a";
+}
+.fa-openid:before {
+ content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+ content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+ content: "\f19d";
+}
+.fa-yahoo:before {
+ content: "\f19e";
+}
+.fa-google:before {
+ content: "\f1a0";
+}
+.fa-reddit:before {
+ content: "\f1a1";
+}
+.fa-reddit-square:before {
+ content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+ content: "\f1a3";
+}
+.fa-stumbleupon:before {
+ content: "\f1a4";
+}
+.fa-delicious:before {
+ content: "\f1a5";
+}
+.fa-digg:before {
+ content: "\f1a6";
+}
+.fa-pied-piper-pp:before {
+ content: "\f1a7";
+}
+.fa-pied-piper-alt:before {
+ content: "\f1a8";
+}
+.fa-drupal:before {
+ content: "\f1a9";
+}
+.fa-joomla:before {
+ content: "\f1aa";
+}
+.fa-language:before {
+ content: "\f1ab";
+}
+.fa-fax:before {
+ content: "\f1ac";
+}
+.fa-building:before {
+ content: "\f1ad";
+}
+.fa-child:before {
+ content: "\f1ae";
+}
+.fa-paw:before {
+ content: "\f1b0";
+}
+.fa-spoon:before {
+ content: "\f1b1";
+}
+.fa-cube:before {
+ content: "\f1b2";
+}
+.fa-cubes:before {
+ content: "\f1b3";
+}
+.fa-behance:before {
+ content: "\f1b4";
+}
+.fa-behance-square:before {
+ content: "\f1b5";
+}
+.fa-steam:before {
+ content: "\f1b6";
+}
+.fa-steam-square:before {
+ content: "\f1b7";
+}
+.fa-recycle:before {
+ content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+ content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+ content: "\f1ba";
+}
+.fa-tree:before {
+ content: "\f1bb";
+}
+.fa-spotify:before {
+ content: "\f1bc";
+}
+.fa-deviantart:before {
+ content: "\f1bd";
+}
+.fa-soundcloud:before {
+ content: "\f1be";
+}
+.fa-database:before {
+ content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+ content: "\f1c1";
+}
+.fa-file-word-o:before {
+ content: "\f1c2";
+}
+.fa-file-excel-o:before {
+ content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+ content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+ content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+ content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+ content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+ content: "\f1c8";
+}
+.fa-file-code-o:before {
+ content: "\f1c9";
+}
+.fa-vine:before {
+ content: "\f1ca";
+}
+.fa-codepen:before {
+ content: "\f1cb";
+}
+.fa-jsfiddle:before {
+ content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+ content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+ content: "\f1ce";
+}
+.fa-ra:before,
+.fa-resistance:before,
+.fa-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
+.fa-hacker-news:before {
+ content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+ content: "\f1d5";
+}
+.fa-qq:before {
+ content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+ content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+ content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+ content: "\f1d9";
+}
+.fa-history:before {
+ content: "\f1da";
+}
+.fa-circle-thin:before {
+ content: "\f1db";
+}
+.fa-header:before {
+ content: "\f1dc";
+}
+.fa-paragraph:before {
+ content: "\f1dd";
+}
+.fa-sliders:before {
+ content: "\f1de";
+}
+.fa-share-alt:before {
+ content: "\f1e0";
+}
+.fa-share-alt-square:before {
+ content: "\f1e1";
+}
+.fa-bomb:before {
+ content: "\f1e2";
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+ content: "\f1e3";
+}
+.fa-tty:before {
+ content: "\f1e4";
+}
+.fa-binoculars:before {
+ content: "\f1e5";
+}
+.fa-plug:before {
+ content: "\f1e6";
+}
+.fa-slideshare:before {
+ content: "\f1e7";
+}
+.fa-twitch:before {
+ content: "\f1e8";
+}
+.fa-yelp:before {
+ content: "\f1e9";
+}
+.fa-newspaper-o:before {
+ content: "\f1ea";
+}
+.fa-wifi:before {
+ content: "\f1eb";
+}
+.fa-calculator:before {
+ content: "\f1ec";
+}
+.fa-paypal:before {
+ content: "\f1ed";
+}
+.fa-google-wallet:before {
+ content: "\f1ee";
+}
+.fa-cc-visa:before {
+ content: "\f1f0";
+}
+.fa-cc-mastercard:before {
+ content: "\f1f1";
+}
+.fa-cc-discover:before {
+ content: "\f1f2";
+}
+.fa-cc-amex:before {
+ content: "\f1f3";
+}
+.fa-cc-paypal:before {
+ content: "\f1f4";
+}
+.fa-cc-stripe:before {
+ content: "\f1f5";
+}
+.fa-bell-slash:before {
+ content: "\f1f6";
+}
+.fa-bell-slash-o:before {
+ content: "\f1f7";
+}
+.fa-trash:before {
+ content: "\f1f8";
+}
+.fa-copyright:before {
+ content: "\f1f9";
+}
+.fa-at:before {
+ content: "\f1fa";
+}
+.fa-eyedropper:before {
+ content: "\f1fb";
+}
+.fa-paint-brush:before {
+ content: "\f1fc";
+}
+.fa-birthday-cake:before {
+ content: "\f1fd";
+}
+.fa-area-chart:before {
+ content: "\f1fe";
+}
+.fa-pie-chart:before {
+ content: "\f200";
+}
+.fa-line-chart:before {
+ content: "\f201";
+}
+.fa-lastfm:before {
+ content: "\f202";
+}
+.fa-lastfm-square:before {
+ content: "\f203";
+}
+.fa-toggle-off:before {
+ content: "\f204";
+}
+.fa-toggle-on:before {
+ content: "\f205";
+}
+.fa-bicycle:before {
+ content: "\f206";
+}
+.fa-bus:before {
+ content: "\f207";
+}
+.fa-ioxhost:before {
+ content: "\f208";
+}
+.fa-angellist:before {
+ content: "\f209";
+}
+.fa-cc:before {
+ content: "\f20a";
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+ content: "\f20b";
+}
+.fa-meanpath:before {
+ content: "\f20c";
+}
+.fa-buysellads:before {
+ content: "\f20d";
+}
+.fa-connectdevelop:before {
+ content: "\f20e";
+}
+.fa-dashcube:before {
+ content: "\f210";
+}
+.fa-forumbee:before {
+ content: "\f211";
+}
+.fa-leanpub:before {
+ content: "\f212";
+}
+.fa-sellsy:before {
+ content: "\f213";
+}
+.fa-shirtsinbulk:before {
+ content: "\f214";
+}
+.fa-simplybuilt:before {
+ content: "\f215";
+}
+.fa-skyatlas:before {
+ content: "\f216";
+}
+.fa-cart-plus:before {
+ content: "\f217";
+}
+.fa-cart-arrow-down:before {
+ content: "\f218";
+}
+.fa-diamond:before {
+ content: "\f219";
+}
+.fa-ship:before {
+ content: "\f21a";
+}
+.fa-user-secret:before {
+ content: "\f21b";
+}
+.fa-motorcycle:before {
+ content: "\f21c";
+}
+.fa-street-view:before {
+ content: "\f21d";
+}
+.fa-heartbeat:before {
+ content: "\f21e";
+}
+.fa-venus:before {
+ content: "\f221";
+}
+.fa-mars:before {
+ content: "\f222";
+}
+.fa-mercury:before {
+ content: "\f223";
+}
+.fa-intersex:before,
+.fa-transgender:before {
+ content: "\f224";
+}
+.fa-transgender-alt:before {
+ content: "\f225";
+}
+.fa-venus-double:before {
+ content: "\f226";
+}
+.fa-mars-double:before {
+ content: "\f227";
+}
+.fa-venus-mars:before {
+ content: "\f228";
+}
+.fa-mars-stroke:before {
+ content: "\f229";
+}
+.fa-mars-stroke-v:before {
+ content: "\f22a";
+}
+.fa-mars-stroke-h:before {
+ content: "\f22b";
+}
+.fa-neuter:before {
+ content: "\f22c";
+}
+.fa-genderless:before {
+ content: "\f22d";
+}
+.fa-facebook-official:before {
+ content: "\f230";
+}
+.fa-pinterest-p:before {
+ content: "\f231";
+}
+.fa-whatsapp:before {
+ content: "\f232";
+}
+.fa-server:before {
+ content: "\f233";
+}
+.fa-user-plus:before {
+ content: "\f234";
+}
+.fa-user-times:before {
+ content: "\f235";
+}
+.fa-hotel:before,
+.fa-bed:before {
+ content: "\f236";
+}
+.fa-viacoin:before {
+ content: "\f237";
+}
+.fa-train:before {
+ content: "\f238";
+}
+.fa-subway:before {
+ content: "\f239";
+}
+.fa-medium:before {
+ content: "\f23a";
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+ content: "\f23b";
+}
+.fa-optin-monster:before {
+ content: "\f23c";
+}
+.fa-opencart:before {
+ content: "\f23d";
+}
+.fa-expeditedssl:before {
+ content: "\f23e";
+}
+.fa-battery-4:before,
+.fa-battery:before,
+.fa-battery-full:before {
+ content: "\f240";
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+ content: "\f241";
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+ content: "\f242";
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+ content: "\f243";
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+ content: "\f244";
+}
+.fa-mouse-pointer:before {
+ content: "\f245";
+}
+.fa-i-cursor:before {
+ content: "\f246";
+}
+.fa-object-group:before {
+ content: "\f247";
+}
+.fa-object-ungroup:before {
+ content: "\f248";
+}
+.fa-sticky-note:before {
+ content: "\f249";
+}
+.fa-sticky-note-o:before {
+ content: "\f24a";
+}
+.fa-cc-jcb:before {
+ content: "\f24b";
+}
+.fa-cc-diners-club:before {
+ content: "\f24c";
+}
+.fa-clone:before {
+ content: "\f24d";
+}
+.fa-balance-scale:before {
+ content: "\f24e";
+}
+.fa-hourglass-o:before {
+ content: "\f250";
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+ content: "\f251";
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+ content: "\f252";
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+ content: "\f253";
+}
+.fa-hourglass:before {
+ content: "\f254";
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+ content: "\f255";
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+ content: "\f256";
+}
+.fa-hand-scissors-o:before {
+ content: "\f257";
+}
+.fa-hand-lizard-o:before {
+ content: "\f258";
+}
+.fa-hand-spock-o:before {
+ content: "\f259";
+}
+.fa-hand-pointer-o:before {
+ content: "\f25a";
+}
+.fa-hand-peace-o:before {
+ content: "\f25b";
+}
+.fa-trademark:before {
+ content: "\f25c";
+}
+.fa-registered:before {
+ content: "\f25d";
+}
+.fa-creative-commons:before {
+ content: "\f25e";
+}
+.fa-gg:before {
+ content: "\f260";
+}
+.fa-gg-circle:before {
+ content: "\f261";
+}
+.fa-tripadvisor:before {
+ content: "\f262";
+}
+.fa-odnoklassniki:before {
+ content: "\f263";
+}
+.fa-odnoklassniki-square:before {
+ content: "\f264";
+}
+.fa-get-pocket:before {
+ content: "\f265";
+}
+.fa-wikipedia-w:before {
+ content: "\f266";
+}
+.fa-safari:before {
+ content: "\f267";
+}
+.fa-chrome:before {
+ content: "\f268";
+}
+.fa-firefox:before {
+ content: "\f269";
+}
+.fa-opera:before {
+ content: "\f26a";
+}
+.fa-internet-explorer:before {
+ content: "\f26b";
+}
+.fa-tv:before,
+.fa-television:before {
+ content: "\f26c";
+}
+.fa-contao:before {
+ content: "\f26d";
+}
+.fa-500px:before {
+ content: "\f26e";
+}
+.fa-amazon:before {
+ content: "\f270";
+}
+.fa-calendar-plus-o:before {
+ content: "\f271";
+}
+.fa-calendar-minus-o:before {
+ content: "\f272";
+}
+.fa-calendar-times-o:before {
+ content: "\f273";
+}
+.fa-calendar-check-o:before {
+ content: "\f274";
+}
+.fa-industry:before {
+ content: "\f275";
+}
+.fa-map-pin:before {
+ content: "\f276";
+}
+.fa-map-signs:before {
+ content: "\f277";
+}
+.fa-map-o:before {
+ content: "\f278";
+}
+.fa-map:before {
+ content: "\f279";
+}
+.fa-commenting:before {
+ content: "\f27a";
+}
+.fa-commenting-o:before {
+ content: "\f27b";
+}
+.fa-houzz:before {
+ content: "\f27c";
+}
+.fa-vimeo:before {
+ content: "\f27d";
+}
+.fa-black-tie:before {
+ content: "\f27e";
+}
+.fa-fonticons:before {
+ content: "\f280";
+}
+.fa-reddit-alien:before {
+ content: "\f281";
+}
+.fa-edge:before {
+ content: "\f282";
+}
+.fa-credit-card-alt:before {
+ content: "\f283";
+}
+.fa-codiepie:before {
+ content: "\f284";
+}
+.fa-modx:before {
+ content: "\f285";
+}
+.fa-fort-awesome:before {
+ content: "\f286";
+}
+.fa-usb:before {
+ content: "\f287";
+}
+.fa-product-hunt:before {
+ content: "\f288";
+}
+.fa-mixcloud:before {
+ content: "\f289";
+}
+.fa-scribd:before {
+ content: "\f28a";
+}
+.fa-pause-circle:before {
+ content: "\f28b";
+}
+.fa-pause-circle-o:before {
+ content: "\f28c";
+}
+.fa-stop-circle:before {
+ content: "\f28d";
+}
+.fa-stop-circle-o:before {
+ content: "\f28e";
+}
+.fa-shopping-bag:before {
+ content: "\f290";
+}
+.fa-shopping-basket:before {
+ content: "\f291";
+}
+.fa-hashtag:before {
+ content: "\f292";
+}
+.fa-bluetooth:before {
+ content: "\f293";
+}
+.fa-bluetooth-b:before {
+ content: "\f294";
+}
+.fa-percent:before {
+ content: "\f295";
+}
+.fa-gitlab:before {
+ content: "\f296";
+}
+.fa-wpbeginner:before {
+ content: "\f297";
+}
+.fa-wpforms:before {
+ content: "\f298";
+}
+.fa-envira:before {
+ content: "\f299";
+}
+.fa-universal-access:before {
+ content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+ content: "\f29b";
+}
+.fa-question-circle-o:before {
+ content: "\f29c";
+}
+.fa-blind:before {
+ content: "\f29d";
+}
+.fa-audio-description:before {
+ content: "\f29e";
+}
+.fa-volume-control-phone:before {
+ content: "\f2a0";
+}
+.fa-braille:before {
+ content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+ content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+ content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+ content: "\f2a4";
+}
+.fa-glide:before {
+ content: "\f2a5";
+}
+.fa-glide-g:before {
+ content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+ content: "\f2a7";
+}
+.fa-low-vision:before {
+ content: "\f2a8";
+}
+.fa-viadeo:before {
+ content: "\f2a9";
+}
+.fa-viadeo-square:before {
+ content: "\f2aa";
+}
+.fa-snapchat:before {
+ content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+ content: "\f2ac";
+}
+.fa-snapchat-square:before {
+ content: "\f2ad";
+}
+.fa-pied-piper:before {
+ content: "\f2ae";
+}
+.fa-first-order:before {
+ content: "\f2b0";
+}
+.fa-yoast:before {
+ content: "\f2b1";
+}
+.fa-themeisle:before {
+ content: "\f2b2";
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+ content: "\f2b3";
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+ content: "\f2b4";
+}
+.fa-handshake-o:before {
+ content: "\f2b5";
+}
+.fa-envelope-open:before {
+ content: "\f2b6";
+}
+.fa-envelope-open-o:before {
+ content: "\f2b7";
+}
+.fa-linode:before {
+ content: "\f2b8";
+}
+.fa-address-book:before {
+ content: "\f2b9";
+}
+.fa-address-book-o:before {
+ content: "\f2ba";
+}
+.fa-vcard:before,
+.fa-address-card:before {
+ content: "\f2bb";
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+ content: "\f2bc";
+}
+.fa-user-circle:before {
+ content: "\f2bd";
+}
+.fa-user-circle-o:before {
+ content: "\f2be";
+}
+.fa-user-o:before {
+ content: "\f2c0";
+}
+.fa-id-badge:before {
+ content: "\f2c1";
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+ content: "\f2c2";
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+ content: "\f2c3";
+}
+.fa-quora:before {
+ content: "\f2c4";
+}
+.fa-free-code-camp:before {
+ content: "\f2c5";
+}
+.fa-telegram:before {
+ content: "\f2c6";
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+ content: "\f2c7";
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+ content: "\f2c8";
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+ content: "\f2c9";
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+ content: "\f2ca";
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+ content: "\f2cb";
+}
+.fa-shower:before {
+ content: "\f2cc";
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+ content: "\f2cd";
+}
+.fa-podcast:before {
+ content: "\f2ce";
+}
+.fa-window-maximize:before {
+ content: "\f2d0";
+}
+.fa-window-minimize:before {
+ content: "\f2d1";
+}
+.fa-window-restore:before {
+ content: "\f2d2";
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+ content: "\f2d3";
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+ content: "\f2d4";
+}
+.fa-bandcamp:before {
+ content: "\f2d5";
+}
+.fa-grav:before {
+ content: "\f2d6";
+}
+.fa-etsy:before {
+ content: "\f2d7";
+}
+.fa-imdb:before {
+ content: "\f2d8";
+}
+.fa-ravelry:before {
+ content: "\f2d9";
+}
+.fa-eercast:before {
+ content: "\f2da";
+}
+.fa-microchip:before {
+ content: "\f2db";
+}
+.fa-snowflake-o:before {
+ content: "\f2dc";
+}
+.fa-superpowers:before {
+ content: "\f2dd";
+}
+.fa-wpexplorer:before {
+ content: "\f2de";
+}
+.fa-meetup:before {
+ content: "\f2e0";
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/fullcalendar.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/fullcalendar.scss
new file mode 100644
index 000000000..123ff33db
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/fullcalendar.scss
@@ -0,0 +1,95 @@
+.fc {
+ background-color: $default-white;
+ border: 1px solid $border-color;
+
+ th {
+ text-align: center;
+ padding: 15px;
+ background-color: transparent;
+ color: $default-text-color;
+ font-size: 12px;
+ text-transform: uppercase;
+ border-right-width: 0;
+ border-left-width: 0;
+ }
+
+ button {
+ background-color: $default-white;
+ background-image: none;
+ height: 37px;
+ padding: 0 15px;
+ color: darken($default-text-color, 10%);
+
+ &.fc-state-default {
+ border-color: $border-color;
+ box-shadow: none;
+ }
+
+ &.fc-state-active {
+ box-shadow: none;
+ background-color: $border-color;
+ }
+ }
+}
+
+.fc-toolbar {
+ padding: 20px 20px 0;
+}
+
+.fc-view,
+.fc-view > table {
+ background-color: $default-white;
+}
+
+.fc-basic-view td.fc-day-number,
+.fc-basic-view td.fc-week-number span {
+ padding: 7px 15px;
+}
+
+.fc-unthemed {
+ .fc-content,
+ .fc-divider,
+ .fc-popover,
+ .fc-row,
+ tbody,
+ td,
+ th,
+ thead {
+ border-color: $border-color;
+ }
+
+ .fc-today {
+ background-color: transparent;
+ }
+}
+
+.fc-basic-view {
+ .fc-day-number {
+ &.fc-today {
+ background-color: $default-info;
+ color: $default-white;
+ display: inline-block;
+ float: right;
+ border-radius: 50%;
+ padding: 6px 8px;
+ line-height: 1;
+ margin: 4px 4px 0 0;
+ }
+ }
+}
+
+.fc-event-container {
+ .fc-event {
+ border-radius: 0;
+ border: 0;
+ background-color: $inverse-info;
+ color: $default-info !important;
+ font-size: 12px;
+ line-height: 2.5;
+ padding: 0 15px;
+ }
+
+ .fc-day-grid-event {
+ margin: 1px 5px 5px;
+ }
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/index.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/index.scss
new file mode 100644
index 000000000..eaeb95f4c
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/index.scss
@@ -0,0 +1,8 @@
+@import '~perfect-scrollbar/css/perfect-scrollbar';
+@import 'themify-icons';
+@import 'font-awesome';
+@import 'perfectScrollbar';
+@import 'sparkline';
+@import 'jquery.datatables';
+@import 'fullcalendar';
+@import 'datepicker';
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/jquery.datatables.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/jquery.datatables.scss
new file mode 100644
index 000000000..4dc6588c2
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/jquery.datatables.scss
@@ -0,0 +1,124 @@
+table {
+ &.dataTable {
+ &.no-footer {
+ border-bottom: 1px solid $border-color;
+ margin-bottom: 20px;
+ }
+ }
+}
+
+.sorting_asc {
+ &:focus {
+ outline: none;
+ }
+}
+
+.dataTables_wrapper {
+ overflow: hidden;
+ padding-bottom: 5px;
+
+ .dataTables_length{
+ color: $default-dark;
+ float: left;
+
+ @include to($breakpoint-sm) {
+ text-align: left;
+ }
+
+ select {
+ border: 1px solid $border-color;
+ border-radius: 2px;
+ box-shadow: none;
+ height: 35px;
+ font-size: 14px;
+ padding: 5px;
+ margin-left: 5px;
+ margin-right: 5px;
+ color: $default-text-color;
+ transition: all 0.2s ease-in;
+ }
+ }
+
+ .dataTables_filter {
+ color: $default-dark;
+ float: right;
+
+ @include to($breakpoint-sm) {
+ text-align: left;
+ }
+
+ input {
+ border: 1px solid $border-color;
+ border-radius: 2px;
+ box-shadow: none;
+ height: 35px;
+ font-size: 14px;
+ margin-left: 15px;
+ padding: 5px;
+ color: $default-text-color;
+ transition: all 0.2s ease-in;
+ }
+ }
+
+ .dataTables_info {
+ color: $default-text-color;
+ float: left;
+ }
+
+ .dataTables_processing {
+ color: $default-dark;
+ }
+
+ .dataTables_paginate {
+ color: $default-text-color;
+ float: right;
+
+ .paginate_button {
+ color: $default-text-color !important;
+ padding: 6px 12px;
+ border-radius: 2px;
+ margin-right: 10px;
+ transition: all 0.2s ease-in-out;
+ text-decoration: none;
+
+ &.next,
+ &.previous,
+ &.first,
+ &.last {
+ border-radius: 2px;
+ text-decoration: none;
+
+ &:hover,
+ &:focus {
+ color: #fff !important;
+ }
+
+ &.disabled {
+ opacity: 0.4;
+ pointer-events: none;
+ }
+ }
+
+ &:hover {
+ color: #fff !important;
+ background: $default-primary;
+ }
+
+ &.current {
+ color: #fff !important;
+ background: $default-primary;
+
+ &:hover {
+ color: $default-white !important;
+ background: $default-primary;
+ }
+ }
+ }
+ }
+
+ .status {
+ width: 5px;
+ height: 5px;
+ }
+}
+
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/perfectScrollbar.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/perfectScrollbar.scss
new file mode 100644
index 000000000..85bc9b0b9
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/perfectScrollbar.scss
@@ -0,0 +1,4 @@
+.ps__rail-y {
+ right: 0 !important;
+ left: auto !important;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/sparkline.scss b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/sparkline.scss
new file mode 100644
index 000000000..03205644b
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/sparkline.scss
@@ -0,0 +1,6 @@
+#jqstooltip {
+ width: auto !important;
+ height: auto !important;
+ padding: 5px 10px !important;
+ border-radius: 2px !important;
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/themify-icons.css b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/themify-icons.css
new file mode 100644
index 000000000..35048f916
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/src/assets/styles/vendor/themify-icons.css
@@ -0,0 +1,1081 @@
+@font-face {
+ font-family: 'themify';
+ src:url('../static/fonts/icons/themify/themify.eot?-fvbane');
+ src:url('../static/fonts/icons/themify/themify.eot?#iefix-fvbane') format('embedded-opentype'),
+ url('../static/fonts/icons/themify/themify.woff?-fvbane') format('woff'),
+ url('../static/fonts/icons/themify/themify.ttf?-fvbane') format('truetype'),
+ url('../static/fonts/icons/themify/themify.svg?-fvbane#themify') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="ti-"], [class*=" ti-"] {
+ font-family: 'themify';
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.ti-wand:before {
+ content: "\e600";
+}
+.ti-volume:before {
+ content: "\e601";
+}
+.ti-user:before {
+ content: "\e602";
+}
+.ti-unlock:before {
+ content: "\e603";
+}
+.ti-unlink:before {
+ content: "\e604";
+}
+.ti-trash:before {
+ content: "\e605";
+}
+.ti-thought:before {
+ content: "\e606";
+}
+.ti-target:before {
+ content: "\e607";
+}
+.ti-tag:before {
+ content: "\e608";
+}
+.ti-tablet:before {
+ content: "\e609";
+}
+.ti-star:before {
+ content: "\e60a";
+}
+.ti-spray:before {
+ content: "\e60b";
+}
+.ti-signal:before {
+ content: "\e60c";
+}
+.ti-shopping-cart:before {
+ content: "\e60d";
+}
+.ti-shopping-cart-full:before {
+ content: "\e60e";
+}
+.ti-settings:before {
+ content: "\e60f";
+}
+.ti-search:before {
+ content: "\e610";
+}
+.ti-zoom-in:before {
+ content: "\e611";
+}
+.ti-zoom-out:before {
+ content: "\e612";
+}
+.ti-cut:before {
+ content: "\e613";
+}
+.ti-ruler:before {
+ content: "\e614";
+}
+.ti-ruler-pencil:before {
+ content: "\e615";
+}
+.ti-ruler-alt:before {
+ content: "\e616";
+}
+.ti-bookmark:before {
+ content: "\e617";
+}
+.ti-bookmark-alt:before {
+ content: "\e618";
+}
+.ti-reload:before {
+ content: "\e619";
+}
+.ti-plus:before {
+ content: "\e61a";
+}
+.ti-pin:before {
+ content: "\e61b";
+}
+.ti-pencil:before {
+ content: "\e61c";
+}
+.ti-pencil-alt:before {
+ content: "\e61d";
+}
+.ti-paint-roller:before {
+ content: "\e61e";
+}
+.ti-paint-bucket:before {
+ content: "\e61f";
+}
+.ti-na:before {
+ content: "\e620";
+}
+.ti-mobile:before {
+ content: "\e621";
+}
+.ti-minus:before {
+ content: "\e622";
+}
+.ti-medall:before {
+ content: "\e623";
+}
+.ti-medall-alt:before {
+ content: "\e624";
+}
+.ti-marker:before {
+ content: "\e625";
+}
+.ti-marker-alt:before {
+ content: "\e626";
+}
+.ti-arrow-up:before {
+ content: "\e627";
+}
+.ti-arrow-right:before {
+ content: "\e628";
+}
+.ti-arrow-left:before {
+ content: "\e629";
+}
+.ti-arrow-down:before {
+ content: "\e62a";
+}
+.ti-lock:before {
+ content: "\e62b";
+}
+.ti-location-arrow:before {
+ content: "\e62c";
+}
+.ti-link:before {
+ content: "\e62d";
+}
+.ti-layout:before {
+ content: "\e62e";
+}
+.ti-layers:before {
+ content: "\e62f";
+}
+.ti-layers-alt:before {
+ content: "\e630";
+}
+.ti-key:before {
+ content: "\e631";
+}
+.ti-import:before {
+ content: "\e632";
+}
+.ti-image:before {
+ content: "\e633";
+}
+.ti-heart:before {
+ content: "\e634";
+}
+.ti-heart-broken:before {
+ content: "\e635";
+}
+.ti-hand-stop:before {
+ content: "\e636";
+}
+.ti-hand-open:before {
+ content: "\e637";
+}
+.ti-hand-drag:before {
+ content: "\e638";
+}
+.ti-folder:before {
+ content: "\e639";
+}
+.ti-flag:before {
+ content: "\e63a";
+}
+.ti-flag-alt:before {
+ content: "\e63b";
+}
+.ti-flag-alt-2:before {
+ content: "\e63c";
+}
+.ti-eye:before {
+ content: "\e63d";
+}
+.ti-export:before {
+ content: "\e63e";
+}
+.ti-exchange-vertical:before {
+ content: "\e63f";
+}
+.ti-desktop:before {
+ content: "\e640";
+}
+.ti-cup:before {
+ content: "\e641";
+}
+.ti-crown:before {
+ content: "\e642";
+}
+.ti-comments:before {
+ content: "\e643";
+}
+.ti-comment:before {
+ content: "\e644";
+}
+.ti-comment-alt:before {
+ content: "\e645";
+}
+.ti-close:before {
+ content: "\e646";
+}
+.ti-clip:before {
+ content: "\e647";
+}
+.ti-angle-up:before {
+ content: "\e648";
+}
+.ti-angle-right:before {
+ content: "\e649";
+}
+.ti-angle-left:before {
+ content: "\e64a";
+}
+.ti-angle-down:before {
+ content: "\e64b";
+}
+.ti-check:before {
+ content: "\e64c";
+}
+.ti-check-box:before {
+ content: "\e64d";
+}
+.ti-camera:before {
+ content: "\e64e";
+}
+.ti-announcement:before {
+ content: "\e64f";
+}
+.ti-brush:before {
+ content: "\e650";
+}
+.ti-briefcase:before {
+ content: "\e651";
+}
+.ti-bolt:before {
+ content: "\e652";
+}
+.ti-bolt-alt:before {
+ content: "\e653";
+}
+.ti-blackboard:before {
+ content: "\e654";
+}
+.ti-bag:before {
+ content: "\e655";
+}
+.ti-move:before {
+ content: "\e656";
+}
+.ti-arrows-vertical:before {
+ content: "\e657";
+}
+.ti-arrows-horizontal:before {
+ content: "\e658";
+}
+.ti-fullscreen:before {
+ content: "\e659";
+}
+.ti-arrow-top-right:before {
+ content: "\e65a";
+}
+.ti-arrow-top-left:before {
+ content: "\e65b";
+}
+.ti-arrow-circle-up:before {
+ content: "\e65c";
+}
+.ti-arrow-circle-right:before {
+ content: "\e65d";
+}
+.ti-arrow-circle-left:before {
+ content: "\e65e";
+}
+.ti-arrow-circle-down:before {
+ content: "\e65f";
+}
+.ti-angle-double-up:before {
+ content: "\e660";
+}
+.ti-angle-double-right:before {
+ content: "\e661";
+}
+.ti-angle-double-left:before {
+ content: "\e662";
+}
+.ti-angle-double-down:before {
+ content: "\e663";
+}
+.ti-zip:before {
+ content: "\e664";
+}
+.ti-world:before {
+ content: "\e665";
+}
+.ti-wheelchair:before {
+ content: "\e666";
+}
+.ti-view-list:before {
+ content: "\e667";
+}
+.ti-view-list-alt:before {
+ content: "\e668";
+}
+.ti-view-grid:before {
+ content: "\e669";
+}
+.ti-uppercase:before {
+ content: "\e66a";
+}
+.ti-upload:before {
+ content: "\e66b";
+}
+.ti-underline:before {
+ content: "\e66c";
+}
+.ti-truck:before {
+ content: "\e66d";
+}
+.ti-timer:before {
+ content: "\e66e";
+}
+.ti-ticket:before {
+ content: "\e66f";
+}
+.ti-thumb-up:before {
+ content: "\e670";
+}
+.ti-thumb-down:before {
+ content: "\e671";
+}
+.ti-text:before {
+ content: "\e672";
+}
+.ti-stats-up:before {
+ content: "\e673";
+}
+.ti-stats-down:before {
+ content: "\e674";
+}
+.ti-split-v:before {
+ content: "\e675";
+}
+.ti-split-h:before {
+ content: "\e676";
+}
+.ti-smallcap:before {
+ content: "\e677";
+}
+.ti-shine:before {
+ content: "\e678";
+}
+.ti-shift-right:before {
+ content: "\e679";
+}
+.ti-shift-left:before {
+ content: "\e67a";
+}
+.ti-shield:before {
+ content: "\e67b";
+}
+.ti-notepad:before {
+ content: "\e67c";
+}
+.ti-server:before {
+ content: "\e67d";
+}
+.ti-quote-right:before {
+ content: "\e67e";
+}
+.ti-quote-left:before {
+ content: "\e67f";
+}
+.ti-pulse:before {
+ content: "\e680";
+}
+.ti-printer:before {
+ content: "\e681";
+}
+.ti-power-off:before {
+ content: "\e682";
+}
+.ti-plug:before {
+ content: "\e683";
+}
+.ti-pie-chart:before {
+ content: "\e684";
+}
+.ti-paragraph:before {
+ content: "\e685";
+}
+.ti-panel:before {
+ content: "\e686";
+}
+.ti-package:before {
+ content: "\e687";
+}
+.ti-music:before {
+ content: "\e688";
+}
+.ti-music-alt:before {
+ content: "\e689";
+}
+.ti-mouse:before {
+ content: "\e68a";
+}
+.ti-mouse-alt:before {
+ content: "\e68b";
+}
+.ti-money:before {
+ content: "\e68c";
+}
+.ti-microphone:before {
+ content: "\e68d";
+}
+.ti-menu:before {
+ content: "\e68e";
+}
+.ti-menu-alt:before {
+ content: "\e68f";
+}
+.ti-map:before {
+ content: "\e690";
+}
+.ti-map-alt:before {
+ content: "\e691";
+}
+.ti-loop:before {
+ content: "\e692";
+}
+.ti-location-pin:before {
+ content: "\e693";
+}
+.ti-list:before {
+ content: "\e694";
+}
+.ti-light-bulb:before {
+ content: "\e695";
+}
+.ti-Italic:before {
+ content: "\e696";
+}
+.ti-info:before {
+ content: "\e697";
+}
+.ti-infinite:before {
+ content: "\e698";
+}
+.ti-id-badge:before {
+ content: "\e699";
+}
+.ti-hummer:before {
+ content: "\e69a";
+}
+.ti-home:before {
+ content: "\e69b";
+}
+.ti-help:before {
+ content: "\e69c";
+}
+.ti-headphone:before {
+ content: "\e69d";
+}
+.ti-harddrives:before {
+ content: "\e69e";
+}
+.ti-harddrive:before {
+ content: "\e69f";
+}
+.ti-gift:before {
+ content: "\e6a0";
+}
+.ti-game:before {
+ content: "\e6a1";
+}
+.ti-filter:before {
+ content: "\e6a2";
+}
+.ti-files:before {
+ content: "\e6a3";
+}
+.ti-file:before {
+ content: "\e6a4";
+}
+.ti-eraser:before {
+ content: "\e6a5";
+}
+.ti-envelope:before {
+ content: "\e6a6";
+}
+.ti-download:before {
+ content: "\e6a7";
+}
+.ti-direction:before {
+ content: "\e6a8";
+}
+.ti-direction-alt:before {
+ content: "\e6a9";
+}
+.ti-dashboard:before {
+ content: "\e6aa";
+}
+.ti-control-stop:before {
+ content: "\e6ab";
+}
+.ti-control-shuffle:before {
+ content: "\e6ac";
+}
+.ti-control-play:before {
+ content: "\e6ad";
+}
+.ti-control-pause:before {
+ content: "\e6ae";
+}
+.ti-control-forward:before {
+ content: "\e6af";
+}
+.ti-control-backward:before {
+ content: "\e6b0";
+}
+.ti-cloud:before {
+ content: "\e6b1";
+}
+.ti-cloud-up:before {
+ content: "\e6b2";
+}
+.ti-cloud-down:before {
+ content: "\e6b3";
+}
+.ti-clipboard:before {
+ content: "\e6b4";
+}
+.ti-car:before {
+ content: "\e6b5";
+}
+.ti-calendar:before {
+ content: "\e6b6";
+}
+.ti-book:before {
+ content: "\e6b7";
+}
+.ti-bell:before {
+ content: "\e6b8";
+}
+.ti-basketball:before {
+ content: "\e6b9";
+}
+.ti-bar-chart:before {
+ content: "\e6ba";
+}
+.ti-bar-chart-alt:before {
+ content: "\e6bb";
+}
+.ti-back-right:before {
+ content: "\e6bc";
+}
+.ti-back-left:before {
+ content: "\e6bd";
+}
+.ti-arrows-corner:before {
+ content: "\e6be";
+}
+.ti-archive:before {
+ content: "\e6bf";
+}
+.ti-anchor:before {
+ content: "\e6c0";
+}
+.ti-align-right:before {
+ content: "\e6c1";
+}
+.ti-align-left:before {
+ content: "\e6c2";
+}
+.ti-align-justify:before {
+ content: "\e6c3";
+}
+.ti-align-center:before {
+ content: "\e6c4";
+}
+.ti-alert:before {
+ content: "\e6c5";
+}
+.ti-alarm-clock:before {
+ content: "\e6c6";
+}
+.ti-agenda:before {
+ content: "\e6c7";
+}
+.ti-write:before {
+ content: "\e6c8";
+}
+.ti-window:before {
+ content: "\e6c9";
+}
+.ti-widgetized:before {
+ content: "\e6ca";
+}
+.ti-widget:before {
+ content: "\e6cb";
+}
+.ti-widget-alt:before {
+ content: "\e6cc";
+}
+.ti-wallet:before {
+ content: "\e6cd";
+}
+.ti-video-clapper:before {
+ content: "\e6ce";
+}
+.ti-video-camera:before {
+ content: "\e6cf";
+}
+.ti-vector:before {
+ content: "\e6d0";
+}
+.ti-themify-logo:before {
+ content: "\e6d1";
+}
+.ti-themify-favicon:before {
+ content: "\e6d2";
+}
+.ti-themify-favicon-alt:before {
+ content: "\e6d3";
+}
+.ti-support:before {
+ content: "\e6d4";
+}
+.ti-stamp:before {
+ content: "\e6d5";
+}
+.ti-split-v-alt:before {
+ content: "\e6d6";
+}
+.ti-slice:before {
+ content: "\e6d7";
+}
+.ti-shortcode:before {
+ content: "\e6d8";
+}
+.ti-shift-right-alt:before {
+ content: "\e6d9";
+}
+.ti-shift-left-alt:before {
+ content: "\e6da";
+}
+.ti-ruler-alt-2:before {
+ content: "\e6db";
+}
+.ti-receipt:before {
+ content: "\e6dc";
+}
+.ti-pin2:before {
+ content: "\e6dd";
+}
+.ti-pin-alt:before {
+ content: "\e6de";
+}
+.ti-pencil-alt2:before {
+ content: "\e6df";
+}
+.ti-palette:before {
+ content: "\e6e0";
+}
+.ti-more:before {
+ content: "\e6e1";
+}
+.ti-more-alt:before {
+ content: "\e6e2";
+}
+.ti-microphone-alt:before {
+ content: "\e6e3";
+}
+.ti-magnet:before {
+ content: "\e6e4";
+}
+.ti-line-double:before {
+ content: "\e6e5";
+}
+.ti-line-dotted:before {
+ content: "\e6e6";
+}
+.ti-line-dashed:before {
+ content: "\e6e7";
+}
+.ti-layout-width-full:before {
+ content: "\e6e8";
+}
+.ti-layout-width-default:before {
+ content: "\e6e9";
+}
+.ti-layout-width-default-alt:before {
+ content: "\e6ea";
+}
+.ti-layout-tab:before {
+ content: "\e6eb";
+}
+.ti-layout-tab-window:before {
+ content: "\e6ec";
+}
+.ti-layout-tab-v:before {
+ content: "\e6ed";
+}
+.ti-layout-tab-min:before {
+ content: "\e6ee";
+}
+.ti-layout-slider:before {
+ content: "\e6ef";
+}
+.ti-layout-slider-alt:before {
+ content: "\e6f0";
+}
+.ti-layout-sidebar-right:before {
+ content: "\e6f1";
+}
+.ti-layout-sidebar-none:before {
+ content: "\e6f2";
+}
+.ti-layout-sidebar-left:before {
+ content: "\e6f3";
+}
+.ti-layout-placeholder:before {
+ content: "\e6f4";
+}
+.ti-layout-menu:before {
+ content: "\e6f5";
+}
+.ti-layout-menu-v:before {
+ content: "\e6f6";
+}
+.ti-layout-menu-separated:before {
+ content: "\e6f7";
+}
+.ti-layout-menu-full:before {
+ content: "\e6f8";
+}
+.ti-layout-media-right-alt:before {
+ content: "\e6f9";
+}
+.ti-layout-media-right:before {
+ content: "\e6fa";
+}
+.ti-layout-media-overlay:before {
+ content: "\e6fb";
+}
+.ti-layout-media-overlay-alt:before {
+ content: "\e6fc";
+}
+.ti-layout-media-overlay-alt-2:before {
+ content: "\e6fd";
+}
+.ti-layout-media-left-alt:before {
+ content: "\e6fe";
+}
+.ti-layout-media-left:before {
+ content: "\e6ff";
+}
+.ti-layout-media-center-alt:before {
+ content: "\e700";
+}
+.ti-layout-media-center:before {
+ content: "\e701";
+}
+.ti-layout-list-thumb:before {
+ content: "\e702";
+}
+.ti-layout-list-thumb-alt:before {
+ content: "\e703";
+}
+.ti-layout-list-post:before {
+ content: "\e704";
+}
+.ti-layout-list-large-image:before {
+ content: "\e705";
+}
+.ti-layout-line-solid:before {
+ content: "\e706";
+}
+.ti-layout-grid4:before {
+ content: "\e707";
+}
+.ti-layout-grid3:before {
+ content: "\e708";
+}
+.ti-layout-grid2:before {
+ content: "\e709";
+}
+.ti-layout-grid2-thumb:before {
+ content: "\e70a";
+}
+.ti-layout-cta-right:before {
+ content: "\e70b";
+}
+.ti-layout-cta-left:before {
+ content: "\e70c";
+}
+.ti-layout-cta-center:before {
+ content: "\e70d";
+}
+.ti-layout-cta-btn-right:before {
+ content: "\e70e";
+}
+.ti-layout-cta-btn-left:before {
+ content: "\e70f";
+}
+.ti-layout-column4:before {
+ content: "\e710";
+}
+.ti-layout-column3:before {
+ content: "\e711";
+}
+.ti-layout-column2:before {
+ content: "\e712";
+}
+.ti-layout-accordion-separated:before {
+ content: "\e713";
+}
+.ti-layout-accordion-merged:before {
+ content: "\e714";
+}
+.ti-layout-accordion-list:before {
+ content: "\e715";
+}
+.ti-ink-pen:before {
+ content: "\e716";
+}
+.ti-info-alt:before {
+ content: "\e717";
+}
+.ti-help-alt:before {
+ content: "\e718";
+}
+.ti-headphone-alt:before {
+ content: "\e719";
+}
+.ti-hand-point-up:before {
+ content: "\e71a";
+}
+.ti-hand-point-right:before {
+ content: "\e71b";
+}
+.ti-hand-point-left:before {
+ content: "\e71c";
+}
+.ti-hand-point-down:before {
+ content: "\e71d";
+}
+.ti-gallery:before {
+ content: "\e71e";
+}
+.ti-face-smile:before {
+ content: "\e71f";
+}
+.ti-face-sad:before {
+ content: "\e720";
+}
+.ti-credit-card:before {
+ content: "\e721";
+}
+.ti-control-skip-forward:before {
+ content: "\e722";
+}
+.ti-control-skip-backward:before {
+ content: "\e723";
+}
+.ti-control-record:before {
+ content: "\e724";
+}
+.ti-control-eject:before {
+ content: "\e725";
+}
+.ti-comments-smiley:before {
+ content: "\e726";
+}
+.ti-brush-alt:before {
+ content: "\e727";
+}
+.ti-youtube:before {
+ content: "\e728";
+}
+.ti-vimeo:before {
+ content: "\e729";
+}
+.ti-twitter:before {
+ content: "\e72a";
+}
+.ti-time:before {
+ content: "\e72b";
+}
+.ti-tumblr:before {
+ content: "\e72c";
+}
+.ti-skype:before {
+ content: "\e72d";
+}
+.ti-share:before {
+ content: "\e72e";
+}
+.ti-share-alt:before {
+ content: "\e72f";
+}
+.ti-rocket:before {
+ content: "\e730";
+}
+.ti-pinterest:before {
+ content: "\e731";
+}
+.ti-new-window:before {
+ content: "\e732";
+}
+.ti-microsoft:before {
+ content: "\e733";
+}
+.ti-list-ol:before {
+ content: "\e734";
+}
+.ti-linkedin:before {
+ content: "\e735";
+}
+.ti-layout-sidebar-2:before {
+ content: "\e736";
+}
+.ti-layout-grid4-alt:before {
+ content: "\e737";
+}
+.ti-layout-grid3-alt:before {
+ content: "\e738";
+}
+.ti-layout-grid2-alt:before {
+ content: "\e739";
+}
+.ti-layout-column4-alt:before {
+ content: "\e73a";
+}
+.ti-layout-column3-alt:before {
+ content: "\e73b";
+}
+.ti-layout-column2-alt:before {
+ content: "\e73c";
+}
+.ti-instagram:before {
+ content: "\e73d";
+}
+.ti-google:before {
+ content: "\e73e";
+}
+.ti-github:before {
+ content: "\e73f";
+}
+.ti-flickr:before {
+ content: "\e740";
+}
+.ti-facebook:before {
+ content: "\e741";
+}
+.ti-dropbox:before {
+ content: "\e742";
+}
+.ti-dribbble:before {
+ content: "\e743";
+}
+.ti-apple:before {
+ content: "\e744";
+}
+.ti-android:before {
+ content: "\e745";
+}
+.ti-save:before {
+ content: "\e746";
+}
+.ti-save-alt:before {
+ content: "\e747";
+}
+.ti-yahoo:before {
+ content: "\e748";
+}
+.ti-wordpress:before {
+ content: "\e749";
+}
+.ti-vimeo-alt:before {
+ content: "\e74a";
+}
+.ti-twitter-alt:before {
+ content: "\e74b";
+}
+.ti-tumblr-alt:before {
+ content: "\e74c";
+}
+.ti-trello:before {
+ content: "\e74d";
+}
+.ti-stack-overflow:before {
+ content: "\e74e";
+}
+.ti-soundcloud:before {
+ content: "\e74f";
+}
+.ti-sharethis:before {
+ content: "\e750";
+}
+.ti-sharethis-alt:before {
+ content: "\e751";
+}
+.ti-reddit:before {
+ content: "\e752";
+}
+.ti-pinterest-alt:before {
+ content: "\e753";
+}
+.ti-microsoft-alt:before {
+ content: "\e754";
+}
+.ti-linux:before {
+ content: "\e755";
+}
+.ti-jsfiddle:before {
+ content: "\e756";
+}
+.ti-joomla:before {
+ content: "\e757";
+}
+.ti-html5:before {
+ content: "\e758";
+}
+.ti-flickr-alt:before {
+ content: "\e759";
+}
+.ti-email:before {
+ content: "\e75a";
+}
+.ti-drupal:before {
+ content: "\e75b";
+}
+.ti-dropbox-alt:before {
+ content: "\e75c";
+}
+.ti-css3:before {
+ content: "\e75d";
+}
+.ti-rss:before {
+ content: "\e75e";
+}
+.ti-rss-alt:before {
+ content: "\e75f";
+}
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack.config.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack.config.js
new file mode 100644
index 000000000..f6e036490
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack.config.js
@@ -0,0 +1,3 @@
+const config = require('./webpack/config');
+
+module.exports = config;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/config.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/config.js
new file mode 100644
index 000000000..11e03d92c
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/config.js
@@ -0,0 +1,68 @@
+// ------------------
+// @Table of Contents
+// ------------------
+
+/**
+ * + @Loading Dependencies
+ * + @Entry Point Setup
+ * + @Path Resolving
+ * + @Exporting Module
+ */
+
+
+// ---------------------
+// @Loading Dependencies
+// ---------------------
+
+const
+ path = require('path'),
+ manifest = require('./manifest'),
+ devServer = require('./devServer'),
+ rules = require('./rules'),
+ plugins = require('./plugins');
+
+
+// ------------------
+// @Entry Point Setup
+// ------------------
+
+const
+ entry = [
+ path.join(manifest.paths.src, 'assets', 'scripts', manifest.entries.js),
+ ];
+
+
+// ---------------
+// @Path Resolving
+// ---------------
+
+const resolve = {
+ extensions: ['.webpack-loader.js', '.web-loader.js', '.loader.js', '.js'],
+ modules: [
+ path.join(__dirname, '../node_modules'),
+ path.join(manifest.paths.src, ''),
+ ],
+};
+
+
+// -----------------
+// @Exporting Module
+// -----------------
+
+module.exports = {
+ devtool: manifest.IS_PRODUCTION ? false : 'cheap-eval-source-map',
+ context: path.join(manifest.paths.src, manifest.entries.js),
+ watch: !manifest.IS_PRODUCTION,
+ entry,
+ output: {
+ path: manifest.paths.build,
+ publicPath: '',
+ filename: manifest.outputFiles.bundle,
+ },
+ module: {
+ rules,
+ },
+ resolve,
+ plugins,
+ devServer,
+};
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/devServer.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/devServer.js
new file mode 100644
index 000000000..7fa965592
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/devServer.js
@@ -0,0 +1,47 @@
+// ---------------------
+// @Loading Dependencies
+// ---------------------
+
+const
+ manifest = require('./manifest');
+
+
+// ------------------
+// @DevServer Configs
+// ------------------
+
+/**
+ * [1] : To enable local network testing
+ */
+
+const devServer = {
+ contentBase : manifest.IS_PRODUCTION ? manifest.paths.build : manifest.paths.src,
+ historyApiFallback : true,
+ port : manifest.IS_PRODUCTION ? 3001 : 3000,
+ compress : manifest.IS_PRODUCTION,
+ inline : !manifest.IS_PRODUCTION,
+ watchContentBase: true,
+ hot : !manifest.IS_PRODUCTION,
+ host : '0.0.0.0',
+ disableHostCheck : true, // [1]
+ overlay : true,
+ stats: {
+ assets : true,
+ children : false,
+ chunks : false,
+ hash : false,
+ modules : false,
+ publicPath : false,
+ timings : true,
+ version : false,
+ warnings : true,
+ colors : true,
+ },
+};
+
+
+// -----------------
+// @Exporting Module
+// -----------------
+
+module.exports = devServer;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/manifest.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/manifest.js
new file mode 100644
index 000000000..739a67990
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/manifest.js
@@ -0,0 +1,85 @@
+// ------------------
+// @Table of Contents
+// ------------------
+
+/**
+ * + @Loading Dependencies
+ * + @Environment Holders
+ * + @Utils
+ * + @App Paths
+ * + @Output Files Names
+ * + @Entries Files Names
+ * + @Exporting Module
+ */
+
+
+// ---------------------
+// @Loading Dependencies
+// ---------------------
+
+const path = require('path');
+
+
+// --------------------
+// @Environment Holders
+// --------------------
+
+const
+ NODE_ENV = process.env.NODE_ENV || 'development',
+ IS_DEVELOPMENT = NODE_ENV === 'development',
+ IS_PRODUCTION = NODE_ENV === 'production';
+
+
+// ------
+// @Utils
+// ------
+
+const
+ dir = src => path.join(__dirname, src);
+
+
+// ----------
+// @App Paths
+// ----------
+
+const
+ paths = {
+ src : dir('../src'),
+ build : dir('../../wwwroot'),
+ };
+
+
+// -------------------
+// @Output Files Names
+// -------------------
+
+const
+ outputFiles = {
+ bundle : 'bundle.js',
+ vendor : 'vendor.js',
+ css : 'style.css',
+ };
+
+
+// --------------------
+// @Entries Files Names
+// --------------------
+
+const
+ entries = {
+ js : 'index.js',
+ };
+
+
+// -----------------
+// @Exporting Module
+// -----------------
+
+module.exports = {
+ paths,
+ outputFiles,
+ entries,
+ NODE_ENV,
+ IS_DEVELOPMENT,
+ IS_PRODUCTION,
+};
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/caseSensitivePlugin.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/caseSensitivePlugin.js
new file mode 100644
index 000000000..1a22d81ae
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/caseSensitivePlugin.js
@@ -0,0 +1,4 @@
+const
+ CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
+
+module.exports = new CaseSensitivePathsPlugin();
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/copyPlugin.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/copyPlugin.js
new file mode 100644
index 000000000..2766abf8f
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/copyPlugin.js
@@ -0,0 +1,11 @@
+const
+ path = require('path'),
+ manifest = require('../manifest'),
+ CopyWebpackPlugin = require('copy-webpack-plugin');
+
+module.exports = new CopyWebpackPlugin([
+ {
+ from : path.join(manifest.paths.src, 'assets/static'),
+ to : path.join(manifest.paths.build, 'assets/static'),
+ },
+]);
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/dashboardPlugin.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/dashboardPlugin.js
new file mode 100644
index 000000000..e839df7d3
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/dashboardPlugin.js
@@ -0,0 +1,4 @@
+const
+ DashboardPlugin = require('webpack-dashboard/plugin');
+
+module.exports = new DashboardPlugin();
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/extractPlugin.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/extractPlugin.js
new file mode 100644
index 000000000..eee87aa7f
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/extractPlugin.js
@@ -0,0 +1,8 @@
+const
+ manifest = require('../manifest'),
+ ExtractTextPlugin = require('extract-text-webpack-plugin');
+
+module.exports = new ExtractTextPlugin({
+ filename: manifest.outputFiles.css,
+ allChunks: true,
+});
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/htmlPlugin.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/htmlPlugin.js
new file mode 100644
index 000000000..2d5e9f191
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/htmlPlugin.js
@@ -0,0 +1,23 @@
+const
+ path = require('path'),
+ manifest = require('../manifest'),
+ HtmlWebpackPlugin = require('html-webpack-plugin');
+
+const titles = {
+};
+
+module.exports = Object.keys(titles).map(title => {
+ return new HtmlWebpackPlugin({
+ template: path.join(manifest.paths.src, `${title}.html`),
+ path: manifest.paths.build,
+ filename: `${title}.html`,
+ inject: true,
+ minify: {
+ collapseWhitespace: true,
+ minifyCSS: true,
+ minifyJS: true,
+ removeComments: true,
+ useShortDoctype: true,
+ },
+ });
+});
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/imageminPlugin.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/imageminPlugin.js
new file mode 100644
index 000000000..84b66295e
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/imageminPlugin.js
@@ -0,0 +1,7 @@
+const
+ manifest = require('../manifest'),
+ ImageminPlugin = require('imagemin-webpack-plugin').default;
+
+module.exports = new ImageminPlugin({
+ disable: manifest.IS_DEVELOPMENT,
+});
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/index.js
new file mode 100644
index 000000000..be7653c62
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/index.js
@@ -0,0 +1,23 @@
+const manifest = require('../manifest');
+const fs = require('fs');
+const path = require('path');
+
+const plugins = [];
+
+plugins.push(
+ require('./imageminPlugin'),
+ ...(require('./htmlPlugin')),
+ ...(require('./internal')),
+ require('./caseSensitivePlugin'),
+ require('./extractPlugin')
+);
+
+if (manifest.IS_DEVELOPMENT) {
+ plugins.push(require('./dashboardPlugin'));
+}
+
+if (manifest.IS_PRODUCTION) {
+ plugins.push(require('./copyPlugin'));
+}
+
+module.exports = plugins;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/internal.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/internal.js
new file mode 100644
index 000000000..4909e0922
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/plugins/internal.js
@@ -0,0 +1,101 @@
+// ------------------
+// @Table of Contents
+// ------------------
+
+/**
+ * + @Loading Dependencies
+ * + @Common Plugins
+ * + @Merging Production Plugins
+ * + @Merging Development Plugins
+ * + @Exporting Module
+ */
+
+
+// ---------------------
+// @Loading Dependencies
+// ---------------------
+
+const
+ manifest = require('../manifest'),
+ webpack = require('webpack');
+
+
+// ---------------
+// @Common Plugins
+// ---------------
+
+const
+ plugins = [];
+
+plugins.push(
+ new webpack.DefinePlugin({
+ 'process.env': {
+ NODE_ENV: JSON.stringify(manifest.NODE_ENV),
+ },
+ }),
+
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'vendor',
+ filename: manifest.outputFiles.vendor,
+ minChunks(module) {
+ const { context } = module;
+ return context && context.indexOf('node_modules') >= 0;
+ },
+ }),
+
+ new webpack.ProvidePlugin({
+ $: 'jquery',
+ jQuery: 'jquery',
+ 'window.jQuery': 'jquery',
+ Popper: ['popper.js', 'default'],
+ })
+);
+
+
+// ---------------------------
+// @Merging Production Plugins
+// ---------------------------
+
+if (manifest.IS_PRODUCTION) {
+ plugins.push(
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ comparisons : true,
+ conditionals : true,
+ dead_code : true,
+ drop_debugger : true,
+ evaluate : true,
+ if_return : true,
+ join_vars : true,
+ screw_ie8 : true,
+ sequences : true,
+ unused : true,
+ warnings : false,
+ },
+
+ output: {
+ comments: false,
+ },
+ })
+ );
+}
+
+
+// ----------------------------
+// @Merging Development Plugins
+// ----------------------------
+
+if (manifest.IS_DEVELOPMENT) {
+ plugins.push(
+ new webpack.NoEmitOnErrorsPlugin(),
+ new webpack.NamedModulesPlugin(),
+ new webpack.HotModuleReplacementPlugin()
+ );
+}
+
+
+// -----------------
+// @Exporting Module
+// -----------------
+
+module.exports = plugins;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/css.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/css.js
new file mode 100644
index 000000000..e63e96b2c
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/css.js
@@ -0,0 +1,72 @@
+// ------------------
+// @Table of Contents
+// ------------------
+
+/**
+ * + @Loading Dependencies
+ * + @Common Loaders
+ * + @Merging Production Loaders
+ * + @Merging Development Loaders
+ * + @Exporting Module
+ */
+
+
+// ---------------------
+// @Loading Dependencies
+// ---------------------
+
+const
+ manifest = require('../manifest'),
+ ExtractTextPlugin = require('extract-text-webpack-plugin');
+
+
+// ---------------
+// @Common Loaders
+// ---------------
+
+let rule = {};
+
+const loaders = [
+ {
+ loader: 'css-loader',
+ options: {
+ sourceMap : manifest.IS_DEVELOPMENT,
+ minimize : manifest.IS_PRODUCTION,
+ },
+ },
+];
+
+
+// ---------------------------
+// @Merging Production Loaders
+// ---------------------------
+
+if (manifest.IS_PRODUCTION) {
+ rule = {
+ test: /\.css$/,
+ loader: ExtractTextPlugin.extract({
+ use: loaders,
+ }),
+ };
+}
+
+
+// ----------------------------
+// @Merging Development Loaders
+// ----------------------------
+
+if (manifest.IS_DEVELOPMENT) {
+ rule = {
+ test: /\.css$/,
+ use: [{
+ loader: 'style-loader',
+ }].concat(loaders),
+ };
+}
+
+
+// -----------------
+// @Exporting Module
+// -----------------
+
+module.exports = rule;
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/fonts.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/fonts.js
new file mode 100644
index 000000000..69e52a016
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/fonts.js
@@ -0,0 +1,5 @@
+module.exports = {
+ test: /\.(eot|svg|ttf|woff|woff2)$/,
+ exclude : /(node_modules)/,
+ use : ['file-loader'],
+};
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/images.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/images.js
new file mode 100644
index 000000000..7dd129d3c
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/images.js
@@ -0,0 +1,10 @@
+module.exports = {
+ test : /\.(png|gif|jpg|svg)$/i,
+ exclude : /(node_modules)/,
+ use : [{
+ loader: 'file-loader',
+ options: {
+ outputPath: 'assets',
+ },
+ }],
+};
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/index.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/index.js
new file mode 100644
index 000000000..16105c660
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/index.js
@@ -0,0 +1,7 @@
+module.exports = [
+ require('./js'),
+ require('./images'),
+ require('./css'),
+ require('./sass'),
+ require('./fonts'),
+];
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/js.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/js.js
new file mode 100644
index 000000000..b0f996d5b
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/js.js
@@ -0,0 +1,5 @@
+module.exports = {
+ test : /\.(js)$/,
+ exclude : /(node_modules|wwwroot|build|dist\/)/,
+ use : ['babel-loader'],
+};
diff --git a/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/sass.js b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/sass.js
new file mode 100644
index 000000000..779855b7d
--- /dev/null
+++ b/src/Flowsharp.Web.Dashboard/ClientApp/webpack/rules/sass.js
@@ -0,0 +1,67 @@
+// ------------------
+// @Table of Contents
+// ------------------
+
+/**
+ * + @Loading Dependencies
+ * + @Common Loaders
+ * + @Exporting Module
+ */
+
+
+// ---------------------
+// @Loading Dependencies
+// ---------------------
+
+const
+ manifest = require('../manifest'),
+ path = require('path'),
+ cssNext = require('postcss-cssnext');
+
+
+// ---------------
+// @Common Loaders
+// ---------------
+
+const loaders = [
+ {
+ loader: 'css-loader',
+ options: {
+ sourceMap : manifest.IS_DEVELOPMENT,
+ minimize : manifest.IS_PRODUCTION,
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: manifest.IS_DEVELOPMENT,
+ plugins: () => [
+ cssNext(),
+ ],
+ },
+ },
+ {
+ loader: 'sass-loader',
+ options: {
+ sourceMap: manifest.IS_DEVELOPMENT,
+ includePaths: [
+ path.join('../../', 'node_modules'),
+ path.join(manifest.paths.src, 'assets', 'styles'),
+ path.join(manifest.paths.src, ''),
+ ],
+ },
+ },
+];
+
+const rule = {
+ test: /\.scss$/,
+ use: [{
+ loader: 'style-loader',
+ }].concat(loaders),
+};
+
+// -----------------
+// @Exporting Module
+// -----------------
+
+module.exports = rule;