diff --git a/.gitignore b/.gitignore index 45ee901e50..3e0e3cce34 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,4 @@ profile.tmp profile.cov # dashboard -/go-ethereum/dashboard/bundler/node_modules/ \ No newline at end of file +/dashboard/bundler/node_modules/ \ No newline at end of file diff --git a/dashboard/README.md b/dashboard/README.md index fccae100d4..57c5601fc7 100644 --- a/dashboard/README.md +++ b/dashboard/README.md @@ -1,25 +1,31 @@ ## Go Ethereum Dashboard ### Description -The GED is a data visualizer integrated into geth, intended to collect and visualize useful information of an Ethereum node. -The GED consists of two parts: +The dashboard is a data visualizer integrated into geth, intended to collect and visualize useful information of an Ethereum node. +The dashboard consists of two parts: * The server listens to connections, collects data with a given refresh rate, and updates the dashboards through the opened connections. * The client waits for update messages, updates the content and tries to reconnect on connection loss. -The client's UI is maintained by [Inferno][Inferno], a sympathetic React-like JavaScript library. -In order to create the Inferno's virtual DOM using JSX syntax, there is need to use the provided babel plugin. -[Webpack][Webpack] is used for bundling the resources in order to gain cost efficiency and maintainability. -[Node.js][Node.js] is used for installing the necessary dependencies. - -### Installation steps - -_Server_ +### Users +#### Installation steps 1. `cd .../go-ethereum/` -1. `go generate ./dashboard && go install -v ./cmd/geth` -1. run the server with `geth --rinkeby --dashboard --vmodule=dashboard=5 --metrics console` -1. optionally use `--dashboard.assets=` to set the assets' path => useful for debugging -1. enter `localhost:8080` (or change the configuration) +1. `go install -v ./cmd/geth` +1. Run the server with `geth --rinkeby --dashboard --vmodule=dashboard=5 --metrics`. +1. Enter `localhost:8080` (or change the configuration). + +### Developers + +The client's UI is maintained by [Inferno][Inferno], a sympathetic React-like JavaScript library. +In order to create the Inferno's virtual DOM using JSX syntax, babel plugin is required. + +[Webpack module bundler][Webpack] is used for bundling the resources in order to gain cost efficiency and maintainability. +The resources will be bundled into a single JS file (`bundle.js`), which can be then referenced from the main html file. +Finally this JS file will also take part in the `assets.go`. + +[Node.js][Node.js] is used for installing the necessary dependencies for the module bundler. + +#### Installation steps _Module bundler_ @@ -27,6 +33,26 @@ _Module bundler_ 1. `npm install` 1. `./node_modules/.bin/webpack` // check out `webpack.config.js` +_Server_ + +1. Bundle the resources. +1. `cd .../go-ethereum/`. +1. `go generate ./dashboard && go install -v ./cmd/geth`. +1. Run the server with `geth --rinkeby --dashboard --vmodule=dashboard=5 --metrics console`. + * Optionally use `--dashboard.assets=` to set the assets' path (e.g. `--dashboard.assets=".../go-ethereum/dashboard/assets"`). +Using this flag it is enough to only bundle the resources with webpack and refresh the page. +There is no need for stopping the server and regenerating the `assets.go` on every change of the UI. +1. Enter `localhost:8080` (or change the configuration). + +#### Tools +[Webpack][Webpack] offers great tools for visualizing the bundle's dependency tree and space usage. + +* Generate the bundle's profile by running `webpack --profile --json > stats.json` +* For the _dependency tree_ go to [Webpack Analyze][WA], and import `stats.json` +* For the _space usage_ go to [Webpack Visualizer][WV], and import `stats.json` + [Inferno]: https://infernojs.org/ [Webpack]: https://webpack.github.io/ +[WA]: http://webpack.github.io/analyse/ +[WV]: http://chrisbateman.github.io/webpack-visualizer/ [Node.js]: https://nodejs.org/en/ \ No newline at end of file diff --git a/dashboard/assets.go b/dashboard/assets.go index e11a9f1c86..640bffa630 100644 --- a/dashboard/assets.go +++ b/dashboard/assets.go @@ -89,7 +89,7 @@ func dashboardHtml() (*asset, error) { return a, nil } -var _jsBundleJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3d\x6b\x73\xdb\x38\x92\x9f\xe3\x5f\xd1\xe1\x56\x8d\xa5\x0c\x25\x59\x72\x5e\x25\xaf\x77\x2a\x71\x92\xdb\xdc\x4d\x1e\x95\x78\x6f\xea\xca\xe5\x62\x41\x24\x24\xe1\x4c\x02\x3c\x02\xf4\xe3\xb2\xfe\xef\x57\x78\x91\xa0\x48\xca\xb4\x4d\x67\x66\x6e\xa3\xaa\x19\x4b\x04\xd0\xdd\x68\x74\x37\xba\x1b\x0d\x66\xf2\x44\x7d\x26\x30\x58\xe6\x34\x14\x84\xd1\x41\xc2\xa2\x3c\xc6\x7c\x08\xdf\x60\x32\x81\x0b\xbc\x48\x51\x78\xf6\x9a\x31\xc1\x45\x86\xd2\x9d\x62\xc4\xa3\xc9\x04\x8e\xd7\x18\x74\x7f\x08\x51\xb8\xc6\x4e\xeb\x39\xca\x80\x50\x2e\x50\x1c\xe3\xe8\x83\x86\x09\x87\xf0\xed\xfa\xa0\xe8\x54\x87\x95\xe1\xff\xc9\x49\x86\xc1\x12\xe3\xf4\xb0\x8f\x20\x08\x0c\x4d\x81\xe9\x1d\x04\x86\xe6\xf7\xd1\x10\xbe\x35\x41\x97\xe0\x8f\xd6\x38\x3c\x03\xb2\xb4\xf4\x12\x0e\x84\xd6\xa8\x7e\x44\x96\x83\x4d\xaa\x4f\x2c\xf4\x53\x17\x3c\x3c\x7a\xf4\x28\xc3\x22\xcf\x68\x6d\x9a\xe5\x80\x31\xbe\x4c\x59\x26\xf8\x81\x3b\xec\x7a\x93\xb2\x0c\x23\x81\x01\x01\xc5\x17\x96\xba\x01\xa2\x11\xa4\xb9\x00\x22\x80\x50\xc1\x40\xac\x0d\x8b\x87\xee\x68\xc9\x64\x33\xe2\x70\x0b\x19\x92\xef\x15\xc2\xc9\x1c\x6c\xa3\x5f\x69\x88\xe7\xb0\x44\x31\xc7\xd5\xa7\x66\x16\x73\xf8\x56\xa1\xbd\x79\x29\xe5\x94\xde\x5e\xe2\x30\x17\x58\x51\x6d\xe8\x6b\x58\xd2\x47\x49\x8d\x5f\x21\x8a\x63\xb3\x9a\x96\x77\xbe\x81\x60\xff\x96\xcf\x1b\x24\x61\xd8\x4a\xd2\xbb\x18\xad\x5c\x7a\x10\x87\x98\xa1\x08\x47\x75\x82\xc6\x31\x1c\x82\xc8\x72\xdc\x0a\xec\x8b\x5e\x78\x09\xce\x50\x03\x6c\xe9\x40\x77\xbb\x1b\x21\xa9\x12\xef\x0a\xc4\x75\x1d\x4b\x55\x33\xe4\x18\xee\x32\x93\x03\x5b\xfc\x37\x0e\x05\x0c\x4a\x16\x98\x96\x20\x70\x05\xa4\x81\x43\xe3\x04\x0e\x2d\x98\x36\x55\xac\x21\xac\xe9\x49\x13\xe0\xb0\x41\x06\xdb\x30\x44\x78\x49\x28\x86\x15\x16\x02\x67\x85\x6c\xc0\x92\x65\xb0\x46\x59\xc2\xe8\x95\x65\xec\x0d\x48\x23\x38\x2c\x86\x0f\x0a\xc9\xa0\x28\xc1\xbe\x81\xbe\xa1\xb4\x64\x39\x78\xdc\x04\x88\x55\x47\x0f\x37\x75\xfd\x93\xe2\xf8\x58\x13\xfe\x39\x63\x29\xce\xc4\xd5\x26\xc6\xea\x90\x47\x21\xa3\x4b\xb2\xca\x33\xb4\x88\x71\xa3\x62\x3d\xc2\x34\x4f\xb0\x69\x97\x12\xb7\xd1\xbc\xc2\x62\x6e\xa6\x51\x69\xb8\x1e\xb6\x5a\x94\x56\xfb\xba\xc2\xe2\x0d\x5e\xa2\x3c\x16\x6f\x15\xd1\x55\xae\x87\x2c\x49\x91\x20\x0b\x12\x13\x71\x05\x17\x44\xac\x81\x32\x3a\xb2\x8b\x61\x04\xe6\x86\xc5\xa0\xee\x62\xe8\x21\x1b\x6c\x94\x06\xcb\x2c\xba\x95\x42\xf8\xe9\x27\xab\x1c\x41\x80\xb9\x16\x1c\xf8\xa5\x32\xdf\x82\xd4\x72\x12\x03\xb9\x41\x55\x74\xeb\x64\x37\xd2\x4d\xbb\xa7\x07\x70\x0d\xf3\x56\x08\x1a\x85\xe6\x02\xaf\xc3\x39\x80\xeb\x0a\x77\x1b\xc5\x6e\xa0\x67\xe1\xc3\x2e\xda\x2d\x24\xed\xa0\x41\xef\x75\xd3\x41\x97\x15\x32\x22\x96\x66\x4c\x30\x71\x95\xe2\xf1\x1a\xf1\x4f\x17\xd4\x0a\x9b\x32\x8e\x37\xac\x00\x73\x57\x40\x1b\x09\x1f\x52\x03\xc0\x99\x69\x17\x54\xf5\xf1\x15\xce\x54\x69\x2f\x89\x49\xf3\x45\x4c\xc2\x20\x45\x62\x1d\x04\x37\x90\x9b\xc2\x21\x78\x5e\x1b\xcc\x5f\x19\x8a\x00\x53\x91\x5d\x15\x46\x9b\x46\x76\x06\x75\xf3\x60\x1a\x9a\xfc\x83\x26\xdc\xd2\x1b\xd9\x77\x97\xec\xba\xb0\x9c\xf7\xff\x38\x33\x19\x9c\xec\x4c\x9e\xc0\x1e\x98\x67\x75\x57\xcb\xb7\x73\x91\xba\xb2\x53\xdd\x27\xe0\x10\xde\xd3\x25\xce\x28\x3b\xd8\x31\xc3\xaf\x87\xd2\x48\xc0\x74\x1b\xc0\x72\xbe\x06\x4e\x10\x34\x6f\x97\x12\xa3\x97\x73\x0c\x5c\x64\x24\x14\x6a\x29\x36\x2c\x30\x0c\x16\x84\x46\x84\xae\x86\xf0\x64\xd2\x04\x64\x1c\x0d\x1a\xf1\x79\xa1\xe7\x97\xc2\xe8\x08\x1f\xe1\x1f\xf3\x38\xfe\x94\xfd\x83\x6a\x6b\x1a\x1d\x80\x36\x68\xbd\x61\x8e\x5a\x30\x27\x28\x3d\x5a\x93\x38\xca\x30\xed\x1d\x27\x6a\xc1\x79\x14\x63\x94\x2d\xc9\x65\xef\x08\x17\x2d\x08\x3f\xbc\xfd\xf0\xe9\xcb\x7f\x05\x5f\x5f\x7d\xf8\xfc\xeb\xdb\xe0\xd7\xf7\x1f\xde\x1f\x17\xb8\x73\x9a\x73\x1c\x6d\x92\x70\xfc\xe5\xd5\xbb\x77\xef\x8f\x2a\x43\xb4\x78\x15\x3d\x49\xa2\x7a\x3e\x99\x80\x34\xe1\x41\xf0\xdb\xdb\xd7\x9f\x5f\x1d\xfd\x47\xf0\xfe\xc3\xe7\x4f\x5f\x8e\xdf\xbe\x09\x3e\x7c\x7a\xf3\x8f\x5f\xdf\x06\x7b\x01\xd1\xf2\x1a\x04\x70\xd8\xa8\x8b\x7b\x55\x2e\xdc\x01\x70\x60\xec\x7c\x33\x82\x31\x1d\x74\x82\x22\xc9\x98\xd4\x65\xd1\x70\x91\xab\xed\x58\xc6\x0b\x48\x12\x46\xe4\x16\x2d\x63\x06\x9a\xc7\x31\xb0\x0c\x72\xdb\x7f\xbc\xa3\x22\x9d\x1a\x98\xd2\x0e\xd7\x1b\x07\x16\xa2\xd4\x3f\xb0\xeb\x56\xa0\x39\x3c\x3c\xd4\x78\xfe\xf9\x4f\x90\xc6\x99\x2d\xab\x6d\xbb\x05\xf2\xdd\x83\x9d\xeb\x83\x1d\x45\x81\x23\xda\x2e\x6e\xe7\xf1\x20\x34\x5f\x7c\xf9\xf4\x5d\x4e\xc3\x0a\xfa\xc7\xaf\xb2\x0c\x5d\x8d\x09\x57\x7f\x8b\xce\x43\x49\x85\xfd\x31\x8e\x31\x5d\x89\x35\xfc\x15\xa6\x4d\x8f\x25\x71\x53\xf8\xc5\x82\x77\x60\xcc\xcb\xbe\x09\x4a\x07\x16\xbf\x26\x5f\xd1\x6f\xd5\xc4\x25\xde\x3e\x1b\x54\x08\xd5\x7b\x57\xb7\x45\x3e\xf1\x42\x15\x5d\xfd\xe7\x47\x16\x61\xef\x74\x38\x98\x49\xeb\x40\xce\x3d\x69\x9e\x0c\x74\x6f\x58\x72\xb1\x41\x77\xe0\x10\x66\x7b\x7b\x07\x32\x18\xfe\x80\x2e\x49\x92\x27\x40\xf3\x64\x81\x33\xe9\xf2\x27\x38\x61\xd9\x15\x44\x48\x20\xe0\x28\x49\x63\xcc\xb5\x40\x34\xaa\xd4\x36\x48\x22\x43\xcb\x25\x09\x37\x40\x55\x6d\xfe\xec\xbe\x9b\xc8\xf8\x88\x25\x29\xa3\x98\x8a\xcd\xed\x64\xff\x81\xb6\x93\x66\xb7\xb9\xd9\xa0\x95\xee\x9f\xe7\xc3\x37\x38\x47\x71\x6e\xdc\xe2\x4d\xd3\xf9\xff\xd3\x1a\xdd\x9e\x8c\x69\x10\x84\x76\x45\x79\xf0\x06\xf1\xf5\x82\xa1\x2c\x6a\x9d\xed\xd3\xa1\x54\xb7\x1d\x15\xc1\xd2\x08\x67\x5c\xc5\x78\x17\x6b\x16\x63\x88\xec\xe8\xf1\xce\xce\xad\x26\x3e\x46\xe3\x4c\x41\x1b\xdc\x4b\x33\xa7\xcf\xfd\xbb\xcc\xf4\xc4\x43\x1e\x4c\x9e\x80\x5d\x85\x27\x93\xd3\xa1\x0f\x11\x0b\xf3\x04\x53\x31\x5e\x61\xf1\x36\xc6\xf2\xeb\xeb\xab\xf7\xd1\x60\xb7\x98\xe5\xee\x70\xb8\xa9\x03\x4f\x1f\xde\xa5\xea\x2e\x5f\xc5\x6c\x5b\x17\x73\x76\x57\xd1\x75\x40\xdf\x4b\x78\x1d\x38\x77\x16\xdf\x23\x96\x24\x8c\xb6\xce\x71\x7a\x37\xc0\xb3\x20\xf8\x4a\x22\xfc\x1a\x65\xad\x90\x9f\xdd\x0d\xf2\x7e\x10\x1c\xb3\xf4\x23\x3a\x27\x2b\x24\xe5\xa3\x15\xfe\xf3\xbb\xc1\x7f\x1a\x04\x9f\xd1\x0a\x1f\x31\x2a\xb6\xad\xfd\x8b\xbb\x41\x7f\x16\x04\xef\x18\x13\xb8\x9d\x2d\x2f\xef\x06\xf8\xf9\x43\x19\xda\xe7\xbd\x18\xda\xe7\x15\x43\x5b\xa6\x92\xc3\x18\x71\x7e\x84\xe2\x58\x65\x87\x75\xe6\x97\x86\xd8\x87\x23\x46\xb9\xc8\xf2\x50\xb0\x4c\x7a\xd6\x64\x09\x83\xc7\x45\x33\xd8\x2f\x6c\x59\xe9\x28\x7b\x8a\x75\xc6\x2e\x54\x26\xf7\xf8\x2a\xc5\x6f\xb3\x8c\x65\x03\xef\x08\x51\xca\x04\xc8\xa0\x1a\x10\x28\xa4\x80\x38\xa0\xc2\xd3\xf1\x64\x68\x0d\xd7\x3b\x0e\x69\x29\xe3\x9c\x2c\x62\xec\x20\xd0\x59\xc7\x01\xc7\xf1\xd2\x57\xc0\x0a\xd2\xe4\xa3\x2a\xf6\x2f\x78\x89\x33\x4c\x43\x4b\x82\x58\x13\x0e\x6b\xc4\xe9\xae\x80\x05\xc6\x14\x08\x25\x82\xa0\x98\xc8\x70\x60\x04\x3c\x4f\x71\x36\x18\x56\x7a\x84\x2a\x91\xa7\x49\x33\xae\x97\x9a\xc1\x4f\x3f\xc1\xc0\xb8\xa5\xea\xb7\xf4\xfa\x3c\x9d\x2b\xf0\x1c\x97\xb5\x6c\x2b\x67\x09\xbf\xe8\xc7\x73\x90\x14\x1f\x54\x67\x4c\xe8\x1a\x67\x44\xf0\x01\xcf\x17\x47\x92\x47\xbe\x26\x4b\x7d\xb7\x53\x35\xc0\xcb\x06\x78\x5c\x41\x21\xa9\xdb\x68\x94\xae\x74\xeb\xd2\x7c\x95\x7d\xa5\xef\x94\x61\xce\x95\xc3\x9c\x73\x01\x98\x88\x35\xce\x60\x81\x0b\x7f\xbf\x5c\x2b\x1f\xe4\x5a\x7a\xf0\x33\xd4\x68\x51\xac\xb2\xd4\x97\xc9\x15\x38\xb4\xf9\x16\xbd\xe5\x0d\x1c\x02\x2b\xe4\x96\x43\xa4\xff\x13\x96\x2b\x3f\x2f\xdd\xa1\x92\x39\x6e\xee\x50\xe7\x16\xe1\x22\x23\xc2\x49\x26\x42\x35\x01\xa9\x3d\x29\xe9\x4b\x29\x56\xba\xcc\x35\xf4\x71\x2c\x3e\x5b\x12\x3e\x2d\xe1\x97\xe6\xe7\x2d\x0b\x54\xd2\x36\x0e\x02\x35\x13\x65\x0c\xca\x2e\x6a\xbd\xcd\x67\x32\x81\x62\x13\x97\x71\x95\xca\x35\x23\x42\xa1\xd8\x54\x7c\xb8\x58\x93\x70\x0d\x59\xcd\x53\x49\xd1\x0a\xfb\x12\x42\x82\xce\x30\x97\x93\xa4\x58\xcb\x90\xca\x5b\xca\x8e\x1c\x67\xe7\x38\x53\xf9\xa2\x98\x70\x81\x29\x57\x59\xce\x04\x73\x8e\x56\xd2\xb1\x9e\x4c\xe0\xb7\x35\x56\x29\xfc\x4c\x05\x76\x48\xaa\x44\xc8\x12\x42\x57\xb6\x9b\x0f\x79\x1a\x21\x81\x35\x6e\x89\x75\x57\x61\x93\x96\x19\x42\x96\x65\x98\xa7\x4c\xc5\xee\xf1\xd5\xd8\x84\x31\xe5\xa4\x9c\x38\x66\x10\x14\x7e\xb7\x8e\x64\xc0\x91\xf6\x62\x84\x0f\x4e\xb7\x83\x1d\xd5\xad\x00\x51\xf4\x1a\xa4\x19\x4b\xb9\x05\xa3\x40\x6d\x58\x31\xa9\xea\x7e\x39\xc0\x82\x92\x1f\x65\x6b\x95\x29\x38\xdc\x66\x61\x34\x84\x92\x1a\x9d\x0e\xd4\x4f\x35\x7a\x17\xa8\x02\x38\xd6\xac\x3a\x5a\x23\x1d\x70\x94\x73\x4f\xf8\xca\xa5\xd6\x92\x61\x22\xa7\x43\x33\x9c\x0b\x24\xf0\x38\x54\xc3\xc7\xba\xed\xa0\x36\xc6\xc6\x48\x8d\x83\x4c\xa3\x43\x98\xfc\x4c\x26\xf0\x8e\xc4\xb1\x5a\xc1\xc2\xf7\x2b\xe5\x24\x45\x5c\xa8\x90\x6b\x0c\x09\x96\xfe\x1a\x97\xb2\xc0\xb1\x00\x46\xe3\x2b\x20\xfa\x8c\x67\x49\x32\x2e\x20\xe1\x2b\x7f\x13\x36\x5a\x0a\x9c\xe9\xc3\xb9\x52\x0a\x09\x07\xcc\xa5\x1e\x12\xbe\xc6\xd1\xb8\x32\x46\x2a\x5e\xc2\x57\x63\x8b\x4d\x1a\xa8\x22\x9c\xdf\xe4\x93\x41\xa2\xc2\x60\x85\x04\xc9\xd0\x9c\x83\x60\x90\x66\xf8\x5c\x8a\xa1\x0a\x17\xa5\x9a\xe7\xbc\xa2\x00\xb2\x9d\xb0\xdc\xd5\x8e\x71\x0d\xb6\xe6\xf3\x38\x46\x0b\x1c\xcb\x45\x3b\x39\x3d\xa8\xf5\x31\x6c\xdd\xde\xc9\x00\x92\xc4\x70\x2c\xf8\xc9\xde\xa9\xfa\x7e\x03\xc8\x96\xee\xb5\xfe\x46\x5c\xe0\x10\x1c\xce\x35\x0a\x49\x45\x50\x36\xfa\xa7\x19\x0b\x31\xe7\x2c\x53\x01\xf8\xf1\xa7\x37\x9f\x60\x70\x96\x67\x67\x2c\x21\x9c\x0c\xe7\xf0\xf8\xf1\xe3\x3a\xea\xc9\x04\x3e\xe7\xa2\x2a\x2a\x60\x8e\x63\x17\x78\x45\x28\x95\xf6\xc2\x9c\xfd\xe9\xd5\x19\xc3\xb1\x54\x30\xb3\x40\xbc\x69\x71\x28\xbe\x54\xe2\xa4\xc0\xf9\x4d\x48\xb5\xe9\x5b\x31\xcc\x2d\x36\x4c\xa3\xfa\x02\x4a\x9b\x36\x50\xf9\x27\x39\x59\x9c\xd8\x44\xcc\x08\xa6\x07\x40\xe0\x6f\x87\xb0\x27\x77\x98\x4e\x1e\xf8\x89\xb7\x50\x81\x54\x53\x0a\xe4\xc9\xe4\x14\xfe\x56\x15\x17\x83\xea\x00\x46\x23\xd2\x24\xb7\x35\xf9\x1a\xe7\x94\xaf\xc9\x52\x0c\x12\x9c\x9c\x90\xd3\xb1\x20\x09\x1e\xf3\x7c\x21\xc3\x24\xba\xaa\x3c\x2d\x66\xf1\x4c\x1a\x9a\x26\xc8\x55\xa9\xec\x15\x74\x8b\x2c\x6f\xe2\x50\xdb\xf1\x0d\xd4\xb5\xc2\x50\x1d\xb6\x41\xb9\xae\x8b\xa2\x31\x79\x58\x7c\x95\x56\x6f\xf0\x0d\xb4\xdd\x93\xae\x81\x26\x79\x6e\xfe\xfa\x16\xff\xbc\x30\x98\x7a\xd3\x9f\x4c\xe0\x1f\xca\x4a\x1b\x83\x65\xc3\xe9\xba\x5c\x69\x77\xaf\x4a\xd6\x75\xcd\xb0\x5a\xcd\x90\x2e\x95\xab\x18\x98\x46\x1b\x2a\xd1\x62\x02\xd5\x0e\xd0\xc5\x02\x7e\xc1\x09\x3b\xc7\x8e\x2d\xc6\x3a\xa6\x37\x35\x1c\xe6\xac\xda\x64\xcd\x76\x01\x25\x2c\xa7\x02\xf0\x65\x88\x71\xa4\x77\xef\x98\x24\x44\xd4\x27\xaa\x68\x69\x10\x6b\xe5\xb8\xf6\xa1\x36\xdd\x54\x43\x4b\x45\x37\x59\xdf\xda\xb7\x4d\x78\x3b\x21\xe8\x3e\xea\x7a\xfb\x56\x32\x4e\x73\xbe\x76\xd6\xb8\xa6\x90\x1b\x2d\xdb\x95\x72\x63\xfe\xbd\xc2\x6e\xe3\xd7\x26\x92\x36\x3d\x6d\x65\x5d\x01\xa0\xd8\x76\x0a\x18\xbf\x9b\x66\x97\xab\x76\x5d\x73\xdf\x32\x6c\x1c\x85\x8a\xef\xd6\xe4\xb8\x19\xd7\xfa\x50\xa9\xfd\x6f\x78\xf1\x95\x85\x67\x58\x0c\xbc\x0b\x3e\x9f\x4c\x64\x58\x14\xb3\x50\xa5\x46\xc6\x6b\xc6\x05\xfc\x0c\xde\x04\xa5\xc4\xdb\x9c\xb8\x06\x33\x66\xd4\x38\xdb\x15\xbc\x6a\xeb\x6c\x52\x1d\xe5\x0a\xf0\x15\x1c\xc2\xbf\x7f\xfd\xf4\x71\x9c\xa2\x8c\x63\xdd\x5b\xb1\xbd\x61\x85\xa4\x86\xdf\x98\x97\xac\xe8\x73\xa8\xf4\xb9\x7e\xa2\x23\xb5\x59\x79\xb3\x6d\x3a\xdd\x64\x35\xa1\x51\x5b\xea\x2e\xb3\x02\xbc\x61\x70\xdb\x38\x16\xc6\x8c\xe3\xad\xeb\x54\x52\x23\x7d\xd9\x63\x92\x60\x96\x8b\xc1\xc6\x4a\xfb\xb0\xbf\xb7\xb7\x57\x47\xda\x84\x5f\x0f\x2d\x04\xeb\x0d\x89\x3e\x28\x13\xbb\x8d\x08\x7b\x1e\x5f\xc5\xea\x9a\x93\x26\x31\x94\xc1\x5e\x17\xb0\x37\xae\xe9\xf3\x8e\xa7\x40\x8c\x0a\x44\xa8\x8c\xf6\x59\x74\xe5\xf9\xbd\x01\x96\xd1\x6c\x50\x40\xf7\x7c\x38\xb9\x17\xe4\xed\xe9\x71\x37\xe1\x69\x33\xe2\xe6\x81\xc9\x88\x3f\x20\xf2\x7a\x4e\xd4\x92\x50\x79\xfc\xf0\x84\x6c\x26\x4f\x1b\xce\x06\x7c\x95\xd1\xb1\xff\xaf\x6b\x8d\xa7\x6d\xaf\x37\x6f\x08\x31\xab\x8a\xf2\xb0\x53\x71\x32\xb5\x76\x16\xfa\xb7\xe2\xe2\xe9\x70\xab\x16\x29\xa2\x55\xd1\xa7\x4b\x71\xb9\xab\x4c\x26\xf0\x55\xb0\xcc\x24\x36\x74\x6f\xe3\xb0\x99\x60\xba\x65\xa3\x9c\xb7\x58\x3e\xbd\x35\xcf\xe1\xe4\xb4\x1e\xcd\xc8\x8f\xdd\x1e\xe7\x70\xd2\x0c\xa0\x00\x32\x07\x8f\x5f\x71\x81\x93\x89\xc6\x38\x21\x34\xe7\xd8\x6b\x06\x2b\x3f\x0b\x14\x9e\xad\x32\x96\xd3\xe8\x88\xc5\x2c\x9b\x83\x97\xad\x16\x68\xb0\xff\xd2\x87\xe9\xcb\x67\x3e\x4c\x9f\x3d\xf5\x61\x6f\xbc\x3f\x1d\x6e\x03\xc2\xb2\x08\x67\x5b\x01\xbc\xd8\x36\x3e\x65\x84\x8a\xd7\xbd\x00\xe9\x36\x9d\x9b\x01\xfd\x9d\x9d\xe3\xac\x0e\xed\x2f\xcb\xe5\xb2\xdb\xd0\xfa\x6c\x66\xb3\x3d\xdf\xfe\xb7\x95\x9d\x0e\x3b\x7e\x23\x91\x58\xcf\x61\xda\xde\x59\xca\x86\x94\x9c\xc6\x0e\xd7\xf5\xc7\xd7\x75\x50\x85\x57\xf4\x1d\xa4\x33\x9d\xa5\x93\xf7\x74\x21\x79\x7a\xac\xd1\xde\x41\x38\x7d\x78\x29\x17\x74\xef\xb9\x12\xcd\xdb\x4a\x66\x65\xf4\x8b\xbd\x3b\x09\xe6\xad\x61\x74\x99\x49\x07\x38\x0f\x20\x96\xd3\x67\x53\x7f\xfa\xf2\x85\x3f\xdb\x7b\xf6\x7b\x8a\x65\xbb\xab\x6d\xbf\xba\x0e\x91\x7e\x6a\x62\xea\xc9\x04\x2a\xe9\xd3\x57\x14\xc5\x57\xff\x6b\xcc\x73\x3d\x2b\x8d\x68\x54\xc9\x4c\x6b\x9b\xbd\xbb\x2d\x35\x6d\xb0\x94\x5e\x7e\x99\xa0\xe4\x80\xe0\x02\x2f\xb8\x72\xe3\xb7\x24\xd3\xfd\x4a\x26\x7d\x93\x2a\x6e\x51\x48\xe2\x44\x46\x74\xe2\xaa\xc4\xc7\xa8\x0b\x3a\x66\x9c\x3b\x64\xd5\xfd\x4a\x7d\x3a\x65\x27\x58\x10\x2b\x63\x7e\xbb\x53\xe9\x44\x40\x23\xe5\x6e\x56\xd6\x40\x06\xc2\xcd\x49\x02\x8e\x2a\x0c\x51\xfe\xa6\x7b\xc6\x50\x46\x4f\x16\x93\x5b\x19\xb1\xe3\x2c\x64\x91\x62\x3f\xd8\xb9\xee\x7a\x50\x5e\x16\x4d\xe8\xf2\x83\xe2\x40\xd4\xfa\x28\xa6\x24\xaf\x52\x0b\x58\x54\x1c\x48\x57\xe0\x14\x0e\x61\x50\xc9\xee\x57\x8a\x18\x9e\xfd\xf1\xeb\x42\xdb\x2a\x25\x8d\xc3\x5a\x2b\x94\xfc\x51\x34\xf1\x9d\x8a\x26\x1e\xe8\x0c\x7f\xd6\xcb\x19\xfe\xec\xc7\x19\xfe\x8f\x33\xfc\x1f\x67\xf8\x7f\x90\x33\xfc\xc9\x04\x3e\x60\x9a\xbf\x17\x38\x29\x76\x4f\x44\x81\xc8\xdf\x4b\xc5\x6b\xd9\xec\xec\xbf\xca\x2f\x50\xa7\x66\x31\xa3\x2b\xe9\x39\xf0\x7c\x91\xc8\x3e\x72\x0c\xf7\xe5\x74\x9c\xc3\xf8\xe2\x40\xbd\xc0\xd2\xf5\x3c\xdd\x0e\xd8\x7a\x9c\x6e\x3b\x55\xb2\x4b\xfa\x74\x1c\x27\xa9\xaf\x7d\x34\x1f\x82\x0c\x0b\x37\xba\x6e\x3c\x69\xb7\xb0\xdc\x0c\x67\x71\x30\x17\xc4\xaa\x1e\x1b\x65\x2b\x55\x8f\x68\xcf\x17\x7c\xf9\x84\xc3\x21\xe8\x62\x6b\xd9\x6b\xe8\x43\x70\x86\xaf\xe0\x10\xf6\x0e\xf4\xb7\xbf\xaa\xd1\xfa\xc7\xcf\x3f\x6f\xe6\xc1\x24\x80\x13\xd9\x74\xea\xc2\xd7\x4f\x9c\xe4\xc0\x4e\xcd\xfd\xcc\xb0\x34\xbf\x03\x35\x53\xfd\xe5\x6e\x05\x01\x63\x94\xa6\xf1\x95\xb3\x16\x3e\x9c\xc8\x8e\xa7\xe3\x90\xd1\x10\x89\x81\xa4\x70\x38\x1c\x1a\x6e\xda\xbf\x7d\xe6\xf8\x66\x37\xa4\xe2\x62\xe2\xd9\x54\xcf\xcd\xd9\xb7\x9b\x80\xa1\x1e\x61\x49\xba\xbc\x25\x52\x26\x48\x73\x45\xd5\x55\x8c\x95\x80\x7d\x44\x09\x2e\xb8\xa5\x9f\x0b\x7c\x29\x3a\xe4\x9b\x6e\x42\x6b\x52\x93\x4b\x04\x4b\x34\x0a\xd7\xf8\x3c\x63\x74\x14\xb1\x0b\xea\x0d\x4f\x87\xb5\xe2\x06\x5d\x23\x0c\x51\xc6\x52\xd9\x07\x94\xb6\xea\xba\x08\xab\xab\x28\xc3\x65\x65\x7f\x65\x7c\x8f\x39\xf7\x0a\x83\xdc\x6b\x09\xf7\xe6\x47\x1e\x4b\x76\x50\x74\xae\x27\x11\xc8\x19\x76\x49\x01\x57\x68\x8f\x14\xed\xee\xfd\x8b\x56\xaa\x7d\x47\xe6\xd5\xb3\x2d\x89\xfb\x3e\x85\x5f\xe3\xda\xc8\xf4\x0f\x87\xa7\x6e\x16\xd1\xd7\xb6\x4f\x0a\x5e\xbb\x21\x70\xec\xe2\xb0\x12\xc2\xda\xbb\x47\xc6\x16\xde\x3d\x22\xd2\xfb\x4a\xb9\xa7\x68\xa9\x2b\xfa\xbb\xdb\x82\x6b\x42\xe4\xef\xc2\x8c\xf4\xc5\xc1\x52\x3c\x38\x89\xf0\xc8\x48\xc7\xfd\xb4\x7f\xfa\xbc\xdc\x31\xda\x92\xd1\x5e\x61\x06\xbc\xb9\xd4\xd6\xd1\x9a\x25\x6e\x0e\xd4\x93\xe6\x40\x36\xfd\xbd\xfa\xdc\x8a\xd9\xbc\x57\x6b\xe7\x15\xc1\xe6\xd4\xdb\x4c\x99\x7b\xeb\x0c\x2f\x25\x25\x45\x8c\x3c\x1d\xaf\x45\x12\x7b\xa5\x5c\x75\xc9\x93\xdf\x85\x98\x59\x07\x62\x66\x35\x62\x74\xe2\xe6\xde\x44\xdd\x69\x15\x71\x44\x44\xd3\x2a\x7e\xc4\xe2\x82\x65\x67\x84\xae\x1a\xd7\xb2\x4f\xee\xb9\xa8\xda\xb8\x47\x8b\x3e\x35\xee\xfd\x8e\xcc\x8b\x30\x3f\x13\x2c\x6d\xe2\xdf\xf1\x65\xca\x58\xfc\xe0\xbc\xb3\x68\xda\xf8\x26\x54\xfb\x1f\x89\x67\x2a\x8e\x68\xe2\xd8\xaf\x6c\xc5\x1f\x9c\x5f\x1a\x49\x1b\xb7\x62\xb6\xe2\x7f\x24\x5e\x85\x31\xa3\x8d\xbc\x7a\x1d\xb3\xf0\x2c\x5c\x23\x42\x1f\xde\xd2\x96\xb8\xb6\x98\xda\x45\xd9\xe9\x81\x6d\x6d\x49\xce\x16\x63\x5b\x92\x53\xb7\xb6\x0f\x45\xce\x7e\x17\x72\xf6\xbf\x1b\x39\x4f\xbb\x90\xf3\xf4\xbb\x91\xf3\xac\x0b\x39\xcf\xfe\x50\x5b\xe3\x02\x65\x23\x75\x8c\x31\x62\x4d\x3a\xf8\x55\x1d\x09\x7b\x86\xc0\x53\x73\x61\x77\x32\x29\x6a\x1c\x4a\x77\x51\x7a\x6a\x0b\x94\xb9\x1e\xa3\xf4\x17\x6d\x47\xc7\x65\x34\x8f\x7a\xf7\x1a\x8b\xc2\x92\x78\x94\x44\xa3\x7d\x88\xf1\x52\x04\xa1\xda\x39\xfa\x82\x6d\x41\x02\x0f\x33\x16\xc7\xa3\x73\x82\x2f\xee\xed\x99\x3a\xf0\x29\x3a\x97\x3c\xa4\xe8\x3c\x10\x44\xa8\xfb\xb8\xbd\x88\xaa\xc7\x89\xc0\x05\xc8\xfe\xc2\xe8\x25\x1a\xa5\xe8\xc2\xeb\x43\xa3\x78\x8a\x68\xa9\x54\xff\xc6\xe0\xad\x8a\x74\xf3\xa4\x3c\xee\xf1\x86\xa7\x15\x61\xae\xb9\x9d\x8e\x6a\x49\x75\x72\xba\x72\x71\x15\x4b\x99\xff\x66\x0e\x76\xe7\xb0\x67\xce\x0a\x7b\xd1\xbb\x8e\x11\xab\xae\x27\x29\x6e\xdc\x77\xac\xcb\xe9\x28\x3b\xaa\xee\x49\x86\x4a\x81\x54\x45\x58\x93\x28\xc2\x74\x94\x66\x84\x0a\x28\xda\x7a\xd4\x05\x8d\x4a\x9f\xfc\xdd\x17\xac\xb5\x5d\xc3\xea\xaa\x91\x48\x2e\xaf\xb1\x2c\x3a\x0c\x2c\x4c\x91\xb5\x45\xee\x19\xdc\xf3\x3f\xef\x19\x5c\xa5\x62\xeb\x1e\x27\x71\x7f\xa2\x7b\xf7\x72\x1f\xa9\x16\xaa\x95\xbb\x89\x60\xa9\xb4\x82\xb6\x61\x63\x53\xa9\x8e\x72\xb6\x96\x4a\xc3\xad\x37\x98\x8e\xef\xaf\x10\x2c\x0d\x28\x3a\xef\x22\xf3\x1d\x21\x4a\x7b\xdf\x55\x3b\x6f\x02\xa9\x29\xf3\xfa\xa5\x0e\x04\x5b\xad\xba\x6d\x47\x37\x01\x75\xb2\xb9\x1e\xf4\x01\xd0\xd9\x8b\x16\x28\xe3\x9b\x9b\x84\xb6\x21\x81\xfe\x28\x9b\x65\xe6\x62\x2c\x49\xd5\xe2\x64\x4c\x6d\x13\x5e\x29\x7b\x45\xbf\x26\x83\xf3\xe2\xc7\x9b\x0b\x7e\x1c\xc2\xff\x38\x84\xff\x71\x08\xff\xe3\x10\xfe\x5f\xec\x10\x5e\x55\x0c\xaa\xb7\x8f\xaa\x73\xf3\x38\xc3\x28\x52\xf7\x96\x73\x8e\xc7\x45\x87\xe2\x88\xd6\x71\x6d\x54\xb8\xbd\x71\x40\x6f\xab\x0a\x89\xba\x7d\xaf\xaf\xc7\x43\x86\x63\x24\x70\x64\xae\x1a\xaf\x11\x55\x17\xe8\xcd\x5b\xbb\xaa\xd0\xbb\x9e\xd1\x57\x87\x6d\x3d\xa9\xaf\x76\xed\x7a\xfb\xbd\x3a\xea\x3b\x5d\x81\xbf\xc7\xf5\x18\xe7\x9a\x81\xb9\x59\xa5\x66\x60\x0e\x11\xd5\x35\xe1\x86\x93\x42\x29\x45\xf3\xea\x39\xb1\x14\xf9\x5a\x3f\x5d\xcb\xea\xf6\x93\x4f\x36\x4e\x03\xef\x79\x2d\x47\x99\xcf\xde\x0f\x7d\x1d\xbe\x34\x5e\xbb\xaa\xf5\x32\x97\xaa\x36\x2f\x2d\x6e\x5c\x5e\xed\x37\xd5\xd3\x78\x80\xdf\x5f\x80\x7b\x19\xa4\x88\xe2\xb8\xcf\xfc\xce\x65\x8f\x39\x98\xf5\xac\xf0\xa4\x37\x2b\x16\xfa\xc8\x2a\x94\x67\xb0\x3a\x29\x35\xca\xc8\x6a\x2d\x40\xb1\x24\x10\x8c\xc5\x0b\x76\xd9\xcb\x3c\x9c\xe3\xf2\x7e\x72\x5d\x21\x8b\x63\x94\x72\x3c\x8a\x09\x3d\xeb\x23\xe1\x41\xea\xb5\x1b\x79\xea\x0d\x87\xff\x8a\x95\x1b\x6a\xb5\x3c\x3b\xc1\x5e\x04\x00\xb9\x10\x47\xdd\x23\xcd\x5b\x2c\xdb\x85\xf4\x24\xd7\xde\xb0\xf1\xe6\x99\x4d\x23\xfe\xa5\xe1\x0a\x83\x27\x0d\xb6\xa5\x69\xee\x4e\xbc\xde\xd5\xc6\x8e\x8b\x5c\x08\xd6\xd8\x03\x65\x04\x8d\xf0\x65\x8a\x68\x84\x23\x9d\x81\x8f\x39\xf6\x36\x36\x84\xde\x94\xb7\xe0\xe9\xbf\x56\x79\x4d\xe3\x22\xdb\xc5\x29\x93\x88\xe5\x80\x5e\xb2\xb0\xfd\x9b\xb1\x98\x3d\x90\x0d\x93\x80\xa5\xf9\xba\xf7\xbc\xef\x97\xfa\xee\x33\xf9\x7d\x19\x98\x4b\x38\x7d\xf0\x2a\x44\xf4\x1c\x71\xaf\x7a\x88\xe6\xfe\xbf\x94\x76\x75\xf9\xbd\xd5\x3f\x32\x2f\xd7\x91\x7f\x1a\x6a\xc0\xba\x5d\x25\xed\x72\x8f\xc9\xbe\xf1\xba\xe2\x7c\xdf\xa7\x14\xec\x0b\xbb\x70\x22\x16\x19\x75\x96\xf1\x8a\x8c\x8c\xf5\x75\xa9\xea\xc6\xa6\xcb\x87\x75\x9b\x0d\x53\x24\x9c\xe6\xd8\x64\x56\x0f\x4e\xbe\xb0\x0b\xd7\xf3\x9f\xd5\x42\x92\x2f\xec\x62\x6b\xdd\xf0\xac\x63\xe1\xf0\x17\x76\xf1\xa7\xae\x19\x9e\xdd\x2e\x84\x9a\x35\x57\x0d\xcf\xb6\x97\x0d\xcf\x8a\x2f\x7d\x16\x0e\xdf\xd2\x85\x99\x3d\x88\x0f\x63\x6c\x46\xc6\xd4\xd9\xad\xca\x42\x37\x62\xf3\xc1\x03\xef\x8e\xb5\x9a\xb3\x2d\xc5\x9a\x5f\xd8\xc5\x7d\x94\xd3\xb9\x6a\xef\xa6\x15\x0a\x05\x95\xf2\x6c\x5f\x9c\x67\xef\x26\x5a\x85\x74\xc7\x36\x2b\xe6\x7e\x5d\x31\x9d\x41\xae\x5c\xed\xd7\x14\xd4\xe9\xd8\xac\xa8\x33\xc3\xe9\x7d\xcd\x9d\xd9\x8d\xaa\xea\x40\x6c\x55\xd9\x59\x37\x9d\x9d\x19\xa5\x9d\x95\x5a\x3b\x33\x6a\x3b\x33\x3f\xb7\x28\xee\xac\xae\xb9\xb3\x1b\x55\x77\x56\xe8\xee\xac\x50\xde\xfd\xdb\x29\xef\x7e\xb3\xf2\xee\x6f\x57\xde\xfd\xe2\xcb\xf7\xac\xfa\xb7\x7a\x25\x03\xc5\x9e\x0b\x2f\xfa\x0c\xc2\xa5\x5e\x8c\x7a\x2b\xaf\xb0\x87\x82\x12\x5e\x10\xe3\x65\x2f\x1e\xc8\x7a\xdf\x39\x25\x6b\xae\x85\xe8\xa3\xe4\x22\x41\x71\x5c\xd6\x5c\x7c\x15\x48\x10\x2e\x48\xc8\x3d\xe9\x9d\xfc\xa9\xeb\x22\x24\x72\xe5\x4f\x6c\x7f\xeb\x48\x5f\xe5\x84\x12\xdd\x66\x6e\x75\x3b\x66\xa8\x55\x63\x99\xba\xa5\xe7\x20\xbf\xf0\xc4\x7c\xb9\xe4\xa3\xe9\xac\xe5\x6e\x7d\x51\xa6\xf5\x41\xbf\xd1\x2d\x57\xef\x73\xea\xfe\x1a\x0f\x4f\x5c\xa5\x0a\x75\x4c\x68\x6b\x1f\xe9\xbc\xda\xb7\xb2\xec\x17\x1b\xa4\xf3\xba\xd0\xe6\x71\x0f\x54\xa8\xf9\x15\x0b\x41\xe8\x8a\x43\xbd\x4e\xb3\x42\x75\x19\xd3\x37\xf6\xe9\xbb\x06\xb0\x20\xab\x5e\xaf\x79\x3b\xb2\x1a\xde\x6f\xd0\x87\x2a\xfc\x8e\xb2\x69\xde\xd9\x51\xbc\x38\xad\xf3\x7b\x3c\xee\x2b\x9d\x06\x61\x03\x43\x4f\xfb\x4d\xb8\xdc\x3f\x0a\xde\x96\xaf\x40\x84\x6e\xe6\x2b\xea\x0e\xe9\xac\x83\x47\x6a\x7d\xae\x46\x97\xd4\xf1\xb3\xbe\xff\x4b\x15\x36\x9c\xbc\x4a\x85\xc5\xcb\x3f\x6f\x49\x97\x7e\x6f\xd4\x3d\x6a\xb9\x1e\xa8\xd4\x61\xfa\x50\xa5\x0e\xd3\x5e\x4a\x1d\xa6\xd5\x22\x31\x19\xf1\x98\x37\x70\x95\xc1\xce\x52\x3f\x70\x6f\xa7\x49\xd2\x4c\x3f\xc7\xd7\xd5\x4f\x6e\x5d\x09\x36\xbd\xc1\xf4\x6b\xfc\xb7\xb8\x97\x7a\x13\x40\xeb\x9a\xe6\x71\xac\x0f\x5a\xe4\xaf\x23\x96\x5e\xe9\x53\x97\xd9\xde\xf4\x85\xfa\x87\x7a\x57\x6c\x84\xad\x2f\xf8\x2a\x17\x6b\x96\xf1\x4e\xd5\xb7\xdb\xf0\x6f\xb7\x5f\x7b\x37\xda\xaf\x6a\x5d\x54\xf9\x0f\xf0\x9d\x0e\x0f\xfe\x2f\x00\x00\xff\xff\x2a\x50\xb6\x34\xe7\x78\x00\x00") +var _jsBundleJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x1a\x6b\x8f\xdb\x36\xf2\xaf\x68\x59\xc0\x27\x62\x69\xc5\xf6\x66\x93\x40\xae\x1a\xb4\x69\x71\xed\xe1\x9a\x14\xb7\xc1\xf5\x83\x61\x18\x94\x34\xb2\x79\xa1\x49\x81\xa4\xf6\x01\xaf\xfe\xfb\x81\xd4\xc3\xf2\x5a\x7e\xec\x06\xc5\xe1\x80\x04\xc8\x2e\x45\xce\x0c\x87\x33\xc3\x79\x71\x2f\xb2\x42\x24\x86\x49\xe1\x03\xde\x34\x63\xcf\xf8\x02\x6f\x58\xe6\xab\x99\x98\x63\x05\xa6\x50\xc2\xb3\xe3\x00\xee\x73\xa9\x8c\x9e\xde\x52\xe5\xc9\xc8\x4e\x45\x1b\x16\x0a\xc2\xc3\x8b\x31\xa9\x17\xc3\x4d\x59\x4e\x6b\x24\xb0\x48\x09\xe5\xdc\x97\x0d\x2e\x91\x64\x3b\x36\x98\xc8\x80\x47\x17\xa3\xed\x5c\x69\x69\xab\x68\x53\x4e\x4d\xb0\x8e\x80\x98\x20\x89\x14\x31\x41\x1a\x6d\x59\x25\x8a\x08\xbc\x31\x81\xb4\x43\xfc\xf8\xf8\x29\xfe\x0f\x24\x26\x48\x21\x63\x02\xfe\x50\x32\x07\x65\x1e\x1c\xd8\x26\x91\x22\x63\xcb\x42\xd1\x98\x83\x63\x52\x14\x6b\xa8\xbf\x46\x64\x09\x26\x14\x25\x2e\x89\x09\x44\xd4\x15\x45\xc5\x04\x0c\x06\x10\x2c\x16\xa0\x7f\x97\x69\xc1\xe1\x7d\x0b\x81\x37\xcd\x01\xed\xa6\xb4\xe0\xa6\x0c\x7b\x16\x5b\x39\x98\x20\xf5\x15\x41\x14\x11\x85\x89\xb2\xdb\xc9\xee\x71\x4c\x8b\x52\x9f\x24\x57\xd2\x48\xf3\x90\x43\xb0\xa2\xfa\xd3\x9d\x68\xce\x54\xc9\xd2\x22\x58\x1a\x79\x84\x10\x31\xbe\x09\x74\x74\x85\x4b\x7f\xb6\x4b\x11\x1a\x89\x46\xbf\x89\x0c\x94\x90\x25\xe9\x02\x10\x85\x37\xa8\xd0\xe0\x69\xa3\x58\x62\xd0\x54\x05\xa9\x6f\x08\x4a\x10\xd9\x3f\x89\x2c\x31\xa9\xd7\xd3\xbe\x75\xba\x5d\xa7\x7d\xeb\xc9\x76\x3d\xee\x5b\xe7\x25\x76\x36\x25\x22\xe5\x8f\x30\x91\x91\xaf\x02\xe1\x0b\x4c\xba\x3a\xa9\x61\x45\xc1\x79\x14\x45\xf0\xf8\x78\x2b\x59\xea\x8d\xec\xb8\xc4\x84\xf6\x0a\xf4\xe2\x47\xa5\xe8\x43\xc0\xb4\xfb\xed\x03\x7e\x7c\x84\x80\x83\x58\x9a\xd5\xf7\xe3\xc7\xc7\xb1\x45\xae\xbf\xdf\x1b\x1f\x70\x08\xc1\x9a\xe6\xbe\x95\x6f\x12\xed\xf3\x59\xa9\xc7\x17\x41\xa2\x80\x1a\xf8\xf7\x47\x99\x02\xf6\x27\x04\xa5\xec\x16\x11\x94\x70\xa0\x2a\x63\xf7\x08\x97\x84\x47\x93\xd1\x68\x57\xe4\x3d\x3a\x09\x3e\xc8\x75\x2e\x05\x08\x73\x42\x3b\xfd\x26\x6e\x08\xda\x9a\x27\x22\x9b\x5b\xca\x0b\x6b\xd8\x4f\xc5\x59\x4b\x93\x46\xca\x7f\x8d\xa7\x32\xa0\x81\x02\x91\x82\xf2\xfb\x0f\x34\x7e\x43\x68\x40\x31\x49\x65\x52\xac\x41\x98\x60\x09\xe6\x17\x0e\x76\xf8\xd3\xc3\x6f\xa9\x8f\x52\xaa\x57\xb1\xa4\x2a\x45\x18\x9f\x60\xbc\x75\x2a\xb5\x08\x58\xe6\x5f\xf8\xe0\x31\xa1\x0d\x15\x09\xc8\xcc\x33\x18\x9b\x95\x92\x77\x9e\x80\x3b\xef\xf3\x43\x0e\xbf\x28\x25\x95\x8f\x3e\x50\x21\xa4\xf1\xac\xc9\x7b\xd4\x4b\x38\xd5\xda\xa3\xda\xa3\x5e\x43\x12\xe1\xb2\xa5\x2e\xb7\xd4\xa1\x43\xee\x5f\x90\x81\x02\x91\x34\x34\xcd\x8a\x69\x6f\x45\xb5\xf8\x9b\xf1\x62\x00\xe1\x31\xc1\x0c\xa3\x9c\x69\x48\xbd\xa1\xa7\x8b\x1c\x94\x8f\x77\x20\xec\xfe\x90\x22\x5c\xdf\xe5\x0b\xf3\xf8\x88\xa4\x13\x1b\xba\x88\xec\x1d\xb5\x47\x18\x0c\x50\xcb\xd5\x76\xf6\x3d\x84\x66\xcb\x22\x6d\x59\xec\x83\x1d\x0c\xac\x61\x5f\x44\x91\xe9\x97\xc6\x8d\x65\xcd\x83\xfb\x5c\x81\xd6\x96\xdc\xba\xd0\xc6\x03\x66\x56\xa0\xbc\x18\xdc\xb5\xf0\xa4\xea\x88\x87\x78\x56\x7c\xe8\xb2\xd9\x01\x4f\x61\xeb\x58\xa2\xda\xa0\x2a\xbd\xfb\x66\x30\xe8\x78\x1d\xe7\x36\xb5\x51\x45\x62\xa4\x0a\x6b\xab\x82\x1d\xdf\x39\x26\x77\x8a\x99\xc6\x8f\xee\x7a\xd9\x51\x59\x62\x62\x06\x83\xda\xba\x02\x0d\xe6\x8f\x86\xf4\xa7\xec\x7d\xef\xac\x93\x4d\x68\xbd\xad\xe3\x62\xb1\x88\x0c\x76\xa1\x20\x89\x94\x3f\xc1\x84\x3b\x1b\x4e\x30\x61\x91\xf2\xc7\x98\x14\x91\xf2\xaf\x31\xd1\x91\xf2\xdf\x60\x92\x46\xca\x7f\x8b\x49\x16\x29\xff\x1d\x26\x71\x65\xf6\xab\xca\x8b\xc4\xbb\x5e\xa4\x13\xe4\x14\xde\x08\xdf\x5a\x04\x31\xd5\x7d\xa1\x91\xac\xbe\xa1\x72\xb4\x6e\xac\x70\xa3\x7a\x8f\x06\x45\x9e\x52\x03\x1f\x56\xd4\xde\xe1\xa7\x01\xc3\x44\x34\xd0\x86\x1a\x08\x12\x07\x10\xac\x61\x2d\xd5\x03\x51\x4f\xe7\x8d\xa2\x59\xc6\x92\x29\xcb\xfc\xca\x87\x5d\x58\x37\xb4\x06\x7b\x65\xb4\x0d\x6c\x9c\xc6\xc0\x75\x34\x9b\x13\xd5\x19\x9b\x20\xa5\x86\x6a\x30\x7a\x36\x9a\xbb\x71\x05\xd1\x33\x3b\xcd\xa4\xf2\x2b\x17\xd0\x12\x6e\xd8\x91\x9d\xa9\x5c\xc9\x04\xb4\x96\x8a\x24\x91\xa8\x1d\xe1\x70\x3c\x4d\x7e\x88\x46\x83\x01\x0b\xe2\x1f\x1a\x5e\xea\xb5\xe9\x70\x98\xe0\x76\xae\x10\x7a\xc5\x32\xe3\x8b\x59\x32\x0f\x0c\x5b\x43\xa0\x8b\xd8\x5e\x7c\xb1\xec\xcc\xd5\x54\xaf\x31\x6e\x4f\xf3\x7c\xcc\xfd\xb3\xef\xd2\x70\x36\x8a\x7b\x84\xd1\x82\xc9\x2d\x58\xa3\x4f\x27\x7c\x6a\x2d\xf1\xc6\xaa\xc7\xdf\x54\xfa\x09\x37\x95\xa4\x42\x43\x6a\x4d\x85\xaa\x2c\x71\xb9\xa3\x2b\x0b\x30\x18\xf8\x4f\xe4\x13\x45\x11\x0b\xe2\xee\x7c\xb5\x79\xe7\xe8\xcd\x44\xcf\x89\xb6\xb0\x87\x96\x2c\x5a\x4d\x27\x2f\xf4\xca\x6f\x38\x79\x2a\xc3\xdd\xf9\x3e\x0d\xbc\x0c\xbd\x87\xe9\x5d\x42\x87\xf5\x50\xc3\xb5\x16\xd7\x80\x9e\x2d\x7f\x5c\x12\x1b\xb7\x12\x29\x04\x24\xa6\x1b\x9d\xad\xa1\x43\x64\x1d\xe6\x9f\x10\xdf\xc8\xe4\x0b\x18\x1f\xdd\xe9\xf0\xd5\x2b\x74\xc9\x65\x42\x2d\x58\xb0\x92\xda\x5c\xa2\x57\x34\x67\xc8\x7a\x42\x29\xd6\xa0\x35\x5d\x42\xcf\x35\xfe\xc7\xcd\xa7\x8f\x41\x4e\x95\x06\x1f\x1c\xf3\xb8\x8e\xbf\x3e\x0b\x12\xec\x1b\xfc\xf8\xb8\xeb\x0a\x5c\xc2\x60\x69\x26\x5c\x6a\xe8\x49\x1c\x34\x98\xcf\x6c\x0d\xb2\x30\x7e\xe7\x0c\xe4\x0a\xae\x70\x69\x8f\x95\x34\x69\xc0\xcf\x2c\xfd\x5d\x16\xc2\xf4\xd0\xe8\x20\xfa\xb5\x2c\x6c\x0c\x3f\x9c\xa6\xc4\x87\xd2\x14\x29\x0c\x65\xc2\xc6\x0d\x99\x3e\x20\x72\x02\x7c\x4d\x99\x58\xb4\x38\x88\xcc\xfa\xe1\xc7\x6f\x48\x61\x93\x86\x83\xab\xfa\xe8\x6a\x1a\x50\x62\x63\x58\xf5\xa3\xb1\x84\x5d\xc7\x59\x1e\xc1\xcf\x02\x8a\xe7\x95\x8d\x38\x94\xe8\xa9\x31\x6d\x2a\xc3\x0f\x67\x73\xd2\xd8\x66\x38\xab\x26\x43\xa4\x1f\xb4\x81\xf5\xab\x0a\xf4\x15\x13\x85\x06\x44\x62\x9a\x7c\x59\x2a\x59\x88\xf4\x83\xe4\x52\x85\x48\x2d\x63\xea\x5f\xbd\x23\xde\xf8\xdd\x35\xf1\xc6\xd7\xaf\x89\x37\x0a\xae\xc6\x18\x91\x58\xaa\x14\xd4\x31\xb0\xb7\x18\x91\x5c\x32\x61\x7e\x7a\x06\xe8\x59\x0c\xb4\xe0\xbf\xca\x5b\x50\x7b\x38\xdf\x65\x59\xb6\x03\xb0\xb7\xff\x64\x32\x22\xcd\xff\xf1\x2e\x9b\x7f\xb2\xd4\xac\xc2\xb1\x93\x58\x38\x9b\x97\xf3\xb2\xbd\x92\x47\xe5\x99\x4f\xf2\x57\xbf\x89\xd8\xb2\xf1\xb9\x82\x3f\x28\x4e\xe2\xbd\xb3\x07\x1a\xbd\x71\xc2\xec\x97\xe5\x0e\xcc\xdb\xd1\x11\x51\x1e\x82\x3c\x63\xef\x2d\xf4\x4b\x05\x39\xbe\x1e\x93\xf1\xbb\xb7\x64\x32\xba\x3e\x2d\x48\x7b\xef\xcb\xe6\x6a\xfb\x86\x00\x26\xa6\xf4\x79\x40\x31\x9e\x9a\x80\x46\xab\x6f\x89\xf5\xb7\xc4\xfa\x2f\x4a\xac\x8f\xd5\xea\x59\x5d\x3c\x1e\x49\xbc\x47\x36\xf1\x76\xc9\x75\x71\x30\xb9\xae\x7b\x28\x84\x92\x64\xba\xcd\xb2\x9b\xb4\x94\x47\x54\x2d\x5d\x6d\xd9\x64\x4e\x44\x47\x55\x8d\xce\x6d\x3a\x3f\x9a\xa6\xdf\xf3\x69\x7a\x79\x89\xf5\x2c\x9d\x6f\x81\x67\xe9\xbc\x49\xde\x54\xf4\x24\x5d\x0f\x68\x9e\xf3\x07\x1f\xc8\xcc\x4e\xce\x83\x44\x8a\x84\x1a\x5f\x63\x8c\xcf\x08\x96\xc5\x5e\xf4\xe3\x0c\x55\xc1\x68\x76\x10\x84\x9e\x84\x60\x88\xa0\x8c\x7a\xe8\x92\x5a\x2b\xc8\x75\xe0\xae\xdb\x47\xba\x76\x99\x4f\x35\x65\xe0\xde\x90\x83\x14\xaa\x20\x9c\x51\x2f\xa3\xc3\x64\x05\xb7\x4a\x8a\x61\x2a\xef\x04\xc2\xf3\x36\x1c\xba\xb4\xa4\xdd\x61\xc5\x78\xaa\x40\xb4\x8d\xb1\x1e\xa2\x05\x47\x04\x09\x7a\xeb\x39\xe0\xc5\x1a\x44\x81\xb6\xc4\xd2\x7d\x62\x7d\x9d\x98\xd3\x92\x03\x5c\x62\x3c\x77\xcd\x14\x45\xa4\x4f\x49\x82\x0f\xb8\x3c\x92\x3e\x47\x35\x2d\xfb\x9a\xa5\x30\xac\xb8\x3f\xa0\x03\x9b\x78\xec\x24\x16\x8d\xfc\x43\x94\xd1\xe1\x4a\xae\x01\x11\xab\x80\x10\xfd\xea\xc6\xcd\x81\xc3\xd3\x5a\x47\x3f\x37\x6d\x90\x31\x22\x9b\x95\x82\x2c\xdc\x76\x46\xc6\xc1\xca\xac\x39\xda\xa6\x2c\xe7\xd0\x99\xec\xd3\x99\x34\x74\xe6\x07\x49\x1d\x3f\x22\xa4\xcc\x34\x47\xfc\x08\xe6\x4e\xaa\x2f\x4c\x2c\x3b\x07\x3d\xcd\x5f\x17\xad\xe6\x4f\xb4\x53\x0d\x7f\x2f\x64\x2f\x05\xfd\xc5\xc8\xbc\xe1\xf0\xf3\x7d\x2e\x25\x7f\x16\x77\x0d\x4a\xcd\x99\x71\x9f\x5f\xc9\x95\x73\xc0\x0d\x4f\xff\x94\x4b\xfd\x2c\x8e\x2a\x84\x9a\x1f\x2e\x97\xfa\x2b\xb9\x49\xb8\x14\x2d\x37\x3f\x71\x99\x7c\x49\x56\x94\x89\xe7\x19\xeb\x16\x6f\x6b\xad\xf1\x76\xee\x19\xe6\xba\xa5\x34\xe9\xa1\x34\x79\x11\xa5\xab\x1e\x4a\x57\x2f\xa2\xf4\xba\x87\xd2\xeb\x17\x51\xba\xee\xa1\x74\xfd\xb5\xd7\x31\xa6\x6a\xe8\x2a\x93\xa1\x6c\x34\x7a\xe3\x8a\x0f\x4b\x13\x97\x24\x7b\x8e\x1f\x6c\xea\x39\x3e\x5c\xa7\xc3\x2b\x8f\x43\x66\x16\x89\xbd\x0b\x27\x30\x1a\x40\x4f\x27\x4a\x72\x3e\xbc\x65\x70\x77\xd0\x83\xb6\x58\x82\xde\xc6\x54\x79\x82\xde\x2e\x0c\x33\xf6\x7e\x1c\x93\x26\xd2\xcc\x40\x03\x78\x32\x40\x66\x74\x98\xd3\x3b\x74\x44\x41\x3a\xa7\xa2\xd1\xd1\xdf\xa5\xf7\x8b\xcd\xcf\xa0\x58\x7b\x3f\x6f\x7b\xd1\xf3\x3d\xef\xd9\xea\x7d\xa3\xcd\x03\x87\x70\x53\x15\x17\xa1\xcb\xa4\x0e\xaa\x8f\x75\x2a\xd5\x43\xc2\x70\x55\xb1\x8d\x3c\x0b\x1b\x83\xbc\x15\x4b\x53\x10\xc3\x5c\x31\x61\xbc\x76\xed\xa4\x22\x2a\x02\x50\xe5\xac\x87\x19\x4a\x31\x26\x1b\x96\x86\xc8\xee\x65\x2d\xc8\x11\x2f\x5d\xc1\x7b\xde\xb3\x4e\x6f\xaa\x27\x4f\x3e\xbb\x9c\xfb\xf2\x61\x64\xbe\x10\xf4\xb6\x3d\xc2\x21\x38\x6b\x3b\x3b\x82\xd9\x07\x74\x64\xd0\x39\x94\x3c\x23\x97\xcb\x8e\x19\xee\x83\xb6\xf9\x19\xf2\x8e\x40\x6d\x4d\x30\xa6\x4a\x3b\x33\xb2\xb2\x5e\x54\xff\x9c\x8a\xea\x9d\x4a\xab\x07\x25\x39\x84\x76\x7f\xb6\x74\x9d\x25\x3b\x8b\xcb\x6f\xef\x20\xdf\xca\xb5\xff\xd1\x3b\xc8\x39\xe5\xd8\x0b\xde\x3a\xce\xeb\x49\x76\xfa\x73\xae\x03\xeb\x1a\xa2\x3e\x75\x6d\x53\xb2\xb1\x87\x0a\xdb\x3a\xc7\x8a\xd4\x35\x40\x9a\x19\xfb\x51\x9e\xd5\xcb\xac\x2b\x9c\xce\x6e\xae\x09\xdb\xf9\xae\x1b\xb2\xfe\x29\xcf\xbd\x57\x88\x9d\xf2\xd1\xf7\x8b\x9c\x0a\xe0\xa7\xe3\xe3\xfd\xe9\x68\xb7\x9a\xd4\x1e\xa9\x5b\xfb\x1d\xe1\xb8\x2d\x74\xaa\xd8\x3b\x54\x6c\xb9\x32\x9e\xe3\x67\x61\xa4\xe4\xb1\xbc\x3f\xb6\x5d\x5b\x88\x1d\x0d\xd4\x89\xe4\x9c\xe6\x1a\x86\x9c\x89\x2f\x47\x42\x16\xdb\xab\x43\x8b\x1c\xd9\xea\xfa\xa5\x55\xa8\x65\x0f\xa5\x4a\xe6\xae\x9e\x3d\x5e\x67\xb7\x70\xc3\x27\x5e\xff\x18\x9f\x77\xd6\xe7\xad\x10\x6e\xf2\x82\xef\x2c\x1d\x6a\x68\x43\x23\xec\xec\x5e\xb9\xf5\xb8\x30\xc6\x86\x62\x44\x15\xa3\x43\xb8\xcf\xa9\x48\x21\x45\x36\x75\xe3\x1a\x8e\x66\x90\x4e\x57\x2d\x97\x7f\x65\x49\xdd\xc4\xa0\x36\x0b\x38\xcc\xd4\x99\x16\xc0\xe5\xb3\xd4\x6f\xc1\xad\xe6\x0f\xee\x5c\x27\x51\xc7\x38\x6b\xee\x4c\x22\x85\x01\x61\x8e\x6c\x9c\x50\x71\x4b\x35\xea\xe4\xd4\xdb\x1f\x3d\x32\xac\x7c\x4f\x04\xae\xf5\xd0\x7d\x10\x38\xdc\x70\xed\x76\x1f\xfe\xbf\xdb\x58\xcf\xbe\x83\x95\x1a\x94\xb4\xf9\xbf\xcd\x92\xf6\xac\x14\x79\xe8\x9c\x0e\x4e\xb7\x70\xf9\x4a\x11\x66\x5b\x11\xc6\xd1\x68\x1a\x7f\xcf\xa7\xf1\xe5\x25\xce\x66\x71\x57\x84\xf1\xb3\x45\x98\xbd\xb4\x13\x58\xcb\xc8\xfa\xde\xb3\xca\xab\xd3\xa1\x22\xa7\x4b\x18\x9e\x2a\xa2\xea\xd4\xda\x42\x2d\x6c\xc5\x76\x04\x74\x75\xd5\x66\xba\xfd\xb5\xd1\x91\xba\x6a\x4d\x39\x6f\x0a\xab\x1b\x43\x0d\xd3\x86\x25\x36\x0d\xee\xb8\xf6\x67\xd5\x48\xb6\x60\xd9\x7d\xcb\x3b\xde\xa5\x38\x52\x30\xd7\xa5\xed\x1b\xcf\x0e\xf4\xba\x1e\xdc\xeb\xe1\x78\xd2\x54\xcf\xbf\xbb\x37\x3b\xaf\xd0\x74\x09\x5e\xef\x3b\x9e\x4b\x42\x10\x67\x02\xd0\x6e\xfa\xb1\xfb\x67\x1a\xcf\x69\xa6\xdc\x80\x31\x4c\x2c\xb5\xb7\xed\xa5\x7c\x77\x5e\x7b\xa1\xc5\x9c\xec\x60\xbe\xa8\x9d\x70\x86\x74\xea\x47\x38\xaf\x7e\xb5\xf3\xfa\x1e\xe6\x4e\xc9\xa7\xc6\x3d\xc1\x64\xed\xef\x9b\xd0\x44\x99\x2d\x8c\x4e\xfb\x0d\xf7\xd6\x95\x7d\x45\x11\x4b\x3b\x45\xec\xd8\xfd\xb1\x9b\x4d\x88\x69\x95\x10\xcb\x23\xb5\xac\xdc\x53\x52\x26\xa5\x01\xf5\xa4\xa7\xbf\x0f\x56\x5f\xe1\x82\xf3\x2a\x1f\x43\x04\x7d\x90\xf9\x43\x95\x9b\x4d\x46\xe3\xb7\xde\xe7\x15\x78\x4b\x39\x84\xe6\x1e\xfe\x58\x98\x95\xb4\xa5\x25\xe9\x27\x3a\x7e\x43\x84\x13\x5f\x89\xcb\x39\x9e\xfe\x37\x00\x00\xff\xff\x73\xa3\xf3\xd7\x96\x2b\x00\x00") func jsBundleJsBytes() ([]byte, error) { return bindataRead( diff --git a/dashboard/assets/js/bundle.js b/dashboard/assets/js/bundle.js index 0e7dfb08e3..58d6dd3ea9 100644 --- a/dashboard/assets/js/bundle.js +++ b/dashboard/assets/js/bundle.js @@ -1,566 +1 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 3); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = Inferno; - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isNullOrUndefined; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return mapChildren; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Clearfix; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return MEMORY_SAMPLE_LIMIT; }); -/* unused harmony export TRAFFIC_SAMPLE_LIMIT */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_inferno__); -// isNullOrUndefined returns true if a variable is null or undefined. -var isNullOrUndefined = function isNullOrUndefined(variable) { - return variable === null || typeof variable === 'undefined'; -}; - -var mapChildren = function mapChildren(children, mapFunc) { - return !Array.isArray(children) || children.length < 1 || children.length === 1 ? mapFunc(children) : children.map(mapFunc); -}; - - -var Clearfix = function Clearfix() { - return Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "div", "clearfix"); -}; - -var MEMORY_SAMPLE_LIMIT = 200; // Maximum number of memory data samples. -var TRAFFIC_SAMPLE_LIMIT = 200; // Maximum number of traffic data samples. - -/***/ }), -/* 2 */ -/***/ (function(module, exports) { - -module.exports = Inferno.Component; - -/***/ }), -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_inferno__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_Dashboard__ = __webpack_require__(4); - - - -// Renders the whole dashboard. - -__WEBPACK_IMPORTED_MODULE_0_inferno___default.a.render(Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_1__components_Dashboard__["a" /* default */]), document.getElementById('dashboard')); - -/***/ }), -/* 4 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_component__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_component__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Common__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__SideBar__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__TopNavigation__ = __webpack_require__(6); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__PageContent__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__Footer__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_inferno__); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - - - - -// Dashboard is the main component, which renders the whole page, -// makes connection with the server and listens for messages. -// When there is an incoming message, updates the page's content correspondingly. - - -var Dashboard = function (_Component) { - _inherits(Dashboard, _Component); - - function Dashboard(props) { - _classCallCheck(this, Dashboard); - - var _this = _possibleConstructorReturn(this, _Component.call(this, props)); - - _this.updateCharts = function (msg) { - var memory = _this.state.charts.memory; - var traffic = _this.state.charts.traffic; - - // Fill the dashboard with the past data. metrics is set only in the first msg, - // after the connection is established. - if (msg.metrics !== undefined) { - // Clear the arrays to prevent data confusion with the previous connection. - memory.labels = []; - traffic.labels = []; - memory.datasets[0].data = []; - traffic.datasets[0].data = []; - - var mem = msg.metrics.memory; - var traff = msg.metrics.processor; // TODO (kurkomisi): !!! - - // Put the past data to the beginning of the arrays. This prevents confusion with the next msg data, - // which goes to the end. - for (var i = mem.length - 1; i >= 0 && __WEBPACK_IMPORTED_MODULE_1__Common__["b" /* MEMORY_SAMPLE_LIMIT */] > memory.labels.length; --i) { - memory.labels.unshift(mem[i].time.substring(mem[i].time.length - 5)); - traffic.labels.unshift(mem[i].time.substring(mem[i].time.length - 5)); - memory.datasets[0].data.unshift(mem[i].value); - traffic.datasets[0].data.unshift(traff[i].value); - } - - _this.setState({ charts: { memory: memory, traffic: traffic } }); // Update the components. - return; - } - - // Put the new data to the end of the arrays. - if (msg.memory !== undefined) { - // Remove the first elements in case the samples' amount exceeds the limit. - if (memory.labels.length === __WEBPACK_IMPORTED_MODULE_1__Common__["b" /* MEMORY_SAMPLE_LIMIT */]) { - memory.labels.shift(); - traffic.labels.shift(); - memory.datasets[0].data.shift(); - traffic.datasets[0].data.shift(); - } - memory.labels.push(msg.memory.time.substring(msg.memory.time.length - 5)); - traffic.labels.push(msg.memory.time.substring(msg.memory.time.length - 5)); - memory.datasets[0].data.push(msg.memory.value); - traffic.datasets[0].data.push(msg.processor.value); - - _this.setState({ charts: { memory: memory, traffic: traffic } }); // Update the components. - } - }; - - _this.reconnect = function () { - var server = new WebSocket("ws://" + location.host + "/api"); - - server.onmessage = function (event) { - var msg = JSON.parse(event.data); - if (Object(__WEBPACK_IMPORTED_MODULE_1__Common__["c" /* isNullOrUndefined */])(msg)) { - return; - } - _this.updateCharts(msg); - }; - - server.onclose = function () { - return setTimeout(_this.reconnect, 3000); - }; - }; - - _this.componentDidMount = function () { - return _this.reconnect(); - }; - - _this.render = function () { - return Object(__WEBPACK_IMPORTED_MODULE_6_inferno__["createVNode"])(2, "div", "container body", Object(__WEBPACK_IMPORTED_MODULE_6_inferno__["createVNode"])(2, "div", "main_container", [Object(__WEBPACK_IMPORTED_MODULE_6_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_2__SideBar__["a" /* SideBar */]), Object(__WEBPACK_IMPORTED_MODULE_6_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_3__TopNavigation__["a" /* TopNavigation */]), Object(__WEBPACK_IMPORTED_MODULE_6_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_4__PageContent__["a" /* default */], null, null, { - "charts": _this.state.charts - }), Object(__WEBPACK_IMPORTED_MODULE_6_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_5__Footer__["a" /* Footer */])])); - }; - - _this.state = { - charts: { // Stores the state of the charts. - memory: { - labels: [], - datasets: [{ - label: "system/memory/inuse", - backgroundColor: "rgba(38, 185, 154, 0.31)", - borderColor: "rgba(38, 185, 154, 0.7)", - pointBorderColor: "rgba(38, 185, 154, 0.7)", - pointBackgroundColor: "rgba(38, 185, 154, 0.7)", - pointHoverBackgroundColor: "#fff", - pointHoverBorderColor: "rgba(220,220,220,1)", - pointBorderWidth: 1, - data: [] - }] - }, - traffic: { - labels: [], - datasets: [{ - label: "p2p/InboundTraffic", - backgroundColor: "rgba(3, 88, 106, 0.3)", - borderColor: "rgba(3, 88, 106, 0.70)", - pointBorderColor: "rgba(3, 88, 106, 0.70)", - pointBackgroundColor: "rgba(3, 88, 106, 0.70)", - pointHoverBackgroundColor: "#fff", - pointHoverBorderColor: "rgba(151,187,205,1)", - pointBorderWidth: 1, - data: [] - }] - } - } - }; - return _this; - } - - // updateCharts Analyzes the incoming message, and updates the charts' content correspondingly. - - - // reconnect establishes a websocket connection with the server, listens for incoming messages - // and tries to reconnect on connection loss. - - - // componentDidMount initiates the establishment of the first websocket connection after the component is rendered. - - - // render renders the components of the dashboard. - - - return Dashboard; -}(__WEBPACK_IMPORTED_MODULE_0_component___default.a); - -/* harmony default export */ __webpack_exports__["a"] = (Dashboard); - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SideBar; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_component__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_component__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Common__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_inferno__); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - -// MenuItem renders an item for a Menu component and the belonging submenu items, if there is any. - - -var MenuItem = function (_Component) { - _inherits(MenuItem, _Component); - - function MenuItem() { - var _temp, _this, _ret; - - _classCallCheck(this, MenuItem); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.render = function () { - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "li", null, [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "i", "fa " + _this.props.className), _this.props.text, Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "fa fa-chevron-down")]), - // Render dropdown menu only if there are children. - Object(__WEBPACK_IMPORTED_MODULE_1__Common__["c" /* isNullOrUndefined */])(_this.props.children) || Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "ul", "nav child_menu", Object(__WEBPACK_IMPORTED_MODULE_1__Common__["d" /* mapChildren */])(_this.props.children, function (child) { - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "li", null, child); - }))]); - }, _temp), _possibleConstructorReturn(_this, _ret); - } - - return MenuItem; -}(__WEBPACK_IMPORTED_MODULE_0_component___default.a); - -// Menu renders a menu component. - - -var Menu = function Menu() { - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "ul", "nav side-menu", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, MenuItem, null, null, { - "className": "fa-home", - "text": "Home", - children: [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Dashboard1", { - "href": "dashboard1.html" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Dashboard2", { - "href": "dashboard2.html" - })] - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, MenuItem, null, null, { - "className": "fa-edit", - "text": "Networking", - children: Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Networking", { - "href": "networking.html" - }) - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, MenuItem, null, null, { - "className": "fa-desktop", - "text": "Txpool", - children: Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Txpool", { - "href": "txpool.html" - }) - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, MenuItem, null, null, { - "className": "fa-table", - "text": "Logs", - children: Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Logs", { - "href": "logs.html" - }) - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, MenuItem, null, null, { - "className": "fa-clone", - "text": "Blockchain", - children: [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Blockchain1", { - "href": "blockchain1.html" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Blockchain2", { - "href": "blockchain2.html" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Blockchain3", { - "href": "blockchain3.html" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Blockchain4", { - "href": "blockchain4.html" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Blockchain5", { - "href": "blockchain5.html" - })] - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, MenuItem, null, null, { - "className": "fa-bar-chart-o", - "text": "System" - })]); -}; - -// SideBar renders a sidebar component. -var SideBar = function SideBar() { - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "col-md-3 left_col", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "left_col scroll-view", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "navbar nav_title", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", "site_title", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "i", "fa fa-paw"), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "span", null, "Go Ethereum Dashboard")], { - "href": "dashboard.html" - }), { - "style": { border: 0 } - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_1__Common__["a" /* Clearfix */]), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "main_menu_side hidden-print main_menu", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "menu_section", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, Menu)), { - "id": "sidebar-menu" - })])); -}; - -/***/ }), -/* 6 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TopNavigation; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_inferno__); - -// TopNavigation renders a top navigation component. -var TopNavigation = function TopNavigation() { - return Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "div", "top_nav", Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "div", "nav_menu", Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "nav", "", Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "div", "nav toggle", Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "a", null, [" ", Object(__WEBPACK_IMPORTED_MODULE_0_inferno__["createVNode"])(2, "i", "fa fa-bars")], { - "id": "_______menu_toggle" - })), { - "role": "navigation" - }))); -}; - -/***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_component__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_component__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Common__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_inferno__); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - -// Chart name is already in use. -// ChartComponent renders a chart component and updates it, when the related data changes. - - -var ChartComponent = function (_Component) { - _inherits(ChartComponent, _Component); - - function ChartComponent(props) { - _classCallCheck(this, ChartComponent); - - var _this = _possibleConstructorReturn(this, _Component.call(this, props)); - - _this.componentDidMount = function () { - return _this.state.chart = new Chart(_this.data, { - type: _this.props.type, - data: _this.props.data - }); - }; - - _this.render = function () { - if (!Object(__WEBPACK_IMPORTED_MODULE_1__Common__["c" /* isNullOrUndefined */])(_this.state.chart)) { - _this.state.chart.update(); - } - - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", _this.props.className, Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "x_panel", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "x_title", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "h2", null, _this.props.text), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "ul", "nav navbar-right panel_toolbox", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "li", null, Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", "collapse-link", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "i", "fa fa-chevron-up"))), - // Render dropdown menu only if there are children. - Object(__WEBPACK_IMPORTED_MODULE_1__Common__["c" /* isNullOrUndefined */])(_this.props.children) || Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "li", "dropdown", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", "dropdown-toggle", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "i", "fa fa-wrench"), { - "href": "#", - "data-toggle": "dropdown", - "role": "button", - "aria-expanded": "false" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "ul", "dropdown-menu", Object(__WEBPACK_IMPORTED_MODULE_1__Common__["d" /* mapChildren */])(_this.props.children, function (child) { - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "li", null, child); - }), { - "role": "menu" - })]), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "li", null, Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", "close-link", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "i", "fa fa-close")))]), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_1__Common__["a" /* Clearfix */])]), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "x_content", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "canvas", null, null, null, null, function (data) { - _this.data = data; - }))])); - }; - - _this.state = {}; - return _this; - } - - return ChartComponent; -}(__WEBPACK_IMPORTED_MODULE_0_component___default.a); - -// Row renders a row component of charts only if there is any chart. - - -var Row = function (_Component2) { - _inherits(Row, _Component2); - - function Row() { - var _temp, _this2, _ret; - - _classCallCheck(this, Row); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.render = function () { - return Object(__WEBPACK_IMPORTED_MODULE_1__Common__["c" /* isNullOrUndefined */])(_this2.props.children) || Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "row", [" ", _this2.props.children, " "]); - }, _temp), _possibleConstructorReturn(_this2, _ret); - } - - return Row; -}(__WEBPACK_IMPORTED_MODULE_0_component___default.a); - -// PageContent renders a component for the page content. - - -var PageContent = function (_Component3) { - _inherits(PageContent, _Component3); - - function PageContent() { - var _temp2, _this3, _ret2; - - _classCallCheck(this, PageContent); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return _ret2 = (_temp2 = (_this3 = _possibleConstructorReturn(this, _Component3.call.apply(_Component3, [this].concat(args))), _this3), _this3.render = function () { - return Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "right_col", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "", [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "page-title", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "div", "title_left", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "h3", null, ["Go Ethereum Dashboard", Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "small", null, "Statistics")]))), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_1__Common__["a" /* Clearfix */]), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, Row, null, null, { - children: [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, ChartComponent, null, null, { - "className": "col-md-6 col-sm-6 col-xs-12", - "text": "Memory usage system/memory/inuse", - "type": "line", - "data": _this3.props.charts.memory, - children: [Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Settings 1", { - "href": "#" - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(2, "a", null, "Settings 2", { - "href": "#" - })] - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, ChartComponent, null, null, { - "className": "col-md-6 col-sm-6 col-xs-12", - "text": "Inbound traffic p2p/InboundTraffic", - "type": "line", - "data": _this3.props.charts.traffic - })] - }), Object(__WEBPACK_IMPORTED_MODULE_2_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_1__Common__["a" /* Clearfix */])]), { - "role": "main" - }); - }, _temp2), _possibleConstructorReturn(_this3, _ret2); - } - - return PageContent; -}(__WEBPACK_IMPORTED_MODULE_0_component___default.a); - -/* harmony default export */ __webpack_exports__["a"] = (PageContent); - -/***/ }), -/* 8 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Footer; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Common__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_inferno__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_inferno___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_inferno__); - - -// Footer renders a footer component. - -var Footer = function Footer() { - return Object(__WEBPACK_IMPORTED_MODULE_1_inferno__["createVNode"])(2, "footer", null, [Object(__WEBPACK_IMPORTED_MODULE_1_inferno__["createVNode"])(2, "div", "pull-right", "Copyright 2017 The go-ethereum Authors"), Object(__WEBPACK_IMPORTED_MODULE_1_inferno__["createVNode"])(16, __WEBPACK_IMPORTED_MODULE_0__Common__["a" /* Clearfix */])]); -}; - -/***/ }) -/******/ ]); \ No newline at end of file +!function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(e,t){e.exports=Inferno},function(e,t,r){"use strict";r.d(t,"c",function(){return o}),r.d(t,"d",function(){return a}),r.d(t,"a",function(){return c}),r.d(t,"b",function(){return l});var n=r(0),o=(r.n(n),function(e){return null===e||void 0===e}),a=function(e,t){return!Array.isArray(e)||e.length<1||1===e.length?t(e):e.map(t)},c=function(){return Object(n.createVNode)(2,"div","clearfix")},l=200},function(e,t){e.exports=Inferno.Component},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r.n(n),a=r(4);o.a.render(Object(n.createVNode)(16,a.a),document.getElementById("dashboard"))},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=r(2),l=r.n(c),i=r(1),u=r(5),s=r(6),d=r(7),f=r(8),b=r(0),h=(r.n(b),function(e){function t(r){n(this,t);var a=o(this,e.call(this,r));return a.updateCharts=function(e){var t=a.state.charts.memory,r=a.state.charts.traffic;if(void 0!==e.metrics){t.labels=[],r.labels=[],t.datasets[0].data=[],r.datasets[0].data=[];for(var n=e.metrics.memory,o=e.metrics.processor,c=n.length-1;c>=0&&i.b>t.labels.length;--c)t.labels.unshift(n[c].time.substring(n[c].time.length-5)),r.labels.unshift(n[c].time.substring(n[c].time.length-5)),t.datasets[0].data.unshift(n[c].value),r.datasets[0].data.unshift(o[c].value);return void a.setState({charts:{memory:t,traffic:r}})}void 0!==e.memory&&(t.labels.length===i.b&&(t.labels.shift(),r.labels.shift(),t.datasets[0].data.shift(),r.datasets[0].data.shift()),t.labels.push(e.memory.time.substring(e.memory.time.length-5)),r.labels.push(e.memory.time.substring(e.memory.time.length-5)),t.datasets[0].data.push(e.memory.value),r.datasets[0].data.push(e.processor.value),a.setState({charts:{memory:t,traffic:r}}))},a.reconnect=function(){var e=new WebSocket("ws://"+location.host+"/api");e.onmessage=function(e){var t=JSON.parse(e.data);Object(i.c)(t)||a.updateCharts(t)},e.onclose=function(){return setTimeout(a.reconnect,3e3)}},a.componentDidMount=function(){return a.reconnect()},a.render=function(){return Object(b.createVNode)(2,"div","container body",Object(b.createVNode)(2,"div","main_container",[Object(b.createVNode)(16,u.a),Object(b.createVNode)(16,s.a),Object(b.createVNode)(16,d.a,null,null,{charts:a.state.charts}),Object(b.createVNode)(16,f.a)]))},a.state={charts:{memory:{labels:[],datasets:[{label:"system/memory/inuse",backgroundColor:"rgba(38, 185, 154, 0.31)",borderColor:"rgba(38, 185, 154, 0.7)",pointBorderColor:"rgba(38, 185, 154, 0.7)",pointBackgroundColor:"rgba(38, 185, 154, 0.7)",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(220,220,220,1)",pointBorderWidth:1,data:[]}]},traffic:{labels:[],datasets:[{label:"p2p/InboundTraffic",backgroundColor:"rgba(3, 88, 106, 0.3)",borderColor:"rgba(3, 88, 106, 0.70)",pointBorderColor:"rgba(3, 88, 106, 0.70)",pointBackgroundColor:"rgba(3, 88, 106, 0.70)",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:"rgba(151,187,205,1)",pointBorderWidth:1,data:[]}]}}},a}return a(t,e),t}(l.a));t.a=h},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}r.d(t,"a",function(){return f});var c=r(2),l=r.n(c),i=r(1),u=r(0),s=(r.n(u),function(e){function t(){var r,a,c;n(this,t);for(var l=arguments.length,s=Array(l),d=0;d
{/* The chart will be generated here after the component is mounted (this.componentDidMount). */} - { - this.data = data - }}/> + this.data = data}/>
; diff --git a/dashboard/bundler/stats.json b/dashboard/bundler/stats.json new file mode 100644 index 0000000000..cd01e25cfe --- /dev/null +++ b/dashboard/bundler/stats.json @@ -0,0 +1,1103 @@ +{ + "errors": [], + "warnings": [], + "version": "3.5.6", + "hash": "61db9ea94c74f6edf66d", + "time": 1797, + "publicPath": "", + "assetsByChunkName": { + "main": "bundle.js" + }, + "assets": [ + { + "name": "bundle.js", + "size": 11158, + "chunks": [ + 0 + ], + "chunkNames": [ + "main" + ], + "emitted": true + } + ], + "filteredAssets": 0, + "entrypoints": { + "main": { + "chunks": [ + 0 + ], + "assets": [ + "bundle.js" + ] + } + }, + "chunks": [ + { + "id": 0, + "rendered": true, + "initial": true, + "entry": true, + "extraAsync": false, + "size": 19202, + "names": [ + "main" + ], + "files": [ + "bundle.js" + ], + "hash": "8753686cb4d0f5a5f650", + "parents": [], + "modules": [ + { + "id": 0, + "identifier": "external \"Inferno\"", + "name": "external \"Inferno\"", + "index": 1, + "index2": 0, + "size": 42, + "cacheable": false, + "built": false, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "issuerId": 3, + "issuerName": "./src/index.js", + "profile": { + "factory": 2, + "building": 1 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 1, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Common.js", + "module": "./src/components/Common.js", + "moduleName": "./src/components/Common.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "10:0-38" + }, + { + "moduleId": 3, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "1:0-30" + }, + { + "moduleId": 3, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "5:0-38" + }, + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "17:0-38" + }, + { + "moduleId": 5, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "module": "./src/components/SideBar.js", + "moduleName": "./src/components/SideBar.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "11:0-38" + }, + { + "moduleId": 6, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\TopNavigation.js", + "module": "./src/components/TopNavigation.js", + "moduleName": "./src/components/TopNavigation.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "1:0-38" + }, + { + "moduleId": 7, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "module": "./src/components/PageContent.js", + "moduleName": "./src/components/PageContent.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "12:0-38" + }, + { + "moduleId": 8, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Footer.js", + "module": "./src/components/Footer.js", + "moduleName": "./src/components/Footer.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "4:0-38" + } + ], + "usedExports": [ + "createVNode", + "default" + ], + "providedExports": null, + "optimizationBailout": [], + "depth": 1 + }, + { + "id": 1, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Common.js", + "name": "./src/components/Common.js", + "index": 4, + "index2": 2, + "size": 697, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 7, + "building": 33, + "dependencies": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "8:0-66" + }, + { + "moduleId": 5, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "module": "./src/components/SideBar.js", + "moduleName": "./src/components/SideBar.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "8:0-68" + }, + { + "moduleId": 7, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "module": "./src/components/PageContent.js", + "moduleName": "./src/components/PageContent.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "8:0-68" + }, + { + "moduleId": 8, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Footer.js", + "module": "./src/components/Footer.js", + "moduleName": "./src/components/Footer.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "1:0-36" + } + ], + "usedExports": [ + "Clearfix", + "MEMORY_SAMPLE_LIMIT", + "isNullOrUndefined", + "mapChildren" + ], + "providedExports": [ + "isNullOrUndefined", + "mapChildren", + "Clearfix", + "MEMORY_SAMPLE_LIMIT", + "TRAFFIC_SAMPLE_LIMIT" + ], + "optimizationBailout": [], + "depth": 2, + "source": "// isNullOrUndefined returns true if a variable is null or undefined.\nexport var isNullOrUndefined = function isNullOrUndefined(variable) {\n return variable === null || typeof variable === 'undefined';\n};\n\nexport var mapChildren = function mapChildren(children, mapFunc) {\n return !Array.isArray(children) || children.length < 1 || children.length === 1 ? mapFunc(children) : children.map(mapFunc);\n};\n\nimport { createVNode } from \"inferno\";\nexport var Clearfix = function Clearfix() {\n return createVNode(2, \"div\", \"clearfix\");\n};\n\nexport var MEMORY_SAMPLE_LIMIT = 200; // Maximum number of memory data samples.\nexport var TRAFFIC_SAMPLE_LIMIT = 200; // Maximum number of traffic data samples." + }, + { + "id": 2, + "identifier": "external \"Inferno.Component\"", + "name": "external \"Inferno.Component\"", + "index": 3, + "index2": 1, + "size": 42, + "cacheable": false, + "built": false, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 0, + "building": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "component", + "loc": "7:0-34" + }, + { + "moduleId": 5, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "module": "./src/components/SideBar.js", + "moduleName": "./src/components/SideBar.js", + "type": "harmony import", + "userRequest": "component", + "loc": "7:0-34" + }, + { + "moduleId": 7, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "module": "./src/components/PageContent.js", + "moduleName": "./src/components/PageContent.js", + "type": "harmony import", + "userRequest": "component", + "loc": "7:0-34" + } + ], + "usedExports": [ + "default" + ], + "providedExports": null, + "optimizationBailout": [], + "depth": 2 + }, + { + "id": 3, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "name": "./src/index.js", + "index": 0, + "index2": 8, + "size": 232, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": null, + "issuerId": null, + "issuerName": null, + "profile": { + "factory": 31, + "building": 672 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [], + "usedExports": true, + "providedExports": [], + "optimizationBailout": [], + "depth": 0, + "source": "import Inferno from 'inferno';\nimport Dashboard from './components/Dashboard';\n\n// Renders the whole dashboard.\nimport { createVNode } from 'inferno';\nInferno.render(createVNode(16, Dashboard), document.getElementById('dashboard'));" + }, + { + "id": 4, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "name": "./src/components/Dashboard.js", + "index": 2, + "index2": 7, + "size": 6933, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "issuerId": 3, + "issuerName": "./src/index.js", + "profile": { + "factory": 6, + "building": 346, + "dependencies": 1 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 3, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "type": "harmony import", + "userRequest": "./components/Dashboard", + "loc": "2:0-47" + } + ], + "usedExports": [ + "default" + ], + "providedExports": [ + "default" + ], + "optimizationBailout": [], + "depth": 1, + "source": "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Component from 'component';\nimport { isNullOrUndefined, MEMORY_SAMPLE_LIMIT } from \"./Common\";\nimport { SideBar } from \"./SideBar\";\nimport { TopNavigation } from \"./TopNavigation\";\nimport PageContent from './PageContent';\nimport { Footer } from './Footer';\n\n// Dashboard is the main component, which renders the whole page,\n// makes connection with the server and listens for messages.\n// When there is an incoming message, updates the page's content correspondingly.\nimport { createVNode } from \"inferno\";\n\nvar Dashboard = function (_Component) {\n _inherits(Dashboard, _Component);\n\n function Dashboard(props) {\n _classCallCheck(this, Dashboard);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.updateCharts = function (msg) {\n var memory = _this.state.charts.memory;\n var traffic = _this.state.charts.traffic;\n\n // Fill the dashboard with the past data. metrics is set only in the first msg,\n // after the connection is established.\n if (msg.metrics !== undefined) {\n // Clear the arrays to prevent data confusion with the previous connection.\n memory.labels = [];\n traffic.labels = [];\n memory.datasets[0].data = [];\n traffic.datasets[0].data = [];\n\n var mem = msg.metrics.memory;\n var traff = msg.metrics.processor; // TODO (kurkomisi): !!!\n\n // Put the past data to the beginning of the arrays. This prevents confusion with the next msg data,\n // which goes to the end.\n for (var i = mem.length - 1; i >= 0 && MEMORY_SAMPLE_LIMIT > memory.labels.length; --i) {\n memory.labels.unshift(mem[i].time.substring(mem[i].time.length - 5));\n traffic.labels.unshift(mem[i].time.substring(mem[i].time.length - 5));\n memory.datasets[0].data.unshift(mem[i].value);\n traffic.datasets[0].data.unshift(traff[i].value);\n }\n\n _this.setState({ charts: { memory: memory, traffic: traffic } }); // Update the components.\n return;\n }\n\n // Put the new data to the end of the arrays.\n if (msg.memory !== undefined) {\n // Remove the first elements in case the samples' amount exceeds the limit.\n if (memory.labels.length === MEMORY_SAMPLE_LIMIT) {\n memory.labels.shift();\n traffic.labels.shift();\n memory.datasets[0].data.shift();\n traffic.datasets[0].data.shift();\n }\n memory.labels.push(msg.memory.time.substring(msg.memory.time.length - 5));\n traffic.labels.push(msg.memory.time.substring(msg.memory.time.length - 5));\n memory.datasets[0].data.push(msg.memory.value);\n traffic.datasets[0].data.push(msg.processor.value);\n\n _this.setState({ charts: { memory: memory, traffic: traffic } }); // Update the components.\n }\n };\n\n _this.reconnect = function () {\n var server = new WebSocket(\"ws://\" + location.host + \"/api\");\n\n server.onmessage = function (event) {\n var msg = JSON.parse(event.data);\n if (isNullOrUndefined(msg)) {\n return;\n }\n _this.updateCharts(msg);\n };\n\n server.onclose = function () {\n return setTimeout(_this.reconnect, 3000);\n };\n };\n\n _this.componentDidMount = function () {\n return _this.reconnect();\n };\n\n _this.render = function () {\n return createVNode(2, \"div\", \"container body\", createVNode(2, \"div\", \"main_container\", [createVNode(16, SideBar), createVNode(16, TopNavigation), createVNode(16, PageContent, null, null, {\n \"charts\": _this.state.charts\n }), createVNode(16, Footer)]));\n };\n\n _this.state = {\n charts: { // Stores the state of the charts.\n memory: {\n labels: [],\n datasets: [{\n label: \"system/memory/inuse\",\n backgroundColor: \"rgba(38, 185, 154, 0.31)\",\n borderColor: \"rgba(38, 185, 154, 0.7)\",\n pointBorderColor: \"rgba(38, 185, 154, 0.7)\",\n pointBackgroundColor: \"rgba(38, 185, 154, 0.7)\",\n pointHoverBackgroundColor: \"#fff\",\n pointHoverBorderColor: \"rgba(220,220,220,1)\",\n pointBorderWidth: 1,\n data: []\n }]\n },\n traffic: {\n labels: [],\n datasets: [{\n label: \"p2p/InboundTraffic\",\n backgroundColor: \"rgba(3, 88, 106, 0.3)\",\n borderColor: \"rgba(3, 88, 106, 0.70)\",\n pointBorderColor: \"rgba(3, 88, 106, 0.70)\",\n pointBackgroundColor: \"rgba(3, 88, 106, 0.70)\",\n pointHoverBackgroundColor: \"#fff\",\n pointHoverBorderColor: \"rgba(151,187,205,1)\",\n pointBorderWidth: 1,\n data: []\n }]\n }\n }\n };\n return _this;\n }\n\n // updateCharts Analyzes the incoming message, and updates the charts' content correspondingly.\n\n\n // reconnect establishes a websocket connection with the server, listens for incoming messages\n // and tries to reconnect on connection loss.\n\n\n // componentDidMount initiates the establishment of the first websocket connection after the component is rendered.\n\n\n // render renders the components of the dashboard.\n\n\n return Dashboard;\n}(Component);\n\nexport default Dashboard;" + }, + { + "id": 5, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "name": "./src/components/SideBar.js", + "index": 5, + "index2": 3, + "size": 4613, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 7, + "building": 173, + "dependencies": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./SideBar", + "loc": "9:0-36" + } + ], + "usedExports": [ + "SideBar" + ], + "providedExports": [ + "SideBar" + ], + "optimizationBailout": [], + "depth": 2, + "source": "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Component from 'component';\nimport { isNullOrUndefined, mapChildren, Clearfix } from \"./Common\";\n\n// MenuItem renders an item for a Menu component and the belonging submenu items, if there is any.\nimport { createVNode } from \"inferno\";\n\nvar MenuItem = function (_Component) {\n _inherits(MenuItem, _Component);\n\n function MenuItem() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MenuItem);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.render = function () {\n return createVNode(2, \"li\", null, [createVNode(2, \"a\", null, [createVNode(2, \"i\", \"fa \" + _this.props.className), _this.props.text, createVNode(2, \"div\", \"fa fa-chevron-down\")]),\n // Render dropdown menu only if there are children.\n isNullOrUndefined(_this.props.children) || createVNode(2, \"ul\", \"nav child_menu\", mapChildren(_this.props.children, function (child) {\n return createVNode(2, \"li\", null, child);\n }))]);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return MenuItem;\n}(Component);\n\n// Menu renders a menu component.\n\n\nvar Menu = function Menu() {\n return createVNode(2, \"ul\", \"nav side-menu\", [createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-home\",\n \"text\": \"Home\",\n children: [createVNode(2, \"a\", null, \"Dashboard1\", {\n \"href\": \"dashboard1.html\"\n }), createVNode(2, \"a\", null, \"Dashboard2\", {\n \"href\": \"dashboard2.html\"\n })]\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-edit\",\n \"text\": \"Networking\",\n children: createVNode(2, \"a\", null, \"Networking\", {\n \"href\": \"networking.html\"\n })\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-desktop\",\n \"text\": \"Txpool\",\n children: createVNode(2, \"a\", null, \"Txpool\", {\n \"href\": \"txpool.html\"\n })\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-table\",\n \"text\": \"Logs\",\n children: createVNode(2, \"a\", null, \"Logs\", {\n \"href\": \"logs.html\"\n })\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-clone\",\n \"text\": \"Blockchain\",\n children: [createVNode(2, \"a\", null, \"Blockchain1\", {\n \"href\": \"blockchain1.html\"\n }), createVNode(2, \"a\", null, \"Blockchain2\", {\n \"href\": \"blockchain2.html\"\n }), createVNode(2, \"a\", null, \"Blockchain3\", {\n \"href\": \"blockchain3.html\"\n }), createVNode(2, \"a\", null, \"Blockchain4\", {\n \"href\": \"blockchain4.html\"\n }), createVNode(2, \"a\", null, \"Blockchain5\", {\n \"href\": \"blockchain5.html\"\n })]\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-bar-chart-o\",\n \"text\": \"System\"\n })]);\n};\n\n// SideBar renders a sidebar component.\nexport var SideBar = function SideBar() {\n return createVNode(2, \"div\", \"col-md-3 left_col\", createVNode(2, \"div\", \"left_col scroll-view\", [createVNode(2, \"div\", \"navbar nav_title\", createVNode(2, \"a\", \"site_title\", [createVNode(2, \"i\", \"fa fa-paw\"), createVNode(2, \"span\", null, \"Go Ethereum Dashboard\")], {\n \"href\": \"dashboard.html\"\n }), {\n \"style\": { border: 0 }\n }), createVNode(16, Clearfix), createVNode(2, \"div\", \"main_menu_side hidden-print main_menu\", createVNode(2, \"div\", \"menu_section\", createVNode(16, Menu)), {\n \"id\": \"sidebar-menu\"\n })]));\n};" + }, + { + "id": 6, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\TopNavigation.js", + "name": "./src/components/TopNavigation.js", + "index": 6, + "index2": 4, + "size": 443, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 8, + "building": 183, + "dependencies": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./TopNavigation", + "loc": "10:0-48" + } + ], + "usedExports": [ + "TopNavigation" + ], + "providedExports": [ + "TopNavigation" + ], + "optimizationBailout": [], + "depth": 2, + "source": "import { createVNode } from \"inferno\";\n// TopNavigation renders a top navigation component.\nexport var TopNavigation = function TopNavigation() {\n return createVNode(2, \"div\", \"top_nav\", createVNode(2, \"div\", \"nav_menu\", createVNode(2, \"nav\", \"\", createVNode(2, \"div\", \"nav toggle\", createVNode(2, \"a\", null, [\" \", createVNode(2, \"i\", \"fa fa-bars\")], {\n \"id\": \"_______menu_toggle\"\n })), {\n \"role\": \"navigation\"\n })));\n};" + }, + { + "id": 7, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "name": "./src/components/PageContent.js", + "index": 7, + "index2": 5, + "size": 5892, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 8, + "building": 346, + "dependencies": 2 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./PageContent", + "loc": "11:0-40" + } + ], + "usedExports": [ + "default" + ], + "providedExports": [ + "default" + ], + "optimizationBailout": [], + "depth": 2, + "source": "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Component from 'component';\nimport { isNullOrUndefined, mapChildren, Clearfix } from \"./Common\";\n\n// Chart name is already in use.\n// ChartComponent renders a chart component and updates it, when the related data changes.\nimport { createVNode } from \"inferno\";\n\nvar ChartComponent = function (_Component) {\n _inherits(ChartComponent, _Component);\n\n function ChartComponent(props) {\n _classCallCheck(this, ChartComponent);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.componentDidMount = function () {\n return _this.state.chart = new Chart(_this.data, {\n type: _this.props.type,\n data: _this.props.data\n });\n };\n\n _this.render = function () {\n if (!isNullOrUndefined(_this.state.chart)) {\n _this.state.chart.update();\n }\n\n return createVNode(2, \"div\", _this.props.className, createVNode(2, \"div\", \"x_panel\", [createVNode(2, \"div\", \"x_title\", [createVNode(2, \"h2\", null, _this.props.text), createVNode(2, \"ul\", \"nav navbar-right panel_toolbox\", [createVNode(2, \"li\", null, createVNode(2, \"a\", \"collapse-link\", createVNode(2, \"i\", \"fa fa-chevron-up\"))),\n // Render dropdown menu only if there are children.\n isNullOrUndefined(_this.props.children) || createVNode(2, \"li\", \"dropdown\", [createVNode(2, \"a\", \"dropdown-toggle\", createVNode(2, \"i\", \"fa fa-wrench\"), {\n \"href\": \"#\",\n \"data-toggle\": \"dropdown\",\n \"role\": \"button\",\n \"aria-expanded\": \"false\"\n }), createVNode(2, \"ul\", \"dropdown-menu\", mapChildren(_this.props.children, function (child) {\n return createVNode(2, \"li\", null, child);\n }), {\n \"role\": \"menu\"\n })]), createVNode(2, \"li\", null, createVNode(2, \"a\", \"close-link\", createVNode(2, \"i\", \"fa fa-close\")))]), createVNode(16, Clearfix)]), createVNode(2, \"div\", \"x_content\", createVNode(2, \"canvas\", null, null, null, null, function (data) {\n return _this.data = data;\n }))]));\n };\n\n _this.state = {};\n return _this;\n }\n\n return ChartComponent;\n}(Component);\n\n// Row renders a row component of charts only if there is any chart.\n\n\nvar Row = function (_Component2) {\n _inherits(Row, _Component2);\n\n function Row() {\n var _temp, _this2, _ret;\n\n _classCallCheck(this, Row);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.render = function () {\n return isNullOrUndefined(_this2.props.children) || createVNode(2, \"div\", \"row\", [\" \", _this2.props.children, \" \"]);\n }, _temp), _possibleConstructorReturn(_this2, _ret);\n }\n\n return Row;\n}(Component);\n\n// PageContent renders a component for the page content.\n\n\nvar PageContent = function (_Component3) {\n _inherits(PageContent, _Component3);\n\n function PageContent() {\n var _temp2, _this3, _ret2;\n\n _classCallCheck(this, PageContent);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this3 = _possibleConstructorReturn(this, _Component3.call.apply(_Component3, [this].concat(args))), _this3), _this3.render = function () {\n return createVNode(2, \"div\", \"right_col\", createVNode(2, \"div\", \"\", [createVNode(2, \"div\", \"page-title\", createVNode(2, \"div\", \"title_left\", createVNode(2, \"h3\", null, [\"Go Ethereum Dashboard\", createVNode(2, \"small\", null, \"Statistics\")]))), createVNode(16, Clearfix), createVNode(16, Row, null, null, {\n children: [createVNode(16, ChartComponent, null, null, {\n \"className\": \"col-md-6 col-sm-6 col-xs-12\",\n \"text\": \"Memory usage system/memory/inuse\",\n \"type\": \"line\",\n \"data\": _this3.props.charts.memory,\n children: [createVNode(2, \"a\", null, \"Settings 1\", {\n \"href\": \"#\"\n }), createVNode(2, \"a\", null, \"Settings 2\", {\n \"href\": \"#\"\n })]\n }), createVNode(16, ChartComponent, null, null, {\n \"className\": \"col-md-6 col-sm-6 col-xs-12\",\n \"text\": \"Inbound traffic p2p/InboundTraffic\",\n \"type\": \"line\",\n \"data\": _this3.props.charts.traffic\n })]\n }), createVNode(16, Clearfix)]), {\n \"role\": \"main\"\n });\n }, _temp2), _possibleConstructorReturn(_this3, _ret2);\n }\n\n return PageContent;\n}(Component);\n\nexport default PageContent;" + }, + { + "id": 8, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Footer.js", + "name": "./src/components/Footer.js", + "index": 8, + "index2": 6, + "size": 308, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 8, + "building": 203, + "dependencies": 1 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./Footer", + "loc": "12:0-34" + } + ], + "usedExports": [ + "Footer" + ], + "providedExports": [ + "Footer" + ], + "optimizationBailout": [], + "depth": 2, + "source": "import { Clearfix } from \"./Common\";\n\n// Footer renders a footer component.\nimport { createVNode } from \"inferno\";\nexport var Footer = function Footer() {\n return createVNode(2, \"footer\", null, [createVNode(2, \"div\", \"pull-right\", \"Copyright 2017 The go-ethereum Authors\"), createVNode(16, Clearfix)]);\n};" + } + ], + "filteredModules": 0, + "origins": [ + { + "moduleId": 3, + "module": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "moduleName": "./src/index.js", + "loc": "", + "name": "main", + "reasons": [] + } + ] + } + ], + "modules": [ + { + "id": 0, + "identifier": "external \"Inferno\"", + "name": "external \"Inferno\"", + "index": 1, + "index2": 0, + "size": 42, + "cacheable": false, + "built": false, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "issuerId": 3, + "issuerName": "./src/index.js", + "profile": { + "factory": 2, + "building": 1 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 1, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Common.js", + "module": "./src/components/Common.js", + "moduleName": "./src/components/Common.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "10:0-38" + }, + { + "moduleId": 3, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "1:0-30" + }, + { + "moduleId": 3, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "5:0-38" + }, + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "17:0-38" + }, + { + "moduleId": 5, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "module": "./src/components/SideBar.js", + "moduleName": "./src/components/SideBar.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "11:0-38" + }, + { + "moduleId": 6, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\TopNavigation.js", + "module": "./src/components/TopNavigation.js", + "moduleName": "./src/components/TopNavigation.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "1:0-38" + }, + { + "moduleId": 7, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "module": "./src/components/PageContent.js", + "moduleName": "./src/components/PageContent.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "12:0-38" + }, + { + "moduleId": 8, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Footer.js", + "module": "./src/components/Footer.js", + "moduleName": "./src/components/Footer.js", + "type": "harmony import", + "userRequest": "inferno", + "loc": "4:0-38" + } + ], + "usedExports": [ + "createVNode", + "default" + ], + "providedExports": null, + "optimizationBailout": [], + "depth": 1 + }, + { + "id": 1, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Common.js", + "name": "./src/components/Common.js", + "index": 4, + "index2": 2, + "size": 697, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 7, + "building": 33, + "dependencies": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "8:0-66" + }, + { + "moduleId": 5, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "module": "./src/components/SideBar.js", + "moduleName": "./src/components/SideBar.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "8:0-68" + }, + { + "moduleId": 7, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "module": "./src/components/PageContent.js", + "moduleName": "./src/components/PageContent.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "8:0-68" + }, + { + "moduleId": 8, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Footer.js", + "module": "./src/components/Footer.js", + "moduleName": "./src/components/Footer.js", + "type": "harmony import", + "userRequest": "./Common", + "loc": "1:0-36" + } + ], + "usedExports": [ + "Clearfix", + "MEMORY_SAMPLE_LIMIT", + "isNullOrUndefined", + "mapChildren" + ], + "providedExports": [ + "isNullOrUndefined", + "mapChildren", + "Clearfix", + "MEMORY_SAMPLE_LIMIT", + "TRAFFIC_SAMPLE_LIMIT" + ], + "optimizationBailout": [], + "depth": 2, + "source": "// isNullOrUndefined returns true if a variable is null or undefined.\nexport var isNullOrUndefined = function isNullOrUndefined(variable) {\n return variable === null || typeof variable === 'undefined';\n};\n\nexport var mapChildren = function mapChildren(children, mapFunc) {\n return !Array.isArray(children) || children.length < 1 || children.length === 1 ? mapFunc(children) : children.map(mapFunc);\n};\n\nimport { createVNode } from \"inferno\";\nexport var Clearfix = function Clearfix() {\n return createVNode(2, \"div\", \"clearfix\");\n};\n\nexport var MEMORY_SAMPLE_LIMIT = 200; // Maximum number of memory data samples.\nexport var TRAFFIC_SAMPLE_LIMIT = 200; // Maximum number of traffic data samples." + }, + { + "id": 2, + "identifier": "external \"Inferno.Component\"", + "name": "external \"Inferno.Component\"", + "index": 3, + "index2": 1, + "size": 42, + "cacheable": false, + "built": false, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 0, + "building": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "component", + "loc": "7:0-34" + }, + { + "moduleId": 5, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "module": "./src/components/SideBar.js", + "moduleName": "./src/components/SideBar.js", + "type": "harmony import", + "userRequest": "component", + "loc": "7:0-34" + }, + { + "moduleId": 7, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "module": "./src/components/PageContent.js", + "moduleName": "./src/components/PageContent.js", + "type": "harmony import", + "userRequest": "component", + "loc": "7:0-34" + } + ], + "usedExports": [ + "default" + ], + "providedExports": null, + "optimizationBailout": [], + "depth": 2 + }, + { + "id": 3, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "name": "./src/index.js", + "index": 0, + "index2": 8, + "size": 232, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": null, + "issuerId": null, + "issuerName": null, + "profile": { + "factory": 31, + "building": 672 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [], + "usedExports": true, + "providedExports": [], + "optimizationBailout": [], + "depth": 0, + "source": "import Inferno from 'inferno';\nimport Dashboard from './components/Dashboard';\n\n// Renders the whole dashboard.\nimport { createVNode } from 'inferno';\nInferno.render(createVNode(16, Dashboard), document.getElementById('dashboard'));" + }, + { + "id": 4, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "name": "./src/components/Dashboard.js", + "index": 2, + "index2": 7, + "size": 6933, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "issuerId": 3, + "issuerName": "./src/index.js", + "profile": { + "factory": 6, + "building": 346, + "dependencies": 1 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 3, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "type": "harmony import", + "userRequest": "./components/Dashboard", + "loc": "2:0-47" + } + ], + "usedExports": [ + "default" + ], + "providedExports": [ + "default" + ], + "optimizationBailout": [], + "depth": 1, + "source": "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Component from 'component';\nimport { isNullOrUndefined, MEMORY_SAMPLE_LIMIT } from \"./Common\";\nimport { SideBar } from \"./SideBar\";\nimport { TopNavigation } from \"./TopNavigation\";\nimport PageContent from './PageContent';\nimport { Footer } from './Footer';\n\n// Dashboard is the main component, which renders the whole page,\n// makes connection with the server and listens for messages.\n// When there is an incoming message, updates the page's content correspondingly.\nimport { createVNode } from \"inferno\";\n\nvar Dashboard = function (_Component) {\n _inherits(Dashboard, _Component);\n\n function Dashboard(props) {\n _classCallCheck(this, Dashboard);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.updateCharts = function (msg) {\n var memory = _this.state.charts.memory;\n var traffic = _this.state.charts.traffic;\n\n // Fill the dashboard with the past data. metrics is set only in the first msg,\n // after the connection is established.\n if (msg.metrics !== undefined) {\n // Clear the arrays to prevent data confusion with the previous connection.\n memory.labels = [];\n traffic.labels = [];\n memory.datasets[0].data = [];\n traffic.datasets[0].data = [];\n\n var mem = msg.metrics.memory;\n var traff = msg.metrics.processor; // TODO (kurkomisi): !!!\n\n // Put the past data to the beginning of the arrays. This prevents confusion with the next msg data,\n // which goes to the end.\n for (var i = mem.length - 1; i >= 0 && MEMORY_SAMPLE_LIMIT > memory.labels.length; --i) {\n memory.labels.unshift(mem[i].time.substring(mem[i].time.length - 5));\n traffic.labels.unshift(mem[i].time.substring(mem[i].time.length - 5));\n memory.datasets[0].data.unshift(mem[i].value);\n traffic.datasets[0].data.unshift(traff[i].value);\n }\n\n _this.setState({ charts: { memory: memory, traffic: traffic } }); // Update the components.\n return;\n }\n\n // Put the new data to the end of the arrays.\n if (msg.memory !== undefined) {\n // Remove the first elements in case the samples' amount exceeds the limit.\n if (memory.labels.length === MEMORY_SAMPLE_LIMIT) {\n memory.labels.shift();\n traffic.labels.shift();\n memory.datasets[0].data.shift();\n traffic.datasets[0].data.shift();\n }\n memory.labels.push(msg.memory.time.substring(msg.memory.time.length - 5));\n traffic.labels.push(msg.memory.time.substring(msg.memory.time.length - 5));\n memory.datasets[0].data.push(msg.memory.value);\n traffic.datasets[0].data.push(msg.processor.value);\n\n _this.setState({ charts: { memory: memory, traffic: traffic } }); // Update the components.\n }\n };\n\n _this.reconnect = function () {\n var server = new WebSocket(\"ws://\" + location.host + \"/api\");\n\n server.onmessage = function (event) {\n var msg = JSON.parse(event.data);\n if (isNullOrUndefined(msg)) {\n return;\n }\n _this.updateCharts(msg);\n };\n\n server.onclose = function () {\n return setTimeout(_this.reconnect, 3000);\n };\n };\n\n _this.componentDidMount = function () {\n return _this.reconnect();\n };\n\n _this.render = function () {\n return createVNode(2, \"div\", \"container body\", createVNode(2, \"div\", \"main_container\", [createVNode(16, SideBar), createVNode(16, TopNavigation), createVNode(16, PageContent, null, null, {\n \"charts\": _this.state.charts\n }), createVNode(16, Footer)]));\n };\n\n _this.state = {\n charts: { // Stores the state of the charts.\n memory: {\n labels: [],\n datasets: [{\n label: \"system/memory/inuse\",\n backgroundColor: \"rgba(38, 185, 154, 0.31)\",\n borderColor: \"rgba(38, 185, 154, 0.7)\",\n pointBorderColor: \"rgba(38, 185, 154, 0.7)\",\n pointBackgroundColor: \"rgba(38, 185, 154, 0.7)\",\n pointHoverBackgroundColor: \"#fff\",\n pointHoverBorderColor: \"rgba(220,220,220,1)\",\n pointBorderWidth: 1,\n data: []\n }]\n },\n traffic: {\n labels: [],\n datasets: [{\n label: \"p2p/InboundTraffic\",\n backgroundColor: \"rgba(3, 88, 106, 0.3)\",\n borderColor: \"rgba(3, 88, 106, 0.70)\",\n pointBorderColor: \"rgba(3, 88, 106, 0.70)\",\n pointBackgroundColor: \"rgba(3, 88, 106, 0.70)\",\n pointHoverBackgroundColor: \"#fff\",\n pointHoverBorderColor: \"rgba(151,187,205,1)\",\n pointBorderWidth: 1,\n data: []\n }]\n }\n }\n };\n return _this;\n }\n\n // updateCharts Analyzes the incoming message, and updates the charts' content correspondingly.\n\n\n // reconnect establishes a websocket connection with the server, listens for incoming messages\n // and tries to reconnect on connection loss.\n\n\n // componentDidMount initiates the establishment of the first websocket connection after the component is rendered.\n\n\n // render renders the components of the dashboard.\n\n\n return Dashboard;\n}(Component);\n\nexport default Dashboard;" + }, + { + "id": 5, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\SideBar.js", + "name": "./src/components/SideBar.js", + "index": 5, + "index2": 3, + "size": 4613, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 7, + "building": 173, + "dependencies": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./SideBar", + "loc": "9:0-36" + } + ], + "usedExports": [ + "SideBar" + ], + "providedExports": [ + "SideBar" + ], + "optimizationBailout": [], + "depth": 2, + "source": "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Component from 'component';\nimport { isNullOrUndefined, mapChildren, Clearfix } from \"./Common\";\n\n// MenuItem renders an item for a Menu component and the belonging submenu items, if there is any.\nimport { createVNode } from \"inferno\";\n\nvar MenuItem = function (_Component) {\n _inherits(MenuItem, _Component);\n\n function MenuItem() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MenuItem);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.render = function () {\n return createVNode(2, \"li\", null, [createVNode(2, \"a\", null, [createVNode(2, \"i\", \"fa \" + _this.props.className), _this.props.text, createVNode(2, \"div\", \"fa fa-chevron-down\")]),\n // Render dropdown menu only if there are children.\n isNullOrUndefined(_this.props.children) || createVNode(2, \"ul\", \"nav child_menu\", mapChildren(_this.props.children, function (child) {\n return createVNode(2, \"li\", null, child);\n }))]);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return MenuItem;\n}(Component);\n\n// Menu renders a menu component.\n\n\nvar Menu = function Menu() {\n return createVNode(2, \"ul\", \"nav side-menu\", [createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-home\",\n \"text\": \"Home\",\n children: [createVNode(2, \"a\", null, \"Dashboard1\", {\n \"href\": \"dashboard1.html\"\n }), createVNode(2, \"a\", null, \"Dashboard2\", {\n \"href\": \"dashboard2.html\"\n })]\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-edit\",\n \"text\": \"Networking\",\n children: createVNode(2, \"a\", null, \"Networking\", {\n \"href\": \"networking.html\"\n })\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-desktop\",\n \"text\": \"Txpool\",\n children: createVNode(2, \"a\", null, \"Txpool\", {\n \"href\": \"txpool.html\"\n })\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-table\",\n \"text\": \"Logs\",\n children: createVNode(2, \"a\", null, \"Logs\", {\n \"href\": \"logs.html\"\n })\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-clone\",\n \"text\": \"Blockchain\",\n children: [createVNode(2, \"a\", null, \"Blockchain1\", {\n \"href\": \"blockchain1.html\"\n }), createVNode(2, \"a\", null, \"Blockchain2\", {\n \"href\": \"blockchain2.html\"\n }), createVNode(2, \"a\", null, \"Blockchain3\", {\n \"href\": \"blockchain3.html\"\n }), createVNode(2, \"a\", null, \"Blockchain4\", {\n \"href\": \"blockchain4.html\"\n }), createVNode(2, \"a\", null, \"Blockchain5\", {\n \"href\": \"blockchain5.html\"\n })]\n }), createVNode(16, MenuItem, null, null, {\n \"className\": \"fa-bar-chart-o\",\n \"text\": \"System\"\n })]);\n};\n\n// SideBar renders a sidebar component.\nexport var SideBar = function SideBar() {\n return createVNode(2, \"div\", \"col-md-3 left_col\", createVNode(2, \"div\", \"left_col scroll-view\", [createVNode(2, \"div\", \"navbar nav_title\", createVNode(2, \"a\", \"site_title\", [createVNode(2, \"i\", \"fa fa-paw\"), createVNode(2, \"span\", null, \"Go Ethereum Dashboard\")], {\n \"href\": \"dashboard.html\"\n }), {\n \"style\": { border: 0 }\n }), createVNode(16, Clearfix), createVNode(2, \"div\", \"main_menu_side hidden-print main_menu\", createVNode(2, \"div\", \"menu_section\", createVNode(16, Menu)), {\n \"id\": \"sidebar-menu\"\n })]));\n};" + }, + { + "id": 6, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\TopNavigation.js", + "name": "./src/components/TopNavigation.js", + "index": 6, + "index2": 4, + "size": 443, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 8, + "building": 183, + "dependencies": 0 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./TopNavigation", + "loc": "10:0-48" + } + ], + "usedExports": [ + "TopNavigation" + ], + "providedExports": [ + "TopNavigation" + ], + "optimizationBailout": [], + "depth": 2, + "source": "import { createVNode } from \"inferno\";\n// TopNavigation renders a top navigation component.\nexport var TopNavigation = function TopNavigation() {\n return createVNode(2, \"div\", \"top_nav\", createVNode(2, \"div\", \"nav_menu\", createVNode(2, \"nav\", \"\", createVNode(2, \"div\", \"nav toggle\", createVNode(2, \"a\", null, [\" \", createVNode(2, \"i\", \"fa fa-bars\")], {\n \"id\": \"_______menu_toggle\"\n })), {\n \"role\": \"navigation\"\n })));\n};" + }, + { + "id": 7, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\PageContent.js", + "name": "./src/components/PageContent.js", + "index": 7, + "index2": 5, + "size": 5892, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 8, + "building": 346, + "dependencies": 2 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./PageContent", + "loc": "11:0-40" + } + ], + "usedExports": [ + "default" + ], + "providedExports": [ + "default" + ], + "optimizationBailout": [], + "depth": 2, + "source": "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Component from 'component';\nimport { isNullOrUndefined, mapChildren, Clearfix } from \"./Common\";\n\n// Chart name is already in use.\n// ChartComponent renders a chart component and updates it, when the related data changes.\nimport { createVNode } from \"inferno\";\n\nvar ChartComponent = function (_Component) {\n _inherits(ChartComponent, _Component);\n\n function ChartComponent(props) {\n _classCallCheck(this, ChartComponent);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.componentDidMount = function () {\n return _this.state.chart = new Chart(_this.data, {\n type: _this.props.type,\n data: _this.props.data\n });\n };\n\n _this.render = function () {\n if (!isNullOrUndefined(_this.state.chart)) {\n _this.state.chart.update();\n }\n\n return createVNode(2, \"div\", _this.props.className, createVNode(2, \"div\", \"x_panel\", [createVNode(2, \"div\", \"x_title\", [createVNode(2, \"h2\", null, _this.props.text), createVNode(2, \"ul\", \"nav navbar-right panel_toolbox\", [createVNode(2, \"li\", null, createVNode(2, \"a\", \"collapse-link\", createVNode(2, \"i\", \"fa fa-chevron-up\"))),\n // Render dropdown menu only if there are children.\n isNullOrUndefined(_this.props.children) || createVNode(2, \"li\", \"dropdown\", [createVNode(2, \"a\", \"dropdown-toggle\", createVNode(2, \"i\", \"fa fa-wrench\"), {\n \"href\": \"#\",\n \"data-toggle\": \"dropdown\",\n \"role\": \"button\",\n \"aria-expanded\": \"false\"\n }), createVNode(2, \"ul\", \"dropdown-menu\", mapChildren(_this.props.children, function (child) {\n return createVNode(2, \"li\", null, child);\n }), {\n \"role\": \"menu\"\n })]), createVNode(2, \"li\", null, createVNode(2, \"a\", \"close-link\", createVNode(2, \"i\", \"fa fa-close\")))]), createVNode(16, Clearfix)]), createVNode(2, \"div\", \"x_content\", createVNode(2, \"canvas\", null, null, null, null, function (data) {\n return _this.data = data;\n }))]));\n };\n\n _this.state = {};\n return _this;\n }\n\n return ChartComponent;\n}(Component);\n\n// Row renders a row component of charts only if there is any chart.\n\n\nvar Row = function (_Component2) {\n _inherits(Row, _Component2);\n\n function Row() {\n var _temp, _this2, _ret;\n\n _classCallCheck(this, Row);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.render = function () {\n return isNullOrUndefined(_this2.props.children) || createVNode(2, \"div\", \"row\", [\" \", _this2.props.children, \" \"]);\n }, _temp), _possibleConstructorReturn(_this2, _ret);\n }\n\n return Row;\n}(Component);\n\n// PageContent renders a component for the page content.\n\n\nvar PageContent = function (_Component3) {\n _inherits(PageContent, _Component3);\n\n function PageContent() {\n var _temp2, _this3, _ret2;\n\n _classCallCheck(this, PageContent);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this3 = _possibleConstructorReturn(this, _Component3.call.apply(_Component3, [this].concat(args))), _this3), _this3.render = function () {\n return createVNode(2, \"div\", \"right_col\", createVNode(2, \"div\", \"\", [createVNode(2, \"div\", \"page-title\", createVNode(2, \"div\", \"title_left\", createVNode(2, \"h3\", null, [\"Go Ethereum Dashboard\", createVNode(2, \"small\", null, \"Statistics\")]))), createVNode(16, Clearfix), createVNode(16, Row, null, null, {\n children: [createVNode(16, ChartComponent, null, null, {\n \"className\": \"col-md-6 col-sm-6 col-xs-12\",\n \"text\": \"Memory usage system/memory/inuse\",\n \"type\": \"line\",\n \"data\": _this3.props.charts.memory,\n children: [createVNode(2, \"a\", null, \"Settings 1\", {\n \"href\": \"#\"\n }), createVNode(2, \"a\", null, \"Settings 2\", {\n \"href\": \"#\"\n })]\n }), createVNode(16, ChartComponent, null, null, {\n \"className\": \"col-md-6 col-sm-6 col-xs-12\",\n \"text\": \"Inbound traffic p2p/InboundTraffic\",\n \"type\": \"line\",\n \"data\": _this3.props.charts.traffic\n })]\n }), createVNode(16, Clearfix)]), {\n \"role\": \"main\"\n });\n }, _temp2), _possibleConstructorReturn(_this3, _ret2);\n }\n\n return PageContent;\n}(Component);\n\nexport default PageContent;" + }, + { + "id": 8, + "identifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Footer.js", + "name": "./src/components/Footer.js", + "index": 8, + "index2": 6, + "size": 308, + "cacheable": true, + "built": true, + "optional": false, + "prefetched": false, + "chunks": [ + 0 + ], + "assets": [], + "issuer": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "issuerId": 4, + "issuerName": "./src/components/Dashboard.js", + "profile": { + "factory": 8, + "building": 203, + "dependencies": 1 + }, + "failed": false, + "errors": 0, + "warnings": 0, + "reasons": [ + { + "moduleId": 4, + "moduleIdentifier": "D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\node_modules\\babel-loader\\lib\\index.js!D:\\Go\\src\\github.com\\ethereum\\go-ethereum\\dashboard\\bundler\\src\\components\\Dashboard.js", + "module": "./src/components/Dashboard.js", + "moduleName": "./src/components/Dashboard.js", + "type": "harmony import", + "userRequest": "./Footer", + "loc": "12:0-34" + } + ], + "usedExports": [ + "Footer" + ], + "providedExports": [ + "Footer" + ], + "optimizationBailout": [], + "depth": 2, + "source": "import { Clearfix } from \"./Common\";\n\n// Footer renders a footer component.\nimport { createVNode } from \"inferno\";\nexport var Footer = function Footer() {\n return createVNode(2, \"footer\", null, [createVNode(2, \"div\", \"pull-right\", \"Copyright 2017 The go-ethereum Authors\"), createVNode(16, Clearfix)]);\n};" + } + ], + "filteredModules": 0, + "children": [] +} diff --git a/dashboard/bundler/webpack.config.js b/dashboard/bundler/webpack.config.js index 7677b7fd29..aa0c682e03 100644 --- a/dashboard/bundler/webpack.config.js +++ b/dashboard/bundler/webpack.config.js @@ -1,4 +1,42 @@ const path = require('path'); +const webpack = require('webpack'); + +const plugins = [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'main', // Move dependencies to our main file. + children: true, // Look for common dependencies in all children, + minChunks: 2, // How many times a dependency must come up before being extracted + }), + + // This plugins optimizes chunks and modules by + // how much they are used in your app. + new webpack.optimize.OccurrenceOrderPlugin(), + + // This plugin prevents Webpack from creating chunks + // that would be too small to be worth loading separately. + new webpack.optimize.MinChunkSizePlugin({ + minChunkSize: 51200, // ~50kb + }), + + // This plugin minifies all the Javascript code of the final bundle. + new webpack.optimize.UglifyJsPlugin({ + mangle: true, + compress: { + warnings: false, // Suppress uglification warnings + }, + }), + + // This plugin defines various variables that we can set to false + // to avoid code related to them from being compiled in the final bundle. + new webpack.DefinePlugin({ + __SERVER__: false, + __DEVELOPMENT__: false, + __DEVTOOLS__: false, + 'process.env': { + BABEL_ENV: JSON.stringify(process.env.NODE_ENV), + }, + }), +]; module.exports = { entry: './src/index.js', @@ -6,6 +44,7 @@ module.exports = { path: path.resolve(__dirname, '../assets/js'), filename: 'bundle.js', }, + plugins: plugins, externals: { // External libraries, which will not be included in the bundled file(s). inferno: 'Inferno', component: 'Inferno.Component',