diff --git a/.gitignore b/.gitignore index 229b5d7..67dfbeb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /node_modules /static/bundle.js /static/bundle.js.map +.env \ No newline at end of file diff --git a/README.md b/README.md index 49361db..3584ad7 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,51 @@ -# Your own project - -Build an app of your choice. - -- You are free to use any technologies covered so far. You are welcome to try new technologies you find interesting. -- Keep it simple. Aim to get the basic functionality working on day one. You can then extend it on days two and three. -- Feel free to use an external API to provide additional functionality to your app. Avoid APIs that use complex authentication mechanisms. -- Use pen and paper to draw a diagram of the webpage layout before starting to code. Have a think about what components you will need in advance. -- Think about how to organise your data in advance -- Make sure your app is responsive -- Commit frequently -- Create pull request at the end -- Keep it simple - -## Technical notes - -* Run `npm install` after cloning to download all dependencies -* Use `npm run dev -- --watch` to build React -* Use `node server.js` to run the Node server in another tab -* You can view the site at [http://localhost:8080](http://localhost:8080) -* If you would like to user `nodemon` to automatically rebuild your server, run `npm run server` -* The node server file is `/server.js` -* The index home page is in `/views/index.hbs` -* Place all static files such as images and CSS in the `static` folder. - -## README - -* Produce a README.md which explains - * what the project does - * what technologies it uses - * how to build it and run it - * any unresolved issues the user should be aware of +# Spotify Dashboard + +Welcome to Spotify Dashboard. This project aims to provide a useful companion to Spotify by displaying interesting and useful information about the artist that you are currently listening to. + +## Prerequistes + +This application is built using Node.js and React. + +## Installing Dependencies + +- Use `npm run dev` or `npm run dev -- --watch` to build React +- Use `node server.js` to run the Node server +- View the site at [http://localhost:8080](http://localhost:8080) +- The node server file can be found at /server.js +- The index home page can be found in /views/index.hbs + +## How To Use + +First of all, the Spotify SDK used by this application requires an SDK token to be generated using a Spotify Premium Account [here](https://developer.spotify.com/documentation/web-playback-sdk/quick-start/#). These tokens last for an hour before needing updating. + +Once you have input a usable SDK token, you will be instructed by Spotify Dashboard to go to your Spotify Device, open "Connect to a device" and connect to Spotify Dashboard. Once this happens, the songs that you are listening to will be represented on the app with the album cover, artist, song name and album name. + +When you change through the songs on your device, or load up a playlist and leave it to run, this is represented on screen. Information about the music/podcast you are listening to will change dynamically. + +Alongside this, the app uses the information about the artist and executes a fetch to Ticketmaster's Discover API to find information about upcoming events, including links to buy tickets. This information can be scrolled through on the page without affecting the view of your artist information. + +This device also works responsively at different views, allowing the user to read through upcoming events without spoiling the view of the song information. + +## Notable Features + +- This app has good responsivity for various devices, allowing for a minimalist sleek view while keeping the ability to navigate through a wide range of information. +- I feel that this project has demonstrated my ability to create and maintain clean and human-friendly React components and data structure. +- Information presented in the app changes based on whether the user has a device connected or not. This is implemented in `App.js` on lines 24-44. +- Anyone with a Spotify Premium account can request an SDK token and input it to use the app. + +## Unresolved Issues/Un-implemented Features + +While I am very proud of the work I have done on this app, there are a number of issues that need resolving and should be kept in mind when using Spotify Dashboard. There were also a number of features that I was unable to implement which are listed below: + +- The Spotify SDK token only works for an hour. As a result, the project can stop working without warning. This is a nuisance in terms of usability and it would be nice to give some kind of indication as to how long you have left on the token/an alert when your time is about to expire. +- The Ticketmaster API provides amazing information about an artist's upcoming events. Unfortunately, it often returns 429 response status codes for too many requests. Sadly, there is no `Retry-After` header attached indicating how often this would happen. This can provide some annoying user experiences as the Spotify SDK re-triggers a fetch about 1 minute into a song. It also re-triggers a fetch when the song is paused and then played again. This can happen quite a few times during a play through, which can provide some undesirable results from the API. It can also provide issues if, for example, you skip through a couple of songs and the app will tell the user that there are no upcoming events regardless of if this is true or not! +- I would like to refactor the way the dates are presented as they are not very readable. For instance, instead of the format YYYY-MM-DD I would prefer something along the lines of "Tuesday 1st November 2018". I would also like to add a countdown feature that shows how far away we are from the show. +- The Ticketmaster API results only say whether the tickets are onsale or offsale. This works when redirecting people to buy tickets to available events, but it would be preferable to have more information that the user could find useful. For instance, are the tickets unavailable because they have sold out or because they haven't been released yet? + +## Acknowledgements + +This application utilises [Spotify's Web Playback SDK](https://developer.spotify.com/documentation/web-playback-sdk/). + +This application utilises [Ticketmaster's Discovery API](https://developer.ticketmaster.com/products-and-docs/apis/discovery-api/v2/) to fetch upcoming event information. + +Inspiration for the layout came from [Music UI](https://dribbble.com/shots/4242093-Music-UI) by Giga Tamarashvili for Adjara Design on Feb 19, 2018 @ dribbble. diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000..e787561 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000..8010fe9 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,9 @@ +{"/Users/olliecrook/workspace/own-project/src/spotify.js": {"path":"/Users/olliecrook/workspace/own-project/src/spotify.js","statementMap":{"0":{"start":{"line":1,"column":15},"end":{"line":5,"column":1}},"1":{"start":{"line":9,"column":2},"end":{"line":9,"column":32}},"2":{"start":{"line":12,"column":0},"end":{"line":59,"column":2}},"3":{"start":{"line":13,"column":16},"end":{"line":13,"column":28}},"4":{"start":{"line":14,"column":17},"end":{"line":19,"column":4}},"5":{"start":{"line":17,"column":6},"end":{"line":17,"column":16}},"6":{"start":{"line":22,"column":2},"end":{"line":24,"column":5}},"7":{"start":{"line":23,"column":4},"end":{"line":23,"column":27}},"8":{"start":{"line":25,"column":2},"end":{"line":27,"column":5}},"9":{"start":{"line":26,"column":4},"end":{"line":26,"column":27}},"10":{"start":{"line":28,"column":2},"end":{"line":30,"column":5}},"11":{"start":{"line":29,"column":4},"end":{"line":29,"column":27}},"12":{"start":{"line":31,"column":2},"end":{"line":33,"column":5}},"13":{"start":{"line":32,"column":4},"end":{"line":32,"column":27}},"14":{"start":{"line":36,"column":2},"end":{"line":38,"column":5}},"15":{"start":{"line":37,"column":4},"end":{"line":37,"column":26}},"16":{"start":{"line":40,"column":2},"end":{"line":45,"column":5}},"17":{"start":{"line":41,"column":4},"end":{"line":44,"column":5}},"18":{"start":{"line":42,"column":6},"end":{"line":42,"column":43}},"19":{"start":{"line":43,"column":6},"end":{"line":43,"column":13}},"20":{"start":{"line":48,"column":2},"end":{"line":50,"column":5}},"21":{"start":{"line":49,"column":4},"end":{"line":49,"column":51}},"22":{"start":{"line":53,"column":2},"end":{"line":55,"column":5}},"23":{"start":{"line":54,"column":4},"end":{"line":54,"column":57}},"24":{"start":{"line":58,"column":2},"end":{"line":58,"column":19}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":15},"end":{"line":8,"column":16}},"loc":{"start":{"line":8,"column":38},"end":{"line":10,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":38},"end":{"line":12,"column":39}},"loc":{"start":{"line":12,"column":44},"end":{"line":59,"column":1}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":19},"end":{"line":16,"column":20}},"loc":{"start":{"line":16,"column":25},"end":{"line":18,"column":5}},"line":16},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":45},"end":{"line":22,"column":46}},"loc":{"start":{"line":22,"column":62},"end":{"line":24,"column":3}},"line":22},"4":{"name":"(anonymous_4)","decl":{"start":{"line":25,"column":45},"end":{"line":25,"column":46}},"loc":{"start":{"line":25,"column":62},"end":{"line":27,"column":3}},"line":25},"5":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":38},"end":{"line":28,"column":39}},"loc":{"start":{"line":28,"column":55},"end":{"line":30,"column":3}},"line":28},"6":{"name":"(anonymous_6)","decl":{"start":{"line":31,"column":39},"end":{"line":31,"column":40}},"loc":{"start":{"line":31,"column":56},"end":{"line":33,"column":3}},"line":31},"7":{"name":"(anonymous_7)","decl":{"start":{"line":36,"column":45},"end":{"line":36,"column":46}},"loc":{"start":{"line":36,"column":54},"end":{"line":38,"column":3}},"line":36},"8":{"name":"(anonymous_8)","decl":{"start":{"line":40,"column":32},"end":{"line":40,"column":33}},"loc":{"start":{"line":40,"column":41},"end":{"line":45,"column":3}},"line":40},"9":{"name":"(anonymous_9)","decl":{"start":{"line":48,"column":30},"end":{"line":48,"column":31}},"loc":{"start":{"line":48,"column":49},"end":{"line":50,"column":3}},"line":48},"10":{"name":"(anonymous_10)","decl":{"start":{"line":53,"column":34},"end":{"line":53,"column":35}},"loc":{"start":{"line":53,"column":53},"end":{"line":55,"column":3}},"line":53}},"branchMap":{"0":{"loc":{"start":{"line":41,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":44,"column":5}},{"start":{"line":41,"column":4},"end":{"line":44,"column":5}}],"line":41}},"s":{"0":2,"1":2,"2":2,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0},"f":{"0":2,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"b":{"0":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"96b2df683194f4fbb55f36cd78ce04ee16a506c5"} +,"/Users/olliecrook/workspace/own-project/src/components/App.js": {"path":"/Users/olliecrook/workspace/own-project/src/components/App.js","statementMap":{"0":{"start":{"line":9,"column":4},"end":{"line":9,"column":12}},"1":{"start":{"line":11,"column":4},"end":{"line":18,"column":6}},"2":{"start":{"line":20,"column":4},"end":{"line":20,"column":67}},"3":{"start":{"line":21,"column":4},"end":{"line":21,"column":49}},"4":{"start":{"line":25,"column":4},"end":{"line":43,"column":5}},"5":{"start":{"line":26,"column":6},"end":{"line":33,"column":9}},"6":{"start":{"line":35,"column":6},"end":{"line":41,"column":9}},"7":{"start":{"line":42,"column":6},"end":{"line":42,"column":24}},"8":{"start":{"line":47,"column":4},"end":{"line":47,"column":38}},"9":{"start":{"line":51,"column":4},"end":{"line":58,"column":53}},"10":{"start":{"line":56,"column":24},"end":{"line":56,"column":39}},"11":{"start":{"line":57,"column":20},"end":{"line":57,"column":68}},"12":{"start":{"line":58,"column":22},"end":{"line":58,"column":51}},"13":{"start":{"line":62,"column":4},"end":{"line":89,"column":6}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":3}},"loc":{"start":{"line":8,"column":16},"end":{"line":22,"column":3}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":24,"column":29},"end":{"line":44,"column":3}},"line":24},"2":{"name":"(anonymous_2)","decl":{"start":{"line":46,"column":2},"end":{"line":46,"column":3}},"loc":{"start":{"line":46,"column":22},"end":{"line":48,"column":3}},"line":46},"3":{"name":"(anonymous_3)","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":3}},"loc":{"start":{"line":50,"column":15},"end":{"line":59,"column":3}},"line":50},"4":{"name":"(anonymous_4)","decl":{"start":{"line":56,"column":12},"end":{"line":56,"column":13}},"loc":{"start":{"line":56,"column":24},"end":{"line":56,"column":39}},"line":56},"5":{"name":"(anonymous_5)","decl":{"start":{"line":57,"column":12},"end":{"line":57,"column":13}},"loc":{"start":{"line":57,"column":20},"end":{"line":57,"column":68}},"line":57},"6":{"name":"(anonymous_6)","decl":{"start":{"line":58,"column":13},"end":{"line":58,"column":14}},"loc":{"start":{"line":58,"column":22},"end":{"line":58,"column":51}},"line":58},"7":{"name":"(anonymous_7)","decl":{"start":{"line":61,"column":2},"end":{"line":61,"column":3}},"loc":{"start":{"line":61,"column":11},"end":{"line":90,"column":3}},"line":61}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":43,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":43,"column":5}},{"start":{"line":25,"column":4},"end":{"line":43,"column":5}}],"line":25},"1":{"loc":{"start":{"line":66,"column":11},"end":{"line":78,"column":11}},"type":"cond-expr","locations":[{"start":{"line":67,"column":12},"end":{"line":72,"column":14}},{"start":{"line":74,"column":12},"end":{"line":77,"column":14}}],"line":66},"2":{"loc":{"start":{"line":80,"column":11},"end":{"line":86,"column":18}},"type":"cond-expr","locations":[{"start":{"line":81,"column":12},"end":{"line":81,"column":52}},{"start":{"line":82,"column":14},"end":{"line":86,"column":18}}],"line":80},"3":{"loc":{"start":{"line":80,"column":11},"end":{"line":80,"column":68}},"type":"binary-expr","locations":[{"start":{"line":80,"column":11},"end":{"line":80,"column":35}},{"start":{"line":80,"column":39},"end":{"line":80,"column":68}}],"line":80},"4":{"loc":{"start":{"line":82,"column":14},"end":{"line":86,"column":18}},"type":"cond-expr","locations":[{"start":{"line":83,"column":12},"end":{"line":85,"column":18}},{"start":{"line":86,"column":14},"end":{"line":86,"column":18}}],"line":82},"5":{"loc":{"start":{"line":82,"column":14},"end":{"line":82,"column":63}},"type":"binary-expr","locations":[{"start":{"line":82,"column":14},"end":{"line":82,"column":39}},{"start":{"line":82,"column":43},"end":{"line":82,"column":63}}],"line":82}},"s":{"0":2,"1":2,"2":2,"3":2,"4":0,"5":0,"6":0,"7":0,"8":2,"9":0,"10":0,"11":0,"12":0,"13":2},"f":{"0":2,"1":0,"2":2,"3":0,"4":0,"5":0,"6":0,"7":2},"b":{"0":[0,0],"1":[0,2],"2":[0,2],"3":[2,0],"4":[0,2],"5":[2,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"d861973669f391fb7b40beb1da4287ade6bc10de"} +,"/Users/olliecrook/workspace/own-project/src/components/Event.js": {"path":"/Users/olliecrook/workspace/own-project/src/components/Event.js","statementMap":{"0":{"start":{"line":4,"column":2},"end":{"line":22,"column":4}}},"fnMap":{"0":{"name":"Event","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":14}},"loc":{"start":{"line":3,"column":26},"end":{"line":23,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":7},"end":{"line":20,"column":7}},"type":"cond-expr","locations":[{"start":{"line":13,"column":8},"end":{"line":17,"column":12}},{"start":{"line":19,"column":8},"end":{"line":19,"column":49}}],"line":12}},"s":{"0":2},"f":{"0":2},"b":{"0":[2,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"67080099be4db4681260a2af30702fccce37c8cd"} +,"/Users/olliecrook/workspace/own-project/src/components/Events.js": {"path":"/Users/olliecrook/workspace/own-project/src/components/Events.js","statementMap":{"0":{"start":{"line":5,"column":2},"end":{"line":11,"column":4}},"1":{"start":{"line":8,"column":8},"end":{"line":8,"column":54}}},"fnMap":{"0":{"name":"Events","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}},"loc":{"start":{"line":4,"column":31},"end":{"line":12,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":21},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":37},"end":{"line":9,"column":7}},"line":7}},"branchMap":{},"s":{"0":2,"1":2},"f":{"0":2,"1":2},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"28dbb7b4b8934fbc9a232e4966d0031f507c59b8"} +,"/Users/olliecrook/workspace/own-project/src/components/Header.js": {"path":"/Users/olliecrook/workspace/own-project/src/components/Header.js","statementMap":{"0":{"start":{"line":4,"column":2},"end":{"line":18,"column":4}}},"fnMap":{"0":{"name":"Header","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":15}},"loc":{"start":{"line":3,"column":31},"end":{"line":19,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":7},"end":{"line":16,"column":14}},"type":"cond-expr","locations":[{"start":{"line":9,"column":8},"end":{"line":15,"column":14}},{"start":{"line":16,"column":10},"end":{"line":16,"column":14}}],"line":8}},"s":{"0":2},"f":{"0":2},"b":{"0":[2,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"c3ba70c2ef2c565369746accc7535723d7fdfb69"} +,"/Users/olliecrook/workspace/own-project/src/components/PlayWindow.js": {"path":"/Users/olliecrook/workspace/own-project/src/components/PlayWindow.js","statementMap":{"0":{"start":{"line":4,"column":2},"end":{"line":13,"column":4}}},"fnMap":{"0":{"name":"PlayWindow","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":19}},"loc":{"start":{"line":3,"column":63},"end":{"line":14,"column":1}},"line":3}},"branchMap":{},"s":{"0":1},"f":{"0":1},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"23cb0871500dc32f791a6b6284bf621b195b0dfc"} +,"/Users/olliecrook/workspace/own-project/tests/mockEventsResults.js": {"path":"/Users/olliecrook/workspace/own-project/tests/mockEventsResults.js","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":2260,"column":1}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"a3091c7b168af6a82b287dd3dac09b307fd2f5d0"} +,"/Users/olliecrook/workspace/own-project/tests/setup.js": {"path":"/Users/olliecrook/workspace/own-project/tests/setup.js","statementMap":{"0":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}}},"fnMap":{},"branchMap":{},"s":{"0":5},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"0915a4a56782f4184672b1248037a857b456dc7d"} +} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..7090209 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,223 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } + +.medium .chart { border:1px solid #666; } +.medium .cover-fill { background: #666; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } +.medium { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..0c71903 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,63 @@ +var jumpToCode = (function init () { + // Classes of code we would like to highlight + var missingCoverageClasses = [ '.cbranch-no', '.cstat-no', '.fstat-no' ]; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = notSelector + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements.item(currentIndex).classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index) + .scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if (typeof currentIndex === 'number' && currentIndex < (missingCoverageElements.length - 1)) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +}()); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html new file mode 100644 index 0000000..0a96942 --- /dev/null +++ b/coverage/lcov-report/index.html @@ -0,0 +1,123 @@ + + + + Code coverage report for All files + + + + + + + +
+
+

+ All files +

+
+
+ 34.78% + Statements + 16/46 +
+
+ 44.44% + Branches + 8/18 +
+
+ 37.5% + Functions + 9/24 +
+
+ 34.78% + Lines + 16/46 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src
12%3/250%0/29.09%1/1112%3/25
src/components
57.89%11/1950%8/1661.54%8/1357.89%11/19
tests
100%2/2100%0/0100%0/0100%2/2
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..ef51e03 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1 @@ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000..03f704a Binary files /dev/null and b/coverage/lcov-report/sort-arrow-sprite.png differ diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..6c5034e --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,158 @@ +var addSorting = (function () { + "use strict"; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { return document.querySelector('.coverage-summary'); } + // returns the thead element of the summary table + function getTableHeader() { return getTable().querySelector('thead tr'); } + // returns the tbody element of the summary table + function getTableBody() { return getTable().querySelector('tbody'); } + // returns the th element for nth column + function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function (a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function (a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function () { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i =0 ; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function () { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(cols); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/src/components/App.js.html b/coverage/lcov-report/src/components/App.js.html new file mode 100644 index 0000000..d3c5fb6 --- /dev/null +++ b/coverage/lcov-report/src/components/App.js.html @@ -0,0 +1,348 @@ + + + + Code coverage report for src/components/App.js + + + + + + + +
+
+

+ All files / src/components App.js +

+
+
+ 42.86% + Statements + 6/14 +
+
+ 50% + Branches + 6/12 +
+
+ 37.5% + Functions + 3/8 +
+
+ 42.86% + Lines + 6/14 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94  +  +  +  +  +  +  +  +2x +  +2x +  +  +  +  +  +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import Header from "./Header";
+import PlayWindow from "./PlayWindow";
+import Events from "./Events";
+import spotify from "../spotify";
+ 
+class App extends React.Component {
+  constructor() {
+    super();
+ 
+    this.state = {
+      connected: "",
+      artist: "",
+      album: "",
+      coverArtSrc: "",
+      trackName: "",
+      events: []
+    };
+ 
+    this.spotifyStateChanged = this.spotifyStateChanged.bind(this);
+    this.eventFetch = this.eventFetch.bind(this);
+  }
+ 
+  spotifyStateChanged(state) {
+    if (!state) {
+      this.setState({
+        connected: false,
+        artist: "",
+        album: "",
+        coverArtSrc: "",
+        trackName: "",
+        events: []
+      });
+    } else {
+      this.setState({
+        connected: true,
+        artist: state.track_window.current_track.artists[0].name,
+        album: state.track_window.current_track.album.name,
+        coverArtSrc: state.track_window.current_track.album.images[2].url,
+        trackName: state.track_window.current_track.name
+      });
+      this.eventFetch();
+    }
+  }
+ 
+  componentDidMount() {
+    spotify(this.spotifyStateChanged);
+  }
+ 
+  eventFetch() {
+    fetch(
+      `https://app.ticketmaster.com/discovery/v2/events.json?keyword=${
+        this.state.artist
+      }&apikey=HQQphXuBwD8R3DAz5BZY31GeNYU1fXJn`
+    )
+      .then(response => response.json())
+      .then(json => this.setState({ events: json._embedded.events }))
+      .catch(error => this.setState({ events: [] }));
+  }
+ 
+  render() {
+    return (
+      <div className="app">
+        <Header connected={this.state.connected} />
+        <div className="app__content">
+          {this.state.connected === true ? (
+            <PlayWindow
+              artist={this.state.artist}
+              album={this.state.album}
+              coverArtSrc={this.state.coverArtSrc}
+              trackName={this.state.trackName}
+            />
+          ) : (
+            <img
+              className="placeholder"
+              src="https://spotify.i.lithium.com/t5/image/serverpage/image-id/23501i81BB3A6F661F5D33/image-size/original?v=mpbl-1&px=-1"
+            />
+          )}
+ 
+          {this.state.events.length && this.state.connected === true ? (
+            <Events eventList={this.state.events} />
+          ) : !this.state.events.length && this.state.connected ? (
+            <div className="app__events">
+              <h1>No upcoming events.</h1>
+            </div>
+          ) : null}
+        </div>
+      </div>
+    );
+  }
+}
+ 
+export default App;
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/components/Event.js.html b/coverage/lcov-report/src/components/Event.js.html new file mode 100644 index 0000000..4a8143c --- /dev/null +++ b/coverage/lcov-report/src/components/Event.js.html @@ -0,0 +1,144 @@ + + + + Code coverage report for src/components/Event.js + + + + + + + +
+
+

+ All files / src/components Event.js +

+
+
+ 100% + Statements + 1/1 +
+
+ 50% + Branches + 1/2 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 1/1 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+ 
+function Event({ event }) {
+  return (
+    <div className="app__events__event">
+      <p>{event.dates.start.localDate}</p>
+      <p>{event._embedded.venues[0].name}</p>
+      <p>
+        {event._embedded.venues[0].city.name},{" "}
+        {event._embedded.venues[0].country.name}
+      </p>
+      {event.dates.status.code === "onsale" ? (
+        <p>
+          <a href={event.url} target="_blank">
+            Get tickets here!
+          </a>
+        </p>
+      ) : (
+        <p>Tickets aren't available right now</p>
+      )}
+    </div>
+  );
+}
+ 
+export default Event;
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/components/Events.js.html b/coverage/lcov-report/src/components/Events.js.html new file mode 100644 index 0000000..3ec4cc7 --- /dev/null +++ b/coverage/lcov-report/src/components/Events.js.html @@ -0,0 +1,111 @@ + + + + Code coverage report for src/components/Events.js + + + + + + + +
+
+

+ All files / src/components Events.js +

+
+
+ 100% + Statements + 2/2 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 2/2 +
+
+ 100% + Lines + 2/2 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15  +  +  +  +2x +  +  +2x +  +  +  +  +  +  + 
import React from "react";
+import Event from "./Event";
+ 
+function Events({ eventList }) {
+  return (
+    <div className="app__events">
+      {eventList.map(function(event) {
+        return <Event key={event.id} event={event} />;
+      })}
+    </div>
+  );
+}
+ 
+export default Events;
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/components/Header.js.html b/coverage/lcov-report/src/components/Header.js.html new file mode 100644 index 0000000..44078fd --- /dev/null +++ b/coverage/lcov-report/src/components/Header.js.html @@ -0,0 +1,132 @@ + + + + Code coverage report for src/components/Header.js + + + + + + + +
+
+

+ All files / src/components Header.js +

+
+
+ 100% + Statements + 1/1 +
+
+ 50% + Branches + 1/2 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 1/1 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+ 
+function Header({ connected }) {
+  return (
+    <div className="header">
+      <h1>Spotify Dashboard</h1>
+ 
+      {!connected === true ? (
+        <div className="header__instructions">
+          <ul>
+            <li>Connect your Spotify device and browser to the same Wi-Fi</li>
+            <li>Open your Spotify app</li>
+            <li>Under 'Connect to a device', select 'Spotify Dashboard'</li>
+          </ul>
+        </div>
+      ) : null}
+    </div>
+  );
+}
+ 
+export default Header;
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/components/PlayWindow.js.html b/coverage/lcov-report/src/components/PlayWindow.js.html new file mode 100644 index 0000000..a5ebf6d --- /dev/null +++ b/coverage/lcov-report/src/components/PlayWindow.js.html @@ -0,0 +1,117 @@ + + + + Code coverage report for src/components/PlayWindow.js + + + + + + + +
+
+

+ All files / src/components PlayWindow.js +

+
+
+ 100% + Statements + 1/1 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 1/1 +
+
+ 100% + Lines + 1/1 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+ 
+function PlayWindow({ artist, album, coverArtSrc, trackName }) {
+  return (
+    <div className="app__playWindow">
+      <h1>{artist}</h1>
+      <img className="app__playWindow__img" src={coverArtSrc} />
+      <p>{trackName}</p>
+      <p>
+        <i>{album}</i>
+      </p>
+    </div>
+  );
+}
+ 
+export default PlayWindow;
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/components/index.html b/coverage/lcov-report/src/components/index.html new file mode 100644 index 0000000..b9967e4 --- /dev/null +++ b/coverage/lcov-report/src/components/index.html @@ -0,0 +1,149 @@ + + + + Code coverage report for src/components + + + + + + + +
+
+

+ All files src/components +

+
+
+ 57.89% + Statements + 11/19 +
+
+ 50% + Branches + 8/16 +
+
+ 61.54% + Functions + 8/13 +
+
+ 57.89% + Lines + 11/19 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
App.js
42.86%6/1450%6/1237.5%3/842.86%6/14
Event.js
100%1/150%1/2100%1/1100%1/1
Events.js
100%2/2100%0/0100%2/2100%2/2
Header.js
100%1/150%1/2100%1/1100%1/1
PlayWindow.js
100%1/1100%0/0100%1/1100%1/1
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/index.html b/coverage/lcov-report/src/index.html new file mode 100644 index 0000000..9a90dfd --- /dev/null +++ b/coverage/lcov-report/src/index.html @@ -0,0 +1,97 @@ + + + + Code coverage report for src + + + + + + + +
+
+

+ All files src +

+
+
+ 12% + Statements + 3/25 +
+
+ 0% + Branches + 0/2 +
+
+ 9.09% + Functions + 1/11 +
+
+ 12% + Lines + 3/25 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
spotify.js
12%3/250%0/29.09%1/1112%3/25
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/src/spotify.js.html b/coverage/lcov-report/src/spotify.js.html new file mode 100644 index 0000000..0c80e69 --- /dev/null +++ b/coverage/lcov-report/src/spotify.js.html @@ -0,0 +1,246 @@ + + + + Code coverage report for src/spotify.js + + + + + + + +
+
+

+ All files / src spotify.js +

+
+
+ 12% + Statements + 3/25 +
+
+ 0% + Branches + 0/2 +
+
+ 9.09% + Functions + 1/11 +
+
+ 12% + Lines + 3/25 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +602x +  +  +  +  +  +  +  +2x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const config = {
+  token:
+    "BQCN30OYkZIAgMQ5Q-RntvSx3xjGVfBPkNSYgUgiGPpVs8tcpFH_bBDl9Rt_xIW2PF3tWPMNH3rNENC_fPMHMMPUhK2kDzZiK5Xvwfmno4XRWHvCOot8wkh_X0oQWVTVnDYEUq9liWTLcN-yv26nZ_x2uwNi8snnPXVm",
+  url: "https://api.spotify.com"
+};
+ 
+let myStateChanged;
+export default function(stateChanged) {
+  myStateChanged = stateChanged;
+}
+ 
+window.onSpotifyWebPlaybackSDKReady = () => {
+  const token = config.token;
+  const player = new Spotify.Player({
+    name: "Spotify Dashboard",
+    getOAuthToken: cb => {
+      cb(token);
+    }
+  });
+ 
+  // Error handling
+  player.addListener("initialization_error", ({ message }) => {
+    console.error(message);
+  });
+  player.addListener("authentication_error", ({ message }) => {
+    console.error(message);
+  });
+  player.addListener("account_error", ({ message }) => {
+    console.error(message);
+  });
+  player.addListener("playback_error", ({ message }) => {
+    console.error(message);
+  });
+ 
+  // Playback status updates
+  player.addListener("player_state_changed", state => {
+    myStateChanged(state);
+  });
+ 
+  player.getCurrentState().then(state => {
+    if (!state) {
+      console.log("User is not connected");
+      return;
+    }
+  });
+ 
+  // Ready
+  player.addListener("ready", ({ device_id }) => {
+    console.log("Ready with Device ID", device_id);
+  });
+ 
+  // Not Ready
+  player.addListener("not_ready", ({ device_id }) => {
+    console.log("Device ID has gone offline", device_id);
+  });
+ 
+  // Connect to the player!
+  player.connect();
+};
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/tests/index.html b/coverage/lcov-report/tests/index.html new file mode 100644 index 0000000..eda5a38 --- /dev/null +++ b/coverage/lcov-report/tests/index.html @@ -0,0 +1,110 @@ + + + + Code coverage report for tests + + + + + + + +
+
+

+ All files tests +

+
+
+ 100% + Statements + 2/2 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 2/2 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
mockEventsResults.js
100%1/1100%0/0100%0/0100%1/1
setup.js
100%1/1100%0/0100%0/0100%1/1
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/tests/mockEventResults.js.html b/coverage/lcov-report/tests/mockEventResults.js.html new file mode 100644 index 0000000..eee0430 --- /dev/null +++ b/coverage/lcov-report/tests/mockEventResults.js.html @@ -0,0 +1,6855 @@ + + + + Code coverage report for tests/mockEventResults.js + + + + + + + +
+
+

+ All files / tests mockEventResults.js +

+
+
+ 100% + Statements + 1/1 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 1/1 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +1426 +1427 +1428 +1429 +1430 +1431 +1432 +1433 +1434 +1435 +1436 +1437 +1438 +1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450 +1451 +1452 +1453 +1454 +1455 +1456 +1457 +1458 +1459 +1460 +1461 +1462 +1463 +1464 +1465 +1466 +1467 +1468 +1469 +1470 +1471 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1480 +1481 +1482 +1483 +1484 +1485 +1486 +1487 +1488 +1489 +1490 +1491 +1492 +1493 +1494 +1495 +1496 +1497 +1498 +1499 +1500 +1501 +1502 +1503 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1512 +1513 +1514 +1515 +1516 +1517 +1518 +1519 +1520 +1521 +1522 +1523 +1524 +1525 +1526 +1527 +1528 +1529 +1530 +1531 +1532 +1533 +1534 +1535 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1544 +1545 +1546 +1547 +1548 +1549 +1550 +1551 +1552 +1553 +1554 +1555 +1556 +1557 +1558 +1559 +1560 +1561 +1562 +1563 +1564 +1565 +1566 +1567 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1576 +1577 +1578 +1579 +1580 +1581 +1582 +1583 +1584 +1585 +1586 +1587 +1588 +1589 +1590 +1591 +1592 +1593 +1594 +1595 +1596 +1597 +1598 +1599 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1608 +1609 +1610 +1611 +1612 +1613 +1614 +1615 +1616 +1617 +1618 +1619 +1620 +1621 +1622 +1623 +1624 +1625 +1626 +1627 +1628 +1629 +1630 +1631 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1640 +1641 +1642 +1643 +1644 +1645 +1646 +1647 +1648 +1649 +1650 +1651 +1652 +1653 +1654 +1655 +1656 +1657 +1658 +1659 +1660 +1661 +1662 +1663 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1672 +1673 +1674 +1675 +1676 +1677 +1678 +1679 +1680 +1681 +1682 +1683 +1684 +1685 +1686 +1687 +1688 +1689 +1690 +1691 +1692 +1693 +1694 +1695 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1704 +1705 +1706 +1707 +1708 +1709 +1710 +1711 +1712 +1713 +1714 +1715 +1716 +1717 +1718 +1719 +1720 +1721 +1722 +1723 +1724 +1725 +1726 +1727 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1736 +1737 +1738 +1739 +1740 +1741 +1742 +1743 +1744 +1745 +1746 +1747 +1748 +1749 +1750 +1751 +1752 +1753 +1754 +1755 +1756 +1757 +1758 +1759 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1768 +1769 +1770 +1771 +1772 +1773 +1774 +1775 +1776 +1777 +1778 +1779 +1780 +1781 +1782 +1783 +1784 +1785 +1786 +1787 +1788 +1789 +1790 +1791 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1800 +1801 +1802 +1803 +1804 +1805 +1806 +1807 +1808 +1809 +1810 +1811 +1812 +1813 +1814 +1815 +1816 +1817 +1818 +1819 +1820 +1821 +1822 +1823 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1832 +1833 +1834 +1835 +1836 +1837 +1838 +1839 +1840 +1841 +1842 +1843 +1844 +1845 +1846 +1847 +1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1960 +1961 +1962 +1963 +1964 +1965 +1966 +1967 +1968 +1969 +1970 +1971 +1972 +1973 +1974 +1975 +1976 +1977 +1978 +1979 +1980 +1981 +1982 +1983 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +1998 +1999 +2000 +2001 +2002 +2003 +2004 +2005 +2006 +2007 +2008 +2009 +2010 +2011 +2012 +2013 +2014 +2015 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2024 +2025 +2026 +2027 +2028 +2029 +2030 +2031 +2032 +2033 +2034 +2035 +2036 +2037 +2038 +2039 +2040 +2041 +2042 +2043 +2044 +2045 +2046 +2047 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2056 +2057 +2058 +2059 +2060 +2061 +2062 +2063 +2064 +2065 +2066 +2067 +2068 +2069 +2070 +2071 +2072 +2073 +2074 +2075 +2076 +2077 +2078 +2079 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2088 +2089 +2090 +2091 +2092 +2093 +2094 +2095 +2096 +2097 +2098 +2099 +2100 +2101 +2102 +2103 +2104 +2105 +2106 +2107 +2108 +2109 +2110 +2111 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2120 +2121 +2122 +2123 +2124 +2125 +2126 +2127 +2128 +2129 +2130 +2131 +2132 +2133 +2134 +2135 +2136 +2137 +2138 +2139 +2140 +2141 +2142 +2143 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2152 +2153 +2154 +2155 +2156 +2157 +2158 +2159 +2160 +2161 +2162 +2163 +2164 +2165 +2166 +2167 +2168 +2169 +2170 +2171 +2172 +2173 +2174 +2175 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2184 +2185 +2186 +2187 +2188 +2189 +2190 +2191 +2192 +2193 +2194 +2195 +2196 +2197 +2198 +2199 +2200 +2201 +2202 +2203 +2204 +2205 +2206 +2207 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2216 +2217 +2218 +2219 +2220 +2221 +2222 +2223 +2224 +2225 +2226 +2227 +2228 +2229 +2230 +2231 +2232 +2233 +2234 +2235 +2236 +2237 +2238 +2239 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2248 +2249 +2250 +2251 +2252 +2253 +2254 +2255 +2256 +2257 +2258 +2259 +2260 +2261 +2262 +22631x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const mockEventList = [
+  {
+    name: "Slayer",
+    type: "event",
+    id: "vvG1HZ4kFxgzpA",
+    test: false,
+    url:
+      "https://www.ticketmaster.com/slayer-ridgefield-washington-08-23-2018/event/0F00546222D78585",
+    locale: "en-us",
+    images: [
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+        width: 100,
+        height: 56,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+        width: 205,
+        height: 115,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+        width: 640,
+        height: 360,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+        width: 1136,
+        height: 639,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+        width: 640,
+        height: 427,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+        width: 2048,
+        height: 1152,
+        fallback: false
+      },
+      {
+        ratio: "4_3",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+        width: 305,
+        height: 225,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+        width: 1024,
+        height: 683,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+        width: 305,
+        height: 203,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+        width: 1024,
+        height: 576,
+        fallback: false
+      }
+    ],
+    sales: {
+      public: {
+        startDateTime: "2018-03-09T20:00:00Z",
+        startTBD: false,
+        endDateTime: "2018-08-24T04:00:00Z"
+      },
+      presales: [
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T01:00:00Z",
+          name: "Slayer Fan Club Presale & Bundle"
+        },
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Slayer VIP Package Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Spotify Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Blabbermouth Presale"
+        },
+        {
+          startDateTime: "2018-03-09T20:00:00Z",
+          endDateTime: "2018-05-17T05:00:00Z",
+          name: "Slayer VIP Package Onsale"
+        },
+        {
+          startDateTime: "2018-03-08T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Radio / Venue Presale"
+        },
+        {
+          startDateTime: "2018-06-06T17:00:00Z",
+          endDateTime: "2018-06-07T06:59:00Z",
+          name: "International Slayer Day Offer"
+        }
+      ]
+    },
+    dates: {
+      start: {
+        localDate: "2018-08-23",
+        localTime: "17:00:00",
+        dateTime: "2018-08-24T00:00:00Z",
+        dateTBD: false,
+        dateTBA: false,
+        timeTBA: false,
+        noSpecificTime: false
+      },
+      timezone: "America/Los_Angeles",
+      status: {
+        code: "onsale"
+      },
+      spanMultipleDays: false
+    },
+    classifications: [
+      {
+        primary: true,
+        segment: {
+          id: "KZFzniwnSyZfZ7v7nJ",
+          name: "Music"
+        },
+        genre: {
+          id: "KnvZfZ7vAvt",
+          name: "Metal"
+        },
+        subGenre: {
+          id: "KZazBEonSMnZfZ7vkFd",
+          name: "Heavy Metal"
+        },
+        type: {
+          id: "KZAyXgnZfZ7v7nI",
+          name: "Undefined"
+        },
+        subType: {
+          id: "KZFzBErXgnZfZ7v7lJ",
+          name: "Undefined"
+        },
+        family: false
+      }
+    ],
+    promoter: {
+      id: "653",
+      name: "LIVE NATION MUSIC",
+      description: "LIVE NATION MUSIC / NTL / USA"
+    },
+    promoters: [
+      {
+        id: "653",
+        name: "LIVE NATION MUSIC",
+        description: "LIVE NATION MUSIC / NTL / USA"
+      }
+    ],
+    pleaseNote:
+      "Please note parking lots will not open until 2:30PM. The only car access to amphitheater is from I-5 Exit 9/179TH.",
+    priceRanges: [
+      {
+        type: "standard",
+        currency: "USD",
+        min: 25,
+        max: 79.5
+      }
+    ],
+    products: [
+      {
+        id: "vvG1HZ4k4Y3oyy",
+        url:
+          "https://www.ticketmaster.com/slayer-fan-club-membership-ridgefield-washington-08-23-2018/event/0F00546570491E79",
+        type: "Membership",
+        name: "SLAYER FAN CLUB MEMBERSHIP"
+      },
+      {
+        id: "vvG1HZ463zzKOo",
+        url:
+          "https://www.ticketmaster.com/star-box-experience-ridgefield-washington-08-23-2018/event/0F005474B8E13811",
+        type: "VIP",
+        name: "STAR Box Experience"
+      }
+    ],
+    seatmap: {
+      staticUrl: "https://s1.ticketm.net/tmimages/venue/maps/sea/15585s.gif"
+    },
+    ticketLimit: {
+      info:
+        "There is an overall 8 ticket limit for this event. There is a 4 ticket limit for the Slayer Fan Club Presale and an 8 ticket limit for the VIP Packages. International Slayer Day tickets must be purchased in multiples of 2 and has an 8 ticket limit."
+    },
+    _links: {
+      self: {
+        href: "/discovery/v2/events/vvG1HZ4kFxgzpA?locale=en-us"
+      },
+      attractions: [
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+        }
+      ],
+      venues: [
+        {
+          href: "/discovery/v2/venues/KovZpZAJld6A?locale=en-us"
+        }
+      ]
+    },
+    _embedded: {
+      venues: [
+        {
+          name: "Sunlight Supply Amphitheater",
+          type: "venue",
+          id: "KovZpZAJld6A",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/sunlight-supply-amphitheater-tickets-ridgefield/venue/123505",
+          locale: "en-us",
+          images: [
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/17983v.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            }
+          ],
+          postalCode: "98642",
+          timezone: "America/Los_Angeles",
+          city: {
+            name: "Ridgefield"
+          },
+          state: {
+            name: "Washington",
+            stateCode: "WA"
+          },
+          country: {
+            name: "United States Of America",
+            countryCode: "US"
+          },
+          address: {
+            line1: "17200 NE Delfel Road"
+          },
+          location: {
+            longitude: "-122.666113",
+            latitude: "45.746432"
+          },
+          markets: [
+            {
+              id: "37"
+            }
+          ],
+          dmas: [
+            {
+              id: 228
+            },
+            {
+              id: 272
+            },
+            {
+              id: 331
+            },
+            {
+              id: 362
+            }
+          ],
+          boxOfficeInfo: {
+            phoneNumberDetail: "360.816.7000",
+            openHoursDetail: "Day of Show, Box Office will open at 10am.",
+            willCallDetail: "Will Call is available two hours prior to event."
+          },
+          parkingDetail:
+            "7200 onsite parking spaces - No offsite parking in the immediate area. All local streets are closed for parking. Parking opens two(2) hours prior to event. - Limited Premier Parking is available for purchase - A Premier Parking pass gets you exclusive access to the best parking. With this pass you’ll get in and out of the Amphitheater ahead of the crowd. YES Parking Program Save gas and time by riding together. To encourage carpooling, Sunlight Supply Amphitheater has created the YES (Your Enhancement of Service) Program, rewarding participating vehicles with prime parking (close proximity to the venue and egress priority after the event). Space is limited and is on a first-come first-serve basis. Go to http://www.sunlightsupplyamphitheater.com/directions-parking.html for complete program information.",
+          accessibleSeatingDetail:
+            "Accessible seating available by phone: 1-800-745-3000",
+          generalInfo: {
+            generalRule:
+              "No coolers, bikes, umbrellas, skateboards, roller blades, pets, throw toys, weapons, fireworks, outside food or beverages are allowed. Cameras and recording devices are subject to artist approval. No smoking inside facility. Tailgating is not permitted. All events occur rain or shine.",
+            childRule:
+              "All guests must have a ticket, except children under two (2) years old who will not occupy a reserved seat."
+          },
+          upcomingEvents: {
+            _total: 6,
+            ticketmaster: 6
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/venues/KovZpZAJld6A?locale=en-us"
+            }
+          }
+        }
+      ],
+      attractions: [
+        {
+          name: "Slayer",
+          type: "attraction",
+          id: "K8vZ9171G_0",
+          test: false,
+          url: "https://www.ticketmaster.com/slayer-tickets/artist/736135",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/SlayerVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/slayer"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/slayer"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "72de5171-38cf-4734-bc8a-6ac374dea523"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 18,
+            "mfx-dk": 2,
+            "mfx-nl": 2,
+            "mfx-no": 1,
+            "mfx-de": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Lamb of God",
+          type: "attraction",
+          id: "K8vZ9175pSf",
+          test: false,
+          url: "https://www.ticketmaster.com/lamb-of-god-tickets/artist/862390",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/lambofgodvevo"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/lambofgod"
+              }
+            ],
+            itunes: [
+              {
+                url: "https://itunes.apple.com/us/artist/id18758452"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/lambofgod"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Lamb_of_God_(band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "298909e4-ebcb-47b8-95e9-cc53b087fc65"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.lamb-of-god.com/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 17,
+            "mfx-dk": 2,
+            tmr: 1,
+            "mfx-no": 1,
+            ticketmaster: 12,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Anthrax",
+          type: "attraction",
+          id: "K8vZ9171G30",
+          test: false,
+          url: "https://www.ticketmaster.com/anthrax-tickets/artist/734447",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/AnthraxVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/Anthrax"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/anthrax"
+              },
+              {
+                url: "https://www.facebook.com/pages/ANTHRAX-UK/107790359263197"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Anthrax_(UK_band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "315126eb-86bc-475c-a308-b8edfdd6c08c"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://anthraxukoffical.com/anthrax%20uk/ANTHRAX.html"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 15,
+            "mfx-dk": 2,
+            "mfx-no": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Testament",
+          type: "attraction",
+          id: "K8vZ9171GQV",
+          test: false,
+          url: "https://www.ticketmaster.com/testament-tickets/artist/736279",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/testamentofficial"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/testament"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/testamentlegions"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "47e587c8-7626-488a-8cb9-f27225d73535"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 6,
+            ticketmaster: 6
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Napalm Death",
+          type: "attraction",
+          id: "K8vZ9171G_f",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/napalm-death-tickets/artist/735722",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/maxnapalmdeath"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/officialnapalmdeath"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Napalm_Death"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "ce7bba8b-026b-4aa6-bddb-f98ed6d595e4"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.napalmdeath.org/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: true
+            },
+            {
+              ratio: "4_3",
+              url: "https://s1.ticketm.net/dbimages/191704a.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/191705a.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: true
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 9,
+            tmr: 2,
+            ticketmaster: 7
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+            }
+          }
+        }
+      ]
+    }
+  },
+  {
+    name: "Slayer",
+    type: "event",
+    id: "G5vYZ4k62O1ev",
+    test: false,
+    url:
+      "https://www.ticketmaster.com/slayer-san-jose-california-08-26-2018/event/1C005461CF80A081",
+    locale: "en-us",
+    images: [
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+        width: 100,
+        height: 56,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+        width: 205,
+        height: 115,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+        width: 640,
+        height: 360,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+        width: 1136,
+        height: 639,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+        width: 640,
+        height: 427,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+        width: 2048,
+        height: 1152,
+        fallback: false
+      },
+      {
+        ratio: "4_3",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+        width: 305,
+        height: 225,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+        width: 1024,
+        height: 683,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+        width: 305,
+        height: 203,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+        width: 1024,
+        height: 576,
+        fallback: false
+      }
+    ],
+    sales: {
+      public: {
+        startDateTime: "2018-03-09T18:00:00Z",
+        startTBD: false,
+        endDateTime: "2018-08-27T00:00:00Z"
+      },
+      presales: [
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T01:00:00Z",
+          name: "Slayer Fan Club Presale"
+        },
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Slayer VIP Package Presale"
+        },
+        {
+          startDateTime: "2018-03-08T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Internet Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Spotify Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Blabbermouth Presale"
+        },
+        {
+          startDateTime: "2018-03-09T18:00:00Z",
+          endDateTime: "2018-08-20T05:00:00Z",
+          name: "Slayer VIP Package Onsale"
+        },
+        {
+          startDateTime: "2018-04-20T17:00:00Z",
+          endDateTime: "2018-04-21T05:00:00Z",
+          name: "4/20 Ticket Offer"
+        }
+      ]
+    },
+    dates: {
+      start: {
+        localDate: "2018-08-26",
+        localTime: "17:00:00",
+        dateTime: "2018-08-27T00:00:00Z",
+        dateTBD: false,
+        dateTBA: false,
+        timeTBA: false,
+        noSpecificTime: false
+      },
+      timezone: "America/Los_Angeles",
+      status: {
+        code: "onsale"
+      },
+      spanMultipleDays: false
+    },
+    classifications: [
+      {
+        primary: true,
+        segment: {
+          id: "KZFzniwnSyZfZ7v7nJ",
+          name: "Music"
+        },
+        genre: {
+          id: "KnvZfZ7vAvt",
+          name: "Metal"
+        },
+        subGenre: {
+          id: "KZazBEonSMnZfZ7vkFd",
+          name: "Heavy Metal"
+        },
+        type: {
+          id: "KZAyXgnZfZ7v7nI",
+          name: "Undefined"
+        },
+        subType: {
+          id: "KZFzBErXgnZfZ7v7lJ",
+          name: "Undefined"
+        },
+        family: false
+      }
+    ],
+    promoter: {
+      id: "428",
+      name: "NEDERLANDER CONCERTS",
+      description: "NEDERLANDER CONCERTS / REG / WEST"
+    },
+    promoters: [
+      {
+        id: "428",
+        name: "NEDERLANDER CONCERTS",
+        description: "NEDERLANDER CONCERTS / REG / WEST"
+      }
+    ],
+    priceRanges: [
+      {
+        type: "standard",
+        currency: "USD",
+        min: 55.5,
+        max: 65.5
+      }
+    ],
+    products: [
+      {
+        id: "G5vYZ4k68L1AH",
+        url:
+          "https://www.ticketmaster.com/sap-center-parking-slayer-san-jose-california-08-26-2018/event/1C005461D07CA17C",
+        type: "Parking",
+        name: "SAP Center Parking: Slayer"
+      },
+      {
+        id: "G5vYZ4k4YpSjQ",
+        url:
+          "https://www.ticketmaster.com/slayer-fan-club-membership-san-jose-california-08-26-2018/event/1C005465705B371A",
+        type: "Membership",
+        name: "SLAYER FAN CLUB MEMBERSHIP"
+      }
+    ],
+    seatmap: {
+      staticUrl: "https://s1.ticketm.net/tmimages/venue/maps/nca/84397s.gif"
+    },
+    ticketLimit: {
+      info:
+        "There is an overall 8 ticket limit for this event. There is a four (4) ticket limit for the Slayer Fan Club Presale and an eight (8) ticket limit for the VIP Packages."
+    },
+    _links: {
+      self: {
+        href: "/discovery/v2/events/G5vYZ4k62O1ev?locale=en-us"
+      },
+      attractions: [
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+        }
+      ],
+      venues: [
+        {
+          href: "/discovery/v2/venues/KovZpZAJelvA?locale=en-us"
+        }
+      ]
+    },
+    _embedded: {
+      venues: [
+        {
+          name: "SAP Center at San Jose",
+          type: "venue",
+          id: "KovZpZAJelvA",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/sap-center-at-san-jose-tickets-san-jose/venue/229393",
+          locale: "en-us",
+          images: [
+            {
+              ratio: "3_1",
+              url:
+                "https://s1.ticketm.net/dam/v/b20/0893e913-3090-4fb7-8d98-7e81da440b20_381211_SOURCE.jpg",
+              width: 1500,
+              height: 500,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/15427v.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            }
+          ],
+          postalCode: "95113",
+          timezone: "America/Los_Angeles",
+          city: {
+            name: "San Jose"
+          },
+          state: {
+            name: "California",
+            stateCode: "CA"
+          },
+          country: {
+            name: "United States Of America",
+            countryCode: "US"
+          },
+          address: {
+            line1: "525 W Santa Clara"
+          },
+          location: {
+            longitude: "-121.90122373",
+            latitude: "37.33276191"
+          },
+          markets: [
+            {
+              id: "41"
+            }
+          ],
+          dmas: [
+            {
+              id: 250
+            },
+            {
+              id: 273
+            },
+            {
+              id: 282
+            },
+            {
+              id: 341
+            },
+            {
+              id: 368
+            },
+            {
+              id: 374
+            },
+            {
+              id: 382
+            }
+          ],
+          social: {
+            twitter: {
+              handle: "@sapcenter"
+            }
+          },
+          boxOfficeInfo: {
+            phoneNumberDetail:
+              "The ticket office can be reached at (408) 287-9200 during business hours.",
+            openHoursDetail:
+              "The Box Office is located at the South East corner of the Arena, on the corner of Santa Clara St and Autumn St. Box Office hours are as follows: Mon - Fri .......... 10:00AM - 3:00PM Saturday & Sunday .... Closed",
+            acceptedPaymentDetail:
+              "The Box Office accepts Cash , Visa , Mastercard and American Express as methods of payment.",
+            willCallDetail:
+              "Will call is available two hours prior to the start of the event. Will call is part of the South Ticket Office, on Autumn St near Santa Clara St. Customers must present the actual credit card used for the purchase, a photo ID and the Ticketmaster confirmation number in order to receive their tickets."
+          },
+          parkingDetail:
+            "There are a limited number of parking spaces available on site. The prices vary from $15.00 to $25.00. There are also many public and private lots situated near the Arena. The attendants accept only cash. Parking is also available outside of the Arena. Sorry, no RV parking available.",
+          accessibleSeatingDetail:
+            "SAP Center has designated seats for both wheelchair accessible seating and their companions. However, due to size constraints, companion seats will not fit a wheelchair. So patrons needing wheelchair accessible seating must purchase a wheelchair accessible seat as the SAP Center cannot turn a companion seat into a wheelchair accessible seat.",
+          generalInfo: {
+            generalRule:
+              "***UPDATE *** ENHANCED SECURITY MEASURES! SAP Center at San Jose, Silicon Valley Sports & Entertainment, law enforcement agencies and the NHL have announced changes in Security measures for all Guests attending events at SAP Center. All Guests will be subject to search, which may include the use of Electronic devices, pat downs and inspections of bags. Only small purses and baby bags will be permitted in the Building. Guests are discouraged from bringing unnecessary items to SAP Center Events. * Shoes & shirts are required at all times within the building. * No audio or video recorders are allowed in the arena for any event. * There is no smoking allowed anywhere inside the arena. There are designated smoking sections provided outside of the arena.",
+            childRule:
+              'All ages are welcome. For most events no ticket is required for ages 0-23 months, as long as they do not require a seat of their own. For events such as "Sesame Street", "Barney", or "Dragon Tales" a ticket is required for anyone 12 months or older.'
+          },
+          upcomingEvents: {
+            _total: 123,
+            tmr: 4,
+            ticketmaster: 119
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/venues/KovZpZAJelvA?locale=en-us"
+            }
+          }
+        }
+      ],
+      attractions: [
+        {
+          name: "Slayer",
+          type: "attraction",
+          id: "K8vZ9171G_0",
+          test: false,
+          url: "https://www.ticketmaster.com/slayer-tickets/artist/736135",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/SlayerVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/slayer"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/slayer"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "72de5171-38cf-4734-bc8a-6ac374dea523"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 18,
+            "mfx-dk": 2,
+            "mfx-nl": 2,
+            "mfx-no": 1,
+            "mfx-de": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Lamb of God",
+          type: "attraction",
+          id: "K8vZ9175pSf",
+          test: false,
+          url: "https://www.ticketmaster.com/lamb-of-god-tickets/artist/862390",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/lambofgodvevo"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/lambofgod"
+              }
+            ],
+            itunes: [
+              {
+                url: "https://itunes.apple.com/us/artist/id18758452"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/lambofgod"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Lamb_of_God_(band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "298909e4-ebcb-47b8-95e9-cc53b087fc65"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.lamb-of-god.com/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 17,
+            "mfx-dk": 2,
+            tmr: 1,
+            "mfx-no": 1,
+            ticketmaster: 12,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Anthrax",
+          type: "attraction",
+          id: "K8vZ9171G30",
+          test: false,
+          url: "https://www.ticketmaster.com/anthrax-tickets/artist/734447",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/AnthraxVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/Anthrax"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/anthrax"
+              },
+              {
+                url: "https://www.facebook.com/pages/ANTHRAX-UK/107790359263197"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Anthrax_(UK_band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "315126eb-86bc-475c-a308-b8edfdd6c08c"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://anthraxukoffical.com/anthrax%20uk/ANTHRAX.html"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 15,
+            "mfx-dk": 2,
+            "mfx-no": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Testament",
+          type: "attraction",
+          id: "K8vZ9171GQV",
+          test: false,
+          url: "https://www.ticketmaster.com/testament-tickets/artist/736279",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/testamentofficial"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/testament"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/testamentlegions"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "47e587c8-7626-488a-8cb9-f27225d73535"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 6,
+            ticketmaster: 6
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Napalm Death",
+          type: "attraction",
+          id: "K8vZ9171G_f",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/napalm-death-tickets/artist/735722",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/maxnapalmdeath"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/officialnapalmdeath"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Napalm_Death"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "ce7bba8b-026b-4aa6-bddb-f98ed6d595e4"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.napalmdeath.org/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: true
+            },
+            {
+              ratio: "4_3",
+              url: "https://s1.ticketm.net/dbimages/191704a.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/191705a.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: true
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 9,
+            tmr: 2,
+            ticketmaster: 7
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+            }
+          }
+        }
+      ]
+    }
+  }
+];
+ 
+export { mockEventList };
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/tests/mockEventsResults.js.html b/coverage/lcov-report/tests/mockEventsResults.js.html new file mode 100644 index 0000000..a150aea --- /dev/null +++ b/coverage/lcov-report/tests/mockEventsResults.js.html @@ -0,0 +1,6855 @@ + + + + Code coverage report for tests/mockEventsResults.js + + + + + + + +
+
+

+ All files / tests mockEventsResults.js +

+
+
+ 100% + Statements + 1/1 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 1/1 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +1426 +1427 +1428 +1429 +1430 +1431 +1432 +1433 +1434 +1435 +1436 +1437 +1438 +1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450 +1451 +1452 +1453 +1454 +1455 +1456 +1457 +1458 +1459 +1460 +1461 +1462 +1463 +1464 +1465 +1466 +1467 +1468 +1469 +1470 +1471 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1480 +1481 +1482 +1483 +1484 +1485 +1486 +1487 +1488 +1489 +1490 +1491 +1492 +1493 +1494 +1495 +1496 +1497 +1498 +1499 +1500 +1501 +1502 +1503 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1512 +1513 +1514 +1515 +1516 +1517 +1518 +1519 +1520 +1521 +1522 +1523 +1524 +1525 +1526 +1527 +1528 +1529 +1530 +1531 +1532 +1533 +1534 +1535 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1544 +1545 +1546 +1547 +1548 +1549 +1550 +1551 +1552 +1553 +1554 +1555 +1556 +1557 +1558 +1559 +1560 +1561 +1562 +1563 +1564 +1565 +1566 +1567 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1576 +1577 +1578 +1579 +1580 +1581 +1582 +1583 +1584 +1585 +1586 +1587 +1588 +1589 +1590 +1591 +1592 +1593 +1594 +1595 +1596 +1597 +1598 +1599 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1608 +1609 +1610 +1611 +1612 +1613 +1614 +1615 +1616 +1617 +1618 +1619 +1620 +1621 +1622 +1623 +1624 +1625 +1626 +1627 +1628 +1629 +1630 +1631 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1640 +1641 +1642 +1643 +1644 +1645 +1646 +1647 +1648 +1649 +1650 +1651 +1652 +1653 +1654 +1655 +1656 +1657 +1658 +1659 +1660 +1661 +1662 +1663 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1672 +1673 +1674 +1675 +1676 +1677 +1678 +1679 +1680 +1681 +1682 +1683 +1684 +1685 +1686 +1687 +1688 +1689 +1690 +1691 +1692 +1693 +1694 +1695 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1704 +1705 +1706 +1707 +1708 +1709 +1710 +1711 +1712 +1713 +1714 +1715 +1716 +1717 +1718 +1719 +1720 +1721 +1722 +1723 +1724 +1725 +1726 +1727 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1736 +1737 +1738 +1739 +1740 +1741 +1742 +1743 +1744 +1745 +1746 +1747 +1748 +1749 +1750 +1751 +1752 +1753 +1754 +1755 +1756 +1757 +1758 +1759 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1768 +1769 +1770 +1771 +1772 +1773 +1774 +1775 +1776 +1777 +1778 +1779 +1780 +1781 +1782 +1783 +1784 +1785 +1786 +1787 +1788 +1789 +1790 +1791 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1800 +1801 +1802 +1803 +1804 +1805 +1806 +1807 +1808 +1809 +1810 +1811 +1812 +1813 +1814 +1815 +1816 +1817 +1818 +1819 +1820 +1821 +1822 +1823 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1832 +1833 +1834 +1835 +1836 +1837 +1838 +1839 +1840 +1841 +1842 +1843 +1844 +1845 +1846 +1847 +1848 +1849 +1850 +1851 +1852 +1853 +1854 +1855 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1864 +1865 +1866 +1867 +1868 +1869 +1870 +1871 +1872 +1873 +1874 +1875 +1876 +1877 +1878 +1879 +1880 +1881 +1882 +1883 +1884 +1885 +1886 +1887 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1896 +1897 +1898 +1899 +1900 +1901 +1902 +1903 +1904 +1905 +1906 +1907 +1908 +1909 +1910 +1911 +1912 +1913 +1914 +1915 +1916 +1917 +1918 +1919 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1928 +1929 +1930 +1931 +1932 +1933 +1934 +1935 +1936 +1937 +1938 +1939 +1940 +1941 +1942 +1943 +1944 +1945 +1946 +1947 +1948 +1949 +1950 +1951 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1960 +1961 +1962 +1963 +1964 +1965 +1966 +1967 +1968 +1969 +1970 +1971 +1972 +1973 +1974 +1975 +1976 +1977 +1978 +1979 +1980 +1981 +1982 +1983 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +1998 +1999 +2000 +2001 +2002 +2003 +2004 +2005 +2006 +2007 +2008 +2009 +2010 +2011 +2012 +2013 +2014 +2015 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2024 +2025 +2026 +2027 +2028 +2029 +2030 +2031 +2032 +2033 +2034 +2035 +2036 +2037 +2038 +2039 +2040 +2041 +2042 +2043 +2044 +2045 +2046 +2047 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2056 +2057 +2058 +2059 +2060 +2061 +2062 +2063 +2064 +2065 +2066 +2067 +2068 +2069 +2070 +2071 +2072 +2073 +2074 +2075 +2076 +2077 +2078 +2079 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2088 +2089 +2090 +2091 +2092 +2093 +2094 +2095 +2096 +2097 +2098 +2099 +2100 +2101 +2102 +2103 +2104 +2105 +2106 +2107 +2108 +2109 +2110 +2111 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2120 +2121 +2122 +2123 +2124 +2125 +2126 +2127 +2128 +2129 +2130 +2131 +2132 +2133 +2134 +2135 +2136 +2137 +2138 +2139 +2140 +2141 +2142 +2143 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2152 +2153 +2154 +2155 +2156 +2157 +2158 +2159 +2160 +2161 +2162 +2163 +2164 +2165 +2166 +2167 +2168 +2169 +2170 +2171 +2172 +2173 +2174 +2175 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2184 +2185 +2186 +2187 +2188 +2189 +2190 +2191 +2192 +2193 +2194 +2195 +2196 +2197 +2198 +2199 +2200 +2201 +2202 +2203 +2204 +2205 +2206 +2207 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2216 +2217 +2218 +2219 +2220 +2221 +2222 +2223 +2224 +2225 +2226 +2227 +2228 +2229 +2230 +2231 +2232 +2233 +2234 +2235 +2236 +2237 +2238 +2239 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2248 +2249 +2250 +2251 +2252 +2253 +2254 +2255 +2256 +2257 +2258 +2259 +2260 +2261 +2262 +22631x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const mockEventList = [
+  {
+    name: "Slayer",
+    type: "event",
+    id: "vvG1HZ4kFxgzpA",
+    test: false,
+    url:
+      "https://www.ticketmaster.com/slayer-ridgefield-washington-08-23-2018/event/0F00546222D78585",
+    locale: "en-us",
+    images: [
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+        width: 100,
+        height: 56,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+        width: 205,
+        height: 115,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+        width: 640,
+        height: 360,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+        width: 1136,
+        height: 639,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+        width: 640,
+        height: 427,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+        width: 2048,
+        height: 1152,
+        fallback: false
+      },
+      {
+        ratio: "4_3",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+        width: 305,
+        height: 225,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+        width: 1024,
+        height: 683,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+        width: 305,
+        height: 203,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+        width: 1024,
+        height: 576,
+        fallback: false
+      }
+    ],
+    sales: {
+      public: {
+        startDateTime: "2018-03-09T20:00:00Z",
+        startTBD: false,
+        endDateTime: "2018-08-24T04:00:00Z"
+      },
+      presales: [
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T01:00:00Z",
+          name: "Slayer Fan Club Presale & Bundle"
+        },
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Slayer VIP Package Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Spotify Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Blabbermouth Presale"
+        },
+        {
+          startDateTime: "2018-03-09T20:00:00Z",
+          endDateTime: "2018-05-17T05:00:00Z",
+          name: "Slayer VIP Package Onsale"
+        },
+        {
+          startDateTime: "2018-03-08T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Radio / Venue Presale"
+        },
+        {
+          startDateTime: "2018-06-06T17:00:00Z",
+          endDateTime: "2018-06-07T06:59:00Z",
+          name: "International Slayer Day Offer"
+        }
+      ]
+    },
+    dates: {
+      start: {
+        localDate: "2018-08-23",
+        localTime: "17:00:00",
+        dateTime: "2018-08-24T00:00:00Z",
+        dateTBD: false,
+        dateTBA: false,
+        timeTBA: false,
+        noSpecificTime: false
+      },
+      timezone: "America/Los_Angeles",
+      status: {
+        code: "onsale"
+      },
+      spanMultipleDays: false
+    },
+    classifications: [
+      {
+        primary: true,
+        segment: {
+          id: "KZFzniwnSyZfZ7v7nJ",
+          name: "Music"
+        },
+        genre: {
+          id: "KnvZfZ7vAvt",
+          name: "Metal"
+        },
+        subGenre: {
+          id: "KZazBEonSMnZfZ7vkFd",
+          name: "Heavy Metal"
+        },
+        type: {
+          id: "KZAyXgnZfZ7v7nI",
+          name: "Undefined"
+        },
+        subType: {
+          id: "KZFzBErXgnZfZ7v7lJ",
+          name: "Undefined"
+        },
+        family: false
+      }
+    ],
+    promoter: {
+      id: "653",
+      name: "LIVE NATION MUSIC",
+      description: "LIVE NATION MUSIC / NTL / USA"
+    },
+    promoters: [
+      {
+        id: "653",
+        name: "LIVE NATION MUSIC",
+        description: "LIVE NATION MUSIC / NTL / USA"
+      }
+    ],
+    pleaseNote:
+      "Please note parking lots will not open until 2:30PM. The only car access to amphitheater is from I-5 Exit 9/179TH.",
+    priceRanges: [
+      {
+        type: "standard",
+        currency: "USD",
+        min: 25,
+        max: 79.5
+      }
+    ],
+    products: [
+      {
+        id: "vvG1HZ4k4Y3oyy",
+        url:
+          "https://www.ticketmaster.com/slayer-fan-club-membership-ridgefield-washington-08-23-2018/event/0F00546570491E79",
+        type: "Membership",
+        name: "SLAYER FAN CLUB MEMBERSHIP"
+      },
+      {
+        id: "vvG1HZ463zzKOo",
+        url:
+          "https://www.ticketmaster.com/star-box-experience-ridgefield-washington-08-23-2018/event/0F005474B8E13811",
+        type: "VIP",
+        name: "STAR Box Experience"
+      }
+    ],
+    seatmap: {
+      staticUrl: "https://s1.ticketm.net/tmimages/venue/maps/sea/15585s.gif"
+    },
+    ticketLimit: {
+      info:
+        "There is an overall 8 ticket limit for this event. There is a 4 ticket limit for the Slayer Fan Club Presale and an 8 ticket limit for the VIP Packages. International Slayer Day tickets must be purchased in multiples of 2 and has an 8 ticket limit."
+    },
+    _links: {
+      self: {
+        href: "/discovery/v2/events/vvG1HZ4kFxgzpA?locale=en-us"
+      },
+      attractions: [
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+        }
+      ],
+      venues: [
+        {
+          href: "/discovery/v2/venues/KovZpZAJld6A?locale=en-us"
+        }
+      ]
+    },
+    _embedded: {
+      venues: [
+        {
+          name: "Sunlight Supply Amphitheater",
+          type: "venue",
+          id: "KovZpZAJld6A",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/sunlight-supply-amphitheater-tickets-ridgefield/venue/123505",
+          locale: "en-us",
+          images: [
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/17983v.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            }
+          ],
+          postalCode: "98642",
+          timezone: "America/Los_Angeles",
+          city: {
+            name: "Ridgefield"
+          },
+          state: {
+            name: "Washington",
+            stateCode: "WA"
+          },
+          country: {
+            name: "United States Of America",
+            countryCode: "US"
+          },
+          address: {
+            line1: "17200 NE Delfel Road"
+          },
+          location: {
+            longitude: "-122.666113",
+            latitude: "45.746432"
+          },
+          markets: [
+            {
+              id: "37"
+            }
+          ],
+          dmas: [
+            {
+              id: 228
+            },
+            {
+              id: 272
+            },
+            {
+              id: 331
+            },
+            {
+              id: 362
+            }
+          ],
+          boxOfficeInfo: {
+            phoneNumberDetail: "360.816.7000",
+            openHoursDetail: "Day of Show, Box Office will open at 10am.",
+            willCallDetail: "Will Call is available two hours prior to event."
+          },
+          parkingDetail:
+            "7200 onsite parking spaces - No offsite parking in the immediate area. All local streets are closed for parking. Parking opens two(2) hours prior to event. - Limited Premier Parking is available for purchase - A Premier Parking pass gets you exclusive access to the best parking. With this pass you’ll get in and out of the Amphitheater ahead of the crowd. YES Parking Program Save gas and time by riding together. To encourage carpooling, Sunlight Supply Amphitheater has created the YES (Your Enhancement of Service) Program, rewarding participating vehicles with prime parking (close proximity to the venue and egress priority after the event). Space is limited and is on a first-come first-serve basis. Go to http://www.sunlightsupplyamphitheater.com/directions-parking.html for complete program information.",
+          accessibleSeatingDetail:
+            "Accessible seating available by phone: 1-800-745-3000",
+          generalInfo: {
+            generalRule:
+              "No coolers, bikes, umbrellas, skateboards, roller blades, pets, throw toys, weapons, fireworks, outside food or beverages are allowed. Cameras and recording devices are subject to artist approval. No smoking inside facility. Tailgating is not permitted. All events occur rain or shine.",
+            childRule:
+              "All guests must have a ticket, except children under two (2) years old who will not occupy a reserved seat."
+          },
+          upcomingEvents: {
+            _total: 6,
+            ticketmaster: 6
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/venues/KovZpZAJld6A?locale=en-us"
+            }
+          }
+        }
+      ],
+      attractions: [
+        {
+          name: "Slayer",
+          type: "attraction",
+          id: "K8vZ9171G_0",
+          test: false,
+          url: "https://www.ticketmaster.com/slayer-tickets/artist/736135",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/SlayerVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/slayer"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/slayer"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "72de5171-38cf-4734-bc8a-6ac374dea523"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 18,
+            "mfx-dk": 2,
+            "mfx-nl": 2,
+            "mfx-no": 1,
+            "mfx-de": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Lamb of God",
+          type: "attraction",
+          id: "K8vZ9175pSf",
+          test: false,
+          url: "https://www.ticketmaster.com/lamb-of-god-tickets/artist/862390",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/lambofgodvevo"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/lambofgod"
+              }
+            ],
+            itunes: [
+              {
+                url: "https://itunes.apple.com/us/artist/id18758452"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/lambofgod"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Lamb_of_God_(band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "298909e4-ebcb-47b8-95e9-cc53b087fc65"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.lamb-of-god.com/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 17,
+            "mfx-dk": 2,
+            tmr: 1,
+            "mfx-no": 1,
+            ticketmaster: 12,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Anthrax",
+          type: "attraction",
+          id: "K8vZ9171G30",
+          test: false,
+          url: "https://www.ticketmaster.com/anthrax-tickets/artist/734447",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/AnthraxVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/Anthrax"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/anthrax"
+              },
+              {
+                url: "https://www.facebook.com/pages/ANTHRAX-UK/107790359263197"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Anthrax_(UK_band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "315126eb-86bc-475c-a308-b8edfdd6c08c"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://anthraxukoffical.com/anthrax%20uk/ANTHRAX.html"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 15,
+            "mfx-dk": 2,
+            "mfx-no": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Testament",
+          type: "attraction",
+          id: "K8vZ9171GQV",
+          test: false,
+          url: "https://www.ticketmaster.com/testament-tickets/artist/736279",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/testamentofficial"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/testament"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/testamentlegions"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "47e587c8-7626-488a-8cb9-f27225d73535"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 6,
+            ticketmaster: 6
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Napalm Death",
+          type: "attraction",
+          id: "K8vZ9171G_f",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/napalm-death-tickets/artist/735722",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/maxnapalmdeath"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/officialnapalmdeath"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Napalm_Death"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "ce7bba8b-026b-4aa6-bddb-f98ed6d595e4"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.napalmdeath.org/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: true
+            },
+            {
+              ratio: "4_3",
+              url: "https://s1.ticketm.net/dbimages/191704a.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/191705a.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: true
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 9,
+            tmr: 2,
+            ticketmaster: 7
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+            }
+          }
+        }
+      ]
+    }
+  },
+  {
+    name: "Slayer",
+    type: "event",
+    id: "G5vYZ4k62O1ev",
+    test: false,
+    url:
+      "https://www.ticketmaster.com/slayer-san-jose-california-08-26-2018/event/1C005461CF80A081",
+    locale: "en-us",
+    images: [
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+        width: 100,
+        height: 56,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+        width: 205,
+        height: 115,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+        width: 640,
+        height: 360,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+        width: 1136,
+        height: 639,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+        width: 640,
+        height: 427,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+        width: 2048,
+        height: 1152,
+        fallback: false
+      },
+      {
+        ratio: "4_3",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+        width: 305,
+        height: 225,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+        width: 1024,
+        height: 683,
+        fallback: false
+      },
+      {
+        ratio: "3_2",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+        width: 305,
+        height: 203,
+        fallback: false
+      },
+      {
+        ratio: "16_9",
+        url:
+          "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+        width: 1024,
+        height: 576,
+        fallback: false
+      }
+    ],
+    sales: {
+      public: {
+        startDateTime: "2018-03-09T18:00:00Z",
+        startTBD: false,
+        endDateTime: "2018-08-27T00:00:00Z"
+      },
+      presales: [
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T01:00:00Z",
+          name: "Slayer Fan Club Presale"
+        },
+        {
+          startDateTime: "2018-03-06T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Slayer VIP Package Presale"
+        },
+        {
+          startDateTime: "2018-03-08T18:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Internet Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Spotify Presale"
+        },
+        {
+          startDateTime: "2018-03-07T15:00:00Z",
+          endDateTime: "2018-03-09T06:00:00Z",
+          name: "Blabbermouth Presale"
+        },
+        {
+          startDateTime: "2018-03-09T18:00:00Z",
+          endDateTime: "2018-08-20T05:00:00Z",
+          name: "Slayer VIP Package Onsale"
+        },
+        {
+          startDateTime: "2018-04-20T17:00:00Z",
+          endDateTime: "2018-04-21T05:00:00Z",
+          name: "4/20 Ticket Offer"
+        }
+      ]
+    },
+    dates: {
+      start: {
+        localDate: "2018-08-26",
+        localTime: "17:00:00",
+        dateTime: "2018-08-27T00:00:00Z",
+        dateTBD: false,
+        dateTBA: false,
+        timeTBA: false,
+        noSpecificTime: false
+      },
+      timezone: "America/Los_Angeles",
+      status: {
+        code: "onsale"
+      },
+      spanMultipleDays: false
+    },
+    classifications: [
+      {
+        primary: true,
+        segment: {
+          id: "KZFzniwnSyZfZ7v7nJ",
+          name: "Music"
+        },
+        genre: {
+          id: "KnvZfZ7vAvt",
+          name: "Metal"
+        },
+        subGenre: {
+          id: "KZazBEonSMnZfZ7vkFd",
+          name: "Heavy Metal"
+        },
+        type: {
+          id: "KZAyXgnZfZ7v7nI",
+          name: "Undefined"
+        },
+        subType: {
+          id: "KZFzBErXgnZfZ7v7lJ",
+          name: "Undefined"
+        },
+        family: false
+      }
+    ],
+    promoter: {
+      id: "428",
+      name: "NEDERLANDER CONCERTS",
+      description: "NEDERLANDER CONCERTS / REG / WEST"
+    },
+    promoters: [
+      {
+        id: "428",
+        name: "NEDERLANDER CONCERTS",
+        description: "NEDERLANDER CONCERTS / REG / WEST"
+      }
+    ],
+    priceRanges: [
+      {
+        type: "standard",
+        currency: "USD",
+        min: 55.5,
+        max: 65.5
+      }
+    ],
+    products: [
+      {
+        id: "G5vYZ4k68L1AH",
+        url:
+          "https://www.ticketmaster.com/sap-center-parking-slayer-san-jose-california-08-26-2018/event/1C005461D07CA17C",
+        type: "Parking",
+        name: "SAP Center Parking: Slayer"
+      },
+      {
+        id: "G5vYZ4k4YpSjQ",
+        url:
+          "https://www.ticketmaster.com/slayer-fan-club-membership-san-jose-california-08-26-2018/event/1C005465705B371A",
+        type: "Membership",
+        name: "SLAYER FAN CLUB MEMBERSHIP"
+      }
+    ],
+    seatmap: {
+      staticUrl: "https://s1.ticketm.net/tmimages/venue/maps/nca/84397s.gif"
+    },
+    ticketLimit: {
+      info:
+        "There is an overall 8 ticket limit for this event. There is a four (4) ticket limit for the Slayer Fan Club Presale and an eight (8) ticket limit for the VIP Packages."
+    },
+    _links: {
+      self: {
+        href: "/discovery/v2/events/G5vYZ4k62O1ev?locale=en-us"
+      },
+      attractions: [
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+        },
+        {
+          href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+        }
+      ],
+      venues: [
+        {
+          href: "/discovery/v2/venues/KovZpZAJelvA?locale=en-us"
+        }
+      ]
+    },
+    _embedded: {
+      venues: [
+        {
+          name: "SAP Center at San Jose",
+          type: "venue",
+          id: "KovZpZAJelvA",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/sap-center-at-san-jose-tickets-san-jose/venue/229393",
+          locale: "en-us",
+          images: [
+            {
+              ratio: "3_1",
+              url:
+                "https://s1.ticketm.net/dam/v/b20/0893e913-3090-4fb7-8d98-7e81da440b20_381211_SOURCE.jpg",
+              width: 1500,
+              height: 500,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/15427v.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            }
+          ],
+          postalCode: "95113",
+          timezone: "America/Los_Angeles",
+          city: {
+            name: "San Jose"
+          },
+          state: {
+            name: "California",
+            stateCode: "CA"
+          },
+          country: {
+            name: "United States Of America",
+            countryCode: "US"
+          },
+          address: {
+            line1: "525 W Santa Clara"
+          },
+          location: {
+            longitude: "-121.90122373",
+            latitude: "37.33276191"
+          },
+          markets: [
+            {
+              id: "41"
+            }
+          ],
+          dmas: [
+            {
+              id: 250
+            },
+            {
+              id: 273
+            },
+            {
+              id: 282
+            },
+            {
+              id: 341
+            },
+            {
+              id: 368
+            },
+            {
+              id: 374
+            },
+            {
+              id: 382
+            }
+          ],
+          social: {
+            twitter: {
+              handle: "@sapcenter"
+            }
+          },
+          boxOfficeInfo: {
+            phoneNumberDetail:
+              "The ticket office can be reached at (408) 287-9200 during business hours.",
+            openHoursDetail:
+              "The Box Office is located at the South East corner of the Arena, on the corner of Santa Clara St and Autumn St. Box Office hours are as follows: Mon - Fri .......... 10:00AM - 3:00PM Saturday & Sunday .... Closed",
+            acceptedPaymentDetail:
+              "The Box Office accepts Cash , Visa , Mastercard and American Express as methods of payment.",
+            willCallDetail:
+              "Will call is available two hours prior to the start of the event. Will call is part of the South Ticket Office, on Autumn St near Santa Clara St. Customers must present the actual credit card used for the purchase, a photo ID and the Ticketmaster confirmation number in order to receive their tickets."
+          },
+          parkingDetail:
+            "There are a limited number of parking spaces available on site. The prices vary from $15.00 to $25.00. There are also many public and private lots situated near the Arena. The attendants accept only cash. Parking is also available outside of the Arena. Sorry, no RV parking available.",
+          accessibleSeatingDetail:
+            "SAP Center has designated seats for both wheelchair accessible seating and their companions. However, due to size constraints, companion seats will not fit a wheelchair. So patrons needing wheelchair accessible seating must purchase a wheelchair accessible seat as the SAP Center cannot turn a companion seat into a wheelchair accessible seat.",
+          generalInfo: {
+            generalRule:
+              "***UPDATE *** ENHANCED SECURITY MEASURES! SAP Center at San Jose, Silicon Valley Sports & Entertainment, law enforcement agencies and the NHL have announced changes in Security measures for all Guests attending events at SAP Center. All Guests will be subject to search, which may include the use of Electronic devices, pat downs and inspections of bags. Only small purses and baby bags will be permitted in the Building. Guests are discouraged from bringing unnecessary items to SAP Center Events. * Shoes & shirts are required at all times within the building. * No audio or video recorders are allowed in the arena for any event. * There is no smoking allowed anywhere inside the arena. There are designated smoking sections provided outside of the arena.",
+            childRule:
+              'All ages are welcome. For most events no ticket is required for ages 0-23 months, as long as they do not require a seat of their own. For events such as "Sesame Street", "Barney", or "Dragon Tales" a ticket is required for anyone 12 months or older.'
+          },
+          upcomingEvents: {
+            _total: 123,
+            tmr: 4,
+            ticketmaster: 119
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/venues/KovZpZAJelvA?locale=en-us"
+            }
+          }
+        }
+      ],
+      attractions: [
+        {
+          name: "Slayer",
+          type: "attraction",
+          id: "K8vZ9171G_0",
+          test: false,
+          url: "https://www.ticketmaster.com/slayer-tickets/artist/736135",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/SlayerVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/slayer"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/slayer"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "72de5171-38cf-4734-bc8a-6ac374dea523"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 18,
+            "mfx-dk": 2,
+            "mfx-nl": 2,
+            "mfx-no": 1,
+            "mfx-de": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Lamb of God",
+          type: "attraction",
+          id: "K8vZ9175pSf",
+          test: false,
+          url: "https://www.ticketmaster.com/lamb-of-god-tickets/artist/862390",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/lambofgodvevo"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/lambofgod"
+              }
+            ],
+            itunes: [
+              {
+                url: "https://itunes.apple.com/us/artist/id18758452"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/lambofgod"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Lamb_of_God_(band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "298909e4-ebcb-47b8-95e9-cc53b087fc65"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.lamb-of-god.com/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 17,
+            "mfx-dk": 2,
+            tmr: 1,
+            "mfx-no": 1,
+            ticketmaster: 12,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Anthrax",
+          type: "attraction",
+          id: "K8vZ9171G30",
+          test: false,
+          url: "https://www.ticketmaster.com/anthrax-tickets/artist/734447",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/AnthraxVEVO"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/Anthrax"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/anthrax"
+              },
+              {
+                url: "https://www.facebook.com/pages/ANTHRAX-UK/107790359263197"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Anthrax_(UK_band)"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "315126eb-86bc-475c-a308-b8edfdd6c08c"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://anthraxukoffical.com/anthrax%20uk/ANTHRAX.html"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 15,
+            "mfx-dk": 2,
+            "mfx-no": 1,
+            ticketmaster: 11,
+            "mfx-pl": 1
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Testament",
+          type: "attraction",
+          id: "K8vZ9171GQV",
+          test: false,
+          url: "https://www.ticketmaster.com/testament-tickets/artist/736279",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/testamentofficial"
+              }
+            ],
+            twitter: [
+              {
+                url: "https://twitter.com/testament"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/testamentlegions"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "47e587c8-7626-488a-8cb9-f27225d73535"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: false
+            },
+            {
+              ratio: "4_3",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_CUSTOM.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_EVENT_DETAIL_PAGE_16_9.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 6,
+            ticketmaster: 6
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us"
+            }
+          }
+        },
+        {
+          name: "Napalm Death",
+          type: "attraction",
+          id: "K8vZ9171G_f",
+          test: false,
+          url:
+            "https://www.ticketmaster.com/napalm-death-tickets/artist/735722",
+          locale: "en-us",
+          externalLinks: {
+            youtube: [
+              {
+                url: "https://www.youtube.com/user/maxnapalmdeath"
+              }
+            ],
+            facebook: [
+              {
+                url: "https://www.facebook.com/officialnapalmdeath"
+              }
+            ],
+            wiki: [
+              {
+                url: "https://en.wikipedia.org/wiki/Napalm_Death"
+              }
+            ],
+            musicbrainz: [
+              {
+                id: "ce7bba8b-026b-4aa6-bddb-f98ed6d595e4"
+              }
+            ],
+            homepage: [
+              {
+                url: "http://www.napalmdeath.org/"
+              }
+            ]
+          },
+          images: [
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_16_9.jpg",
+              width: 1024,
+              height: 576,
+              fallback: true
+            },
+            {
+              ratio: "4_3",
+              url: "https://s1.ticketm.net/dbimages/191704a.jpg",
+              width: 305,
+              height: 225,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RECOMENDATION_16_9.jpg",
+              width: 100,
+              height: 56,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_16_9.jpg",
+              width: 640,
+              height: 360,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_3_2.jpg",
+              width: 1024,
+              height: 683,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url: "https://s1.ticketm.net/dbimages/191705a.jpg",
+              width: 205,
+              height: 115,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_3_2.jpg",
+              width: 640,
+              height: 427,
+              fallback: false
+            },
+            {
+              ratio: "3_2",
+              url:
+                "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_ARTIST_PAGE_3_2.jpg",
+              width: 305,
+              height: 203,
+              fallback: false
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_LARGE_16_9.jpg",
+              width: 2048,
+              height: 1152,
+              fallback: true
+            },
+            {
+              ratio: "16_9",
+              url:
+                "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_RETINA_LANDSCAPE_16_9.jpg",
+              width: 1136,
+              height: 639,
+              fallback: true
+            }
+          ],
+          classifications: [
+            {
+              primary: true,
+              segment: {
+                id: "KZFzniwnSyZfZ7v7nJ",
+                name: "Music"
+              },
+              genre: {
+                id: "KnvZfZ7vAvt",
+                name: "Metal"
+              },
+              subGenre: {
+                id: "KZazBEonSMnZfZ7vkFd",
+                name: "Heavy Metal"
+              },
+              type: {
+                id: "KZAyXgnZfZ7v7nI",
+                name: "Undefined"
+              },
+              subType: {
+                id: "KZFzBErXgnZfZ7v7lJ",
+                name: "Undefined"
+              },
+              family: false
+            }
+          ],
+          upcomingEvents: {
+            _total: 9,
+            tmr: 2,
+            ticketmaster: 7
+          },
+          _links: {
+            self: {
+              href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us"
+            }
+          }
+        }
+      ]
+    }
+  }
+];
+ 
+export { mockEventList };
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov-report/tests/setup.js.html b/coverage/lcov-report/tests/setup.js.html new file mode 100644 index 0000000..6abb20f --- /dev/null +++ b/coverage/lcov-report/tests/setup.js.html @@ -0,0 +1,81 @@ + + + + Code coverage report for tests/setup.js + + + + + + + +
+
+

+ All files / tests setup.js +

+
+
+ 100% + Statements + 1/1 +
+
+ 100% + Branches + 0/0 +
+
+ 100% + Functions + 0/0 +
+
+ 100% + Lines + 1/1 +
+
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+
+
+

+
+
1 +2 +3 +4 +5  +  +  +5x + 
import Enzyme from "enzyme";
+import Adapter from "enzyme-adapter-react-16";
+ 
+Enzyme.configure({ adapter: new Adapter() });
+ 
+
+
+ + + + + + + + diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..7d38f83 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,184 @@ +TN: +SF:/Users/olliecrook/workspace/own-project/src/spotify.js +FN:8,(anonymous_0) +FN:12,(anonymous_1) +FN:16,(anonymous_2) +FN:22,(anonymous_3) +FN:25,(anonymous_4) +FN:28,(anonymous_5) +FN:31,(anonymous_6) +FN:36,(anonymous_7) +FN:40,(anonymous_8) +FN:48,(anonymous_9) +FN:53,(anonymous_10) +FNF:11 +FNH:1 +FNDA:2,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,2 +DA:9,2 +DA:12,2 +DA:13,0 +DA:14,0 +DA:17,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:48,0 +DA:49,0 +DA:53,0 +DA:54,0 +DA:58,0 +LF:25 +LH:3 +BRDA:41,0,0,0 +BRDA:41,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/src/components/App.js +FN:8,(anonymous_0) +FN:24,(anonymous_1) +FN:46,(anonymous_2) +FN:50,(anonymous_3) +FN:56,(anonymous_4) +FN:57,(anonymous_5) +FN:58,(anonymous_6) +FN:61,(anonymous_7) +FNF:8 +FNH:3 +FNDA:2,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:2,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:2,(anonymous_7) +DA:9,2 +DA:11,2 +DA:20,2 +DA:21,2 +DA:25,0 +DA:26,0 +DA:35,0 +DA:42,0 +DA:47,2 +DA:51,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:62,2 +LF:14 +LH:6 +BRDA:25,0,0,0 +BRDA:25,0,1,0 +BRDA:66,1,0,0 +BRDA:66,1,1,2 +BRDA:80,2,0,0 +BRDA:80,2,1,2 +BRDA:80,3,0,2 +BRDA:80,3,1,0 +BRDA:82,4,0,0 +BRDA:82,4,1,2 +BRDA:82,5,0,2 +BRDA:82,5,1,2 +BRF:12 +BRH:6 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/src/components/Event.js +FN:3,Event +FNF:1 +FNH:1 +FNDA:2,Event +DA:4,2 +LF:1 +LH:1 +BRDA:12,0,0,2 +BRDA:12,0,1,0 +BRF:2 +BRH:1 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/src/components/Events.js +FN:4,Events +FN:7,(anonymous_1) +FNF:2 +FNH:2 +FNDA:2,Events +FNDA:2,(anonymous_1) +DA:5,2 +DA:8,2 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/src/components/Header.js +FN:3,Header +FNF:1 +FNH:1 +FNDA:2,Header +DA:4,2 +LF:1 +LH:1 +BRDA:8,0,0,2 +BRDA:8,0,1,0 +BRF:2 +BRH:1 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/src/components/PlayWindow.js +FN:3,PlayWindow +FNF:1 +FNH:1 +FNDA:1,PlayWindow +DA:4,1 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/tests/mockEventsResults.js +FNF:0 +FNH:0 +DA:1,1 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/Users/olliecrook/workspace/own-project/tests/setup.js +FNF:0 +FNH:0 +DA:4,5 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..50c074b --- /dev/null +++ b/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + setupFiles: ["/tests/setup.js"] +}; diff --git a/package-lock.json b/package-lock.json index 3eb94c9..d2aab50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "react-testing", + "name": "own-project", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -17,9 +17,9 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "@mrmlnc/readdir-enhanced": { @@ -28,8 +28,8 @@ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" } }, "@nodelib/fs.stat": { @@ -44,7 +44,7 @@ "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", "dev": true, "requires": { - "any-observable": "^0.3.0" + "any-observable": "0.3.0" } }, "@sindresorhus/is": { @@ -53,6 +53,12 @@ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, + "@types/node": { + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz", + "integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.5.12", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.12.tgz", @@ -62,8 +68,8 @@ "@webassemblyjs/helper-module-context": "1.5.12", "@webassemblyjs/helper-wasm-bytecode": "1.5.12", "@webassemblyjs/wast-parser": "1.5.12", - "debug": "^3.1.0", - "mamacro": "^0.0.3" + "debug": "3.1.0", + "mamacro": "0.0.3" }, "dependencies": { "debug": { @@ -95,7 +101,7 @@ "integrity": "sha512-tJNUjttL5CxiiS/KLxT4/Zk0Nbl/poFhztFxktb46zoQEUWaGHR9ZJ0SnvE7DbFX5PY5JNJDMZ0Li4lm246fWw==", "dev": true, "requires": { - "debug": "^3.1.0" + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -130,8 +136,8 @@ "integrity": "sha512-SCXR8hPI4JOG3cdy9HAO8W5/VQ68YXG/Hfs7qDf1cd64zWuMNshyEour5NYnLMVkrrtc0XzfVS/MdeV94woFHA==", "dev": true, "requires": { - "debug": "^3.1.0", - "mamacro": "^0.0.3" + "debug": "3.1.0", + "mamacro": "0.0.3" }, "dependencies": { "debug": { @@ -161,7 +167,7 @@ "@webassemblyjs/helper-buffer": "1.5.12", "@webassemblyjs/helper-wasm-bytecode": "1.5.12", "@webassemblyjs/wasm-gen": "1.5.12", - "debug": "^3.1.0" + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -181,7 +187,7 @@ "integrity": "sha512-F+PEv9QBzPi1ThLBouUJbuxhEr+Sy/oua1ftXFKHiaYYS5Z9tKPvK/hgCxlSdq+RY4MSG15jU2JYb/K5pkoybg==", "dev": true, "requires": { - "ieee754": "^1.1.11" + "ieee754": "1.1.12" } }, "@webassemblyjs/leb128": { @@ -190,7 +196,7 @@ "integrity": "sha512-cCOx/LVGiWyCwVrVlvGmTdnwHzIP4+zflLjGkZxWpYCpdNax9krVIJh1Pm7O86Ox/c5PrJpbvZU1cZLxndlPEw==", "dev": true, "requires": { - "leb": "^0.3.0" + "leb": "0.3.0" } }, "@webassemblyjs/utf8": { @@ -213,7 +219,7 @@ "@webassemblyjs/wasm-opt": "1.5.12", "@webassemblyjs/wasm-parser": "1.5.12", "@webassemblyjs/wast-printer": "1.5.12", - "debug": "^3.1.0" + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -250,7 +256,7 @@ "@webassemblyjs/helper-buffer": "1.5.12", "@webassemblyjs/wasm-gen": "1.5.12", "@webassemblyjs/wasm-parser": "1.5.12", - "debug": "^3.1.0" + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -289,8 +295,8 @@ "@webassemblyjs/helper-api-error": "1.5.12", "@webassemblyjs/helper-code-frame": "1.5.12", "@webassemblyjs/helper-fsm": "1.5.12", - "long": "^3.2.0", - "mamacro": "^0.0.3" + "long": "3.2.0", + "mamacro": "0.0.3" } }, "@webassemblyjs/wast-printer": { @@ -301,7 +307,7 @@ "requires": { "@webassemblyjs/ast": "1.5.12", "@webassemblyjs/wast-parser": "1.5.12", - "long": "^3.2.0" + "long": "3.2.0" } }, "abab": { @@ -320,7 +326,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, @@ -335,7 +341,7 @@ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "dev": true, "requires": { - "acorn": "^5.0.0" + "acorn": "5.7.1" } }, "acorn-globals": { @@ -343,7 +349,7 @@ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "requires": { - "acorn": "^5.0.0" + "acorn": "5.7.1" } }, "ajv": { @@ -351,10 +357,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -368,9 +374,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -384,7 +390,7 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "^2.0.0" + "string-width": "2.1.1" } }, "ansi-escapes": { @@ -402,7 +408,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.2" } }, "any-observable": { @@ -416,8 +422,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" }, "dependencies": { "arr-diff": { @@ -435,16 +441,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -452,7 +458,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -462,13 +468,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -476,7 +482,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -484,7 +490,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -492,7 +498,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -500,7 +506,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -510,7 +516,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -518,7 +524,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -528,9 +534,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -545,14 +551,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -560,7 +566,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -568,7 +574,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -578,10 +584,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -589,7 +595,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -599,7 +605,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -607,7 +613,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -615,9 +621,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -625,7 +631,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -633,7 +639,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -653,19 +659,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -675,7 +681,7 @@ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "requires": { - "default-require-extensions": "^2.0.0" + "default-require-extensions": "2.0.0" } }, "aproba": { @@ -689,7 +695,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -697,7 +703,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -732,7 +738,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "array-uniq": "1.0.3" } }, "array-uniq": { @@ -746,6 +752,17 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, + "array.prototype.flat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz", + "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.12.0", + "function-bind": "1.1.1" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -767,9 +784,9 @@ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, "assert": { @@ -824,7 +841,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "lodash": "^4.17.10" + "lodash": "4.17.10" } }, "async-each": { @@ -863,9 +880,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { @@ -878,11 +895,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -890,7 +907,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -905,25 +922,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babel-generator": { @@ -931,14 +948,14 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "babel-helper-bindify-decorators": { @@ -947,9 +964,9 @@ "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -958,9 +975,9 @@ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-builder-react-jsx": { @@ -969,9 +986,9 @@ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "esutils": "^2.0.2" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" } }, "babel-helper-call-delegate": { @@ -980,10 +997,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-define-map": { @@ -992,10 +1009,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.10" } }, "babel-helper-explode-assignable-expression": { @@ -1004,9 +1021,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-explode-class": { @@ -1015,10 +1032,10 @@ "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", "dev": true, "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-bindify-decorators": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-function-name": { @@ -1027,11 +1044,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -1040,8 +1057,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-hoist-variables": { @@ -1050,8 +1067,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-optimise-call-expression": { @@ -1060,8 +1077,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-regex": { @@ -1070,9 +1087,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.10" } }, "babel-helper-remap-async-to-generator": { @@ -1081,11 +1098,11 @@ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-replace-supers": { @@ -1094,12 +1111,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helpers": { @@ -1107,8 +1124,8 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-jest": { @@ -1116,8 +1133,8 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz", "integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==", "requires": { - "babel-plugin-istanbul": "^4.1.5", - "babel-preset-jest": "^22.4.4" + "babel-plugin-istanbul": "4.1.6", + "babel-preset-jest": "22.4.4" } }, "babel-loader": { @@ -1126,9 +1143,9 @@ "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", "dev": true, "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" } }, "babel-messages": { @@ -1136,7 +1153,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-check-es2015-constants": { @@ -1145,7 +1162,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-istanbul": { @@ -1153,10 +1170,10 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.10.1", + "test-exclude": "4.2.1" } }, "babel-plugin-jest-hoist": { @@ -1241,9 +1258,9 @@ "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-generators": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-async-to-generator": { @@ -1252,9 +1269,9 @@ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-class-constructor-call": { @@ -1263,9 +1280,9 @@ "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", "dev": true, "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-plugin-syntax-class-constructor-call": "6.18.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-class-properties": { @@ -1274,10 +1291,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-decorators": { @@ -1286,11 +1303,11 @@ "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", "dev": true, "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-explode-class": "6.24.1", + "babel-plugin-syntax-decorators": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -1299,7 +1316,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -1308,7 +1325,7 @@ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -1317,11 +1334,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.10" } }, "babel-plugin-transform-es2015-classes": { @@ -1330,15 +1347,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -1347,8 +1364,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -1357,7 +1374,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -1366,8 +1383,8 @@ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-for-of": { @@ -1376,7 +1393,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -1385,9 +1402,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-literals": { @@ -1396,7 +1413,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-modules-amd": { @@ -1405,9 +1422,9 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -1416,10 +1433,10 @@ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -1428,9 +1445,9 @@ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-umd": { @@ -1439,9 +1456,9 @@ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-object-super": { @@ -1450,8 +1467,8 @@ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -1460,12 +1477,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -1474,8 +1491,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-spread": { @@ -1484,7 +1501,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -1493,9 +1510,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-template-literals": { @@ -1504,7 +1521,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -1513,7 +1530,7 @@ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -1522,9 +1539,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -1533,9 +1550,9 @@ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-export-extensions": { @@ -1544,8 +1561,8 @@ "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", "dev": true, "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-export-extensions": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-flow-strip-types": { @@ -1554,8 +1571,8 @@ "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -1564,8 +1581,8 @@ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-display-name": { @@ -1574,7 +1591,7 @@ "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-jsx": { @@ -1583,9 +1600,9 @@ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { - "babel-helper-builder-react-jsx": "^6.24.1", - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-jsx-self": { @@ -1594,8 +1611,8 @@ "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-react-jsx-source": { @@ -1604,8 +1621,8 @@ "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-regenerator": { @@ -1614,7 +1631,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "^0.10.0" + "regenerator-transform": "0.10.1" } }, "babel-plugin-transform-strict-mode": { @@ -1623,8 +1640,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-preset-env": { @@ -1633,36 +1650,36 @@ "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "3.2.8", + "invariant": "2.2.4", + "semver": "5.5.0" } }, "babel-preset-es2015": { @@ -1671,30 +1688,30 @@ "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" } }, "babel-preset-flow": { @@ -1703,7 +1720,7 @@ "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "dev": true, "requires": { - "babel-plugin-transform-flow-strip-types": "^6.22.0" + "babel-plugin-transform-flow-strip-types": "6.22.0" } }, "babel-preset-jest": { @@ -1711,8 +1728,8 @@ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz", "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==", "requires": { - "babel-plugin-jest-hoist": "^22.4.4", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" + "babel-plugin-jest-hoist": "22.4.4", + "babel-plugin-syntax-object-rest-spread": "6.13.0" } }, "babel-preset-react": { @@ -1721,12 +1738,12 @@ "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "^6.3.13", - "babel-plugin-transform-react-display-name": "^6.23.0", - "babel-plugin-transform-react-jsx": "^6.24.1", - "babel-plugin-transform-react-jsx-self": "^6.22.0", - "babel-plugin-transform-react-jsx-source": "^6.22.0", - "babel-preset-flow": "^6.23.0" + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" } }, "babel-preset-stage-1": { @@ -1735,9 +1752,9 @@ "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", "dev": true, "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" + "babel-plugin-transform-class-constructor-call": "6.24.1", + "babel-plugin-transform-export-extensions": "6.22.0", + "babel-preset-stage-2": "6.24.1" } }, "babel-preset-stage-2": { @@ -1746,10 +1763,10 @@ "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" } }, "babel-preset-stage-3": { @@ -1758,11 +1775,11 @@ "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", "dev": true, "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-generator-functions": "6.24.1", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-object-rest-spread": "6.26.0" } }, "babel-register": { @@ -1770,13 +1787,13 @@ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "babel-core": "6.26.3", + "babel-runtime": "6.26.0", + "core-js": "2.5.7", + "home-or-tmp": "2.0.0", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" }, "dependencies": { "source-map-support": { @@ -1784,7 +1801,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } } } @@ -1794,8 +1811,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -1803,11 +1820,11 @@ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.10" } }, "babel-traverse": { @@ -1815,15 +1832,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" } }, "babel-types": { @@ -1831,10 +1848,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -1852,13 +1869,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { @@ -1866,7 +1883,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -1874,7 +1891,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -1882,7 +1899,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -1890,9 +1907,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { @@ -1919,7 +1936,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "big.js": { @@ -1958,30 +1975,36 @@ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "~1.6.16" + "type-is": "1.6.16" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" }, "dependencies": { "camelcase": { @@ -1997,7 +2020,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -2006,9 +2029,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "brorand": { @@ -2036,12 +2059,12 @@ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "browserify-cipher": { @@ -2050,9 +2073,9 @@ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "browserify-aes": "1.2.0", + "browserify-des": "1.0.1", + "evp_bytestokey": "1.0.3" } }, "browserify-des": { @@ -2061,9 +2084,9 @@ "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1" + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" } }, "browserify-rsa": { @@ -2072,8 +2095,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.8", + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -2082,13 +2105,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.1" } }, "browserify-zlib": { @@ -2097,7 +2120,7 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "~1.0.5" + "pako": "1.0.6" } }, "browserslist": { @@ -2106,8 +2129,8 @@ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" + "caniuse-lite": "1.0.30000860", + "electron-to-chromium": "1.3.50" } }, "bser": { @@ -2115,7 +2138,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "requires": { - "node-int64": "^0.4.0" + "node-int64": "0.4.0" } }, "buffer": { @@ -2124,9 +2147,9 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "1.3.0", + "ieee754": "1.1.12", + "isarray": "1.0.0" } }, "buffer-from": { @@ -2162,19 +2185,19 @@ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" }, "dependencies": { "y18n": { @@ -2190,15 +2213,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" }, "dependencies": { "isobject": { @@ -2259,7 +2282,7 @@ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", "requires": { - "rsvp": "^3.3.3" + "rsvp": "3.6.2" } }, "capture-stack-trace": { @@ -2279,8 +2302,8 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "optional": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { @@ -2288,9 +2311,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, "chardet": { @@ -2299,25 +2322,50 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.10", + "parse5": "3.0.3" + }, + "dependencies": { + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "10.7.1" + } + } + } + }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.1.0" }, "dependencies": { "array-unique": { @@ -2332,16 +2380,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" } }, "extend-shallow": { @@ -2350,7 +2398,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "fill-range": { @@ -2359,10 +2407,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" } }, "glob-parent": { @@ -2371,8 +2419,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -2381,7 +2429,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -2398,7 +2446,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "2.1.1" } }, "is-number": { @@ -2407,7 +2455,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "isobject": { @@ -2430,7 +2478,7 @@ "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "1.9.3" } }, "ci-info": { @@ -2444,8 +2492,8 @@ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "class-utils": { @@ -2453,10 +2501,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -2464,7 +2512,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "isobject": { @@ -2486,7 +2534,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "2.0.0" } }, "cli-spinners": { @@ -2519,7 +2567,7 @@ "dev": true, "requires": { "slice-ansi": "0.0.4", - "string-width": "^1.0.1" + "string-width": "1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -2528,7 +2576,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -2537,9 +2585,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -2548,7 +2596,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -2565,8 +2613,8 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" }, "dependencies": { @@ -2596,7 +2644,7 @@ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "dev": true, "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.0" } }, "clone-stats": { @@ -2611,9 +2659,9 @@ "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "inherits": "2.0.3", + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.6" } }, "co": { @@ -2631,8 +2679,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color-convert": { @@ -2659,7 +2707,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -2695,10 +2743,10 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" } }, "configstore": { @@ -2707,12 +2755,12 @@ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" } }, "console-browserify": { @@ -2721,7 +2769,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "^0.1.4" + "date-now": "0.1.4" } }, "constants-browserify": { @@ -2761,12 +2809,12 @@ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" } }, "copy-descriptor": { @@ -2790,8 +2838,8 @@ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "bn.js": "4.11.8", + "elliptic": "6.4.0" } }, "create-error-class": { @@ -2800,7 +2848,7 @@ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "^1.0.0" + "capture-stack-trace": "1.0.0" } }, "create-hash": { @@ -2809,11 +2857,11 @@ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "md5.js": "1.3.4", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" } }, "create-hmac": { @@ -2822,12 +2870,12 @@ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "cipher-base": "1.0.4", + "create-hash": "1.2.0", + "inherits": "2.0.3", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.1", + "sha.js": "2.4.11" } }, "cross-spawn": { @@ -2835,9 +2883,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "crypto-browserify": { @@ -2846,17 +2894,17 @@ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "browserify-cipher": "1.0.1", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.3", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", + "inherits": "2.0.3", + "pbkdf2": "3.0.16", + "public-encrypt": "4.0.2", + "randombytes": "2.0.6", + "randomfill": "1.0.4" } }, "crypto-random-string": { @@ -2865,6 +2913,24 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", @@ -2875,7 +2941,7 @@ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz", "integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==", "requires": { - "cssom": "0.3.x" + "cssom": "0.3.2" } }, "cyclist": { @@ -2895,7 +2961,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "data-urls": { @@ -2903,9 +2969,9 @@ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", "requires": { - "abab": "^1.0.4", - "whatwg-mimetype": "^2.0.0", - "whatwg-url": "^6.4.0" + "abab": "1.0.4", + "whatwg-mimetype": "2.1.0", + "whatwg-url": "6.5.0" } }, "date-fns": { @@ -2950,7 +3016,7 @@ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.0" } }, "deep-extend": { @@ -2969,7 +3035,7 @@ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "requires": { - "strip-bom": "^3.0.0" + "strip-bom": "3.0.0" } }, "define-properties": { @@ -2977,8 +3043,8 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "foreach": "2.0.5", + "object-keys": "1.0.12" } }, "define-property": { @@ -2986,8 +3052,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -2995,7 +3061,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -3003,7 +3069,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -3011,9 +3077,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { @@ -3044,8 +3110,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, "destroy": { @@ -3064,7 +3130,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "detect-newline": { @@ -3083,9 +3149,9 @@ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" } }, "dir-glob": { @@ -3094,8 +3160,8 @@ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "dev": true, "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" + "arrify": "1.0.1", + "path-type": "3.0.0" }, "dependencies": { "path-type": { @@ -3104,7 +3170,7 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "pify": { @@ -3115,18 +3181,67 @@ } } }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "dot-prop": { @@ -3135,9 +3250,14 @@ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "1.0.1" } }, + "dotenv": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz", + "integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg==" + }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -3156,10 +3276,10 @@ "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" } }, "ecc-jsbn": { @@ -3168,7 +3288,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "editions": { @@ -3206,13 +3326,13 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.4", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" } }, "emojis-list": { @@ -3231,7 +3351,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "0.4.23" } }, "end-of-stream": { @@ -3240,7 +3360,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "enhanced-resolve": { @@ -3249,24 +3369,90 @@ "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "tapable": "1.0.0" } }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, "envinfo": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-5.10.0.tgz", "integrity": "sha512-rXbzXWvnQxy+TcqZlARbWVQwgGVVouVJgFZhLVN5htjLxl1thstrP2ZGi0pXC309AbK7gVOPU+ulz/tmpCI7iw==", "dev": true }, + "enzyme": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.4.4.tgz", + "integrity": "sha512-/xkHs9vLDmmZbyvhu0zgBHqK+aAZHyTTXvclLjATqo4SlnpReZ7JqEyrjADAhy2Kha0gKmKq4759E/+VjIExMg==", + "dev": true, + "requires": { + "array.prototype.flat": "1.2.1", + "cheerio": "1.0.0-rc.2", + "function.prototype.name": "1.1.0", + "has": "1.0.3", + "is-boolean-object": "1.0.0", + "is-callable": "1.1.4", + "is-number-object": "1.0.3", + "is-string": "1.0.4", + "is-subset": "0.1.1", + "lodash": "4.17.10", + "object-inspect": "1.6.0", + "object-is": "1.0.1", + "object.assign": "4.1.0", + "object.entries": "1.0.4", + "object.values": "1.0.4", + "raf": "3.4.0", + "rst-selector-parser": "2.2.3" + }, + "dependencies": { + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + } + } + }, + "enzyme-adapter-react-16": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.2.0.tgz", + "integrity": "sha512-UgBra+xZFVFbU5Tw7Inw0bPrNJhM2ru4vCoO7preX6sOicXuDbOH927QJx4pk6m6vatd8jnPXTF6/GCjzytJTg==", + "dev": true, + "requires": { + "enzyme-adapter-utils": "1.5.0", + "function.prototype.name": "1.1.0", + "object.assign": "4.1.0", + "object.values": "1.0.4", + "prop-types": "15.6.2", + "react-is": "16.4.2", + "react-reconciler": "0.7.0", + "react-test-renderer": "16.4.2" + } + }, + "enzyme-adapter-utils": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.5.0.tgz", + "integrity": "sha512-cLUaPYU8GEzAHi/1hiO+ylz4QiQWI8eb9SysAk8Tbul2O918dRf4cfD4s2BjijtwSvhapkOsPW9XRix1EXlJ1Q==", + "dev": true, + "requires": { + "function.prototype.name": "1.1.0", + "object.assign": "4.1.0", + "prop-types": "15.6.2" + } + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "~1.0.1" + "prr": "1.0.1" } }, "error": { @@ -3275,8 +3461,8 @@ "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", "dev": true, "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" + "string-template": "0.2.1", + "xtend": "4.0.1" } }, "error-ex": { @@ -3284,7 +3470,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "es-abstract": { @@ -3292,11 +3478,11 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.3", + "is-regex": "1.0.4" } }, "es-to-primitive": { @@ -3304,9 +3490,9 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" } }, "escape-html": { @@ -3324,11 +3510,11 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" }, "dependencies": { "esprima": { @@ -3350,8 +3536,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "4.2.1", + "estraverse": "4.2.0" } }, "esprima": { @@ -3365,7 +3551,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "4.2.0" } }, "estraverse": { @@ -3389,13 +3575,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" } }, "events": { @@ -3410,8 +3596,8 @@ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" } }, "exec-sh": { @@ -3419,7 +3605,7 @@ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", "requires": { - "merge": "^1.2.0" + "merge": "1.2.0" } }, "execa": { @@ -3427,13 +3613,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "exit": { @@ -3452,7 +3638,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -3460,7 +3646,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.4" } }, "expand-tilde": { @@ -3469,7 +3655,7 @@ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "homedir-polyfill": "1.0.1" } }, "expect": { @@ -3477,12 +3663,12 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^22.4.3", - "jest-get-type": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-regex-util": "^22.4.3" + "ansi-styles": "3.2.1", + "jest-diff": "22.4.3", + "jest-get-type": "22.4.3", + "jest-matcher-utils": "22.4.3", + "jest-message-util": "22.4.3", + "jest-regex-util": "22.4.3" } }, "express": { @@ -3490,36 +3676,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", + "proxy-addr": "2.0.3", "qs": "6.5.1", - "range-parser": "~1.2.0", + "range-parser": "1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "body-parser": { @@ -3528,15 +3714,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "~1.6.15" + "type-is": "1.6.16" } }, "iconv-lite": { @@ -3573,7 +3759,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.4.0" } }, "setprototypeof": { @@ -3600,8 +3786,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -3609,7 +3795,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -3620,9 +3806,9 @@ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "chardet": "0.4.2", + "iconv-lite": "0.4.23", + "tmp": "0.0.33" } }, "extglob": { @@ -3630,7 +3816,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "extsprintf": { @@ -3649,12 +3835,12 @@ "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" + "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.1.0", + "glob-parent": "3.1.0", + "is-glob": "4.0.0", + "merge2": "1.2.2", + "micromatch": "3.1.10" }, "dependencies": { "arr-diff": { @@ -3675,16 +3861,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -3693,7 +3879,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3704,13 +3890,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -3719,7 +3905,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -3728,7 +3914,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -3737,7 +3923,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3746,7 +3932,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3757,7 +3943,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3766,7 +3952,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3777,9 +3963,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -3796,14 +3982,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -3812,7 +3998,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -3821,7 +4007,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3832,10 +4018,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -3844,7 +4030,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3855,8 +4041,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { "is-glob": { @@ -3865,7 +4051,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "2.1.1" } } } @@ -3876,7 +4062,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -3885,7 +4071,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -3894,9 +4080,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-extglob": { @@ -3911,7 +4097,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "2.1.1" } }, "is-number": { @@ -3920,7 +4106,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3929,7 +4115,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3952,19 +4138,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -3984,7 +4170,7 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "requires": { - "bser": "^2.0.0" + "bser": "2.0.0" } }, "fbjs": { @@ -3992,13 +4178,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.18" }, "dependencies": { "core-js": { @@ -4014,7 +4200,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, "filename-regex": { @@ -4027,8 +4213,8 @@ "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "glob": "7.1.2", + "minimatch": "3.0.4" } }, "fill-range": { @@ -4036,11 +4222,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.0.0", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { @@ -4049,12 +4235,12 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" }, "dependencies": { "statuses": { @@ -4070,9 +4256,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "commondir": "1.0.1", + "make-dir": "1.3.0", + "pkg-dir": "2.0.0" } }, "find-up": { @@ -4080,7 +4266,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "^2.0.0" + "locate-path": "2.0.0" } }, "first-chunk-stream": { @@ -4089,7 +4275,7 @@ "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "readable-stream": "2.3.6" } }, "flow-parser": { @@ -4104,8 +4290,8 @@ "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "for-in": { @@ -4118,7 +4304,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "foreach": { @@ -4141,9 +4327,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "^0.4.0", + "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "mime-types": "2.1.18" } }, "forwarded": { @@ -4156,7 +4342,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fresh": { @@ -4176,8 +4362,8 @@ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "fs-write-stream-atomic": { @@ -4186,10 +4372,10 @@ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" } }, "fs.realpath": { @@ -4203,8 +4389,8 @@ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "2.10.0", + "node-pre-gyp": "0.10.0" }, "dependencies": { "abbrev": { @@ -4226,8 +4412,8 @@ "bundled": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" } }, "balanced-match": { @@ -4238,7 +4424,7 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -4292,7 +4478,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.4" } }, "fs.realpath": { @@ -4305,14 +4491,14 @@ "bundled": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, "glob": { @@ -4320,12 +4506,12 @@ "bundled": true, "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "has-unicode": { @@ -4338,7 +4524,7 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": "2.1.2" } }, "ignore-walk": { @@ -4346,7 +4532,7 @@ "bundled": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -4354,8 +4540,8 @@ "bundled": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -4371,7 +4557,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -4383,7 +4569,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -4394,8 +4580,8 @@ "version": "2.2.4", "bundled": true, "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, "minizlib": { @@ -4403,7 +4589,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.4" } }, "mkdirp": { @@ -4423,9 +4609,9 @@ "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" } }, "node-pre-gyp": { @@ -4433,16 +4619,16 @@ "bundled": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, "nopt": { @@ -4450,8 +4636,8 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { @@ -4464,8 +4650,8 @@ "bundled": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { @@ -4473,10 +4659,10 @@ "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -4492,7 +4678,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -4510,8 +4696,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -4529,10 +4715,10 @@ "bundled": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -4547,13 +4733,13 @@ "bundled": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "rimraf": { @@ -4561,7 +4747,7 @@ "bundled": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "safe-buffer": { @@ -4597,9 +4783,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -4607,14 +4793,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -4627,13 +4813,13 @@ "bundled": true, "optional": true, "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, "util-deprecate": { @@ -4646,7 +4832,7 @@ "bundled": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" } }, "wrappy": { @@ -4664,6 +4850,17 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", + "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "is-callable": "1.1.3" + } + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -4684,7 +4881,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "gh-got": { @@ -4693,8 +4890,8 @@ "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", "dev": true, "requires": { - "got": "^7.0.0", - "is-plain-obj": "^1.1.0" + "got": "7.1.0", + "is-plain-obj": "1.1.0" }, "dependencies": { "got": { @@ -4703,20 +4900,20 @@ "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", "dev": true, "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" } }, "p-cancelable": { @@ -4731,7 +4928,7 @@ "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "dev": true, "requires": { - "p-finally": "^1.0.0" + "p-finally": "1.0.0" } }, "prepend-http": { @@ -4746,7 +4943,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "1.0.4" } } } @@ -4757,7 +4954,7 @@ "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", "dev": true, "requires": { - "gh-got": "^6.0.0" + "gh-got": "6.0.0" } }, "glob": { @@ -4765,12 +4962,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-all": { @@ -4779,8 +4976,8 @@ "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", "dev": true, "requires": { - "glob": "^7.0.5", - "yargs": "~1.2.6" + "glob": "7.1.2", + "yargs": "1.2.6" }, "dependencies": { "minimist": { @@ -4795,7 +4992,7 @@ "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", "dev": true, "requires": { - "minimist": "^0.1.0" + "minimist": "0.1.0" } } } @@ -4805,8 +5002,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -4814,7 +5011,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "glob-to-regexp": { @@ -4829,7 +5026,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "^1.3.4" + "ini": "1.3.5" } }, "global-modules": { @@ -4838,9 +5035,9 @@ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" } }, "global-prefix": { @@ -4849,11 +5046,11 @@ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.1" } }, "globals": { @@ -4867,13 +5064,13 @@ "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.2", + "glob": "7.1.2", + "ignore": "3.3.10", + "pify": "3.0.0", + "slash": "1.0.0" }, "dependencies": { "pify": { @@ -4890,23 +5087,23 @@ "integrity": "sha512-tiLX+bnYm5A56T5N/n9Xo89vMaO1mrS9qoDqj3u/anVooqGozvY/HbXzEpDfbNeKsHCBpK40gSbz8wGYSp3i1w==", "dev": true, "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "mimic-response": "1.0.0", + "p-cancelable": "0.4.1", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" }, "dependencies": { "pify": { @@ -4928,7 +5125,7 @@ "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", "dev": true, "requires": { - "lodash": "^4.17.2" + "lodash": "4.17.10" } }, "growly": { @@ -4941,10 +5138,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" }, "dependencies": { "async": { @@ -4957,7 +5154,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } @@ -4972,8 +5169,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has": { @@ -4981,7 +5178,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -4989,7 +5186,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-color": { @@ -5009,13 +5206,19 @@ "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "^1.4.1" + "has-symbol-support-x": "1.4.2" } }, "has-value": { @@ -5023,9 +5226,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -5040,8 +5243,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -5049,7 +5252,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -5057,7 +5260,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -5067,7 +5270,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -5078,8 +5281,8 @@ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "hash.js": { @@ -5088,8 +5291,8 @@ "integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.1" } }, "hbs": { @@ -5111,10 +5314,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.5.tgz", "integrity": "sha1-ksbta7FkEQxQ1NjQ+93HCAbG+Oc=", "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" } }, "source-map": { @@ -5122,7 +5325,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } @@ -5133,9 +5336,9 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "hash.js": "1.1.4", + "minimalistic-assert": "1.0.1", + "minimalistic-crypto-utils": "1.0.1" } }, "home-or-tmp": { @@ -5143,8 +5346,8 @@ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "homedir-polyfill": { @@ -5153,7 +5356,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse-passwd": "1.0.0" } }, "hosted-git-info": { @@ -5166,7 +5369,21 @@ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "1.0.3" + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "http-cache-semantics": { @@ -5180,10 +5397,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" } }, "http-signature": { @@ -5191,9 +5408,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" } }, "https-browserify": { @@ -5207,7 +5424,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ieee754": { @@ -5245,8 +5462,8 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" } }, "imurmurhash": { @@ -5260,7 +5477,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "indexof": { @@ -5274,8 +5491,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -5295,19 +5512,19 @@ "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.10", "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "run-async": "2.3.0", + "rxjs": "5.5.11", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" } }, "interpret": { @@ -5322,8 +5539,8 @@ "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "dev": true, "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" + "from2": "2.3.0", + "p-is-promise": "1.1.0" } }, "invariant": { @@ -5331,7 +5548,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "invert-kv": { @@ -5349,7 +5566,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -5363,9 +5580,15 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.11.0" } }, + "is-boolean-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", + "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", + "dev": true + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -5376,7 +5599,7 @@ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { - "builtin-modules": "^1.0.0" + "builtin-modules": "1.1.1" } }, "is-callable": { @@ -5389,7 +5612,7 @@ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "requires": { - "ci-info": "^1.0.0" + "ci-info": "1.1.3" } }, "is-data-descriptor": { @@ -5397,7 +5620,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-date-object": { @@ -5410,9 +5633,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -5432,7 +5655,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -5450,7 +5673,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { @@ -5468,7 +5691,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-installed-globally": { @@ -5477,8 +5700,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -5492,9 +5715,15 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, + "is-number-object": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", + "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", + "dev": true + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -5513,7 +5742,7 @@ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "^1.1.0" + "symbol-observable": "1.2.0" }, "dependencies": { "symbol-observable": { @@ -5530,7 +5759,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "^1.0.1" + "path-is-inside": "1.0.2" } }, "is-plain-obj": { @@ -5544,7 +5773,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -5581,7 +5810,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "has": "^1.0.1" + "has": "1.0.3" } }, "is-retry-allowed": { @@ -5596,7 +5825,7 @@ "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", "dev": true, "requires": { - "scoped-regex": "^1.0.0" + "scoped-regex": "1.0.0" } }, "is-stream": { @@ -5604,6 +5833,18 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", @@ -5653,8 +5894,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.4" }, "dependencies": { "node-fetch": { @@ -5662,8 +5903,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } } } @@ -5678,18 +5919,18 @@ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", "requires": { - "async": "^2.1.4", - "compare-versions": "^3.1.0", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-report": "^1.1.4", - "istanbul-lib-source-maps": "^1.2.4", - "istanbul-reports": "^1.3.0", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" + "async": "2.6.1", + "compare-versions": "3.3.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.2.1", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.4", + "istanbul-lib-source-maps": "1.2.5", + "istanbul-reports": "1.3.0", + "js-yaml": "3.12.0", + "mkdirp": "0.5.1", + "once": "1.4.0" }, "dependencies": { "debug": { @@ -5705,11 +5946,11 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==", "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" } } } @@ -5724,7 +5965,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz", "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==", "requires": { - "append-transform": "^1.0.0" + "append-transform": "1.0.0" } }, "istanbul-lib-instrument": { @@ -5732,13 +5973,13 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.0", - "semver": "^5.3.0" + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" } }, "istanbul-lib-report": { @@ -5746,10 +5987,10 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", "requires": { - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" }, "dependencies": { "has-flag": { @@ -5762,7 +6003,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } } } @@ -5772,11 +6013,11 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" }, "dependencies": { "debug": { @@ -5794,7 +6035,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "requires": { - "handlebars": "^4.0.3" + "handlebars": "4.0.11" } }, "istextorbinary": { @@ -5803,9 +6044,9 @@ "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", "dev": true, "requires": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" + "binaryextensions": "2.1.1", + "editions": "1.3.4", + "textextensions": "2.2.0" } }, "isurl": { @@ -5814,8 +6055,8 @@ "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "dev": true, "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" } }, "jest": { @@ -5823,8 +6064,8 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-22.4.4.tgz", "integrity": "sha512-eBhhW8OS/UuX3HxgzNBSVEVhSuRDh39Z1kdYkQVWna+scpgsrD7vSeBI7tmEvsguPDMnfJodW28YBnhv/BzSew==", "requires": { - "import-local": "^1.0.0", - "jest-cli": "^22.4.4" + "import-local": "1.0.0", + "jest-cli": "22.4.4" }, "dependencies": { "jest-cli": { @@ -5832,40 +6073,40 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.4.4.tgz", "integrity": "sha512-I9dsgkeyjVEEZj9wrGrqlH+8OlNob9Iptyl+6L5+ToOLJmHm4JwOPatin1b2Bzp5R5YRQJ+oiedx7o1H7wJzhA==", "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.1.14", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-instrument": "^1.8.0", - "istanbul-lib-source-maps": "^1.2.1", - "jest-changed-files": "^22.2.0", - "jest-config": "^22.4.4", - "jest-environment-jsdom": "^22.4.1", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^22.4.2", - "jest-message-util": "^22.4.0", - "jest-regex-util": "^22.1.0", - "jest-resolve-dependencies": "^22.1.0", - "jest-runner": "^22.4.4", - "jest-runtime": "^22.4.4", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.4", - "jest-worker": "^22.2.2", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^10.0.3" + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "exit": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "import-local": "1.0.0", + "is-ci": "1.1.0", + "istanbul-api": "1.3.1", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-source-maps": "1.2.3", + "jest-changed-files": "22.4.3", + "jest-config": "22.4.4", + "jest-environment-jsdom": "22.4.3", + "jest-get-type": "22.4.3", + "jest-haste-map": "22.4.3", + "jest-message-util": "22.4.3", + "jest-regex-util": "22.4.3", + "jest-resolve-dependencies": "22.4.3", + "jest-runner": "22.4.4", + "jest-runtime": "22.4.4", + "jest-snapshot": "22.4.3", + "jest-util": "22.4.3", + "jest-validate": "22.4.4", + "jest-worker": "22.4.3", + "micromatch": "2.3.11", + "node-notifier": "5.2.1", + "realpath-native": "1.0.0", + "rimraf": "2.6.2", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.1", + "yargs": "10.1.2" } } } @@ -5875,7 +6116,7 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz", "integrity": "sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw==", "requires": { - "throat": "^4.0.0" + "throat": "4.1.0" } }, "jest-config": { @@ -5883,17 +6124,17 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.4.tgz", "integrity": "sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==", "requires": { - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^22.4.1", - "jest-environment-node": "^22.4.1", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^22.4.4", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.4", - "pretty-format": "^22.4.0" + "chalk": "2.4.1", + "glob": "7.1.2", + "jest-environment-jsdom": "22.4.3", + "jest-environment-node": "22.4.3", + "jest-get-type": "22.4.3", + "jest-jasmine2": "22.4.4", + "jest-regex-util": "22.4.3", + "jest-resolve": "22.4.3", + "jest-util": "22.4.3", + "jest-validate": "22.4.4", + "pretty-format": "22.4.3" } }, "jest-diff": { @@ -5901,10 +6142,10 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" + "chalk": "2.4.1", + "diff": "3.5.0", + "jest-get-type": "22.4.3", + "pretty-format": "22.4.3" } }, "jest-docblock": { @@ -5912,7 +6153,7 @@ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz", "integrity": "sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg==", "requires": { - "detect-newline": "^2.1.0" + "detect-newline": "2.1.0" } }, "jest-environment-jsdom": { @@ -5920,9 +6161,9 @@ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", "requires": { - "jest-mock": "^22.4.3", - "jest-util": "^22.4.3", - "jsdom": "^11.5.1" + "jest-mock": "22.4.3", + "jest-util": "22.4.3", + "jsdom": "11.11.0" } }, "jest-environment-node": { @@ -5930,8 +6171,8 @@ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", "requires": { - "jest-mock": "^22.4.3", - "jest-util": "^22.4.3" + "jest-mock": "22.4.3", + "jest-util": "22.4.3" } }, "jest-get-type": { @@ -5944,13 +6185,13 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.4.3.tgz", "integrity": "sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ==", "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-docblock": "^22.4.3", - "jest-serializer": "^22.4.3", - "jest-worker": "^22.4.3", - "micromatch": "^2.3.11", - "sane": "^2.0.0" + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "22.4.3", + "jest-serializer": "22.4.3", + "jest-worker": "22.4.3", + "micromatch": "2.3.11", + "sane": "2.5.2" } }, "jest-jasmine2": { @@ -5958,17 +6199,17 @@ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz", "integrity": "sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==", "requires": { - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^22.4.0", - "graceful-fs": "^4.1.11", - "is-generator-fn": "^1.0.0", - "jest-diff": "^22.4.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", - "source-map-support": "^0.5.0" + "chalk": "2.4.1", + "co": "4.6.0", + "expect": "22.4.3", + "graceful-fs": "4.1.11", + "is-generator-fn": "1.0.0", + "jest-diff": "22.4.3", + "jest-matcher-utils": "22.4.3", + "jest-message-util": "22.4.3", + "jest-snapshot": "22.4.3", + "jest-util": "22.4.3", + "source-map-support": "0.5.6" } }, "jest-leak-detector": { @@ -5976,7 +6217,7 @@ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz", "integrity": "sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ==", "requires": { - "pretty-format": "^22.4.3" + "pretty-format": "22.4.3" } }, "jest-matcher-utils": { @@ -5984,9 +6225,9 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" + "chalk": "2.4.1", + "jest-get-type": "22.4.3", + "pretty-format": "22.4.3" } }, "jest-message-util": { @@ -5994,11 +6235,11 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" + "@babel/code-frame": "7.0.0-beta.51", + "chalk": "2.4.1", + "micromatch": "2.3.11", + "slash": "1.0.0", + "stack-utils": "1.0.1" } }, "jest-mock": { @@ -6016,8 +6257,8 @@ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", "requires": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1" + "browser-resolve": "1.11.3", + "chalk": "2.4.1" } }, "jest-resolve-dependencies": { @@ -6025,7 +6266,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", "requires": { - "jest-regex-util": "^22.4.3" + "jest-regex-util": "22.4.3" } }, "jest-runner": { @@ -6033,17 +6274,17 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.4.tgz", "integrity": "sha512-5S/OpB51igQW9xnkM5Tgd/7ZjiAuIoiJAVtvVTBcEBiXBIFzWM3BAMPBM19FX68gRV0KWyFuGKj0EY3M3aceeQ==", "requires": { - "exit": "^0.1.2", - "jest-config": "^22.4.4", - "jest-docblock": "^22.4.0", - "jest-haste-map": "^22.4.2", - "jest-jasmine2": "^22.4.4", - "jest-leak-detector": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-runtime": "^22.4.4", - "jest-util": "^22.4.1", - "jest-worker": "^22.2.2", - "throat": "^4.0.0" + "exit": "0.1.2", + "jest-config": "22.4.4", + "jest-docblock": "22.4.3", + "jest-haste-map": "22.4.3", + "jest-jasmine2": "22.4.4", + "jest-leak-detector": "22.4.3", + "jest-message-util": "22.4.3", + "jest-runtime": "22.4.4", + "jest-util": "22.4.3", + "jest-worker": "22.4.3", + "throat": "4.1.0" } }, "jest-runtime": { @@ -6051,26 +6292,26 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.4.4.tgz", "integrity": "sha512-WRTj9m///npte1YjuphCYX7GRY/c2YvJImU9t7qOwFcqHr4YMzmX6evP/3Sehz5DKW2Vi8ONYPCFWe36JVXxfw==", "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^22.4.4", - "babel-plugin-istanbul": "^4.1.5", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^22.4.4", - "jest-haste-map": "^22.4.2", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.4", - "json-stable-stringify": "^1.0.1", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", + "babel-core": "6.26.3", + "babel-jest": "22.4.4", + "babel-plugin-istanbul": "4.1.6", + "chalk": "2.4.1", + "convert-source-map": "1.5.1", + "exit": "0.1.2", + "graceful-fs": "4.1.11", + "jest-config": "22.4.4", + "jest-haste-map": "22.4.3", + "jest-regex-util": "22.4.3", + "jest-resolve": "22.4.3", + "jest-util": "22.4.3", + "jest-validate": "22.4.4", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "realpath-native": "1.0.0", + "slash": "1.0.0", "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^10.0.3" + "write-file-atomic": "2.3.0", + "yargs": "10.1.2" } }, "jest-serializer": { @@ -6083,12 +6324,12 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", "requires": { - "chalk": "^2.0.1", - "jest-diff": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^22.4.3" + "chalk": "2.4.1", + "jest-diff": "22.4.3", + "jest-matcher-utils": "22.4.3", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "22.4.3" } }, "jest-util": { @@ -6096,13 +6337,13 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^22.4.3", - "mkdirp": "^0.5.1", - "source-map": "^0.6.0" + "callsites": "2.0.0", + "chalk": "2.4.1", + "graceful-fs": "4.1.11", + "is-ci": "1.1.0", + "jest-message-util": "22.4.3", + "mkdirp": "0.5.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -6117,11 +6358,11 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.4.tgz", "integrity": "sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==", "requires": { - "chalk": "^2.0.1", - "jest-config": "^22.4.4", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^22.4.0" + "chalk": "2.4.1", + "jest-config": "22.4.4", + "jest-get-type": "22.4.3", + "leven": "2.1.0", + "pretty-format": "22.4.3" } }, "jest-worker": { @@ -6129,7 +6370,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.4.3.tgz", "integrity": "sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ==", "requires": { - "merge-stream": "^1.0.1" + "merge-stream": "1.0.1" } }, "js-tokens": { @@ -6142,8 +6383,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.0" } }, "jsbn": { @@ -6158,21 +6399,21 @@ "integrity": "sha512-sRMollbhbmSDrR79JMAnhEjyZJlQQVozeeY9A6/KNuV26DNcuB3mGSCWXp0hks9dcwRNOELbNOiwraZaXXRk5Q==", "dev": true, "requires": { - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^7.0.0-beta.47", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "neo-async": "^2.5.0", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "7.0.0-beta.47", + "colors": "1.3.0", + "flow-parser": "0.75.0", + "lodash": "4.17.10", + "micromatch": "2.3.11", + "neo-async": "2.5.1", "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.15.0", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" + "nomnom": "1.8.1", + "recast": "0.15.0", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" }, "dependencies": { "babylon": { @@ -6187,9 +6428,9 @@ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } } } @@ -6199,32 +6440,32 @@ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz", "integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==", "requires": { - "abab": "^1.0.4", - "acorn": "^5.3.0", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.3.1 < 0.4.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.0", - "escodegen": "^1.9.0", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.2.0", - "nwsapi": "^2.0.0", + "abab": "1.0.4", + "acorn": "5.7.1", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "cssom": "0.3.2", + "cssstyle": "0.3.1", + "data-urls": "1.0.0", + "domexception": "1.0.1", + "escodegen": "1.10.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.3.0", + "nwsapi": "2.0.4", "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.83.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.3", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^4.0.0", - "xml-name-validator": "^3.0.0" + "pn": "1.1.0", + "request": "2.87.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.4.3", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-mimetype": "2.1.0", + "whatwg-url": "6.5.0", + "ws": "4.1.0", + "xml-name-validator": "3.0.0" } }, "jsesc": { @@ -6259,7 +6500,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stringify-safe": { @@ -6302,7 +6543,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "latest-version": { @@ -6311,7 +6552,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "^4.0.0" + "package-json": "4.0.1" } }, "lazy-cache": { @@ -6325,7 +6566,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "leb": { @@ -6349,8 +6590,8 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "listr": { @@ -6359,22 +6600,22 @@ "integrity": "sha512-MSMUUVN1f8aRnPi4034RkOqdiUlpYW+FqwFE3aL0uYNPRavkt2S2SsSpDDofn8BDpqv2RNnsdOcCHWsChcq77A==", "dev": true, "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "cli-truncate": "^0.2.1", - "figures": "^1.7.0", - "indent-string": "^2.1.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.4.0", - "listr-verbose-renderer": "^0.4.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "ora": "^0.2.3", - "p-map": "^1.1.1", - "rxjs": "^6.1.0", - "strip-ansi": "^3.0.1" + "@samverschueren/stream-to-observable": "0.3.0", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "6.2.1", + "strip-ansi": "3.0.1" }, "dependencies": { "ansi-styles": { @@ -6389,11 +6630,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "figures": { @@ -6402,8 +6643,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "log-symbols": { @@ -6412,7 +6653,7 @@ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "dev": true, "requires": { - "chalk": "^1.0.0" + "chalk": "1.1.3" } }, "rxjs": { @@ -6421,7 +6662,7 @@ "integrity": "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "1.9.3" } }, "strip-ansi": { @@ -6430,7 +6671,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -6453,14 +6694,14 @@ "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", "dev": true, "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "strip-ansi": "^3.0.1" + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "ansi-styles": { @@ -6475,11 +6716,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "figures": { @@ -6488,8 +6729,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "indent-string": { @@ -6504,7 +6745,7 @@ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "dev": true, "requires": { - "chalk": "^1.0.0" + "chalk": "1.1.3" } }, "strip-ansi": { @@ -6513,7 +6754,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -6530,10 +6771,10 @@ "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", "dev": true, "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" }, "dependencies": { "ansi-styles": { @@ -6548,11 +6789,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "cli-cursor": { @@ -6561,7 +6802,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "1.0.1" } }, "figures": { @@ -6570,8 +6811,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "onetime": { @@ -6586,8 +6827,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "exit-hook": "1.1.1", + "onetime": "1.1.0" } }, "strip-ansi": { @@ -6596,7 +6837,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -6612,11 +6853,11 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" }, "dependencies": { "strip-bom": { @@ -6624,7 +6865,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } } } @@ -6641,9 +6882,9 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" } }, "locate-path": { @@ -6651,8 +6892,8 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "2.0.0", + "path-exists": "3.0.0" } }, "lodash": { @@ -6666,6 +6907,12 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -6677,7 +6924,7 @@ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "2.4.1" } }, "log-update": { @@ -6686,8 +6933,8 @@ "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", "dev": true, "requires": { - "ansi-escapes": "^1.0.0", - "cli-cursor": "^1.0.2" + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" }, "dependencies": { "ansi-escapes": { @@ -6702,7 +6949,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "1.0.1" } }, "onetime": { @@ -6717,8 +6964,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "exit-hook": "1.1.1", + "onetime": "1.1.0" } } } @@ -6739,7 +6986,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "lowercase-keys": { @@ -6753,8 +7000,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "make-dir": { @@ -6763,7 +7010,7 @@ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" }, "dependencies": { "pify": { @@ -6779,7 +7026,7 @@ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.4" } }, "mamacro": { @@ -6804,7 +7051,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "math-random": { @@ -6818,8 +7065,8 @@ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "3.0.4", + "inherits": "2.0.3" } }, "media-typer": { @@ -6832,7 +7079,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "mem-fs": { @@ -6841,9 +7088,9 @@ "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", "dev": true, "requires": { - "through2": "^2.0.0", - "vinyl": "^1.1.0", - "vinyl-file": "^2.0.0" + "through2": "2.0.3", + "vinyl": "1.2.0", + "vinyl-file": "2.0.0" } }, "mem-fs-editor": { @@ -6852,17 +7099,17 @@ "integrity": "sha512-QHvdXLLNmwJXxKdf7x27aNUren6IoPxwcM8Sfd+S6/ddQQMcYdEtVKsh6ilpqMrU18VQuKZEaH0aCGt3JDbA0g==", "dev": true, "requires": { - "commondir": "^1.0.1", - "deep-extend": "^0.5.1", - "ejs": "^2.5.9", - "glob": "^7.0.3", - "globby": "^8.0.0", - "isbinaryfile": "^3.0.2", - "mkdirp": "^0.5.0", - "multimatch": "^2.0.0", - "rimraf": "^2.2.8", - "through2": "^2.0.0", - "vinyl": "^2.0.1" + "commondir": "1.0.1", + "deep-extend": "0.5.1", + "ejs": "2.6.1", + "glob": "7.1.2", + "globby": "8.0.1", + "isbinaryfile": "3.0.2", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "rimraf": "2.6.2", + "through2": "2.0.3", + "vinyl": "2.2.0" }, "dependencies": { "clone": { @@ -6889,12 +7136,12 @@ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.1.2", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" } } } @@ -6905,8 +7152,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "errno": "0.1.7", + "readable-stream": "2.3.6" } }, "merge": { @@ -6924,7 +7171,7 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "readable-stream": "^2.0.1" + "readable-stream": "2.3.6" } }, "merge2": { @@ -6943,19 +7190,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "miller-rabin": { @@ -6964,8 +7211,8 @@ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bn.js": "4.11.8", + "brorand": "1.1.0" } }, "mime": { @@ -6983,7 +7230,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } }, "mimic-fn": { @@ -7014,7 +7261,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -7028,16 +7275,16 @@ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "dev": true, "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" } }, "mixin-deep": { @@ -7045,8 +7292,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -7054,7 +7301,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -7067,18 +7314,24 @@ "minimist": "0.0.8" } }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" } }, "ms": { @@ -7092,10 +7345,10 @@ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "dev": true, "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" } }, "mute-stream": { @@ -7115,17 +7368,17 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "arr-diff": { @@ -7150,6 +7403,43 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, + "nearley": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.15.1.tgz", + "integrity": "sha512-8IUY/rUrKz2mIynUGh8k+tul1awMKEjeHHC5G3FHvvyAW6oq4mQfNp2c0BMea+sYZJvYcrrM6GmZVIle/GRXGw==", + "dev": true, + "requires": { + "moo": "0.4.3", + "nomnom": "1.6.2", + "railroad-diagrams": "1.0.0", + "randexp": "0.4.6", + "semver": "5.5.0" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + }, + "nomnom": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", + "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", + "dev": true, + "requires": { + "colors": "0.5.1", + "underscore": "1.4.4" + } + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true + } + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -7189,28 +7479,28 @@ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.6", + "stream-browserify": "2.0.1", + "stream-http": "2.8.3", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", + "url": "0.11.0", + "util": "0.10.4", "vm-browserify": "0.0.4" }, "dependencies": { @@ -7227,10 +7517,10 @@ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "requires": { - "growly": "^1.3.0", - "semver": "^5.4.1", - "shellwords": "^0.1.1", - "which": "^1.3.0" + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.1" } }, "nodemon": { @@ -7239,16 +7529,16 @@ "integrity": "sha512-FG2mWJU1Y58a9ktgMJ/RZpsiPz3b7ge77t/okZHEa4NbrlXGKZ8s1A6Q+C7+JPXohAfcPALRwvxcAn8S874pmw==", "dev": true, "requires": { - "chokidar": "^2.0.2", - "debug": "^3.1.0", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.0", - "semver": "^5.5.0", - "supports-color": "^5.2.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.3.0" + "chokidar": "2.0.4", + "debug": "3.1.0", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.0", + "semver": "5.5.0", + "supports-color": "5.4.0", + "touch": "3.1.0", + "undefsafe": "2.0.2", + "update-notifier": "2.5.0" }, "dependencies": { "debug": { @@ -7268,8 +7558,8 @@ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "dev": true, "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" + "chalk": "0.4.0", + "underscore": "1.6.0" }, "dependencies": { "ansi-styles": { @@ -7284,9 +7574,9 @@ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" } }, "strip-ansi": { @@ -7303,7 +7593,7 @@ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -7311,10 +7601,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.6.1", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -7322,7 +7612,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "normalize-url": { @@ -7331,9 +7621,9 @@ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", "dev": true, "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" + "prepend-http": "2.0.0", + "query-string": "5.1.1", + "sort-keys": "2.0.0" } }, "npm-run-path": { @@ -7341,7 +7631,16 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" } }, "number-is-nan": { @@ -7369,9 +7668,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -7379,11 +7678,23 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", @@ -7394,7 +7705,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -7404,13 +7715,37 @@ } } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.12" + } + }, + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.12.0", + "function-bind": "1.1.1", + "has": "1.0.3" + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "1.1.2", + "es-abstract": "1.12.0" } }, "object.omit": { @@ -7418,8 +7753,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "object.pick": { @@ -7427,7 +7762,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -7437,6 +7772,18 @@ } } }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.12.0", + "function-bind": "1.1.1", + "has": "1.0.3" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -7450,7 +7797,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { @@ -7459,7 +7806,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "optimist": { @@ -7467,8 +7814,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.8", + "wordwrap": "0.0.3" } }, "optionator": { @@ -7476,12 +7823,12 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" }, "dependencies": { "wordwrap": { @@ -7497,10 +7844,10 @@ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", "dev": true, "requires": { - "chalk": "^1.1.1", - "cli-cursor": "^1.0.2", - "cli-spinners": "^0.1.2", - "object-assign": "^4.0.1" + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" }, "dependencies": { "ansi-styles": { @@ -7515,11 +7862,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "cli-cursor": { @@ -7528,7 +7875,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "1.0.1" } }, "onetime": { @@ -7543,8 +7890,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "exit-hook": "1.1.1", + "onetime": "1.1.0" } }, "strip-ansi": { @@ -7553,7 +7900,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -7580,9 +7927,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, "os-tmpdir": { @@ -7602,7 +7949,7 @@ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "p-reduce": "^1.0.0" + "p-reduce": "1.0.0" } }, "p-finally": { @@ -7627,7 +7974,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "^1.0.0" + "p-try": "1.0.0" } }, "p-locate": { @@ -7635,7 +7982,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "^1.1.0" + "p-limit": "1.3.0" } }, "p-map": { @@ -7656,7 +8003,7 @@ "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dev": true, "requires": { - "p-finally": "^1.0.0" + "p-finally": "1.0.0" } }, "p-try": { @@ -7670,10 +8017,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" }, "dependencies": { "got": { @@ -7682,17 +8029,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" } }, "prepend-http": { @@ -7707,7 +8054,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "1.0.4" } } } @@ -7724,9 +8071,9 @@ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "parse-asn1": { @@ -7735,11 +8082,11 @@ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "asn1.js": "4.10.1", + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.16" } }, "parse-glob": { @@ -7747,10 +8094,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-json": { @@ -7758,7 +8105,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.2" } }, "parse-passwd": { @@ -7830,9 +8177,9 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "pause-stream": { @@ -7841,7 +8188,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "~2.3" + "through": "2.3.8" } }, "pbkdf2": { @@ -7850,11 +8197,11 @@ "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.1", + "sha.js": "2.4.11" } }, "performance-now": { @@ -7877,7 +8224,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pkg-dir": { @@ -7885,7 +8232,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } }, "pn": { @@ -7931,8 +8278,8 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.1" }, "dependencies": { "ansi-regex": { @@ -7963,7 +8310,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "~2.0.3" + "asap": "2.0.6" } }, "promise-inflight": { @@ -7977,8 +8324,8 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "1.3.1", + "object-assign": "4.1.1" } }, "proxy-addr": { @@ -7986,7 +8333,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.6.0" } }, @@ -8002,7 +8349,7 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "~3.3.0" + "event-stream": "3.3.4" } }, "pseudomap": { @@ -8021,7 +8368,7 @@ "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", "dev": true, "requires": { - "ps-tree": "^1.1.0" + "ps-tree": "1.1.0" } }, "public-encrypt": { @@ -8030,11 +8377,11 @@ "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.2.0", + "parse-asn1": "5.1.1", + "randombytes": "2.0.6" } }, "pump": { @@ -8043,8 +8390,8 @@ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } }, "pumpify": { @@ -8053,9 +8400,9 @@ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "duplexify": "3.6.0", + "inherits": "2.0.3", + "pump": "2.0.1" } }, "punycode": { @@ -8074,9 +8421,9 @@ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "dev": true, "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" } }, "querystring": { @@ -8091,14 +8438,39 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "dev": true, + "requires": { + "performance-now": "2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "0.1.15" + } + }, "randomatic": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { "is-number": { @@ -8119,7 +8491,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "^5.1.0" + "safe-buffer": "5.1.1" } }, "randomfill": { @@ -8128,8 +8500,8 @@ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" } }, "range-parser": { @@ -8154,10 +8526,10 @@ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "deep-extend": { @@ -8179,10 +8551,10 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz", "integrity": "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "fbjs": "0.8.17", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.2" } }, "react-dom": { @@ -8190,10 +8562,40 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz", "integrity": "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "fbjs": "0.8.17", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.2" + } + }, + "react-is": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.2.tgz", + "integrity": "sha512-rI3cGFj/obHbBz156PvErrS5xc6f1eWyTwyV4mo0vF2lGgXgS+mm7EKD5buLJq6jNgIagQescGSVG2YzgXt8Yg==", + "dev": true + }, + "react-reconciler": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", + "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==", + "dev": true, + "requires": { + "fbjs": "0.8.17", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.2" + } + }, + "react-test-renderer": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.4.2.tgz", + "integrity": "sha512-vdTPnRMDbxfv4wL4lzN4EkVGXyYs7LE2uImOsqh1FKiP6L5o1oJl8nore5sFi9vxrP9PK3l4rgb/fZ4PVUaWSA==", + "dev": true, + "requires": { + "fbjs": "0.8.17", + "object-assign": "4.1.1", + "prop-types": "15.6.2", + "react-is": "16.4.2" } }, "read-chunk": { @@ -8202,8 +8604,8 @@ "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", "dev": true, "requires": { - "pify": "^3.0.0", - "safe-buffer": "^5.1.1" + "pify": "3.0.0", + "safe-buffer": "5.1.1" }, "dependencies": { "pify": { @@ -8219,9 +8621,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" } }, "read-pkg-up": { @@ -8229,8 +8631,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "1.1.2", + "read-pkg": "1.1.0" }, "dependencies": { "find-up": { @@ -8238,8 +8640,8 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } }, "path-exists": { @@ -8247,7 +8649,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } } } @@ -8257,13 +8659,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -8272,10 +8674,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.6", + "set-immediate-shim": "1.0.1" } }, "realpath-native": { @@ -8283,7 +8685,7 @@ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", "requires": { - "util.promisify": "^1.0.0" + "util.promisify": "1.0.0" } }, "recast": { @@ -8293,9 +8695,9 @@ "dev": true, "requires": { "ast-types": "0.11.5", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -8312,7 +8714,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "^1.1.6" + "resolve": "1.1.7" } }, "regenerate": { @@ -8332,9 +8734,9 @@ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" } }, "regex-cache": { @@ -8342,7 +8744,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "regex-not": { @@ -8350,8 +8752,8 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "regexpu-core": { @@ -8360,9 +8762,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "regenerate": "1.4.0", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" } }, "registry-auth-token": { @@ -8371,8 +8773,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "1.2.8", + "safe-buffer": "5.1.1" } }, "registry-url": { @@ -8381,7 +8783,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "^1.0.1" + "rc": "1.2.8" } }, "regjsgen": { @@ -8396,7 +8798,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" }, "dependencies": { "jsesc": { @@ -8427,7 +8829,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "replace-ext": { @@ -8441,26 +8843,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "aws-sign2": "0.7.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.1", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.3.0" }, "dependencies": { "punycode": { @@ -8473,7 +8875,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } } } @@ -8483,7 +8885,7 @@ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "requires": { - "lodash": "^4.13.1" + "lodash": "4.17.10" } }, "request-promise-native": { @@ -8492,8 +8894,8 @@ "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", "requires": { "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "stealthy-require": "1.1.1", + "tough-cookie": "2.4.3" } }, "require-directory": { @@ -8516,7 +8918,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "3.0.0" } }, "resolve-dir": { @@ -8525,8 +8927,8 @@ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "dev": true, "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" } }, "resolve-from": { @@ -8545,7 +8947,7 @@ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "1.0.1" } }, "restore-cursor": { @@ -8554,8 +8956,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "ret": { @@ -8569,7 +8971,7 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "optional": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -8577,7 +8979,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "ripemd160": { @@ -8586,8 +8988,18 @@ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "3.0.4", + "inherits": "2.0.3" + } + }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "4.4.0", + "nearley": "2.15.1" } }, "rsvp": { @@ -8601,7 +9013,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "^2.1.0" + "is-promise": "2.1.0" } }, "run-queue": { @@ -8610,7 +9022,7 @@ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "aproba": "^1.1.1" + "aproba": "1.2.0" } }, "rxjs": { @@ -8632,7 +9044,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "safer-buffer": { @@ -8645,15 +9057,15 @@ "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" + "anymatch": "2.0.0", + "capture-exit": "1.2.0", + "exec-sh": "0.2.2", + "fb-watchman": "2.0.0", + "fsevents": "1.2.4", + "micromatch": "3.1.10", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" }, "dependencies": { "arr-diff": { @@ -8671,16 +9083,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -8688,7 +9100,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -8698,13 +9110,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -8712,7 +9124,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -8720,7 +9132,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -8728,7 +9140,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -8736,7 +9148,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -8746,7 +9158,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -8754,7 +9166,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -8764,9 +9176,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -8781,14 +9193,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -8796,7 +9208,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -8804,7 +9216,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -8814,10 +9226,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -8825,7 +9237,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -8835,7 +9247,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -8843,7 +9255,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -8851,9 +9263,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -8861,7 +9273,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -8869,7 +9281,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -8889,19 +9301,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "minimist": { @@ -8922,8 +9334,8 @@ "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.5.1", + "ajv-keywords": "3.2.0" }, "dependencies": { "ajv": { @@ -8932,10 +9344,10 @@ "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "fast-deep-equal": { @@ -8969,7 +9381,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "^5.0.3" + "semver": "5.5.0" } }, "send": { @@ -8978,18 +9390,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" }, "dependencies": { "statuses": { @@ -9010,9 +9422,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" } }, @@ -9032,10 +9444,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { @@ -9043,7 +9455,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9064,8 +9476,8 @@ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "shebang-command": { @@ -9073,7 +9485,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -9087,9 +9499,9 @@ "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", "dev": true, "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" } }, "shellwords": { @@ -9124,14 +9536,14 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.0" }, "dependencies": { "define-property": { @@ -9139,7 +9551,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -9147,7 +9559,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9157,9 +9569,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -9167,7 +9579,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -9175,7 +9587,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -9183,7 +9595,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -9191,9 +9603,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { @@ -9213,7 +9625,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" } }, "sort-keys": { @@ -9222,7 +9634,7 @@ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dev": true, "requires": { - "is-plain-obj": "^1.0.0" + "is-plain-obj": "1.1.0" } }, "source-list-map": { @@ -9241,11 +9653,11 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.1.1", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-support": { @@ -9253,8 +9665,8 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "buffer-from": "1.1.0", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -9274,8 +9686,8 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, "spdx-exceptions": { @@ -9288,8 +9700,8 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" } }, "spdx-license-ids": { @@ -9303,7 +9715,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2" + "through": "2.3.8" } }, "split-string": { @@ -9311,7 +9723,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "sprintf-js": { @@ -9324,15 +9736,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "ssri": { @@ -9341,7 +9753,7 @@ "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "dev": true, "requires": { - "safe-buffer": "^5.1.1" + "safe-buffer": "5.1.1" } }, "stack-utils": { @@ -9354,8 +9766,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -9363,7 +9775,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -9384,8 +9796,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "stream-combiner": { @@ -9394,7 +9806,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "~0.1.1" + "duplexer": "0.1.1" } }, "stream-each": { @@ -9403,8 +9815,8 @@ "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" } }, "stream-http": { @@ -9413,11 +9825,11 @@ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" } }, "stream-shift": { @@ -9437,8 +9849,8 @@ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" } }, "string-template": { @@ -9452,8 +9864,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "string_decoder": { @@ -9461,7 +9873,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "strip-ansi": { @@ -9469,7 +9881,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" }, "dependencies": { "ansi-regex": { @@ -9490,8 +9902,8 @@ "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", "dev": true, "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" }, "dependencies": { "strip-bom": { @@ -9500,7 +9912,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } } } @@ -9521,7 +9933,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "symbol-observable": { @@ -9547,8 +9959,8 @@ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", "dev": true, "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" }, "dependencies": { "rimraf": { @@ -9565,7 +9977,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "^0.7.0" + "execa": "0.7.0" } }, "test-exclude": { @@ -9573,11 +9985,11 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" + "arrify": "1.0.1", + "micromatch": "3.1.10", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" }, "dependencies": { "arr-diff": { @@ -9595,16 +10007,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -9612,7 +10024,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9622,13 +10034,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9636,7 +10048,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -9644,7 +10056,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -9652,7 +10064,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9660,7 +10072,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9670,7 +10082,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9678,7 +10090,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9688,9 +10100,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -9705,14 +10117,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9720,7 +10132,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -9728,7 +10140,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9738,10 +10150,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -9749,7 +10161,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9759,7 +10171,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -9767,7 +10179,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -9775,9 +10187,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -9785,7 +10197,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9793,7 +10205,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9813,19 +10225,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -9859,8 +10271,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2.3.6", + "xtend": "4.0.1" } }, "timed-out": { @@ -9875,7 +10287,7 @@ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { - "setimmediate": "^1.0.4" + "setimmediate": "1.0.5" } }, "tmp": { @@ -9884,7 +10296,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "1.0.2" } }, "tmpl": { @@ -9908,7 +10320,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "to-regex": { @@ -9916,10 +10328,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -9927,8 +10339,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" }, "dependencies": { "is-number": { @@ -9936,7 +10348,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } } } @@ -9947,7 +10359,7 @@ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "dev": true, "requires": { - "nopt": "~1.0.10" + "nopt": "1.0.10" } }, "tough-cookie": { @@ -9955,8 +10367,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "1.1.28", + "punycode": "1.4.1" }, "dependencies": { "punycode": { @@ -9971,7 +10383,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "trim-right": { @@ -9996,7 +10408,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.1" } }, "tweetnacl": { @@ -10010,7 +10422,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "type-is": { @@ -10019,7 +10431,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "2.1.18" } }, "typedarray": { @@ -10039,9 +10451,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "yargs": { @@ -10050,9 +10462,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -10070,14 +10482,14 @@ "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==", "dev": true, "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.5.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.6.0" }, "dependencies": { "source-map": { @@ -10092,8 +10504,8 @@ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" + "commander": "2.13.0", + "source-map": "0.6.1" } } } @@ -10104,7 +10516,7 @@ "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", "dev": true, "requires": { - "debug": "^2.2.0" + "debug": "2.6.9" } }, "underscore": { @@ -10118,10 +10530,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" }, "dependencies": { "extend-shallow": { @@ -10129,7 +10541,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "set-value": { @@ -10137,10 +10549,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" } } } @@ -10151,7 +10563,7 @@ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", "dev": true, "requires": { - "unique-slug": "^2.0.0" + "unique-slug": "2.0.0" } }, "unique-slug": { @@ -10160,7 +10572,7 @@ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "dev": true, "requires": { - "imurmurhash": "^0.1.4" + "imurmurhash": "0.1.4" } }, "unique-string": { @@ -10169,7 +10581,7 @@ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "1.0.0" } }, "unpipe": { @@ -10182,8 +10594,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -10191,9 +10603,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -10242,16 +10654,16 @@ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "boxen": "1.3.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" } }, "uri-js": { @@ -10260,7 +10672,7 @@ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "urix": { @@ -10292,7 +10704,7 @@ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dev": true, "requires": { - "prepend-http": "^2.0.0" + "prepend-http": "2.0.0" } }, "url-to-options": { @@ -10306,7 +10718,7 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "requires": { - "kind-of": "^6.0.2" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { @@ -10335,8 +10747,8 @@ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" } }, "utils-merge": { @@ -10360,8 +10772,8 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "vary": { @@ -10374,9 +10786,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "vinyl": { @@ -10385,8 +10797,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", + "clone": "1.0.4", + "clone-stats": "0.0.1", "replace-ext": "0.0.1" } }, @@ -10396,12 +10808,12 @@ "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^1.1.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" }, "dependencies": { "strip-bom": { @@ -10410,7 +10822,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } } } @@ -10429,7 +10841,7 @@ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "requires": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "0.1.2" } }, "walk": { @@ -10437,7 +10849,7 @@ "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", "requires": { - "foreachasync": "^3.0.0" + "foreachasync": "3.0.0" } }, "walker": { @@ -10445,7 +10857,7 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.11" } }, "watch": { @@ -10453,8 +10865,8 @@ "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" + "exec-sh": "0.2.2", + "minimist": "1.2.0" }, "dependencies": { "minimist": { @@ -10470,9 +10882,9 @@ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "chokidar": "2.0.4", + "graceful-fs": "4.1.11", + "neo-async": "2.5.1" } }, "webidl-conversions": { @@ -10491,26 +10903,26 @@ "@webassemblyjs/wasm-edit": "1.5.12", "@webassemblyjs/wasm-opt": "1.5.12", "@webassemblyjs/wasm-parser": "1.5.12", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.0.0", - "eslint-scope": "^3.7.1", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" + "acorn": "5.7.1", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.5.1", + "ajv-keywords": "3.2.0", + "chrome-trace-event": "1.0.0", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", + "json-parse-better-errors": "1.0.2", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "neo-async": "2.5.1", + "node-libs-browser": "2.1.0", + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.7", + "watchpack": "1.6.0", + "webpack-sources": "1.1.0" }, "dependencies": { "ajv": { @@ -10519,10 +10931,10 @@ "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "arr-diff": { @@ -10543,16 +10955,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -10561,7 +10973,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -10572,13 +10984,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -10587,7 +10999,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -10596,7 +11008,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -10605,7 +11017,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10614,7 +11026,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10625,7 +11037,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10634,7 +11046,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10645,9 +11057,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -10664,14 +11076,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -10680,7 +11092,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -10689,7 +11101,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -10706,10 +11118,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -10718,7 +11130,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -10729,7 +11141,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -10738,7 +11150,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -10747,9 +11159,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -10758,7 +11170,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10767,7 +11179,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10796,19 +11208,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -10819,7 +11231,7 @@ "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", "dev": true, "requires": { - "jscodeshift": "^0.4.0" + "jscodeshift": "0.4.1" }, "dependencies": { "ast-types": { @@ -10840,21 +11252,21 @@ "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", "dev": true, "requires": { - "async": "^1.5.0", - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^6.17.3", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", + "async": "1.5.2", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "6.18.0", + "colors": "1.3.0", + "flow-parser": "0.75.0", + "lodash": "4.17.10", + "micromatch": "2.3.11", "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.12.5", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" + "nomnom": "1.8.1", + "recast": "0.12.9", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" } }, "recast": { @@ -10864,10 +11276,10 @@ "dev": true, "requires": { "ast-types": "0.10.1", - "core-js": "^2.4.1", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" + "core-js": "2.5.7", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" } }, "source-map": { @@ -10882,9 +11294,9 @@ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } } } @@ -10895,32 +11307,32 @@ "integrity": "sha512-CiWQR+1JS77rmyiO6y1q8Kt/O+e8nUUC9YfJ25JtSmzDwbqJV7vIsh3+QKRHVTbTCa0DaVh8iY1LBiagUIDB3g==", "dev": true, "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "diff": "^3.5.0", - "enhanced-resolve": "^4.0.0", - "envinfo": "^5.7.0", - "glob-all": "^3.1.0", - "global-modules": "^1.0.0", - "got": "^8.3.1", - "import-local": "^1.0.0", - "inquirer": "^5.2.0", - "interpret": "^1.1.0", - "jscodeshift": "^0.5.0", - "listr": "^0.14.1", - "loader-utils": "^1.1.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mkdirp": "^0.5.1", - "p-each-series": "^1.0.0", - "p-lazy": "^1.0.0", - "prettier": "^1.12.1", - "supports-color": "^5.4.0", - "v8-compile-cache": "^2.0.0", - "webpack-addons": "^1.1.5", - "yargs": "^11.1.0", - "yeoman-environment": "^2.1.1", - "yeoman-generator": "^2.0.5" + "chalk": "2.4.1", + "cross-spawn": "6.0.5", + "diff": "3.5.0", + "enhanced-resolve": "4.0.0", + "envinfo": "5.10.0", + "glob-all": "3.1.0", + "global-modules": "1.0.0", + "got": "8.3.1", + "import-local": "1.0.0", + "inquirer": "5.2.0", + "interpret": "1.1.0", + "jscodeshift": "0.5.1", + "listr": "0.14.1", + "loader-utils": "1.1.0", + "lodash": "4.17.10", + "log-symbols": "2.2.0", + "mkdirp": "0.5.1", + "p-each-series": "1.0.0", + "p-lazy": "1.0.0", + "prettier": "1.13.6", + "supports-color": "5.4.0", + "v8-compile-cache": "2.0.0", + "webpack-addons": "1.1.5", + "yargs": "11.1.0", + "yeoman-environment": "2.3.0", + "yeoman-generator": "2.0.5" }, "dependencies": { "camelcase": { @@ -10935,9 +11347,9 @@ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, "cross-spawn": { @@ -10946,11 +11358,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "yargs": { @@ -10959,18 +11371,18 @@ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" } }, "yargs-parser": { @@ -10979,7 +11391,7 @@ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } } } @@ -10990,8 +11402,8 @@ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "source-list-map": "2.0.0", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -11032,9 +11444,9 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } }, "which": { @@ -11042,7 +11454,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -11056,7 +11468,7 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "^2.1.1" + "string-width": "2.1.1" } }, "window-size": { @@ -11076,7 +11488,7 @@ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", "dev": true, "requires": { - "errno": "~0.1.7" + "errno": "0.1.7" } }, "wrap-ansi": { @@ -11084,8 +11496,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -11093,7 +11505,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "string-width": { @@ -11101,9 +11513,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -11111,7 +11523,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -11126,9 +11538,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } }, "ws": { @@ -11136,8 +11548,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1" } }, "xdg-basedir": { @@ -11172,18 +11584,18 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.1.0" + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" }, "dependencies": { "cliui": { @@ -11191,9 +11603,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } } } @@ -11203,7 +11615,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" }, "dependencies": { "camelcase": { @@ -11219,21 +11631,21 @@ "integrity": "sha512-PHSAkVOqYdcR+C+Uht1SGC4eVD/9OhygYFkYaI66xF8vKIeS1RNYay+umj2ZrQeJ50tF5Q/RSO6qGDz9y3Ifug==", "dev": true, "requires": { - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "diff": "^3.3.1", - "escape-string-regexp": "^1.0.2", - "globby": "^8.0.1", - "grouped-queue": "^0.3.3", - "inquirer": "^5.2.0", - "is-scoped": "^1.0.0", - "lodash": "^4.17.10", - "log-symbols": "^2.1.0", - "mem-fs": "^1.1.0", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "untildify": "^3.0.2" + "chalk": "2.4.1", + "cross-spawn": "6.0.5", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "globby": "8.0.1", + "grouped-queue": "0.3.3", + "inquirer": "5.2.0", + "is-scoped": "1.0.0", + "lodash": "4.17.10", + "log-symbols": "2.2.0", + "mem-fs": "1.1.3", + "strip-ansi": "4.0.0", + "text-table": "0.2.0", + "untildify": "3.0.3" }, "dependencies": { "cross-spawn": { @@ -11242,11 +11654,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "debug": { @@ -11266,31 +11678,31 @@ "integrity": "sha512-rV6tJ8oYzm4mmdF2T3wjY+Q42jKF2YiiD0VKfJ8/0ZYwmhCKC9Xs2346HVLPj/xE13i68psnFJv7iS6gWRkeAg==", "dev": true, "requires": { - "async": "^2.6.0", - "chalk": "^2.3.0", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^5.1.0", - "dateformat": "^3.0.3", - "debug": "^3.1.0", - "detect-conflict": "^1.0.0", - "error": "^7.0.2", - "find-up": "^2.1.0", - "github-username": "^4.0.0", - "istextorbinary": "^2.2.1", - "lodash": "^4.17.10", - "make-dir": "^1.1.0", - "mem-fs-editor": "^4.0.0", - "minimist": "^1.2.0", - "pretty-bytes": "^4.0.2", - "read-chunk": "^2.1.0", - "read-pkg-up": "^3.0.0", - "rimraf": "^2.6.2", - "run-async": "^2.0.0", - "shelljs": "^0.8.0", - "text-table": "^0.2.0", - "through2": "^2.0.0", - "yeoman-environment": "^2.0.5" + "async": "2.6.1", + "chalk": "2.4.1", + "cli-table": "0.3.1", + "cross-spawn": "6.0.5", + "dargs": "5.1.0", + "dateformat": "3.0.3", + "debug": "3.1.0", + "detect-conflict": "1.0.1", + "error": "7.0.2", + "find-up": "2.1.0", + "github-username": "4.1.0", + "istextorbinary": "2.2.1", + "lodash": "4.17.10", + "make-dir": "1.3.0", + "mem-fs-editor": "4.0.2", + "minimist": "1.2.0", + "pretty-bytes": "4.0.2", + "read-chunk": "2.1.0", + "read-pkg-up": "3.0.0", + "rimraf": "2.6.2", + "run-async": "2.3.0", + "shelljs": "0.8.2", + "text-table": "0.2.0", + "through2": "2.0.3", + "yeoman-environment": "2.3.0" }, "dependencies": { "cross-spawn": { @@ -11299,11 +11711,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.1" } }, "debug": { @@ -11321,10 +11733,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" } }, "minimist": { @@ -11339,8 +11751,8 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" } }, "path-type": { @@ -11349,7 +11761,7 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "pify": { @@ -11364,9 +11776,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" } }, "read-pkg-up": { @@ -11375,8 +11787,8 @@ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "2.1.0", + "read-pkg": "3.0.0" } } } diff --git a/package.json b/package.json index f3a631e..325bba1 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "body-parser": "^1.18.3", + "dotenv": "^6.0.0", "express": "^4.16.3", "hbs": "^4.0.1", "jest": "^22.3.0", @@ -31,8 +32,11 @@ "babel-loader": "^7.1.3", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", + "enzyme": "^3.4.4", + "enzyme-adapter-react-16": "^1.2.0", "jest": "^22.4.2", "nodemon": "1.17.5", + "react-test-renderer": "^16.4.2", "webpack": "^4.0.1", "webpack-cli": "^2.0.9" } diff --git a/server.js b/server.js index c1228fa..9db030b 100644 --- a/server.js +++ b/server.js @@ -1,15 +1,15 @@ -const express = require('express'); -const bodyParser = require('body-parser'); +const express = require("express"); +const bodyParser = require("body-parser"); const app = express(); app.use(bodyParser.json()); -app.use('/static', express.static('static')); -app.set('view engine', 'hbs'); +app.use("/static", express.static("static")); +app.set("view engine", "hbs"); -app.get('/', function(req, res){ - res.render('index'); -}) +app.get("/", function(req, res) { + res.render("index"); +}); -app.listen(8080, function(){ - console.log('Listening on port 8080'); +app.listen(8080, function() { + console.log("Listening on port 8080"); }); diff --git a/src/components/App.js b/src/components/App.js index 5d683de..7839aa6 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -1,16 +1,114 @@ -import React from 'react'; +import React from "react"; +import Header from "./Header"; +import PlayWindow from "./PlayWindow"; +import Events from "./Events"; +import spotify from "../spotify"; +const { updateToken } = require("../spotify"); class App extends React.Component { - constructor(){ + constructor() { super(); + + this.state = { + connected: "", + token: "", + artist: "", + album: "", + coverArtSrc: "", + trackName: "", + events: [] + }; + + this.spotifyStateChanged = this.spotifyStateChanged.bind(this); + this.eventFetch = this.eventFetch.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + this.handleChange = this.handleChange.bind(this); + } + + spotifyStateChanged(currentSpotifyState) { + if (!currentSpotifyState) { + this.setState({ + connected: false, + artist: "", + album: "", + coverArtSrc: "", + trackName: "", + events: [] + }); + } else { + this.setState({ + connected: true, + artist: currentSpotifyState.track_window.current_track.artists[0].name, + album: currentSpotifyState.track_window.current_track.album.name, + coverArtSrc: + currentSpotifyState.track_window.current_track.album.images[2].url, + trackName: currentSpotifyState.track_window.current_track.name + }); + this.eventFetch(); + } + } + + eventFetch() { + fetch( + `https://app.ticketmaster.com/discovery/v2/events.json?keyword=${ + this.state.artist + }&apikey=HQQphXuBwD8R3DAz5BZY31GeNYU1fXJn` + ) + .then(response => response.json()) + .then(json => this.setState({ events: json._embedded.events })) + .catch(error => this.setState({ events: [] })); } - render(){ + handleChange(event) { + this.setState({ + token: event.target.value + }); + } + + handleSubmit(event) { + event.preventDefault(); + console.log("I've Submitted", this.state); + spotify(this.spotifyStateChanged)(this.state.token); + } + + render() { return ( -
- React app goes here +
+
+
+ + +
+
+ {this.state.connected === true ? ( + + ) : ( + + )} + + {this.state.events.length && this.state.connected === true ? ( + + ) : !this.state.events.length && this.state.connected ? ( +
+

No upcoming events.

+
+ ) : null} +
- ) + ); } } diff --git a/src/components/Event.js b/src/components/Event.js new file mode 100644 index 0000000..278f00c --- /dev/null +++ b/src/components/Event.js @@ -0,0 +1,25 @@ +import React from "react"; + +function Event({ event }) { + return ( +
+

{event.dates.start.localDate}

+

{event._embedded.venues[0].name}

+

+ {event._embedded.venues[0].city.name},{" "} + {event._embedded.venues[0].country.name} +

+ {event.dates.status.code === "onsale" ? ( +

+ + Get tickets here! + +

+ ) : ( +

Tickets aren't available right now

+ )} +
+ ); +} + +export default Event; diff --git a/src/components/Events.js b/src/components/Events.js new file mode 100644 index 0000000..898c37c --- /dev/null +++ b/src/components/Events.js @@ -0,0 +1,21 @@ +import React from "react"; +import Event from "./Event"; + +function Events({ eventList }) { + return ( +
+ {eventList + .sort(function(a, b) { + return ( + new Date(a.dates.start.localDate) - + new Date(b.dates.start.localDate) + ); + }) + .map(function(event) { + return ; + })} +
+ ); +} + +export default Events; diff --git a/src/components/Header.js b/src/components/Header.js new file mode 100644 index 0000000..a3f74f9 --- /dev/null +++ b/src/components/Header.js @@ -0,0 +1,33 @@ +import React from "react"; + +function Header({ connected }) { + return ( +
+

Spotify Dashboard

+ + {!connected === true ? ( +
+
    +
  • Connect your Spotify device and browser to the same Wi-Fi
  • +
  • + Under 'Connect to a device' in your Spotify App, select 'Spotify + Dashboard' +
  • +
  • + Get your Spotify token{" "} + + here + {" "} + and enter it below. +
  • +
+
+ ) : null} +
+ ); +} + +export default Header; diff --git a/src/components/PlayWindow.js b/src/components/PlayWindow.js new file mode 100644 index 0000000..0e755c3 --- /dev/null +++ b/src/components/PlayWindow.js @@ -0,0 +1,16 @@ +import React from "react"; + +function PlayWindow({ artist, album, coverArtSrc, trackName }) { + return ( +
+

{artist}

+ +

{trackName}

+

+ {album} +

+
+ ); +} + +export default PlayWindow; diff --git a/src/index.js b/src/index.js index e0728fe..0b68bb1 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,5 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './components/App'; +import React from "react"; +import ReactDOM from "react-dom"; +import App from "./components/App"; -ReactDOM.render( - , - document.getElementById('root') -); +ReactDOM.render(, document.getElementById("root")); diff --git a/src/spotify.js b/src/spotify.js new file mode 100644 index 0000000..6a3c5d0 --- /dev/null +++ b/src/spotify.js @@ -0,0 +1,53 @@ +// let myStateChanged; +export default function(stateChanged) { + // myStateChanged = stateChanged; + + return (window.onSpotifyWebPlaybackSDKReady = token => { + console.log("I RAN ", token); + const player = new Spotify.Player({ + name: "Spotify Dashboard", + getOAuthToken: cb => { + cb(token); + } + }); + + // Error handling + player.addListener("initialization_error", ({ message }) => { + console.error(message); + }); + player.addListener("authentication_error", ({ message }) => { + console.error(message); + }); + player.addListener("account_error", ({ message }) => { + console.error(message); + }); + player.addListener("playback_error", ({ message }) => { + console.error(message); + }); + + // Playback status updates + player.addListener("player_state_changed", currentSpotifyState => { + stateChanged(currentSpotifyState); + }); + + player.getCurrentState().then(state => { + if (!state) { + console.log("User is not connected"); + return; + } + }); + + // Ready + player.addListener("ready", ({ device_id }) => { + console.log("Ready with Device ID", device_id); + }); + + // Not Ready + player.addListener("not_ready", ({ device_id }) => { + console.log("Device ID has gone offline", device_id); + }); + + // Connect to the player! + player.connect(); + }); +} diff --git a/static/styles.css b/static/styles.css index 293d3b1..32fcac4 100644 --- a/static/styles.css +++ b/static/styles.css @@ -1,3 +1,184 @@ +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + body { margin: 0; + font-family: "Montserrat", sans-serif; + background: rgb(255, 244, 237); + color: rgb(76, 72, 69); +} + +.header { + text-align: center; + padding: 20px; + background: linear-gradient(rgb(243, 151, 98), rgb(255, 244, 237)) no-repeat + center top; +} + +.header h1 { + margin: 0; + font-size: 38px; +} + +.header li { + list-style-type: none; +} + +.header__instructions li { + padding: 5px; + font-size: 14px; +} + +.app { + height: 100vh; +} + +.app__token { + text-align: center; + padding-bottom: 15px; +} + +.app__token input { + width: 75vw; +} + +.app__content { + flex: 1; + + display: flex; + flex-direction: column; + background: rgb(255, 244, 237); + overflow: hidden; +} + +.placeholder { + margin-left: auto; + margin-right: auto; + width: 300px; + height: 300px; +} + +.app__playWindow { + text-align: center; +} + +.app__playWindow__img { + width: 300px; + box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +.app__playWindow p { + margin: 15px; +} + +.app__events { + display: flex; + flex-direction: row; + padding: 15px; + overflow: scroll; + margin: 0; +} + +.app__events__event { + min-width: 300px; + margin: 10px; + padding: 10px 20px; + background: rgb(180, 111, 71); + color: rgb(243, 238, 234); + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +.app__events__event p { + font-size: 13px; +} + +.app__events__event:nth-child(even) { + background: rgb(145, 94, 64); +} + +.app__events__event a:link { + color: rgb(243, 238, 234); + text-decoration: none; +} + +.app__events__event a:active { + color: rgb(116, 113, 111); + text-decoration: underline; +} + +.app__events__event a:hover { + color: rgb(170, 166, 162); + text-decoration: none; +} + +.app__events__event a:visited { + color: rgb(243, 238, 234); + text-decoration: none; +} + +@media (min-width: 768px) { + .app { + display: flex; + flex-direction: column; + overflow: hidden; + } + .app__content { + display: flex; + flex-direction: row; + } + + .app__playWindow { + flex: 2; + display: flex; + flex-direction: column; + align-items: center; + } + + .app__playWindow__img { + width: 440px; + } + + .app__events { + flex: 1; + flex-direction: column; + margin: 20px; + margin-bottom: 0px; + overflow-y: scroll; + } + + .app__events__event { + justify-content: center; + min-width: 50px; + width: 230px; + } +} + +@media (min-width: 992px) { + .app__playWindow__img { + width: 500px; + } + + .app__events__event { + width: 310px; + } + + .app__events__event p { + font-size: 17px; + } +} + +@media (min-width: 1200px) { + .app__playWindow__img { + width: 540px; + } + + .app__events__event { + width: 350px; + } } diff --git a/tests/App.test.js b/tests/App.test.js new file mode 100644 index 0000000..eec1ef4 --- /dev/null +++ b/tests/App.test.js @@ -0,0 +1,10 @@ +import React from "react"; +import App from "../src/components/App"; +import renderer from "react-test-renderer"; + +describe("App", () => { + it("matches the snapshot", () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); + }); +}); diff --git a/tests/Events.test.js b/tests/Events.test.js new file mode 100644 index 0000000..2ba9bb5 --- /dev/null +++ b/tests/Events.test.js @@ -0,0 +1,16 @@ +import React from "react"; +import Events from "../src/components/Events"; +import renderer from "react-test-renderer"; +import { mockEventList } from "./mockEventsResults"; + +describe("Events", () => { + it("renders correctly when an eventList is supplied", () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); + }); + + it("renders nothing when the result list is empty", () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); + }); +}); diff --git a/tests/Header.test.js b/tests/Header.test.js new file mode 100644 index 0000000..a4a9d7e --- /dev/null +++ b/tests/Header.test.js @@ -0,0 +1,10 @@ +import React from "react"; +import Header from "../src/components/Header"; +import renderer from "react-test-renderer"; + +describe("Header", () => { + it("matches the snapshot", () => { + const tree = renderer.create(
).toJSON(); + expect(tree).toMatchSnapshot(); + }); +}); diff --git a/tests/PlayWindow.test.js b/tests/PlayWindow.test.js new file mode 100644 index 0000000..cfa58fb --- /dev/null +++ b/tests/PlayWindow.test.js @@ -0,0 +1,10 @@ +import React from "react"; +import PlayWindow from "../src/components/PlayWindow"; +import renderer from "react-test-renderer"; + +describe("PlayWindow", () => { + it("matches the snapshot", () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); + }); +}); diff --git a/tests/__snapshots__/App.test.js.snap b/tests/__snapshots__/App.test.js.snap new file mode 100644 index 0000000..d9f673f --- /dev/null +++ b/tests/__snapshots__/App.test.js.snap @@ -0,0 +1,38 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`App matches the snapshot 1`] = ` +
+
+

+ Spotify Dashboard +

+
+
    +
  • + Connect your Spotify device and browser to the same Wi-Fi +
  • +
  • + Open your Spotify app +
  • +
  • + Under 'Connect to a device', select 'Spotify Dashboard' +
  • +
+
+
+
+ +
+
+`; diff --git a/tests/__snapshots__/Events.test.js.snap b/tests/__snapshots__/Events.test.js.snap new file mode 100644 index 0000000..2a71180 --- /dev/null +++ b/tests/__snapshots__/Events.test.js.snap @@ -0,0 +1,62 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Events renders correctly when an eventList is supplied 1`] = ` +
+
+

+ 2018-08-23 +

+

+ Sunlight Supply Amphitheater +

+

+ Ridgefield + , + + United States Of America +

+

+ + Get tickets here! + +

+
+
+

+ 2018-08-26 +

+

+ SAP Center at San Jose +

+

+ San Jose + , + + United States Of America +

+

+ + Get tickets here! + +

+
+
+`; + +exports[`Events renders nothing when the result list is empty 1`] = ` +
+`; diff --git a/tests/__snapshots__/Header.test.js.snap b/tests/__snapshots__/Header.test.js.snap new file mode 100644 index 0000000..fb841e2 --- /dev/null +++ b/tests/__snapshots__/Header.test.js.snap @@ -0,0 +1,26 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Header matches the snapshot 1`] = ` +
+

+ Spotify Dashboard +

+
+
    +
  • + Connect your Spotify device and browser to the same Wi-Fi +
  • +
  • + Open your Spotify app +
  • +
  • + Under 'Connect to a device', select 'Spotify Dashboard' +
  • +
+
+
+`; diff --git a/tests/__snapshots__/PlayWindow.test.js.snap b/tests/__snapshots__/PlayWindow.test.js.snap new file mode 100644 index 0000000..e65f77d --- /dev/null +++ b/tests/__snapshots__/PlayWindow.test.js.snap @@ -0,0 +1,17 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`PlayWindow matches the snapshot 1`] = ` +
+

+ +

+

+ +

+

+`; diff --git a/tests/components/Default.test.js b/tests/components/Default.test.js new file mode 100644 index 0000000..bc61bd9 --- /dev/null +++ b/tests/components/Default.test.js @@ -0,0 +1,11 @@ +import React from "react"; +import App from "../../src/components/App"; +import { shallow, mount, render } from "enzyme"; // import shallow renderer from enzyme + +describe("App component", () => { + it('starts with connected state of ""', () => { + const wrapper = shallow(); // perform shallow render of App + const connected = wrapper.state("connected"); + expect(connected).toEqual(""); + }); +}); diff --git a/tests/mockEventsResults.js b/tests/mockEventsResults.js new file mode 100644 index 0000000..4c85dba --- /dev/null +++ b/tests/mockEventsResults.js @@ -0,0 +1,2260 @@ +export const mockEventList = [ + { + name: "Slayer", + type: "event", + id: "vvG1HZ4kFxgzpA", + test: false, + url: + "https://www.ticketmaster.com/slayer-ridgefield-washington-08-23-2018/event/0F00546222D78585", + locale: "en-us", + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + } + ], + sales: { + public: { + startDateTime: "2018-03-09T20:00:00Z", + startTBD: false, + endDateTime: "2018-08-24T04:00:00Z" + }, + presales: [ + { + startDateTime: "2018-03-06T18:00:00Z", + endDateTime: "2018-03-09T01:00:00Z", + name: "Slayer Fan Club Presale & Bundle" + }, + { + startDateTime: "2018-03-06T18:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Slayer VIP Package Presale" + }, + { + startDateTime: "2018-03-07T15:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Spotify Presale" + }, + { + startDateTime: "2018-03-07T15:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Blabbermouth Presale" + }, + { + startDateTime: "2018-03-09T20:00:00Z", + endDateTime: "2018-05-17T05:00:00Z", + name: "Slayer VIP Package Onsale" + }, + { + startDateTime: "2018-03-08T18:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Radio / Venue Presale" + }, + { + startDateTime: "2018-06-06T17:00:00Z", + endDateTime: "2018-06-07T06:59:00Z", + name: "International Slayer Day Offer" + } + ] + }, + dates: { + start: { + localDate: "2018-08-23", + localTime: "17:00:00", + dateTime: "2018-08-24T00:00:00Z", + dateTBD: false, + dateTBA: false, + timeTBA: false, + noSpecificTime: false + }, + timezone: "America/Los_Angeles", + status: { + code: "onsale" + }, + spanMultipleDays: false + }, + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + promoter: { + id: "653", + name: "LIVE NATION MUSIC", + description: "LIVE NATION MUSIC / NTL / USA" + }, + promoters: [ + { + id: "653", + name: "LIVE NATION MUSIC", + description: "LIVE NATION MUSIC / NTL / USA" + } + ], + pleaseNote: + "Please note parking lots will not open until 2:30PM. The only car access to amphitheater is from I-5 Exit 9/179TH.", + priceRanges: [ + { + type: "standard", + currency: "USD", + min: 25, + max: 79.5 + } + ], + products: [ + { + id: "vvG1HZ4k4Y3oyy", + url: + "https://www.ticketmaster.com/slayer-fan-club-membership-ridgefield-washington-08-23-2018/event/0F00546570491E79", + type: "Membership", + name: "SLAYER FAN CLUB MEMBERSHIP" + }, + { + id: "vvG1HZ463zzKOo", + url: + "https://www.ticketmaster.com/star-box-experience-ridgefield-washington-08-23-2018/event/0F005474B8E13811", + type: "VIP", + name: "STAR Box Experience" + } + ], + seatmap: { + staticUrl: "https://s1.ticketm.net/tmimages/venue/maps/sea/15585s.gif" + }, + ticketLimit: { + info: + "There is an overall 8 ticket limit for this event. There is a 4 ticket limit for the Slayer Fan Club Presale and an 8 ticket limit for the VIP Packages. International Slayer Day tickets must be purchased in multiples of 2 and has an 8 ticket limit." + }, + _links: { + self: { + href: "/discovery/v2/events/vvG1HZ4kFxgzpA?locale=en-us" + }, + attractions: [ + { + href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us" + } + ], + venues: [ + { + href: "/discovery/v2/venues/KovZpZAJld6A?locale=en-us" + } + ] + }, + _embedded: { + venues: [ + { + name: "Sunlight Supply Amphitheater", + type: "venue", + id: "KovZpZAJld6A", + test: false, + url: + "https://www.ticketmaster.com/sunlight-supply-amphitheater-tickets-ridgefield/venue/123505", + locale: "en-us", + images: [ + { + ratio: "16_9", + url: "https://s1.ticketm.net/dbimages/17983v.jpg", + width: 205, + height: 115, + fallback: false + } + ], + postalCode: "98642", + timezone: "America/Los_Angeles", + city: { + name: "Ridgefield" + }, + state: { + name: "Washington", + stateCode: "WA" + }, + country: { + name: "United States Of America", + countryCode: "US" + }, + address: { + line1: "17200 NE Delfel Road" + }, + location: { + longitude: "-122.666113", + latitude: "45.746432" + }, + markets: [ + { + id: "37" + } + ], + dmas: [ + { + id: 228 + }, + { + id: 272 + }, + { + id: 331 + }, + { + id: 362 + } + ], + boxOfficeInfo: { + phoneNumberDetail: "360.816.7000", + openHoursDetail: "Day of Show, Box Office will open at 10am.", + willCallDetail: "Will Call is available two hours prior to event." + }, + parkingDetail: + "7200 onsite parking spaces - No offsite parking in the immediate area. All local streets are closed for parking. Parking opens two(2) hours prior to event. - Limited Premier Parking is available for purchase - A Premier Parking pass gets you exclusive access to the best parking. With this pass you’ll get in and out of the Amphitheater ahead of the crowd. YES Parking Program Save gas and time by riding together. To encourage carpooling, Sunlight Supply Amphitheater has created the YES (Your Enhancement of Service) Program, rewarding participating vehicles with prime parking (close proximity to the venue and egress priority after the event). Space is limited and is on a first-come first-serve basis. Go to http://www.sunlightsupplyamphitheater.com/directions-parking.html for complete program information.", + accessibleSeatingDetail: + "Accessible seating available by phone: 1-800-745-3000", + generalInfo: { + generalRule: + "No coolers, bikes, umbrellas, skateboards, roller blades, pets, throw toys, weapons, fireworks, outside food or beverages are allowed. Cameras and recording devices are subject to artist approval. No smoking inside facility. Tailgating is not permitted. All events occur rain or shine.", + childRule: + "All guests must have a ticket, except children under two (2) years old who will not occupy a reserved seat." + }, + upcomingEvents: { + _total: 6, + ticketmaster: 6 + }, + _links: { + self: { + href: "/discovery/v2/venues/KovZpZAJld6A?locale=en-us" + } + } + } + ], + attractions: [ + { + name: "Slayer", + type: "attraction", + id: "K8vZ9171G_0", + test: false, + url: "https://www.ticketmaster.com/slayer-tickets/artist/736135", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/SlayerVEVO" + } + ], + twitter: [ + { + url: "https://twitter.com/slayer" + } + ], + facebook: [ + { + url: "https://www.facebook.com/slayer" + } + ], + musicbrainz: [ + { + id: "72de5171-38cf-4734-bc8a-6ac374dea523" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 18, + "mfx-dk": 2, + "mfx-nl": 2, + "mfx-no": 1, + "mfx-de": 1, + ticketmaster: 11, + "mfx-pl": 1 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us" + } + } + }, + { + name: "Lamb of God", + type: "attraction", + id: "K8vZ9175pSf", + test: false, + url: "https://www.ticketmaster.com/lamb-of-god-tickets/artist/862390", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/lambofgodvevo" + } + ], + twitter: [ + { + url: "https://twitter.com/lambofgod" + } + ], + itunes: [ + { + url: "https://itunes.apple.com/us/artist/id18758452" + } + ], + facebook: [ + { + url: "https://www.facebook.com/lambofgod" + } + ], + wiki: [ + { + url: "https://en.wikipedia.org/wiki/Lamb_of_God_(band)" + } + ], + musicbrainz: [ + { + id: "298909e4-ebcb-47b8-95e9-cc53b087fc65" + } + ], + homepage: [ + { + url: "http://www.lamb-of-god.com/" + } + ] + }, + images: [ + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 17, + "mfx-dk": 2, + tmr: 1, + "mfx-no": 1, + ticketmaster: 12, + "mfx-pl": 1 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us" + } + } + }, + { + name: "Anthrax", + type: "attraction", + id: "K8vZ9171G30", + test: false, + url: "https://www.ticketmaster.com/anthrax-tickets/artist/734447", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/AnthraxVEVO" + } + ], + twitter: [ + { + url: "https://twitter.com/Anthrax" + } + ], + facebook: [ + { + url: "https://www.facebook.com/anthrax" + }, + { + url: "https://www.facebook.com/pages/ANTHRAX-UK/107790359263197" + } + ], + wiki: [ + { + url: "https://en.wikipedia.org/wiki/Anthrax_(UK_band)" + } + ], + musicbrainz: [ + { + id: "315126eb-86bc-475c-a308-b8edfdd6c08c" + } + ], + homepage: [ + { + url: "http://anthraxukoffical.com/anthrax%20uk/ANTHRAX.html" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 15, + "mfx-dk": 2, + "mfx-no": 1, + ticketmaster: 11, + "mfx-pl": 1 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us" + } + } + }, + { + name: "Testament", + type: "attraction", + id: "K8vZ9171GQV", + test: false, + url: "https://www.ticketmaster.com/testament-tickets/artist/736279", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/testamentofficial" + } + ], + twitter: [ + { + url: "https://twitter.com/testament" + } + ], + facebook: [ + { + url: "https://www.facebook.com/testamentlegions" + } + ], + musicbrainz: [ + { + id: "47e587c8-7626-488a-8cb9-f27225d73535" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 6, + ticketmaster: 6 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us" + } + } + }, + { + name: "Napalm Death", + type: "attraction", + id: "K8vZ9171G_f", + test: false, + url: + "https://www.ticketmaster.com/napalm-death-tickets/artist/735722", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/maxnapalmdeath" + } + ], + facebook: [ + { + url: "https://www.facebook.com/officialnapalmdeath" + } + ], + wiki: [ + { + url: "https://en.wikipedia.org/wiki/Napalm_Death" + } + ], + musicbrainz: [ + { + id: "ce7bba8b-026b-4aa6-bddb-f98ed6d595e4" + } + ], + homepage: [ + { + url: "http://www.napalmdeath.org/" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: true + }, + { + ratio: "4_3", + url: "https://s1.ticketm.net/dbimages/191704a.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: true + }, + { + ratio: "16_9", + url: "https://s1.ticketm.net/dbimages/191705a.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: true + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: true + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 9, + tmr: 2, + ticketmaster: 7 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us" + } + } + } + ] + } + }, + { + name: "Slayer", + type: "event", + id: "G5vYZ4k62O1ev", + test: false, + url: + "https://www.ticketmaster.com/slayer-san-jose-california-08-26-2018/event/1C005461CF80A081", + locale: "en-us", + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + } + ], + sales: { + public: { + startDateTime: "2018-03-09T18:00:00Z", + startTBD: false, + endDateTime: "2018-08-27T00:00:00Z" + }, + presales: [ + { + startDateTime: "2018-03-06T18:00:00Z", + endDateTime: "2018-03-09T01:00:00Z", + name: "Slayer Fan Club Presale" + }, + { + startDateTime: "2018-03-06T18:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Slayer VIP Package Presale" + }, + { + startDateTime: "2018-03-08T18:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Internet Presale" + }, + { + startDateTime: "2018-03-07T15:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Spotify Presale" + }, + { + startDateTime: "2018-03-07T15:00:00Z", + endDateTime: "2018-03-09T06:00:00Z", + name: "Blabbermouth Presale" + }, + { + startDateTime: "2018-03-09T18:00:00Z", + endDateTime: "2018-08-20T05:00:00Z", + name: "Slayer VIP Package Onsale" + }, + { + startDateTime: "2018-04-20T17:00:00Z", + endDateTime: "2018-04-21T05:00:00Z", + name: "4/20 Ticket Offer" + } + ] + }, + dates: { + start: { + localDate: "2018-08-26", + localTime: "17:00:00", + dateTime: "2018-08-27T00:00:00Z", + dateTBD: false, + dateTBA: false, + timeTBA: false, + noSpecificTime: false + }, + timezone: "America/Los_Angeles", + status: { + code: "onsale" + }, + spanMultipleDays: false + }, + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + promoter: { + id: "428", + name: "NEDERLANDER CONCERTS", + description: "NEDERLANDER CONCERTS / REG / WEST" + }, + promoters: [ + { + id: "428", + name: "NEDERLANDER CONCERTS", + description: "NEDERLANDER CONCERTS / REG / WEST" + } + ], + priceRanges: [ + { + type: "standard", + currency: "USD", + min: 55.5, + max: 65.5 + } + ], + products: [ + { + id: "G5vYZ4k68L1AH", + url: + "https://www.ticketmaster.com/sap-center-parking-slayer-san-jose-california-08-26-2018/event/1C005461D07CA17C", + type: "Parking", + name: "SAP Center Parking: Slayer" + }, + { + id: "G5vYZ4k4YpSjQ", + url: + "https://www.ticketmaster.com/slayer-fan-club-membership-san-jose-california-08-26-2018/event/1C005465705B371A", + type: "Membership", + name: "SLAYER FAN CLUB MEMBERSHIP" + } + ], + seatmap: { + staticUrl: "https://s1.ticketm.net/tmimages/venue/maps/nca/84397s.gif" + }, + ticketLimit: { + info: + "There is an overall 8 ticket limit for this event. There is a four (4) ticket limit for the Slayer Fan Club Presale and an eight (8) ticket limit for the VIP Packages." + }, + _links: { + self: { + href: "/discovery/v2/events/G5vYZ4k62O1ev?locale=en-us" + }, + attractions: [ + { + href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us" + }, + { + href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us" + } + ], + venues: [ + { + href: "/discovery/v2/venues/KovZpZAJelvA?locale=en-us" + } + ] + }, + _embedded: { + venues: [ + { + name: "SAP Center at San Jose", + type: "venue", + id: "KovZpZAJelvA", + test: false, + url: + "https://www.ticketmaster.com/sap-center-at-san-jose-tickets-san-jose/venue/229393", + locale: "en-us", + images: [ + { + ratio: "3_1", + url: + "https://s1.ticketm.net/dam/v/b20/0893e913-3090-4fb7-8d98-7e81da440b20_381211_SOURCE.jpg", + width: 1500, + height: 500, + fallback: false + }, + { + ratio: "16_9", + url: "https://s1.ticketm.net/dbimages/15427v.jpg", + width: 205, + height: 115, + fallback: false + } + ], + postalCode: "95113", + timezone: "America/Los_Angeles", + city: { + name: "San Jose" + }, + state: { + name: "California", + stateCode: "CA" + }, + country: { + name: "United States Of America", + countryCode: "US" + }, + address: { + line1: "525 W Santa Clara" + }, + location: { + longitude: "-121.90122373", + latitude: "37.33276191" + }, + markets: [ + { + id: "41" + } + ], + dmas: [ + { + id: 250 + }, + { + id: 273 + }, + { + id: 282 + }, + { + id: 341 + }, + { + id: 368 + }, + { + id: 374 + }, + { + id: 382 + } + ], + social: { + twitter: { + handle: "@sapcenter" + } + }, + boxOfficeInfo: { + phoneNumberDetail: + "The ticket office can be reached at (408) 287-9200 during business hours.", + openHoursDetail: + "The Box Office is located at the South East corner of the Arena, on the corner of Santa Clara St and Autumn St. Box Office hours are as follows: Mon - Fri .......... 10:00AM - 3:00PM Saturday & Sunday .... Closed", + acceptedPaymentDetail: + "The Box Office accepts Cash , Visa , Mastercard and American Express as methods of payment.", + willCallDetail: + "Will call is available two hours prior to the start of the event. Will call is part of the South Ticket Office, on Autumn St near Santa Clara St. Customers must present the actual credit card used for the purchase, a photo ID and the Ticketmaster confirmation number in order to receive their tickets." + }, + parkingDetail: + "There are a limited number of parking spaces available on site. The prices vary from $15.00 to $25.00. There are also many public and private lots situated near the Arena. The attendants accept only cash. Parking is also available outside of the Arena. Sorry, no RV parking available.", + accessibleSeatingDetail: + "SAP Center has designated seats for both wheelchair accessible seating and their companions. However, due to size constraints, companion seats will not fit a wheelchair. So patrons needing wheelchair accessible seating must purchase a wheelchair accessible seat as the SAP Center cannot turn a companion seat into a wheelchair accessible seat.", + generalInfo: { + generalRule: + "***UPDATE *** ENHANCED SECURITY MEASURES! SAP Center at San Jose, Silicon Valley Sports & Entertainment, law enforcement agencies and the NHL have announced changes in Security measures for all Guests attending events at SAP Center. All Guests will be subject to search, which may include the use of Electronic devices, pat downs and inspections of bags. Only small purses and baby bags will be permitted in the Building. Guests are discouraged from bringing unnecessary items to SAP Center Events. * Shoes & shirts are required at all times within the building. * No audio or video recorders are allowed in the arena for any event. * There is no smoking allowed anywhere inside the arena. There are designated smoking sections provided outside of the arena.", + childRule: + 'All ages are welcome. For most events no ticket is required for ages 0-23 months, as long as they do not require a seat of their own. For events such as "Sesame Street", "Barney", or "Dragon Tales" a ticket is required for anyone 12 months or older.' + }, + upcomingEvents: { + _total: 123, + tmr: 4, + ticketmaster: 119 + }, + _links: { + self: { + href: "/discovery/v2/venues/KovZpZAJelvA?locale=en-us" + } + } + } + ], + attractions: [ + { + name: "Slayer", + type: "attraction", + id: "K8vZ9171G_0", + test: false, + url: "https://www.ticketmaster.com/slayer-tickets/artist/736135", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/SlayerVEVO" + } + ], + twitter: [ + { + url: "https://twitter.com/slayer" + } + ], + facebook: [ + { + url: "https://www.facebook.com/slayer" + } + ], + musicbrainz: [ + { + id: "72de5171-38cf-4734-bc8a-6ac374dea523" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/d40/81d4c63a-f68f-4cba-8877-9ce4cd7ccd40_703321_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 18, + "mfx-dk": 2, + "mfx-nl": 2, + "mfx-no": 1, + "mfx-de": 1, + ticketmaster: 11, + "mfx-pl": 1 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171G_0?locale=en-us" + } + } + }, + { + name: "Lamb of God", + type: "attraction", + id: "K8vZ9175pSf", + test: false, + url: "https://www.ticketmaster.com/lamb-of-god-tickets/artist/862390", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/lambofgodvevo" + } + ], + twitter: [ + { + url: "https://twitter.com/lambofgod" + } + ], + itunes: [ + { + url: "https://itunes.apple.com/us/artist/id18758452" + } + ], + facebook: [ + { + url: "https://www.facebook.com/lambofgod" + } + ], + wiki: [ + { + url: "https://en.wikipedia.org/wiki/Lamb_of_God_(band)" + } + ], + musicbrainz: [ + { + id: "298909e4-ebcb-47b8-95e9-cc53b087fc65" + } + ], + homepage: [ + { + url: "http://www.lamb-of-god.com/" + } + ] + }, + images: [ + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/826/1f5786a4-31fd-4c5b-a727-b5b09fa88826_88901_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 17, + "mfx-dk": 2, + tmr: 1, + "mfx-no": 1, + ticketmaster: 12, + "mfx-pl": 1 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9175pSf?locale=en-us" + } + } + }, + { + name: "Anthrax", + type: "attraction", + id: "K8vZ9171G30", + test: false, + url: "https://www.ticketmaster.com/anthrax-tickets/artist/734447", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/AnthraxVEVO" + } + ], + twitter: [ + { + url: "https://twitter.com/Anthrax" + } + ], + facebook: [ + { + url: "https://www.facebook.com/anthrax" + }, + { + url: "https://www.facebook.com/pages/ANTHRAX-UK/107790359263197" + } + ], + wiki: [ + { + url: "https://en.wikipedia.org/wiki/Anthrax_(UK_band)" + } + ], + musicbrainz: [ + { + id: "315126eb-86bc-475c-a308-b8edfdd6c08c" + } + ], + homepage: [ + { + url: "http://anthraxukoffical.com/anthrax%20uk/ANTHRAX.html" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/f3a/435d425f-7905-4287-99b3-73ea58053f3a_637041_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 15, + "mfx-dk": 2, + "mfx-no": 1, + ticketmaster: 11, + "mfx-pl": 1 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171G30?locale=en-us" + } + } + }, + { + name: "Testament", + type: "attraction", + id: "K8vZ9171GQV", + test: false, + url: "https://www.ticketmaster.com/testament-tickets/artist/736279", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/testamentofficial" + } + ], + twitter: [ + { + url: "https://twitter.com/testament" + } + ], + facebook: [ + { + url: "https://www.facebook.com/testamentlegions" + } + ], + musicbrainz: [ + { + id: "47e587c8-7626-488a-8cb9-f27225d73535" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: false + }, + { + ratio: "4_3", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_CUSTOM.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_EVENT_DETAIL_PAGE_16_9.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/997/9d9a37c7-ca1a-484b-800c-ec93d1b9d997_235741_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 6, + ticketmaster: 6 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171GQV?locale=en-us" + } + } + }, + { + name: "Napalm Death", + type: "attraction", + id: "K8vZ9171G_f", + test: false, + url: + "https://www.ticketmaster.com/napalm-death-tickets/artist/735722", + locale: "en-us", + externalLinks: { + youtube: [ + { + url: "https://www.youtube.com/user/maxnapalmdeath" + } + ], + facebook: [ + { + url: "https://www.facebook.com/officialnapalmdeath" + } + ], + wiki: [ + { + url: "https://en.wikipedia.org/wiki/Napalm_Death" + } + ], + musicbrainz: [ + { + id: "ce7bba8b-026b-4aa6-bddb-f98ed6d595e4" + } + ], + homepage: [ + { + url: "http://www.napalmdeath.org/" + } + ] + }, + images: [ + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_16_9.jpg", + width: 1024, + height: 576, + fallback: true + }, + { + ratio: "4_3", + url: "https://s1.ticketm.net/dbimages/191704a.jpg", + width: 305, + height: 225, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RECOMENDATION_16_9.jpg", + width: 100, + height: 56, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_16_9.jpg", + width: 640, + height: 360, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_3_2.jpg", + width: 1024, + height: 683, + fallback: true + }, + { + ratio: "16_9", + url: "https://s1.ticketm.net/dbimages/191705a.jpg", + width: 205, + height: 115, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_RETINA_PORTRAIT_3_2.jpg", + width: 640, + height: 427, + fallback: false + }, + { + ratio: "3_2", + url: + "https://s1.ticketm.net/dam/a/e15/eb50625e-ff03-4f68-bf4b-c43ac68cee15_270651_ARTIST_PAGE_3_2.jpg", + width: 305, + height: 203, + fallback: false + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_TABLET_LANDSCAPE_LARGE_16_9.jpg", + width: 2048, + height: 1152, + fallback: true + }, + { + ratio: "16_9", + url: + "https://s1.ticketm.net/dam/c/e7c/86478562-7218-4e8f-b9d4-8080fe168e7c_105581_RETINA_LANDSCAPE_16_9.jpg", + width: 1136, + height: 639, + fallback: true + } + ], + classifications: [ + { + primary: true, + segment: { + id: "KZFzniwnSyZfZ7v7nJ", + name: "Music" + }, + genre: { + id: "KnvZfZ7vAvt", + name: "Metal" + }, + subGenre: { + id: "KZazBEonSMnZfZ7vkFd", + name: "Heavy Metal" + }, + type: { + id: "KZAyXgnZfZ7v7nI", + name: "Undefined" + }, + subType: { + id: "KZFzBErXgnZfZ7v7lJ", + name: "Undefined" + }, + family: false + } + ], + upcomingEvents: { + _total: 9, + tmr: 2, + ticketmaster: 7 + }, + _links: { + self: { + href: "/discovery/v2/attractions/K8vZ9171G_f?locale=en-us" + } + } + } + ] + } + } +]; diff --git a/tests/setup.js b/tests/setup.js new file mode 100644 index 0000000..0d5e308 --- /dev/null +++ b/tests/setup.js @@ -0,0 +1,4 @@ +import Enzyme from "enzyme"; +import Adapter from "enzyme-adapter-react-16"; + +Enzyme.configure({ adapter: new Adapter() }); diff --git a/updateToken.js b/updateToken.js new file mode 100644 index 0000000..e69de29 diff --git a/views/index.hbs b/views/index.hbs index d669896..c57c099 100644 --- a/views/index.hbs +++ b/views/index.hbs @@ -1,14 +1,20 @@ - - Let's get some food - - - -

Your own app

-
- -
- - - + + + Spotify Dashboard + + + + + +
+ +
+ + + + + + + \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index aef1f77..dbf2c4c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,18 +1,21 @@ -const path = require('path'); +const path = require("path"); module.exports = { - entry: './src/index.js', - devtool: 'source-map', + entry: "./src/index.js", + devtool: "source-map", + node: { + fs: "empty" + }, output: { - filename: 'bundle.js', - path: path.resolve(__dirname, 'static') + filename: "bundle.js", + path: path.resolve(__dirname, "static") }, module: { rules: [ { test: /\.js$/, exclude: /(node_modules)/, - loader: require.resolve('babel-loader') + loader: require.resolve("babel-loader") } ] }