diff --git a/.tern-port b/.tern-port
new file mode 100644
index 0000000..e3615ea
--- /dev/null
+++ b/.tern-port
@@ -0,0 +1 @@
+42697
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c3f61e0
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# scroll-link-server
\ No newline at end of file
diff --git a/app.js b/app.js
new file mode 100644
index 0000000..a1b64b4
--- /dev/null
+++ b/app.js
@@ -0,0 +1,281 @@
+//NOTE: SERVER CONFIGURATION has 2 options. ENABLE 1 of 2 options
+
+// //NOTE: option (1) - https server (443) + redirection 80 to 443
+
+// //prepare credentials & etc
+// var fs = require('fs');
+// var https = require('https');
+// var privateKey = fs.readFileSync('/etc/letsencrypt/live/choir.run/privkey.pem', 'utf8');
+// var certificate = fs.readFileSync('/etc/letsencrypt/live/choir.run/fullchain.pem', 'utf8');
+// var credentials = {
+// key: privateKey,
+// cert: certificate
+// };
+
+// //https WWW server @ port 443
+// var express = require('express');
+// var app = express();
+// var httpsWebServer = https.createServer(credentials, app).listen(443, function() {
+// console.log('[express] listening on *:443');
+// });
+
+// //http Redirection server @ port 80
+// // ==> Don't get why this works.. all others not. ==> https://stackoverflow.com/a/23283173
+// var http = require('http');
+// var httpApp = express();
+// var httpRouter = express.Router();
+// httpApp.use('*', httpRouter);
+// httpRouter.get('*', function(req, res) {
+// var host = req.get('Host');
+// // replace the port in the host
+// host = host.replace(/:\d+$/, ":" + app.get('port'));
+// // determine the redirect destination
+// var destination = ['https://', host, req.url].join('');
+// return res.redirect(destination);
+// });
+// var httpServer = http.createServer(httpApp);
+// httpServer.listen(80);
+
+// //https socket.io server @ port 443 (same port as WWW service)
+// var io = require('socket.io')(httpsWebServer, {
+// 'pingInterval': 1000,
+// 'pingTimeout': 3000
+// });
+
+//NOTE: option (2) - simple http dev server (8080)
+
+var http = require('http');
+var express = require('express');
+var app = express();
+var httpServer = http.createServer(app);
+httpServer.listen(8080);
+
+//http socket.io server @ port 8080 (same port as WWW service)
+var io = require('socket.io')(httpServer, {
+ 'pingInterval': 1000,
+ 'pingTimeout': 3000
+});
+
+//express configuration
+app.use(express.static('public'));
+
+// //'scroll' status array
+// var scroll = {};
+// scroll['a'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['b'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['c'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['d'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['e'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['f'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['g'] = {
+// value: 0,
+// islocked: false
+// };
+// scroll['h'] = {
+// value: 0,
+// islocked: false
+// };
+
+// //'sound' status array
+// var sound_stat = {};
+// sound_stat['a'] = {
+// id: 0,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['b'] = {
+// id: 1,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['c'] = {
+// id: 2,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['d'] = {
+// id: 3,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['e'] = {
+// id: 4,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['f'] = {
+// id: 5,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['g'] = {
+// id: 6,
+// isplaying: false,
+// playcount: 0
+// };
+// sound_stat['h'] = {
+// id: 7,
+// isplaying: false,
+// playcount: 0
+// };
+
+//socket.io events
+io.on('connection', function(socket) {
+
+ //entry log.
+ console.log('someone connected.');
+
+ //let this new member be up-to-date immediately
+ // Object.keys(scroll).forEach(function(key) { // ES6 --> https://stackoverflow.com/a/5737192
+ // socket.emit('scroll', {
+ // key: key,
+ // data: scroll[key]
+ // });
+ // });
+
+ // //on 'scroll' --> relay the msg. to everyone except sender
+ // socket.on('scroll-get', function(key, fn) {
+ // console.log('investigating...');
+ // console.log(key);
+ // if (scroll[key].islocked == false) {
+ // fn(true);
+ // scroll[key].islocked = true;
+ // } else if (scroll[key].islocked == true) {
+ // fn(false);
+ // }
+ // });
+
+ // socket.on('lock-all', function(msg) {
+ // if (msg.action == 'close') {
+ // console.log('lock-all');
+ // Object.keys(scroll).forEach(function(key) {
+ // console.log(scroll[key].islocked);
+ // scroll[key].islocked = true;
+ // console.log(scroll[key].islocked);
+ // socket.broadcast.emit('scroll', {
+ // key: key,
+ // data: scroll[key]
+ // });
+ // });
+ // } else if (msg.action == 'open') {
+ // console.log('release-all');
+ // Object.keys(scroll).forEach(function(key) {
+ // console.log(scroll[key].islocked);
+ // scroll[key].islocked = false;
+ // console.log(scroll[key].islocked);
+ // socket.broadcast.emit('scroll', {
+ // key: key,
+ // data: scroll[key]
+ // });
+ // });
+ // }
+ // })
+
+ // //on 'scroll' --> relay the msg. to everyone except sender
+ // socket.on('scroll', function(msg) {
+
+ // //update server's scroll database
+ // scroll[msg.key].value = msg.data.value;
+ // scroll[msg.key].islocked = msg.data.islocked;
+
+ // //relay the message to everybody except sender
+ // socket.broadcast.emit('scroll', msg);
+ // // //relay the message to everybody INCLUDING sender
+ // // io.emit('scroll', msg);
+
+ // //DEBUG
+ // //console.log('scroll :');
+ // console.log(msg);
+ // });
+
+ //on 'sound' --> relay the message to everybody INCLUDING sender
+ // var soundactive = false;
+ socket.on('sound', function(sound) {
+
+ //relay the message to everybody EXCEPT the sender
+ socket.broadcast.emit('sound', sound);
+
+ //DEBUG
+ console.log('sound.name :' + sound.name);
+ console.log('sound.action :' + sound.action);
+ console.log('sound.group :' + sound.group);
+ });
+
+ // //on 'voice'
+ // socket.on('voice', function(voice) {
+
+ // //relay the message to everybody INCLUDING sender // TODO: actually only sound server is listening...
+ // io.emit('voice', voice);
+
+ // //DEBUG
+ // console.log('voice.id :' + voice.id);
+ // console.log('voice.key :' + voice.key);
+ // //{name: voice_selected, key: this._idx}
+ // })
+
+ // //on 'page' --> relay the message to everybody INCLUDING sender
+ // socket.on('page', function(page) {
+
+ // //relay the message to everybody INCLUDING sender
+ // io.emit('page', page);
+
+ // //DEBUG
+ // console.log('page.name :' + page.name);
+ // });
+
+ //on 'clap' --> relay the message to everybody INCLUDING sender
+ socket.on('clap', function(clap) {
+
+ //relay the message to everybody INCLUDING sender
+ io.emit('clap', clap);
+
+ //DEBUG
+ console.log('clap.name :' + clap.name);
+ });
+
+ //on 'disconnect'
+ socket.on('disconnect', function() {
+ //
+ // if (soundactive == true) {
+ // soundactive = false;
+ // if (sound_stat[sound.name].playcount > 0) {
+ // sound_stat[sound.name].playcount--;
+ // }
+ // if (sound_stat[sound.name].isplaying == true) {
+ // sound_stat[sound.name].isplaying = false;
+ // //emit stop
+ // //relay the message to everybody INCLUDING sender -- but actually only 'receiver.js' is listening 'sound_ctrl' msg.
+ // io.emit('sound_ctrl', {
+ // id: sound_stat[sound.name].id,
+ // action: 0
+ // });
+ // }
+ // }
+
+ console.log('someone disconnected.');
+
+ //NOTE, TODO, BUG:
+ // --> disconnection one's 'locked' keys must be released!
+ // otherwise, nobody can use it! (even the one who locked it, when returned.)
+ //
+ // (but, then server firstly should also remember 'who' locked 'which' key...)
+ });
+});
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..35993c1
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,2241 @@
+{
+ "name": "scroll-link-server",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@serialport/parser-byte-length": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-1.0.5.tgz",
+ "integrity": "sha512-GCz/v/KG2Wv7SdQ2nv8jYGBY6D4h5tibj9bs0+pnryCDAr8xmmvnesFW15FIu4rwOMgsKhCHyp7roD8bRGs63A==",
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "@serialport/parser-cctalk": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-1.0.5.tgz",
+ "integrity": "sha512-VdoG1rRXb5deHM1c9Akn9djoJuHn030v7owYHEqpJeS6Rs6wrC4Hrkw8NxvV9ZPlMqAJ+5uJCaAUzB1tbVd3rA==",
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "@serialport/parser-delimiter": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-1.0.5.tgz",
+ "integrity": "sha512-srDzeNwGM/GjtqK/nFDRIDpcZ6XDgkakFMXBtNDSI+XP6fqO1ynEZok8ljKJxM2ay0CNG83C6/X2xIOHvWhFYQ==",
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "@serialport/parser-readline": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-1.0.5.tgz",
+ "integrity": "sha512-QkZoCQPHwdZOMQk7SHz3QSp7xqK4jdNql9M80oXqWt7kNhFvNXguWzf17FfQrPRIb0qiz+96+P6uAOIi02Yxbg==",
+ "requires": {
+ "@serialport/parser-delimiter": "^1.0.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "@serialport/parser-ready": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-1.0.5.tgz",
+ "integrity": "sha512-U/ZkxyY35Z7WrDc0O8TGcGPOdwv6fGVJcZq5vXVko2MRt8wiKVD192mmbfTRZXFAX+rARXtQa3ad3yJzXVhb1g==",
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "@serialport/parser-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-1.0.5.tgz",
+ "integrity": "sha512-sX3tRuwwwGV+CZbKEUAKZD/wtG8ZRcGxbiDIm8nyzsPCGv52ck3RlQ9Vp4K8fYjcrGGwm3BWizC4uSzaTLOk1A==",
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "after": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
+ },
+ "ansi-bgblack": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz",
+ "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bgblue": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz",
+ "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bgcyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz",
+ "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bggreen": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz",
+ "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bgmagenta": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz",
+ "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bgred": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz",
+ "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bgwhite": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz",
+ "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bgyellow": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz",
+ "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-black": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz",
+ "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-blue": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz",
+ "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-bold": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz",
+ "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-colors": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz",
+ "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=",
+ "requires": {
+ "ansi-bgblack": "^0.1.1",
+ "ansi-bgblue": "^0.1.1",
+ "ansi-bgcyan": "^0.1.1",
+ "ansi-bggreen": "^0.1.1",
+ "ansi-bgmagenta": "^0.1.1",
+ "ansi-bgred": "^0.1.1",
+ "ansi-bgwhite": "^0.1.1",
+ "ansi-bgyellow": "^0.1.1",
+ "ansi-black": "^0.1.1",
+ "ansi-blue": "^0.1.1",
+ "ansi-bold": "^0.1.1",
+ "ansi-cyan": "^0.1.1",
+ "ansi-dim": "^0.1.1",
+ "ansi-gray": "^0.1.1",
+ "ansi-green": "^0.1.1",
+ "ansi-grey": "^0.1.1",
+ "ansi-hidden": "^0.1.1",
+ "ansi-inverse": "^0.1.1",
+ "ansi-italic": "^0.1.1",
+ "ansi-magenta": "^0.1.1",
+ "ansi-red": "^0.1.1",
+ "ansi-reset": "^0.1.1",
+ "ansi-strikethrough": "^0.1.1",
+ "ansi-underline": "^0.1.1",
+ "ansi-white": "^0.1.1",
+ "ansi-yellow": "^0.1.1",
+ "lazy-cache": "^2.0.1"
+ }
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-dim": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz",
+ "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-green": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz",
+ "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-grey": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz",
+ "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-hidden": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz",
+ "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-inverse": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz",
+ "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-italic": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz",
+ "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-magenta": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz",
+ "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-reset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz",
+ "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-strikethrough": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz",
+ "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-underline": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz",
+ "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-white": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz",
+ "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
+ },
+ "ansi-yellow": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz",
+ "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ },
+ "arr-swap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arr-swap/-/arr-swap-1.0.1.tgz",
+ "integrity": "sha1-FHWQ7WX8gVvAf+8Jl8Llgj1kNTQ=",
+ "requires": {
+ "is-number": "^3.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "arraybuffer.slice": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
+ "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
+ },
+ "async-limiter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
+ },
+ "backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+ },
+ "base64-arraybuffer": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
+ },
+ "base64id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
+ },
+ "better-assert": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+ "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "requires": {
+ "callsite": "1.0.0"
+ }
+ },
+ "bindings": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
+ "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
+ },
+ "bl": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
+ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+ "requires": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "blob": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+ "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE="
+ },
+ "body-parser": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.1",
+ "http-errors": "~1.6.2",
+ "iconv-lite": "0.4.19",
+ "on-finished": "~2.3.0",
+ "qs": "6.5.1",
+ "raw-body": "2.3.2",
+ "type-is": "~1.6.15"
+ }
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ },
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
+ },
+ "choices-separator": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/choices-separator/-/choices-separator-2.0.0.tgz",
+ "integrity": "sha1-kv0XYxgteQM/XFxR0Lo1LlVnxpY=",
+ "requires": {
+ "ansi-dim": "^0.1.1",
+ "debug": "^2.6.6",
+ "strip-color": "^0.1.0"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
+ },
+ "clone-deep": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz",
+ "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==",
+ "requires": {
+ "for-own": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^5.0.0",
+ "shallow-clone": "^1.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "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"
+ }
+ },
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+ },
+ "component-bind": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ },
+ "component-inherit": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+ },
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "engine.io": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz",
+ "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==",
+ "requires": {
+ "accepts": "~1.3.4",
+ "base64id": "1.0.0",
+ "cookie": "0.3.1",
+ "debug": "~3.1.0",
+ "engine.io-parser": "~2.1.0",
+ "ws": "~3.3.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ws": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
+ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+ "requires": {
+ "async-limiter": "~1.0.0",
+ "safe-buffer": "~5.1.0",
+ "ultron": "~1.1.0"
+ }
+ }
+ }
+ },
+ "engine.io-client": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
+ "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
+ "requires": {
+ "component-emitter": "1.2.1",
+ "component-inherit": "0.0.3",
+ "debug": "~3.1.0",
+ "engine.io-parser": "~2.1.1",
+ "has-cors": "1.1.0",
+ "indexof": "0.0.1",
+ "parseqs": "0.0.5",
+ "parseuri": "0.0.5",
+ "ws": "~3.3.1",
+ "xmlhttprequest-ssl": "~1.5.4",
+ "yeast": "0.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ws": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
+ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+ "requires": {
+ "async-limiter": "~1.0.0",
+ "safe-buffer": "~5.1.0",
+ "ultron": "~1.1.0"
+ }
+ }
+ }
+ },
+ "engine.io-parser": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz",
+ "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==",
+ "requires": {
+ "after": "0.8.2",
+ "arraybuffer.slice": "~0.0.7",
+ "base64-arraybuffer": "0.1.5",
+ "blob": "0.0.4",
+ "has-binary2": "~1.0.2"
+ }
+ },
+ "error-symbol": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz",
+ "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "eventemitter3": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA=="
+ },
+ "expand-template": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz",
+ "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg=="
+ },
+ "express": {
+ "version": "4.16.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+ "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+ "requires": {
+ "accepts": "~1.3.5",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.2",
+ "content-disposition": "0.5.2",
+ "content-type": "~1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.1.1",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.3",
+ "qs": "6.5.1",
+ "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",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "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"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.2.tgz",
+ "integrity": "sha512-kssLorP/9acIdpQ2udQVTiCS5LQmdEz9mvdIfDcl1gYX2tPKFADHSyFdvJS040XdFsPzemWtgI3q8mFVCxtX8A==",
+ "requires": {
+ "debug": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
+ },
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "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"
+ }
+ },
+ "github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
+ },
+ "has-binary2": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
+ "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
+ "requires": {
+ "isarray": "2.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
+ }
+ }
+ },
+ "has-cors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "http-proxy": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+ "requires": {
+ "eventemitter3": "^3.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "https": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
+ "integrity": "sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q="
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
+ },
+ "info-symbol": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz",
+ "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang="
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "ipaddr.js": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "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"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-number": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-6.0.0.tgz",
+ "integrity": "sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg=="
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "koalas": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz",
+ "integrity": "sha1-MYQz8HQjXbePrlZhoCqMpT7ilc0="
+ },
+ "lazy-cache": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
+ "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
+ "requires": {
+ "set-getter": "^0.1.0"
+ }
+ },
+ "log-ok": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz",
+ "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=",
+ "requires": {
+ "ansi-green": "^0.1.1",
+ "success-symbol": "^0.1.0"
+ }
+ },
+ "log-utils": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz",
+ "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=",
+ "requires": {
+ "ansi-colors": "^0.2.0",
+ "error-symbol": "^0.1.0",
+ "info-symbol": "^0.1.0",
+ "log-ok": "^0.1.1",
+ "success-symbol": "^0.1.0",
+ "time-stamp": "^1.0.1",
+ "warning-symbol": "^0.1.0"
+ }
+ },
+ "long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+ },
+ "mime-db": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
+ "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg=="
+ },
+ "mime-types": {
+ "version": "2.1.19",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
+ "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
+ "requires": {
+ "mime-db": "~1.35.0"
+ }
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mixin-object": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+ "requires": {
+ "for-in": "^0.1.3",
+ "is-extendable": "^0.1.1"
+ },
+ "dependencies": {
+ "for-in": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
+ "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE="
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+ },
+ "nan": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ },
+ "node-abi": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.3.tgz",
+ "integrity": "sha512-b656V5C0628gOOA2kwcpNA/bxdlqYF9FvxJ+qqVX0ctdXNVZpS8J6xEUYir3WAKc7U0BH/NRlSpNbGsy+azjeg==",
+ "requires": {
+ "semver": "^5.4.1"
+ }
+ },
+ "noop-logger": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
+ "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI="
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-component": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "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"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "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"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "osc": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/osc/-/osc-2.2.4.tgz",
+ "integrity": "sha512-Gkd84JlZDGNzHLnHO/3eHbaxJHF3tdrLNBr3ydTBRy8jMRvWiQ779rydldwTD6MuqVEXORtFqq7Ppr/unyAf/w==",
+ "requires": {
+ "long": "4.0.0",
+ "serialport": "6.2.2",
+ "slip": "1.0.2",
+ "wolfy87-eventemitter": "5.2.5",
+ "ws": "6.0.0"
+ }
+ },
+ "parseqs": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+ "requires": {
+ "better-assert": "~1.0.0"
+ }
+ },
+ "parseuri": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+ "requires": {
+ "better-assert": "~1.0.0"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "pointer-symbol": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pointer-symbol/-/pointer-symbol-1.0.0.tgz",
+ "integrity": "sha1-YPkRAgTqepKbYmRKITFVQ8uz1Ec="
+ },
+ "prebuild-install": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-4.0.0.tgz",
+ "integrity": "sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA==",
+ "requires": {
+ "detect-libc": "^1.0.3",
+ "expand-template": "^1.0.2",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "node-abi": "^2.2.0",
+ "noop-logger": "^0.1.1",
+ "npmlog": "^4.0.1",
+ "os-homedir": "^1.0.1",
+ "pump": "^2.0.1",
+ "rc": "^1.1.6",
+ "simple-get": "^2.7.0",
+ "tar-fs": "^1.13.0",
+ "tunnel-agent": "^0.6.0",
+ "which-pm-runs": "^1.0.0"
+ }
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ },
+ "promirepl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promirepl/-/promirepl-1.0.1.tgz",
+ "integrity": "sha1-KVGq66K/P+InT/Y6FtlMBMpghy4="
+ },
+ "prompt-actions": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/prompt-actions/-/prompt-actions-3.0.2.tgz",
+ "integrity": "sha512-dhz2Fl7vK+LPpmnQ/S/eSut4BnH4NZDLyddHKi5uTU/2PDn3grEMGkgsll16V5RpVUh/yxdiam0xsM0RD4xvtg==",
+ "requires": {
+ "debug": "^2.6.8"
+ }
+ },
+ "prompt-base": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/prompt-base/-/prompt-base-4.1.0.tgz",
+ "integrity": "sha512-svGzgLUKZoqomz9SGMkf1hBG8Wl3K7JGuRCXc/Pv7xw8239hhaTBXrmjt7EXA9P/QZzdyT8uNWt9F/iJTXq75g==",
+ "requires": {
+ "component-emitter": "^1.2.1",
+ "debug": "^3.0.1",
+ "koalas": "^1.0.2",
+ "log-utils": "^0.2.1",
+ "prompt-actions": "^3.0.2",
+ "prompt-question": "^5.0.1",
+ "readline-ui": "^2.2.3",
+ "readline-utils": "^2.2.3",
+ "static-extend": "^0.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "prompt-checkbox": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/prompt-checkbox/-/prompt-checkbox-2.2.0.tgz",
+ "integrity": "sha512-T/QWgkdUmKjRSr0FQlV8O+LfgmBk8PwDbWhzllm7mwWNAjs3qOVuru5Y1gV4/14L73zCncqcuwGwvnDyVcVgvA==",
+ "requires": {
+ "ansi-cyan": "^0.1.1",
+ "debug": "^2.6.8",
+ "prompt-base": "^4.0.2"
+ }
+ },
+ "prompt-choices": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/prompt-choices/-/prompt-choices-4.1.0.tgz",
+ "integrity": "sha512-ZNYLv6rW9z9n0WdwCkEuS+w5nUAGzRgtRt6GQ5aFNFz6MIcU7nHFlHOwZtzy7RQBk80KzUGPSRQphvMiQzB8pg==",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "arr-swap": "^1.0.1",
+ "choices-separator": "^2.0.0",
+ "clone-deep": "^4.0.0",
+ "collection-visit": "^1.0.0",
+ "define-property": "^2.0.2",
+ "is-number": "^6.0.0",
+ "kind-of": "^6.0.2",
+ "koalas": "^1.0.2",
+ "log-utils": "^0.2.1",
+ "pointer-symbol": "^1.0.0",
+ "radio-symbol": "^2.0.0",
+ "set-value": "^3.0.0",
+ "strip-color": "^0.1.0",
+ "terminal-paginator": "^2.0.2",
+ "toggle-array": "^1.0.1"
+ },
+ "dependencies": {
+ "clone-deep": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.0.tgz",
+ "integrity": "sha512-aNJ5/7Bz2IYBb7nIj34TLGk78lBXpXUgV9qsLngtTvJ9+scsZNnlU0OX2S2N4ax/sUQt7sDBkXiGjGJEmNbXOQ==",
+ "requires": {
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "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"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "shallow-clone": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.0.tgz",
+ "integrity": "sha512-Drg+nOI+ofeuslBf0nulyWLZhK1BZprqNvPJaiB4VvES+9gC6GG+qOVAfuO12zVSgxq9SKevcme7S3uDT6Be8w==",
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "prompt-list": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/prompt-list/-/prompt-list-3.2.0.tgz",
+ "integrity": "sha512-PDao47cmC9+m2zEUghH+WIIascd8SuyyWO+akuUubd0XxOQyUH96HMdIcL3YnNS8kJUHwddH1rHVgL9vZA1QsQ==",
+ "requires": {
+ "ansi-cyan": "^0.1.1",
+ "ansi-dim": "^0.1.1",
+ "prompt-radio": "^1.2.1"
+ }
+ },
+ "prompt-question": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/prompt-question/-/prompt-question-5.0.2.tgz",
+ "integrity": "sha512-wreaLbbu8f5+7zXds199uiT11Ojp59Z4iBi6hONlSLtsKGTvL2UY8VglcxQ3t/X4qWIxsNCg6aT4O8keO65v6Q==",
+ "requires": {
+ "clone-deep": "^1.0.0",
+ "debug": "^3.0.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "kind-of": "^5.0.2",
+ "koalas": "^1.0.2",
+ "prompt-choices": "^4.0.5"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "prompt-radio": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prompt-radio/-/prompt-radio-1.2.1.tgz",
+ "integrity": "sha512-vH1iAkgbWyvZBC1BTajydiHmwJP4F1b684gq0fm2wOjPVW1zaDo01OXWr/Dske0XdoHhtZFNMOXNj/ZUSRBywg==",
+ "requires": {
+ "debug": "^2.6.8",
+ "prompt-checkbox": "^2.2.0"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+ "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.8.0"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+ },
+ "radio-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/radio-symbol/-/radio-symbol-2.0.0.tgz",
+ "integrity": "sha1-eqm/xQSFY21S3XbWqOYxspB5muE=",
+ "requires": {
+ "ansi-gray": "^0.1.1",
+ "ansi-green": "^0.1.1",
+ "is-windows": "^1.0.1"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+ "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": ">= 1.3.1 < 2"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
+ }
+ }
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "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"
+ }
+ },
+ "readline-ui": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/readline-ui/-/readline-ui-2.2.3.tgz",
+ "integrity": "sha512-ix7jz0PxqQqcIuq3yQTHv1TOhlD2IHO74aNO+lSuXsRYm1d+pdyup1yF3zKyLK1wWZrVNGjkzw5tUegO2IDy+A==",
+ "requires": {
+ "component-emitter": "^1.2.1",
+ "debug": "^2.6.8",
+ "readline-utils": "^2.2.1",
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "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"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "readline-utils": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/readline-utils/-/readline-utils-2.2.3.tgz",
+ "integrity": "sha1-b4R9a48ZFcORtYHDZ81HhzhiNRo=",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "extend-shallow": "^2.0.1",
+ "is-buffer": "^1.1.5",
+ "is-number": "^3.0.0",
+ "is-windows": "^1.0.1",
+ "koalas": "^1.0.2",
+ "mute-stream": "0.0.7",
+ "strip-color": "^0.1.0",
+ "window-size": "^1.1.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "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",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ }
+ },
+ "serialport": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/serialport/-/serialport-6.2.2.tgz",
+ "integrity": "sha512-BQqTR06ZXKwKB6rUjeANm3aIZo0rqNbQsrQX5zKEDcNY4rxiu5dvdcfIOaAGuZkhW7jAKJsgKC5TjeURtLVuOQ==",
+ "requires": {
+ "@serialport/parser-byte-length": "^1.0.5",
+ "@serialport/parser-cctalk": "^1.0.5",
+ "@serialport/parser-delimiter": "^1.0.5",
+ "@serialport/parser-readline": "^1.0.5",
+ "@serialport/parser-ready": "^1.0.5",
+ "@serialport/parser-regex": "^1.0.5",
+ "bindings": "1.3.0",
+ "commander": "^2.13.0",
+ "debug": "^3.1.0",
+ "nan": "^2.9.2",
+ "prebuild-install": "^4.0.0",
+ "promirepl": "^1.0.1",
+ "prompt-list": "^3.2.0",
+ "safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "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",
+ "send": "0.16.2"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "set-getter": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz",
+ "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=",
+ "requires": {
+ "to-object-path": "^0.3.0"
+ }
+ },
+ "set-value": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.0.tgz",
+ "integrity": "sha512-tqkg9wJ2TOsxbzIMG5NMAmzjdbDTAD0in7XuUzmFpJE4Ipi2QFBfgC2Z1/gfxcAmWCPsuutiEJyDIMRsrjrMOQ==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "shallow-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
+ "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "requires": {
+ "is-extendable": "^0.1.1",
+ "kind-of": "^5.0.0",
+ "mixin-object": "^2.0.1"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "simple-concat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
+ "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY="
+ },
+ "simple-get": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",
+ "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
+ "requires": {
+ "decompress-response": "^3.3.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "slip": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/slip/-/slip-1.0.2.tgz",
+ "integrity": "sha1-ukWpIwNNbPQbGieuvnEoKCyNVR8="
+ },
+ "socket.io": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
+ "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
+ "requires": {
+ "debug": "~3.1.0",
+ "engine.io": "~3.2.0",
+ "has-binary2": "~1.0.2",
+ "socket.io-adapter": "~1.1.0",
+ "socket.io-client": "2.1.1",
+ "socket.io-parser": "~3.2.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "socket.io-adapter": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
+ "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
+ },
+ "socket.io-client": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
+ "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
+ "requires": {
+ "backo2": "1.0.2",
+ "base64-arraybuffer": "0.1.5",
+ "component-bind": "1.0.0",
+ "component-emitter": "1.2.1",
+ "debug": "~3.1.0",
+ "engine.io-client": "~3.2.0",
+ "has-binary2": "~1.0.2",
+ "has-cors": "1.1.0",
+ "indexof": "0.0.1",
+ "object-component": "0.0.3",
+ "parseqs": "0.0.5",
+ "parseuri": "0.0.5",
+ "socket.io-parser": "~3.2.0",
+ "to-array": "0.1.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "socket.io-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
+ "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
+ "requires": {
+ "component-emitter": "1.2.1",
+ "debug": "~3.1.0",
+ "isarray": "2.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "isarray": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
+ }
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "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"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "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"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "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"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-color": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz",
+ "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s="
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+ },
+ "success-symbol": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz",
+ "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc="
+ },
+ "tar-fs": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
+ "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
+ "requires": {
+ "chownr": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^1.0.0",
+ "tar-stream": "^1.1.2"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
+ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
+ "requires": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.1.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "terminal-paginator": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/terminal-paginator/-/terminal-paginator-2.0.2.tgz",
+ "integrity": "sha512-IZMT5ECF9p4s+sNCV8uvZSW9E1+9zy9Ji9xz2oee8Jfo7hUFpauyjxkhfRcIH6Lu3Wdepv5D1kVRc8Hx74/LfQ==",
+ "requires": {
+ "debug": "^2.6.6",
+ "extend-shallow": "^2.0.1",
+ "log-utils": "^0.2.1"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
+ },
+ "to-array": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
+ },
+ "to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "toggle-array": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toggle-array/-/toggle-array-1.0.1.tgz",
+ "integrity": "sha1-y/WEB5K9UJfzMReugkyTKv/ofVg=",
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "type-is": {
+ "version": "1.6.16",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.18"
+ }
+ },
+ "ultron": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
+ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "warning-symbol": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz",
+ "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE="
+ },
+ "which-pm-runs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
+ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "window-size": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.1.tgz",
+ "integrity": "sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==",
+ "requires": {
+ "define-property": "^1.0.0",
+ "is-number": "^3.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "wolfy87-eventemitter": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.5.tgz",
+ "integrity": "sha512-1Og5JkuMNZfZcDn76HM1ktUqG8MOMWKpaGdExM1pcTloUNSBkx4Mti3/jRKSTt1vI3P7S8BTkFogqMbc7m3A7Q=="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "ws": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.0.0.tgz",
+ "integrity": "sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w==",
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "xmlhttprequest-ssl": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
+ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ },
+ "yeast": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c550f28
--- /dev/null
+++ b/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "scroll-link-server",
+ "version": "1.0.0",
+ "description": "",
+ "main": "app.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.16.3",
+ "fs": "0.0.1-security",
+ "http-proxy": "^1.17.0",
+ "https": "^1.0.0",
+ "osc": "^2.2.3",
+ "socket.io": "^2.1.1",
+ "socket.io-client": "^2.1.1"
+ }
+}
diff --git a/public/.tern-port b/public/.tern-port
new file mode 100644
index 0000000..59b3b77
--- /dev/null
+++ b/public/.tern-port
@@ -0,0 +1 @@
+42761
\ No newline at end of file
diff --git a/public/audio-first-trip/beach/ogg/두드리는01.ogg b/public/audio-first-trip/beach/ogg/두드리는01.ogg
new file mode 100644
index 0000000..760cf5a
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/두드리는01.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/두드리는02.ogg b/public/audio-first-trip/beach/ogg/두드리는02.ogg
new file mode 100644
index 0000000..c5ff4e9
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/두드리는02.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/두드리는03.ogg b/public/audio-first-trip/beach/ogg/두드리는03.ogg
new file mode 100644
index 0000000..c438c5e
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/두드리는03.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/두드리는04.ogg b/public/audio-first-trip/beach/ogg/두드리는04.ogg
new file mode 100644
index 0000000..36ea61c
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/두드리는04.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/두드리는06.ogg b/public/audio-first-trip/beach/ogg/두드리는06.ogg
new file mode 100644
index 0000000..6e6f9f3
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/두드리는06.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/모래걸음.ogg b/public/audio-first-trip/beach/ogg/모래걸음.ogg
new file mode 100644
index 0000000..4ef93ad
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/모래걸음.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/물소리.ogg b/public/audio-first-trip/beach/ogg/물소리.ogg
new file mode 100644
index 0000000..6c52961
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/물소리.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/물장구.ogg b/public/audio-first-trip/beach/ogg/물장구.ogg
new file mode 100644
index 0000000..a80267d
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/물장구.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/손장구.ogg b/public/audio-first-trip/beach/ogg/손장구.ogg
new file mode 100644
index 0000000..291a5c2
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/손장구.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/운더강강술래.ogg b/public/audio-first-trip/beach/ogg/운더강강술래.ogg
new file mode 100644
index 0000000..46f3e15
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/운더강강술래.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/웃음.ogg b/public/audio-first-trip/beach/ogg/웃음.ogg
new file mode 100644
index 0000000..2d7105b
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/웃음.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/젖은모래쓸어내기.ogg b/public/audio-first-trip/beach/ogg/젖은모래쓸어내기.ogg
new file mode 100644
index 0000000..a9475ce
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/젖은모래쓸어내기.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/천막긁는.ogg b/public/audio-first-trip/beach/ogg/천막긁는.ogg
new file mode 100644
index 0000000..629951a
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/천막긁는.ogg differ
diff --git a/public/audio-first-trip/beach/ogg/풍덩.ogg b/public/audio-first-trip/beach/ogg/풍덩.ogg
new file mode 100644
index 0000000..110644d
Binary files /dev/null and b/public/audio-first-trip/beach/ogg/풍덩.ogg differ
diff --git a/public/audio-first-trip/beach/두드리는01.mp3 b/public/audio-first-trip/beach/두드리는01.mp3
new file mode 100644
index 0000000..911756a
Binary files /dev/null and b/public/audio-first-trip/beach/두드리는01.mp3 differ
diff --git a/public/audio-first-trip/beach/두드리는02.mp3 b/public/audio-first-trip/beach/두드리는02.mp3
new file mode 100644
index 0000000..ef03ee2
Binary files /dev/null and b/public/audio-first-trip/beach/두드리는02.mp3 differ
diff --git a/public/audio-first-trip/beach/두드리는03.mp3 b/public/audio-first-trip/beach/두드리는03.mp3
new file mode 100644
index 0000000..e75fdb7
Binary files /dev/null and b/public/audio-first-trip/beach/두드리는03.mp3 differ
diff --git a/public/audio-first-trip/beach/두드리는04.mp3 b/public/audio-first-trip/beach/두드리는04.mp3
new file mode 100644
index 0000000..a0f0421
Binary files /dev/null and b/public/audio-first-trip/beach/두드리는04.mp3 differ
diff --git a/public/audio-first-trip/beach/두드리는06.mp3 b/public/audio-first-trip/beach/두드리는06.mp3
new file mode 100644
index 0000000..c62cc3e
Binary files /dev/null and b/public/audio-first-trip/beach/두드리는06.mp3 differ
diff --git a/public/audio-first-trip/beach/모래걸음.mp3 b/public/audio-first-trip/beach/모래걸음.mp3
new file mode 100644
index 0000000..8c6d6a9
Binary files /dev/null and b/public/audio-first-trip/beach/모래걸음.mp3 differ
diff --git a/public/audio-first-trip/beach/물소리.mp3 b/public/audio-first-trip/beach/물소리.mp3
new file mode 100644
index 0000000..2de2101
Binary files /dev/null and b/public/audio-first-trip/beach/물소리.mp3 differ
diff --git a/public/audio-first-trip/beach/물장구.mp3 b/public/audio-first-trip/beach/물장구.mp3
new file mode 100644
index 0000000..22bf358
Binary files /dev/null and b/public/audio-first-trip/beach/물장구.mp3 differ
diff --git a/public/audio-first-trip/beach/손장구.mp3 b/public/audio-first-trip/beach/손장구.mp3
new file mode 100644
index 0000000..b8022f8
Binary files /dev/null and b/public/audio-first-trip/beach/손장구.mp3 differ
diff --git a/public/audio-first-trip/beach/운더강강술래.mp3 b/public/audio-first-trip/beach/운더강강술래.mp3
new file mode 100644
index 0000000..9cee4a5
Binary files /dev/null and b/public/audio-first-trip/beach/운더강강술래.mp3 differ
diff --git a/public/audio-first-trip/beach/웃음.mp3 b/public/audio-first-trip/beach/웃음.mp3
new file mode 100644
index 0000000..497839f
Binary files /dev/null and b/public/audio-first-trip/beach/웃음.mp3 differ
diff --git a/public/audio-first-trip/beach/젖은모래쓸어내기.mp3 b/public/audio-first-trip/beach/젖은모래쓸어내기.mp3
new file mode 100644
index 0000000..859a285
Binary files /dev/null and b/public/audio-first-trip/beach/젖은모래쓸어내기.mp3 differ
diff --git a/public/audio-first-trip/beach/천막긁는.mp3 b/public/audio-first-trip/beach/천막긁는.mp3
new file mode 100644
index 0000000..fb81785
Binary files /dev/null and b/public/audio-first-trip/beach/천막긁는.mp3 differ
diff --git a/public/audio-first-trip/beach/풍덩.mp3 b/public/audio-first-trip/beach/풍덩.mp3
new file mode 100644
index 0000000..64dee6a
Binary files /dev/null and b/public/audio-first-trip/beach/풍덩.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/ogg/고향돌리도.ogg b/public/audio-first-trip/bridgeA/ogg/고향돌리도.ogg
new file mode 100644
index 0000000..87710aa
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/고향돌리도.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/동물소리흉내.ogg b/public/audio-first-trip/bridgeA/ogg/동물소리흉내.ogg
new file mode 100644
index 0000000..b03b0d7
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/동물소리흉내.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/동물소리흉내02.ogg b/public/audio-first-trip/bridgeA/ogg/동물소리흉내02.ogg
new file mode 100644
index 0000000..5e7b02a
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/동물소리흉내02.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/동물소리흉내03.ogg b/public/audio-first-trip/bridgeA/ogg/동물소리흉내03.ogg
new file mode 100644
index 0000000..41a595e
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/동물소리흉내03.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/모래야돌아와.ogg b/public/audio-first-trip/bridgeA/ogg/모래야돌아와.ogg
new file mode 100644
index 0000000..65e46c7
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/모래야돌아와.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/물소리가있었다.ogg b/public/audio-first-trip/bridgeA/ogg/물소리가있었다.ogg
new file mode 100644
index 0000000..b67527d
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/물소리가있었다.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/우와.ogg b/public/audio-first-trip/bridgeA/ogg/우와.ogg
new file mode 100644
index 0000000..e0f6db1
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/우와.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/이거물에넣고해도되요.ogg b/public/audio-first-trip/bridgeA/ogg/이거물에넣고해도되요.ogg
new file mode 100644
index 0000000..6c66391
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/이거물에넣고해도되요.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/흰수마자돌아와.ogg b/public/audio-first-trip/bridgeA/ogg/흰수마자돌아와.ogg
new file mode 100644
index 0000000..2abcfb2
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/흰수마자돌아와.ogg differ
diff --git a/public/audio-first-trip/bridgeA/ogg/흰수마자어디갔니.ogg b/public/audio-first-trip/bridgeA/ogg/흰수마자어디갔니.ogg
new file mode 100644
index 0000000..29c8e77
Binary files /dev/null and b/public/audio-first-trip/bridgeA/ogg/흰수마자어디갔니.ogg differ
diff --git a/public/audio-first-trip/bridgeA/고향돌리도.mp3 b/public/audio-first-trip/bridgeA/고향돌리도.mp3
new file mode 100644
index 0000000..41ea07a
Binary files /dev/null and b/public/audio-first-trip/bridgeA/고향돌리도.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/동물소리흉내.mp3 b/public/audio-first-trip/bridgeA/동물소리흉내.mp3
new file mode 100644
index 0000000..1e9ca78
Binary files /dev/null and b/public/audio-first-trip/bridgeA/동물소리흉내.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/동물소리흉내02.mp3 b/public/audio-first-trip/bridgeA/동물소리흉내02.mp3
new file mode 100644
index 0000000..476cc16
Binary files /dev/null and b/public/audio-first-trip/bridgeA/동물소리흉내02.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/동물소리흉내03.mp3 b/public/audio-first-trip/bridgeA/동물소리흉내03.mp3
new file mode 100644
index 0000000..828ddec
Binary files /dev/null and b/public/audio-first-trip/bridgeA/동물소리흉내03.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/모래야돌아와.mp3 b/public/audio-first-trip/bridgeA/모래야돌아와.mp3
new file mode 100644
index 0000000..6a718b1
Binary files /dev/null and b/public/audio-first-trip/bridgeA/모래야돌아와.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/물소리가있었다.mp3 b/public/audio-first-trip/bridgeA/물소리가있었다.mp3
new file mode 100644
index 0000000..4428a9b
Binary files /dev/null and b/public/audio-first-trip/bridgeA/물소리가있었다.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/우와.mp3 b/public/audio-first-trip/bridgeA/우와.mp3
new file mode 100644
index 0000000..dd959ee
Binary files /dev/null and b/public/audio-first-trip/bridgeA/우와.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/이거물에넣고해도되요.mp3 b/public/audio-first-trip/bridgeA/이거물에넣고해도되요.mp3
new file mode 100644
index 0000000..eb68015
Binary files /dev/null and b/public/audio-first-trip/bridgeA/이거물에넣고해도되요.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/흰수마자돌아와.mp3 b/public/audio-first-trip/bridgeA/흰수마자돌아와.mp3
new file mode 100644
index 0000000..ec71cbe
Binary files /dev/null and b/public/audio-first-trip/bridgeA/흰수마자돌아와.mp3 differ
diff --git a/public/audio-first-trip/bridgeA/흰수마자어디갔니.mp3 b/public/audio-first-trip/bridgeA/흰수마자어디갔니.mp3
new file mode 100644
index 0000000..4daa438
Binary files /dev/null and b/public/audio-first-trip/bridgeA/흰수마자어디갔니.mp3 differ
diff --git a/public/audio-first-trip/clap@2/01.mp3 b/public/audio-first-trip/clap@2/01.mp3
new file mode 100644
index 0000000..8019a14
Binary files /dev/null and b/public/audio-first-trip/clap@2/01.mp3 differ
diff --git a/public/audio-first-trip/clap@2/02.mp3 b/public/audio-first-trip/clap@2/02.mp3
new file mode 100644
index 0000000..745dca0
Binary files /dev/null and b/public/audio-first-trip/clap@2/02.mp3 differ
diff --git a/public/audio-first-trip/path/ogg/가을아침.ogg b/public/audio-first-trip/path/ogg/가을아침.ogg
new file mode 100644
index 0000000..83e2b3d
Binary files /dev/null and b/public/audio-first-trip/path/ogg/가을아침.ogg differ
diff --git a/public/audio-first-trip/path/ogg/내나이.ogg b/public/audio-first-trip/path/ogg/내나이.ogg
new file mode 100644
index 0000000..b625486
Binary files /dev/null and b/public/audio-first-trip/path/ogg/내나이.ogg differ
diff --git a/public/audio-first-trip/path/ogg/노래.ogg b/public/audio-first-trip/path/ogg/노래.ogg
new file mode 100644
index 0000000..32fd0d8
Binary files /dev/null and b/public/audio-first-trip/path/ogg/노래.ogg differ
diff --git a/public/audio-first-trip/path/ogg/사랑을했따.ogg b/public/audio-first-trip/path/ogg/사랑을했따.ogg
new file mode 100644
index 0000000..61331e3
Binary files /dev/null and b/public/audio-first-trip/path/ogg/사랑을했따.ogg differ
diff --git a/public/audio-first-trip/path/ogg/아아아아.ogg b/public/audio-first-trip/path/ogg/아아아아.ogg
new file mode 100644
index 0000000..f904ff7
Binary files /dev/null and b/public/audio-first-trip/path/ogg/아아아아.ogg differ
diff --git a/public/audio-first-trip/path/ogg/하모니카.ogg b/public/audio-first-trip/path/ogg/하모니카.ogg
new file mode 100644
index 0000000..24f3b30
Binary files /dev/null and b/public/audio-first-trip/path/ogg/하모니카.ogg differ
diff --git a/public/audio-first-trip/path/ogg/합주.ogg b/public/audio-first-trip/path/ogg/합주.ogg
new file mode 100644
index 0000000..0eb918b
Binary files /dev/null and b/public/audio-first-trip/path/ogg/합주.ogg differ
diff --git a/public/audio-first-trip/path/ogg/휘파람.ogg b/public/audio-first-trip/path/ogg/휘파람.ogg
new file mode 100644
index 0000000..8f3470d
Binary files /dev/null and b/public/audio-first-trip/path/ogg/휘파람.ogg differ
diff --git a/public/audio-first-trip/path/가을아침.mp3 b/public/audio-first-trip/path/가을아침.mp3
new file mode 100644
index 0000000..630120a
Binary files /dev/null and b/public/audio-first-trip/path/가을아침.mp3 differ
diff --git a/public/audio-first-trip/path/내나이.mp3 b/public/audio-first-trip/path/내나이.mp3
new file mode 100644
index 0000000..ae24996
Binary files /dev/null and b/public/audio-first-trip/path/내나이.mp3 differ
diff --git a/public/audio-first-trip/path/노래.mp3 b/public/audio-first-trip/path/노래.mp3
new file mode 100644
index 0000000..4372d17
Binary files /dev/null and b/public/audio-first-trip/path/노래.mp3 differ
diff --git a/public/audio-first-trip/path/사랑을했따.mp3 b/public/audio-first-trip/path/사랑을했따.mp3
new file mode 100644
index 0000000..95eeb97
Binary files /dev/null and b/public/audio-first-trip/path/사랑을했따.mp3 differ
diff --git a/public/audio-first-trip/path/아아아아.mp3 b/public/audio-first-trip/path/아아아아.mp3
new file mode 100644
index 0000000..bf945f6
Binary files /dev/null and b/public/audio-first-trip/path/아아아아.mp3 differ
diff --git a/public/audio-first-trip/path/하모니카.mp3 b/public/audio-first-trip/path/하모니카.mp3
new file mode 100644
index 0000000..4e7b15d
Binary files /dev/null and b/public/audio-first-trip/path/하모니카.mp3 differ
diff --git a/public/audio-first-trip/path/합주.mp3 b/public/audio-first-trip/path/합주.mp3
new file mode 100644
index 0000000..7c7909a
Binary files /dev/null and b/public/audio-first-trip/path/합주.mp3 differ
diff --git a/public/audio-first-trip/path/휘파람.mp3 b/public/audio-first-trip/path/휘파람.mp3
new file mode 100644
index 0000000..664156a
Binary files /dev/null and b/public/audio-first-trip/path/휘파람.mp3 differ
diff --git a/public/audio/beach/ogg/두드리는01.ogg b/public/audio/beach/ogg/두드리는01.ogg
new file mode 100644
index 0000000..760cf5a
Binary files /dev/null and b/public/audio/beach/ogg/두드리는01.ogg differ
diff --git a/public/audio/beach/ogg/두드리는02.ogg b/public/audio/beach/ogg/두드리는02.ogg
new file mode 100644
index 0000000..c5ff4e9
Binary files /dev/null and b/public/audio/beach/ogg/두드리는02.ogg differ
diff --git a/public/audio/beach/ogg/두드리는03.ogg b/public/audio/beach/ogg/두드리는03.ogg
new file mode 100644
index 0000000..c438c5e
Binary files /dev/null and b/public/audio/beach/ogg/두드리는03.ogg differ
diff --git a/public/audio/beach/ogg/두드리는04.ogg b/public/audio/beach/ogg/두드리는04.ogg
new file mode 100644
index 0000000..36ea61c
Binary files /dev/null and b/public/audio/beach/ogg/두드리는04.ogg differ
diff --git a/public/audio/beach/ogg/두드리는06.ogg b/public/audio/beach/ogg/두드리는06.ogg
new file mode 100644
index 0000000..6e6f9f3
Binary files /dev/null and b/public/audio/beach/ogg/두드리는06.ogg differ
diff --git a/public/audio/beach/ogg/모래걸음.ogg b/public/audio/beach/ogg/모래걸음.ogg
new file mode 100644
index 0000000..4ef93ad
Binary files /dev/null and b/public/audio/beach/ogg/모래걸음.ogg differ
diff --git a/public/audio/beach/ogg/물소리.ogg b/public/audio/beach/ogg/물소리.ogg
new file mode 100644
index 0000000..6c52961
Binary files /dev/null and b/public/audio/beach/ogg/물소리.ogg differ
diff --git a/public/audio/beach/ogg/물장구.ogg b/public/audio/beach/ogg/물장구.ogg
new file mode 100644
index 0000000..a80267d
Binary files /dev/null and b/public/audio/beach/ogg/물장구.ogg differ
diff --git a/public/audio/beach/ogg/손장구.ogg b/public/audio/beach/ogg/손장구.ogg
new file mode 100644
index 0000000..291a5c2
Binary files /dev/null and b/public/audio/beach/ogg/손장구.ogg differ
diff --git a/public/audio/beach/ogg/운더강강술래.ogg b/public/audio/beach/ogg/운더강강술래.ogg
new file mode 100644
index 0000000..46f3e15
Binary files /dev/null and b/public/audio/beach/ogg/운더강강술래.ogg differ
diff --git a/public/audio/beach/ogg/웃음.ogg b/public/audio/beach/ogg/웃음.ogg
new file mode 100644
index 0000000..2d7105b
Binary files /dev/null and b/public/audio/beach/ogg/웃음.ogg differ
diff --git a/public/audio/beach/ogg/젖은모래쓸어내기.ogg b/public/audio/beach/ogg/젖은모래쓸어내기.ogg
new file mode 100644
index 0000000..a9475ce
Binary files /dev/null and b/public/audio/beach/ogg/젖은모래쓸어내기.ogg differ
diff --git a/public/audio/beach/ogg/천막긁는.ogg b/public/audio/beach/ogg/천막긁는.ogg
new file mode 100644
index 0000000..629951a
Binary files /dev/null and b/public/audio/beach/ogg/천막긁는.ogg differ
diff --git a/public/audio/beach/ogg/풍덩.ogg b/public/audio/beach/ogg/풍덩.ogg
new file mode 100644
index 0000000..110644d
Binary files /dev/null and b/public/audio/beach/ogg/풍덩.ogg differ
diff --git a/public/audio/beach/두드리는01.mp3 b/public/audio/beach/두드리는01.mp3
new file mode 100644
index 0000000..911756a
Binary files /dev/null and b/public/audio/beach/두드리는01.mp3 differ
diff --git a/public/audio/beach/두드리는02.mp3 b/public/audio/beach/두드리는02.mp3
new file mode 100644
index 0000000..ef03ee2
Binary files /dev/null and b/public/audio/beach/두드리는02.mp3 differ
diff --git a/public/audio/beach/두드리는03.mp3 b/public/audio/beach/두드리는03.mp3
new file mode 100644
index 0000000..e75fdb7
Binary files /dev/null and b/public/audio/beach/두드리는03.mp3 differ
diff --git a/public/audio/beach/두드리는04.mp3 b/public/audio/beach/두드리는04.mp3
new file mode 100644
index 0000000..a0f0421
Binary files /dev/null and b/public/audio/beach/두드리는04.mp3 differ
diff --git a/public/audio/beach/두드리는06.mp3 b/public/audio/beach/두드리는06.mp3
new file mode 100644
index 0000000..c62cc3e
Binary files /dev/null and b/public/audio/beach/두드리는06.mp3 differ
diff --git a/public/audio/beach/모래걸음.mp3 b/public/audio/beach/모래걸음.mp3
new file mode 100644
index 0000000..8c6d6a9
Binary files /dev/null and b/public/audio/beach/모래걸음.mp3 differ
diff --git a/public/audio/beach/물소리.mp3 b/public/audio/beach/물소리.mp3
new file mode 100644
index 0000000..2de2101
Binary files /dev/null and b/public/audio/beach/물소리.mp3 differ
diff --git a/public/audio/beach/물장구.mp3 b/public/audio/beach/물장구.mp3
new file mode 100644
index 0000000..22bf358
Binary files /dev/null and b/public/audio/beach/물장구.mp3 differ
diff --git a/public/audio/beach/손장구.mp3 b/public/audio/beach/손장구.mp3
new file mode 100644
index 0000000..b8022f8
Binary files /dev/null and b/public/audio/beach/손장구.mp3 differ
diff --git a/public/audio/beach/운더강강술래.mp3 b/public/audio/beach/운더강강술래.mp3
new file mode 100644
index 0000000..9cee4a5
Binary files /dev/null and b/public/audio/beach/운더강강술래.mp3 differ
diff --git a/public/audio/beach/웃음.mp3 b/public/audio/beach/웃음.mp3
new file mode 100644
index 0000000..497839f
Binary files /dev/null and b/public/audio/beach/웃음.mp3 differ
diff --git a/public/audio/beach/젖은모래쓸어내기.mp3 b/public/audio/beach/젖은모래쓸어내기.mp3
new file mode 100644
index 0000000..859a285
Binary files /dev/null and b/public/audio/beach/젖은모래쓸어내기.mp3 differ
diff --git a/public/audio/beach/천막긁는.mp3 b/public/audio/beach/천막긁는.mp3
new file mode 100644
index 0000000..fb81785
Binary files /dev/null and b/public/audio/beach/천막긁는.mp3 differ
diff --git a/public/audio/beach/풍덩.mp3 b/public/audio/beach/풍덩.mp3
new file mode 100644
index 0000000..64dee6a
Binary files /dev/null and b/public/audio/beach/풍덩.mp3 differ
diff --git a/public/audio/bridgeA/ogg/고향돌리도.ogg b/public/audio/bridgeA/ogg/고향돌리도.ogg
new file mode 100644
index 0000000..87710aa
Binary files /dev/null and b/public/audio/bridgeA/ogg/고향돌리도.ogg differ
diff --git a/public/audio/bridgeA/ogg/동물소리흉내.ogg b/public/audio/bridgeA/ogg/동물소리흉내.ogg
new file mode 100644
index 0000000..b03b0d7
Binary files /dev/null and b/public/audio/bridgeA/ogg/동물소리흉내.ogg differ
diff --git a/public/audio/bridgeA/ogg/동물소리흉내02.ogg b/public/audio/bridgeA/ogg/동물소리흉내02.ogg
new file mode 100644
index 0000000..5e7b02a
Binary files /dev/null and b/public/audio/bridgeA/ogg/동물소리흉내02.ogg differ
diff --git a/public/audio/bridgeA/ogg/동물소리흉내03.ogg b/public/audio/bridgeA/ogg/동물소리흉내03.ogg
new file mode 100644
index 0000000..41a595e
Binary files /dev/null and b/public/audio/bridgeA/ogg/동물소리흉내03.ogg differ
diff --git a/public/audio/bridgeA/ogg/모래야돌아와.ogg b/public/audio/bridgeA/ogg/모래야돌아와.ogg
new file mode 100644
index 0000000..65e46c7
Binary files /dev/null and b/public/audio/bridgeA/ogg/모래야돌아와.ogg differ
diff --git a/public/audio/bridgeA/ogg/물소리가있었다.ogg b/public/audio/bridgeA/ogg/물소리가있었다.ogg
new file mode 100644
index 0000000..b67527d
Binary files /dev/null and b/public/audio/bridgeA/ogg/물소리가있었다.ogg differ
diff --git a/public/audio/bridgeA/ogg/우와.ogg b/public/audio/bridgeA/ogg/우와.ogg
new file mode 100644
index 0000000..e0f6db1
Binary files /dev/null and b/public/audio/bridgeA/ogg/우와.ogg differ
diff --git a/public/audio/bridgeA/ogg/이거물에넣고해도되요.ogg b/public/audio/bridgeA/ogg/이거물에넣고해도되요.ogg
new file mode 100644
index 0000000..6c66391
Binary files /dev/null and b/public/audio/bridgeA/ogg/이거물에넣고해도되요.ogg differ
diff --git a/public/audio/bridgeA/ogg/흰수마자돌아와.ogg b/public/audio/bridgeA/ogg/흰수마자돌아와.ogg
new file mode 100644
index 0000000..2abcfb2
Binary files /dev/null and b/public/audio/bridgeA/ogg/흰수마자돌아와.ogg differ
diff --git a/public/audio/bridgeA/ogg/흰수마자어디갔니.ogg b/public/audio/bridgeA/ogg/흰수마자어디갔니.ogg
new file mode 100644
index 0000000..29c8e77
Binary files /dev/null and b/public/audio/bridgeA/ogg/흰수마자어디갔니.ogg differ
diff --git a/public/audio/bridgeA/고향돌리도.mp3 b/public/audio/bridgeA/고향돌리도.mp3
new file mode 100644
index 0000000..41ea07a
Binary files /dev/null and b/public/audio/bridgeA/고향돌리도.mp3 differ
diff --git a/public/audio/bridgeA/동물소리흉내.mp3 b/public/audio/bridgeA/동물소리흉내.mp3
new file mode 100644
index 0000000..1e9ca78
Binary files /dev/null and b/public/audio/bridgeA/동물소리흉내.mp3 differ
diff --git a/public/audio/bridgeA/동물소리흉내02.mp3 b/public/audio/bridgeA/동물소리흉내02.mp3
new file mode 100644
index 0000000..476cc16
Binary files /dev/null and b/public/audio/bridgeA/동물소리흉내02.mp3 differ
diff --git a/public/audio/bridgeA/동물소리흉내03.mp3 b/public/audio/bridgeA/동물소리흉내03.mp3
new file mode 100644
index 0000000..828ddec
Binary files /dev/null and b/public/audio/bridgeA/동물소리흉내03.mp3 differ
diff --git a/public/audio/bridgeA/모래야돌아와.mp3 b/public/audio/bridgeA/모래야돌아와.mp3
new file mode 100644
index 0000000..6a718b1
Binary files /dev/null and b/public/audio/bridgeA/모래야돌아와.mp3 differ
diff --git a/public/audio/bridgeA/물소리가있었다.mp3 b/public/audio/bridgeA/물소리가있었다.mp3
new file mode 100644
index 0000000..4428a9b
Binary files /dev/null and b/public/audio/bridgeA/물소리가있었다.mp3 differ
diff --git a/public/audio/bridgeA/우와.mp3 b/public/audio/bridgeA/우와.mp3
new file mode 100644
index 0000000..dd959ee
Binary files /dev/null and b/public/audio/bridgeA/우와.mp3 differ
diff --git a/public/audio/bridgeA/이거물에넣고해도되요.mp3 b/public/audio/bridgeA/이거물에넣고해도되요.mp3
new file mode 100644
index 0000000..eb68015
Binary files /dev/null and b/public/audio/bridgeA/이거물에넣고해도되요.mp3 differ
diff --git a/public/audio/bridgeA/흰수마자돌아와.mp3 b/public/audio/bridgeA/흰수마자돌아와.mp3
new file mode 100644
index 0000000..ec71cbe
Binary files /dev/null and b/public/audio/bridgeA/흰수마자돌아와.mp3 differ
diff --git a/public/audio/bridgeA/흰수마자어디갔니.mp3 b/public/audio/bridgeA/흰수마자어디갔니.mp3
new file mode 100644
index 0000000..4daa438
Binary files /dev/null and b/public/audio/bridgeA/흰수마자어디갔니.mp3 differ
diff --git a/public/audio/clap@2/01.mp3 b/public/audio/clap@2/01.mp3
new file mode 100644
index 0000000..8019a14
Binary files /dev/null and b/public/audio/clap@2/01.mp3 differ
diff --git a/public/audio/clap@2/02.mp3 b/public/audio/clap@2/02.mp3
new file mode 100644
index 0000000..745dca0
Binary files /dev/null and b/public/audio/clap@2/02.mp3 differ
diff --git a/public/audio/path/ogg/가을아침.ogg b/public/audio/path/ogg/가을아침.ogg
new file mode 100644
index 0000000..83e2b3d
Binary files /dev/null and b/public/audio/path/ogg/가을아침.ogg differ
diff --git a/public/audio/path/ogg/내나이.ogg b/public/audio/path/ogg/내나이.ogg
new file mode 100644
index 0000000..b625486
Binary files /dev/null and b/public/audio/path/ogg/내나이.ogg differ
diff --git a/public/audio/path/ogg/노래.ogg b/public/audio/path/ogg/노래.ogg
new file mode 100644
index 0000000..32fd0d8
Binary files /dev/null and b/public/audio/path/ogg/노래.ogg differ
diff --git a/public/audio/path/ogg/사랑을했따.ogg b/public/audio/path/ogg/사랑을했따.ogg
new file mode 100644
index 0000000..61331e3
Binary files /dev/null and b/public/audio/path/ogg/사랑을했따.ogg differ
diff --git a/public/audio/path/ogg/아아아아.ogg b/public/audio/path/ogg/아아아아.ogg
new file mode 100644
index 0000000..f904ff7
Binary files /dev/null and b/public/audio/path/ogg/아아아아.ogg differ
diff --git a/public/audio/path/ogg/하모니카.ogg b/public/audio/path/ogg/하모니카.ogg
new file mode 100644
index 0000000..24f3b30
Binary files /dev/null and b/public/audio/path/ogg/하모니카.ogg differ
diff --git a/public/audio/path/ogg/합주.ogg b/public/audio/path/ogg/합주.ogg
new file mode 100644
index 0000000..0eb918b
Binary files /dev/null and b/public/audio/path/ogg/합주.ogg differ
diff --git a/public/audio/path/ogg/휘파람.ogg b/public/audio/path/ogg/휘파람.ogg
new file mode 100644
index 0000000..8f3470d
Binary files /dev/null and b/public/audio/path/ogg/휘파람.ogg differ
diff --git a/public/audio/path/가을아침.mp3 b/public/audio/path/가을아침.mp3
new file mode 100644
index 0000000..630120a
Binary files /dev/null and b/public/audio/path/가을아침.mp3 differ
diff --git a/public/audio/path/내나이.mp3 b/public/audio/path/내나이.mp3
new file mode 100644
index 0000000..ae24996
Binary files /dev/null and b/public/audio/path/내나이.mp3 differ
diff --git a/public/audio/path/노래.mp3 b/public/audio/path/노래.mp3
new file mode 100644
index 0000000..4372d17
Binary files /dev/null and b/public/audio/path/노래.mp3 differ
diff --git a/public/audio/path/사랑을했따.mp3 b/public/audio/path/사랑을했따.mp3
new file mode 100644
index 0000000..95eeb97
Binary files /dev/null and b/public/audio/path/사랑을했따.mp3 differ
diff --git a/public/audio/path/아아아아.mp3 b/public/audio/path/아아아아.mp3
new file mode 100644
index 0000000..bf945f6
Binary files /dev/null and b/public/audio/path/아아아아.mp3 differ
diff --git a/public/audio/path/하모니카.mp3 b/public/audio/path/하모니카.mp3
new file mode 100644
index 0000000..4e7b15d
Binary files /dev/null and b/public/audio/path/하모니카.mp3 differ
diff --git a/public/audio/path/합주.mp3 b/public/audio/path/합주.mp3
new file mode 100644
index 0000000..7c7909a
Binary files /dev/null and b/public/audio/path/합주.mp3 differ
diff --git a/public/audio/path/휘파람.mp3 b/public/audio/path/휘파람.mp3
new file mode 100644
index 0000000..664156a
Binary files /dev/null and b/public/audio/path/휘파람.mp3 differ
diff --git a/public/conductor/.tern-port b/public/conductor/.tern-port
new file mode 100644
index 0000000..59b3b77
--- /dev/null
+++ b/public/conductor/.tern-port
@@ -0,0 +1 @@
+42761
\ No newline at end of file
diff --git a/public/conductor/audio-first-trip/beach/ogg/두드리는01.ogg b/public/conductor/audio-first-trip/beach/ogg/두드리는01.ogg
new file mode 100644
index 0000000..760cf5a
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/두드리는01.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/두드리는02.ogg b/public/conductor/audio-first-trip/beach/ogg/두드리는02.ogg
new file mode 100644
index 0000000..c5ff4e9
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/두드리는02.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/두드리는03.ogg b/public/conductor/audio-first-trip/beach/ogg/두드리는03.ogg
new file mode 100644
index 0000000..c438c5e
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/두드리는03.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/두드리는04.ogg b/public/conductor/audio-first-trip/beach/ogg/두드리는04.ogg
new file mode 100644
index 0000000..36ea61c
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/두드리는04.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/두드리는06.ogg b/public/conductor/audio-first-trip/beach/ogg/두드리는06.ogg
new file mode 100644
index 0000000..6e6f9f3
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/두드리는06.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/모래걸음.ogg b/public/conductor/audio-first-trip/beach/ogg/모래걸음.ogg
new file mode 100644
index 0000000..4ef93ad
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/모래걸음.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/물소리.ogg b/public/conductor/audio-first-trip/beach/ogg/물소리.ogg
new file mode 100644
index 0000000..6c52961
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/물소리.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/물장구.ogg b/public/conductor/audio-first-trip/beach/ogg/물장구.ogg
new file mode 100644
index 0000000..a80267d
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/물장구.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/손장구.ogg b/public/conductor/audio-first-trip/beach/ogg/손장구.ogg
new file mode 100644
index 0000000..291a5c2
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/손장구.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/운더강강술래.ogg b/public/conductor/audio-first-trip/beach/ogg/운더강강술래.ogg
new file mode 100644
index 0000000..46f3e15
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/운더강강술래.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/웃음.ogg b/public/conductor/audio-first-trip/beach/ogg/웃음.ogg
new file mode 100644
index 0000000..2d7105b
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/웃음.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/젖은모래쓸어내기.ogg b/public/conductor/audio-first-trip/beach/ogg/젖은모래쓸어내기.ogg
new file mode 100644
index 0000000..a9475ce
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/젖은모래쓸어내기.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/천막긁는.ogg b/public/conductor/audio-first-trip/beach/ogg/천막긁는.ogg
new file mode 100644
index 0000000..629951a
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/천막긁는.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/ogg/풍덩.ogg b/public/conductor/audio-first-trip/beach/ogg/풍덩.ogg
new file mode 100644
index 0000000..110644d
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/ogg/풍덩.ogg differ
diff --git a/public/conductor/audio-first-trip/beach/두드리는01.mp3 b/public/conductor/audio-first-trip/beach/두드리는01.mp3
new file mode 100644
index 0000000..911756a
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/두드리는01.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/두드리는02.mp3 b/public/conductor/audio-first-trip/beach/두드리는02.mp3
new file mode 100644
index 0000000..ef03ee2
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/두드리는02.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/두드리는03.mp3 b/public/conductor/audio-first-trip/beach/두드리는03.mp3
new file mode 100644
index 0000000..e75fdb7
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/두드리는03.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/두드리는04.mp3 b/public/conductor/audio-first-trip/beach/두드리는04.mp3
new file mode 100644
index 0000000..a0f0421
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/두드리는04.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/두드리는06.mp3 b/public/conductor/audio-first-trip/beach/두드리는06.mp3
new file mode 100644
index 0000000..c62cc3e
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/두드리는06.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/모래걸음.mp3 b/public/conductor/audio-first-trip/beach/모래걸음.mp3
new file mode 100644
index 0000000..8c6d6a9
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/모래걸음.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/물소리.mp3 b/public/conductor/audio-first-trip/beach/물소리.mp3
new file mode 100644
index 0000000..2de2101
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/물소리.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/물장구.mp3 b/public/conductor/audio-first-trip/beach/물장구.mp3
new file mode 100644
index 0000000..22bf358
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/물장구.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/손장구.mp3 b/public/conductor/audio-first-trip/beach/손장구.mp3
new file mode 100644
index 0000000..b8022f8
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/손장구.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/운더강강술래.mp3 b/public/conductor/audio-first-trip/beach/운더강강술래.mp3
new file mode 100644
index 0000000..9cee4a5
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/운더강강술래.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/웃음.mp3 b/public/conductor/audio-first-trip/beach/웃음.mp3
new file mode 100644
index 0000000..497839f
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/웃음.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/젖은모래쓸어내기.mp3 b/public/conductor/audio-first-trip/beach/젖은모래쓸어내기.mp3
new file mode 100644
index 0000000..859a285
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/젖은모래쓸어내기.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/천막긁는.mp3 b/public/conductor/audio-first-trip/beach/천막긁는.mp3
new file mode 100644
index 0000000..fb81785
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/천막긁는.mp3 differ
diff --git a/public/conductor/audio-first-trip/beach/풍덩.mp3 b/public/conductor/audio-first-trip/beach/풍덩.mp3
new file mode 100644
index 0000000..64dee6a
Binary files /dev/null and b/public/conductor/audio-first-trip/beach/풍덩.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/고향돌리도.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/고향돌리도.ogg
new file mode 100644
index 0000000..87710aa
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/고향돌리도.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내.ogg
new file mode 100644
index 0000000..b03b0d7
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내02.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내02.ogg
new file mode 100644
index 0000000..5e7b02a
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내02.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내03.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내03.ogg
new file mode 100644
index 0000000..41a595e
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/동물소리흉내03.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/모래야돌아와.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/모래야돌아와.ogg
new file mode 100644
index 0000000..65e46c7
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/모래야돌아와.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/물소리가있었다.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/물소리가있었다.ogg
new file mode 100644
index 0000000..b67527d
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/물소리가있었다.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/우와.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/우와.ogg
new file mode 100644
index 0000000..e0f6db1
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/우와.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/이거물에넣고해도되요.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/이거물에넣고해도되요.ogg
new file mode 100644
index 0000000..6c66391
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/이거물에넣고해도되요.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/흰수마자돌아와.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/흰수마자돌아와.ogg
new file mode 100644
index 0000000..2abcfb2
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/흰수마자돌아와.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/ogg/흰수마자어디갔니.ogg b/public/conductor/audio-first-trip/bridgeA/ogg/흰수마자어디갔니.ogg
new file mode 100644
index 0000000..29c8e77
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/ogg/흰수마자어디갔니.ogg differ
diff --git a/public/conductor/audio-first-trip/bridgeA/고향돌리도.mp3 b/public/conductor/audio-first-trip/bridgeA/고향돌리도.mp3
new file mode 100644
index 0000000..41ea07a
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/고향돌리도.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/동물소리흉내.mp3 b/public/conductor/audio-first-trip/bridgeA/동물소리흉내.mp3
new file mode 100644
index 0000000..1e9ca78
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/동물소리흉내.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/동물소리흉내02.mp3 b/public/conductor/audio-first-trip/bridgeA/동물소리흉내02.mp3
new file mode 100644
index 0000000..476cc16
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/동물소리흉내02.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/동물소리흉내03.mp3 b/public/conductor/audio-first-trip/bridgeA/동물소리흉내03.mp3
new file mode 100644
index 0000000..828ddec
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/동물소리흉내03.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/모래야돌아와.mp3 b/public/conductor/audio-first-trip/bridgeA/모래야돌아와.mp3
new file mode 100644
index 0000000..6a718b1
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/모래야돌아와.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/물소리가있었다.mp3 b/public/conductor/audio-first-trip/bridgeA/물소리가있었다.mp3
new file mode 100644
index 0000000..4428a9b
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/물소리가있었다.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/우와.mp3 b/public/conductor/audio-first-trip/bridgeA/우와.mp3
new file mode 100644
index 0000000..dd959ee
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/우와.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/이거물에넣고해도되요.mp3 b/public/conductor/audio-first-trip/bridgeA/이거물에넣고해도되요.mp3
new file mode 100644
index 0000000..eb68015
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/이거물에넣고해도되요.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/흰수마자돌아와.mp3 b/public/conductor/audio-first-trip/bridgeA/흰수마자돌아와.mp3
new file mode 100644
index 0000000..ec71cbe
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/흰수마자돌아와.mp3 differ
diff --git a/public/conductor/audio-first-trip/bridgeA/흰수마자어디갔니.mp3 b/public/conductor/audio-first-trip/bridgeA/흰수마자어디갔니.mp3
new file mode 100644
index 0000000..4daa438
Binary files /dev/null and b/public/conductor/audio-first-trip/bridgeA/흰수마자어디갔니.mp3 differ
diff --git a/public/conductor/audio-first-trip/clap@2/01.mp3 b/public/conductor/audio-first-trip/clap@2/01.mp3
new file mode 100644
index 0000000..8019a14
Binary files /dev/null and b/public/conductor/audio-first-trip/clap@2/01.mp3 differ
diff --git a/public/conductor/audio-first-trip/clap@2/02.mp3 b/public/conductor/audio-first-trip/clap@2/02.mp3
new file mode 100644
index 0000000..745dca0
Binary files /dev/null and b/public/conductor/audio-first-trip/clap@2/02.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/ogg/가을아침.ogg b/public/conductor/audio-first-trip/path/ogg/가을아침.ogg
new file mode 100644
index 0000000..83e2b3d
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/가을아침.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/내나이.ogg b/public/conductor/audio-first-trip/path/ogg/내나이.ogg
new file mode 100644
index 0000000..b625486
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/내나이.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/노래.ogg b/public/conductor/audio-first-trip/path/ogg/노래.ogg
new file mode 100644
index 0000000..32fd0d8
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/노래.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/사랑을했따.ogg b/public/conductor/audio-first-trip/path/ogg/사랑을했따.ogg
new file mode 100644
index 0000000..61331e3
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/사랑을했따.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/아아아아.ogg b/public/conductor/audio-first-trip/path/ogg/아아아아.ogg
new file mode 100644
index 0000000..f904ff7
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/아아아아.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/하모니카.ogg b/public/conductor/audio-first-trip/path/ogg/하모니카.ogg
new file mode 100644
index 0000000..24f3b30
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/하모니카.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/합주.ogg b/public/conductor/audio-first-trip/path/ogg/합주.ogg
new file mode 100644
index 0000000..0eb918b
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/합주.ogg differ
diff --git a/public/conductor/audio-first-trip/path/ogg/휘파람.ogg b/public/conductor/audio-first-trip/path/ogg/휘파람.ogg
new file mode 100644
index 0000000..8f3470d
Binary files /dev/null and b/public/conductor/audio-first-trip/path/ogg/휘파람.ogg differ
diff --git a/public/conductor/audio-first-trip/path/가을아침.mp3 b/public/conductor/audio-first-trip/path/가을아침.mp3
new file mode 100644
index 0000000..630120a
Binary files /dev/null and b/public/conductor/audio-first-trip/path/가을아침.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/내나이.mp3 b/public/conductor/audio-first-trip/path/내나이.mp3
new file mode 100644
index 0000000..ae24996
Binary files /dev/null and b/public/conductor/audio-first-trip/path/내나이.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/노래.mp3 b/public/conductor/audio-first-trip/path/노래.mp3
new file mode 100644
index 0000000..4372d17
Binary files /dev/null and b/public/conductor/audio-first-trip/path/노래.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/사랑을했따.mp3 b/public/conductor/audio-first-trip/path/사랑을했따.mp3
new file mode 100644
index 0000000..95eeb97
Binary files /dev/null and b/public/conductor/audio-first-trip/path/사랑을했따.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/아아아아.mp3 b/public/conductor/audio-first-trip/path/아아아아.mp3
new file mode 100644
index 0000000..bf945f6
Binary files /dev/null and b/public/conductor/audio-first-trip/path/아아아아.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/하모니카.mp3 b/public/conductor/audio-first-trip/path/하모니카.mp3
new file mode 100644
index 0000000..4e7b15d
Binary files /dev/null and b/public/conductor/audio-first-trip/path/하모니카.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/합주.mp3 b/public/conductor/audio-first-trip/path/합주.mp3
new file mode 100644
index 0000000..7c7909a
Binary files /dev/null and b/public/conductor/audio-first-trip/path/합주.mp3 differ
diff --git a/public/conductor/audio-first-trip/path/휘파람.mp3 b/public/conductor/audio-first-trip/path/휘파람.mp3
new file mode 100644
index 0000000..664156a
Binary files /dev/null and b/public/conductor/audio-first-trip/path/휘파람.mp3 differ
diff --git a/public/conductor/audio/beach/ogg/두드리는01.ogg b/public/conductor/audio/beach/ogg/두드리는01.ogg
new file mode 100644
index 0000000..760cf5a
Binary files /dev/null and b/public/conductor/audio/beach/ogg/두드리는01.ogg differ
diff --git a/public/conductor/audio/beach/ogg/두드리는02.ogg b/public/conductor/audio/beach/ogg/두드리는02.ogg
new file mode 100644
index 0000000..c5ff4e9
Binary files /dev/null and b/public/conductor/audio/beach/ogg/두드리는02.ogg differ
diff --git a/public/conductor/audio/beach/ogg/두드리는03.ogg b/public/conductor/audio/beach/ogg/두드리는03.ogg
new file mode 100644
index 0000000..c438c5e
Binary files /dev/null and b/public/conductor/audio/beach/ogg/두드리는03.ogg differ
diff --git a/public/conductor/audio/beach/ogg/두드리는04.ogg b/public/conductor/audio/beach/ogg/두드리는04.ogg
new file mode 100644
index 0000000..36ea61c
Binary files /dev/null and b/public/conductor/audio/beach/ogg/두드리는04.ogg differ
diff --git a/public/conductor/audio/beach/ogg/두드리는06.ogg b/public/conductor/audio/beach/ogg/두드리는06.ogg
new file mode 100644
index 0000000..6e6f9f3
Binary files /dev/null and b/public/conductor/audio/beach/ogg/두드리는06.ogg differ
diff --git a/public/conductor/audio/beach/ogg/모래걸음.ogg b/public/conductor/audio/beach/ogg/모래걸음.ogg
new file mode 100644
index 0000000..4ef93ad
Binary files /dev/null and b/public/conductor/audio/beach/ogg/모래걸음.ogg differ
diff --git a/public/conductor/audio/beach/ogg/물소리.ogg b/public/conductor/audio/beach/ogg/물소리.ogg
new file mode 100644
index 0000000..6c52961
Binary files /dev/null and b/public/conductor/audio/beach/ogg/물소리.ogg differ
diff --git a/public/conductor/audio/beach/ogg/물장구.ogg b/public/conductor/audio/beach/ogg/물장구.ogg
new file mode 100644
index 0000000..a80267d
Binary files /dev/null and b/public/conductor/audio/beach/ogg/물장구.ogg differ
diff --git a/public/conductor/audio/beach/ogg/손장구.ogg b/public/conductor/audio/beach/ogg/손장구.ogg
new file mode 100644
index 0000000..291a5c2
Binary files /dev/null and b/public/conductor/audio/beach/ogg/손장구.ogg differ
diff --git a/public/conductor/audio/beach/ogg/운더강강술래.ogg b/public/conductor/audio/beach/ogg/운더강강술래.ogg
new file mode 100644
index 0000000..46f3e15
Binary files /dev/null and b/public/conductor/audio/beach/ogg/운더강강술래.ogg differ
diff --git a/public/conductor/audio/beach/ogg/웃음.ogg b/public/conductor/audio/beach/ogg/웃음.ogg
new file mode 100644
index 0000000..2d7105b
Binary files /dev/null and b/public/conductor/audio/beach/ogg/웃음.ogg differ
diff --git a/public/conductor/audio/beach/ogg/젖은모래쓸어내기.ogg b/public/conductor/audio/beach/ogg/젖은모래쓸어내기.ogg
new file mode 100644
index 0000000..a9475ce
Binary files /dev/null and b/public/conductor/audio/beach/ogg/젖은모래쓸어내기.ogg differ
diff --git a/public/conductor/audio/beach/ogg/천막긁는.ogg b/public/conductor/audio/beach/ogg/천막긁는.ogg
new file mode 100644
index 0000000..629951a
Binary files /dev/null and b/public/conductor/audio/beach/ogg/천막긁는.ogg differ
diff --git a/public/conductor/audio/beach/ogg/풍덩.ogg b/public/conductor/audio/beach/ogg/풍덩.ogg
new file mode 100644
index 0000000..110644d
Binary files /dev/null and b/public/conductor/audio/beach/ogg/풍덩.ogg differ
diff --git a/public/conductor/audio/beach/두드리는01.mp3 b/public/conductor/audio/beach/두드리는01.mp3
new file mode 100644
index 0000000..911756a
Binary files /dev/null and b/public/conductor/audio/beach/두드리는01.mp3 differ
diff --git a/public/conductor/audio/beach/두드리는02.mp3 b/public/conductor/audio/beach/두드리는02.mp3
new file mode 100644
index 0000000..ef03ee2
Binary files /dev/null and b/public/conductor/audio/beach/두드리는02.mp3 differ
diff --git a/public/conductor/audio/beach/두드리는03.mp3 b/public/conductor/audio/beach/두드리는03.mp3
new file mode 100644
index 0000000..e75fdb7
Binary files /dev/null and b/public/conductor/audio/beach/두드리는03.mp3 differ
diff --git a/public/conductor/audio/beach/두드리는04.mp3 b/public/conductor/audio/beach/두드리는04.mp3
new file mode 100644
index 0000000..a0f0421
Binary files /dev/null and b/public/conductor/audio/beach/두드리는04.mp3 differ
diff --git a/public/conductor/audio/beach/두드리는06.mp3 b/public/conductor/audio/beach/두드리는06.mp3
new file mode 100644
index 0000000..c62cc3e
Binary files /dev/null and b/public/conductor/audio/beach/두드리는06.mp3 differ
diff --git a/public/conductor/audio/beach/모래걸음.mp3 b/public/conductor/audio/beach/모래걸음.mp3
new file mode 100644
index 0000000..8c6d6a9
Binary files /dev/null and b/public/conductor/audio/beach/모래걸음.mp3 differ
diff --git a/public/conductor/audio/beach/물소리.mp3 b/public/conductor/audio/beach/물소리.mp3
new file mode 100644
index 0000000..2de2101
Binary files /dev/null and b/public/conductor/audio/beach/물소리.mp3 differ
diff --git a/public/conductor/audio/beach/물장구.mp3 b/public/conductor/audio/beach/물장구.mp3
new file mode 100644
index 0000000..22bf358
Binary files /dev/null and b/public/conductor/audio/beach/물장구.mp3 differ
diff --git a/public/conductor/audio/beach/손장구.mp3 b/public/conductor/audio/beach/손장구.mp3
new file mode 100644
index 0000000..b8022f8
Binary files /dev/null and b/public/conductor/audio/beach/손장구.mp3 differ
diff --git a/public/conductor/audio/beach/운더강강술래.mp3 b/public/conductor/audio/beach/운더강강술래.mp3
new file mode 100644
index 0000000..9cee4a5
Binary files /dev/null and b/public/conductor/audio/beach/운더강강술래.mp3 differ
diff --git a/public/conductor/audio/beach/웃음.mp3 b/public/conductor/audio/beach/웃음.mp3
new file mode 100644
index 0000000..497839f
Binary files /dev/null and b/public/conductor/audio/beach/웃음.mp3 differ
diff --git a/public/conductor/audio/beach/젖은모래쓸어내기.mp3 b/public/conductor/audio/beach/젖은모래쓸어내기.mp3
new file mode 100644
index 0000000..859a285
Binary files /dev/null and b/public/conductor/audio/beach/젖은모래쓸어내기.mp3 differ
diff --git a/public/conductor/audio/beach/천막긁는.mp3 b/public/conductor/audio/beach/천막긁는.mp3
new file mode 100644
index 0000000..fb81785
Binary files /dev/null and b/public/conductor/audio/beach/천막긁는.mp3 differ
diff --git a/public/conductor/audio/beach/풍덩.mp3 b/public/conductor/audio/beach/풍덩.mp3
new file mode 100644
index 0000000..64dee6a
Binary files /dev/null and b/public/conductor/audio/beach/풍덩.mp3 differ
diff --git a/public/conductor/audio/bridgeA/ogg/고향돌리도.ogg b/public/conductor/audio/bridgeA/ogg/고향돌리도.ogg
new file mode 100644
index 0000000..87710aa
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/고향돌리도.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/동물소리흉내.ogg b/public/conductor/audio/bridgeA/ogg/동물소리흉내.ogg
new file mode 100644
index 0000000..b03b0d7
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/동물소리흉내.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/동물소리흉내02.ogg b/public/conductor/audio/bridgeA/ogg/동물소리흉내02.ogg
new file mode 100644
index 0000000..5e7b02a
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/동물소리흉내02.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/동물소리흉내03.ogg b/public/conductor/audio/bridgeA/ogg/동물소리흉내03.ogg
new file mode 100644
index 0000000..41a595e
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/동물소리흉내03.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/모래야돌아와.ogg b/public/conductor/audio/bridgeA/ogg/모래야돌아와.ogg
new file mode 100644
index 0000000..65e46c7
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/모래야돌아와.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/물소리가있었다.ogg b/public/conductor/audio/bridgeA/ogg/물소리가있었다.ogg
new file mode 100644
index 0000000..b67527d
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/물소리가있었다.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/우와.ogg b/public/conductor/audio/bridgeA/ogg/우와.ogg
new file mode 100644
index 0000000..e0f6db1
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/우와.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/이거물에넣고해도되요.ogg b/public/conductor/audio/bridgeA/ogg/이거물에넣고해도되요.ogg
new file mode 100644
index 0000000..6c66391
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/이거물에넣고해도되요.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/흰수마자돌아와.ogg b/public/conductor/audio/bridgeA/ogg/흰수마자돌아와.ogg
new file mode 100644
index 0000000..2abcfb2
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/흰수마자돌아와.ogg differ
diff --git a/public/conductor/audio/bridgeA/ogg/흰수마자어디갔니.ogg b/public/conductor/audio/bridgeA/ogg/흰수마자어디갔니.ogg
new file mode 100644
index 0000000..29c8e77
Binary files /dev/null and b/public/conductor/audio/bridgeA/ogg/흰수마자어디갔니.ogg differ
diff --git a/public/conductor/audio/bridgeA/고향돌리도.mp3 b/public/conductor/audio/bridgeA/고향돌리도.mp3
new file mode 100644
index 0000000..41ea07a
Binary files /dev/null and b/public/conductor/audio/bridgeA/고향돌리도.mp3 differ
diff --git a/public/conductor/audio/bridgeA/동물소리흉내.mp3 b/public/conductor/audio/bridgeA/동물소리흉내.mp3
new file mode 100644
index 0000000..1e9ca78
Binary files /dev/null and b/public/conductor/audio/bridgeA/동물소리흉내.mp3 differ
diff --git a/public/conductor/audio/bridgeA/동물소리흉내02.mp3 b/public/conductor/audio/bridgeA/동물소리흉내02.mp3
new file mode 100644
index 0000000..476cc16
Binary files /dev/null and b/public/conductor/audio/bridgeA/동물소리흉내02.mp3 differ
diff --git a/public/conductor/audio/bridgeA/동물소리흉내03.mp3 b/public/conductor/audio/bridgeA/동물소리흉내03.mp3
new file mode 100644
index 0000000..828ddec
Binary files /dev/null and b/public/conductor/audio/bridgeA/동물소리흉내03.mp3 differ
diff --git a/public/conductor/audio/bridgeA/모래야돌아와.mp3 b/public/conductor/audio/bridgeA/모래야돌아와.mp3
new file mode 100644
index 0000000..6a718b1
Binary files /dev/null and b/public/conductor/audio/bridgeA/모래야돌아와.mp3 differ
diff --git a/public/conductor/audio/bridgeA/물소리가있었다.mp3 b/public/conductor/audio/bridgeA/물소리가있었다.mp3
new file mode 100644
index 0000000..4428a9b
Binary files /dev/null and b/public/conductor/audio/bridgeA/물소리가있었다.mp3 differ
diff --git a/public/conductor/audio/bridgeA/우와.mp3 b/public/conductor/audio/bridgeA/우와.mp3
new file mode 100644
index 0000000..dd959ee
Binary files /dev/null and b/public/conductor/audio/bridgeA/우와.mp3 differ
diff --git a/public/conductor/audio/bridgeA/이거물에넣고해도되요.mp3 b/public/conductor/audio/bridgeA/이거물에넣고해도되요.mp3
new file mode 100644
index 0000000..eb68015
Binary files /dev/null and b/public/conductor/audio/bridgeA/이거물에넣고해도되요.mp3 differ
diff --git a/public/conductor/audio/bridgeA/흰수마자돌아와.mp3 b/public/conductor/audio/bridgeA/흰수마자돌아와.mp3
new file mode 100644
index 0000000..ec71cbe
Binary files /dev/null and b/public/conductor/audio/bridgeA/흰수마자돌아와.mp3 differ
diff --git a/public/conductor/audio/bridgeA/흰수마자어디갔니.mp3 b/public/conductor/audio/bridgeA/흰수마자어디갔니.mp3
new file mode 100644
index 0000000..4daa438
Binary files /dev/null and b/public/conductor/audio/bridgeA/흰수마자어디갔니.mp3 differ
diff --git a/public/conductor/audio/clap@2/01.mp3 b/public/conductor/audio/clap@2/01.mp3
new file mode 100644
index 0000000..8019a14
Binary files /dev/null and b/public/conductor/audio/clap@2/01.mp3 differ
diff --git a/public/conductor/audio/clap@2/02.mp3 b/public/conductor/audio/clap@2/02.mp3
new file mode 100644
index 0000000..745dca0
Binary files /dev/null and b/public/conductor/audio/clap@2/02.mp3 differ
diff --git a/public/conductor/audio/path/ogg/가을아침.ogg b/public/conductor/audio/path/ogg/가을아침.ogg
new file mode 100644
index 0000000..83e2b3d
Binary files /dev/null and b/public/conductor/audio/path/ogg/가을아침.ogg differ
diff --git a/public/conductor/audio/path/ogg/내나이.ogg b/public/conductor/audio/path/ogg/내나이.ogg
new file mode 100644
index 0000000..b625486
Binary files /dev/null and b/public/conductor/audio/path/ogg/내나이.ogg differ
diff --git a/public/conductor/audio/path/ogg/노래.ogg b/public/conductor/audio/path/ogg/노래.ogg
new file mode 100644
index 0000000..32fd0d8
Binary files /dev/null and b/public/conductor/audio/path/ogg/노래.ogg differ
diff --git a/public/conductor/audio/path/ogg/사랑을했따.ogg b/public/conductor/audio/path/ogg/사랑을했따.ogg
new file mode 100644
index 0000000..61331e3
Binary files /dev/null and b/public/conductor/audio/path/ogg/사랑을했따.ogg differ
diff --git a/public/conductor/audio/path/ogg/아아아아.ogg b/public/conductor/audio/path/ogg/아아아아.ogg
new file mode 100644
index 0000000..f904ff7
Binary files /dev/null and b/public/conductor/audio/path/ogg/아아아아.ogg differ
diff --git a/public/conductor/audio/path/ogg/하모니카.ogg b/public/conductor/audio/path/ogg/하모니카.ogg
new file mode 100644
index 0000000..24f3b30
Binary files /dev/null and b/public/conductor/audio/path/ogg/하모니카.ogg differ
diff --git a/public/conductor/audio/path/ogg/합주.ogg b/public/conductor/audio/path/ogg/합주.ogg
new file mode 100644
index 0000000..0eb918b
Binary files /dev/null and b/public/conductor/audio/path/ogg/합주.ogg differ
diff --git a/public/conductor/audio/path/ogg/휘파람.ogg b/public/conductor/audio/path/ogg/휘파람.ogg
new file mode 100644
index 0000000..8f3470d
Binary files /dev/null and b/public/conductor/audio/path/ogg/휘파람.ogg differ
diff --git a/public/conductor/audio/path/가을아침.mp3 b/public/conductor/audio/path/가을아침.mp3
new file mode 100644
index 0000000..630120a
Binary files /dev/null and b/public/conductor/audio/path/가을아침.mp3 differ
diff --git a/public/conductor/audio/path/내나이.mp3 b/public/conductor/audio/path/내나이.mp3
new file mode 100644
index 0000000..ae24996
Binary files /dev/null and b/public/conductor/audio/path/내나이.mp3 differ
diff --git a/public/conductor/audio/path/노래.mp3 b/public/conductor/audio/path/노래.mp3
new file mode 100644
index 0000000..4372d17
Binary files /dev/null and b/public/conductor/audio/path/노래.mp3 differ
diff --git a/public/conductor/audio/path/사랑을했따.mp3 b/public/conductor/audio/path/사랑을했따.mp3
new file mode 100644
index 0000000..95eeb97
Binary files /dev/null and b/public/conductor/audio/path/사랑을했따.mp3 differ
diff --git a/public/conductor/audio/path/아아아아.mp3 b/public/conductor/audio/path/아아아아.mp3
new file mode 100644
index 0000000..bf945f6
Binary files /dev/null and b/public/conductor/audio/path/아아아아.mp3 differ
diff --git a/public/conductor/audio/path/하모니카.mp3 b/public/conductor/audio/path/하모니카.mp3
new file mode 100644
index 0000000..4e7b15d
Binary files /dev/null and b/public/conductor/audio/path/하모니카.mp3 differ
diff --git a/public/conductor/audio/path/합주.mp3 b/public/conductor/audio/path/합주.mp3
new file mode 100644
index 0000000..7c7909a
Binary files /dev/null and b/public/conductor/audio/path/합주.mp3 differ
diff --git a/public/conductor/audio/path/휘파람.mp3 b/public/conductor/audio/path/휘파람.mp3
new file mode 100644
index 0000000..664156a
Binary files /dev/null and b/public/conductor/audio/path/휘파람.mp3 differ
diff --git a/public/conductor/favicon.ico b/public/conductor/favicon.ico
new file mode 100644
index 0000000..a90c2c6
Binary files /dev/null and b/public/conductor/favicon.ico differ
diff --git a/public/conductor/imgs/arrow-circle-left.svg b/public/conductor/imgs/arrow-circle-left.svg
new file mode 100644
index 0000000..c18286b
--- /dev/null
+++ b/public/conductor/imgs/arrow-circle-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/arrow-circle-right.svg b/public/conductor/imgs/arrow-circle-right.svg
new file mode 100644
index 0000000..36ad73e
--- /dev/null
+++ b/public/conductor/imgs/arrow-circle-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/check-circle.svg b/public/conductor/imgs/check-circle.svg
new file mode 100644
index 0000000..a4b130f
--- /dev/null
+++ b/public/conductor/imgs/check-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/hand-point-right-regular.svg b/public/conductor/imgs/hand-point-right-regular.svg
new file mode 100644
index 0000000..38b5004
--- /dev/null
+++ b/public/conductor/imgs/hand-point-right-regular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/icon_sound.svg b/public/conductor/imgs/icon_sound.svg
new file mode 100644
index 0000000..1acd398
--- /dev/null
+++ b/public/conductor/imgs/icon_sound.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/iconmonstr-minus-4.svg b/public/conductor/imgs/iconmonstr-minus-4.svg
new file mode 100644
index 0000000..83f9af4
--- /dev/null
+++ b/public/conductor/imgs/iconmonstr-minus-4.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/iconmonstr-plus-4.svg b/public/conductor/imgs/iconmonstr-plus-4.svg
new file mode 100644
index 0000000..9302b0e
--- /dev/null
+++ b/public/conductor/imgs/iconmonstr-plus-4.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/conductor/imgs/listen-icon.svg b/public/conductor/imgs/listen-icon.svg
new file mode 100644
index 0000000..181ca7b
--- /dev/null
+++ b/public/conductor/imgs/listen-icon.svg
@@ -0,0 +1,30 @@
+
+
+
diff --git a/public/conductor/imgs/litmus.png b/public/conductor/imgs/litmus.png
new file mode 100644
index 0000000..cd5c9ff
Binary files /dev/null and b/public/conductor/imgs/litmus.png differ
diff --git a/public/conductor/imgs/litmusphone.png b/public/conductor/imgs/litmusphone.png
new file mode 100644
index 0000000..4ced63b
Binary files /dev/null and b/public/conductor/imgs/litmusphone.png differ
diff --git a/public/conductor/imgs/phonehand.png b/public/conductor/imgs/phonehand.png
new file mode 100644
index 0000000..74164f4
Binary files /dev/null and b/public/conductor/imgs/phonehand.png differ
diff --git a/public/conductor/index.html b/public/conductor/index.html
new file mode 100644
index 0000000..d30138f
--- /dev/null
+++ b/public/conductor/index.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading..........!?
+
+
+
+
+
+
+
+ 소리나는 걸음
+ 조를 골라주세요
+ 연결 확인
+ 장소 #1
+ 장소 #2
+ 장소 #3
+ 장소 #4
+
+
+
diff --git a/public/conductor/index.js b/public/conductor/index.js
new file mode 100644
index 0000000..9b4956c
--- /dev/null
+++ b/public/conductor/index.js
@@ -0,0 +1,840 @@
+//paperscript (paperjs)
+
+//'index' page
+
+$(document).ready(function() {
+
+ //common metrics
+ var vs = view.size;
+ var vsw = vs.width;
+ var vsh = vs.height;
+ var vss = view.size / 10;
+ var vssw = vss.width;
+ var vssh = vss.height;
+
+ //pre-load resources
+ Promise.all([
+ //imgs
+ RasterImport_size1('./imgs/phonehand.png'),
+ SVGImport_size1('./imgs/arrow-circle-right.svg'),
+ SVGImport_size1('./imgs/arrow-circle-left.svg'),
+ SVGImport_size1('./imgs/hand-point-right-regular.svg'),
+ SVGImport_size1('./imgs/listen-icon.svg'),
+ SVGImport_size1('./imgs/iconmonstr-plus-4.svg'),
+ SVGImport_size1('./imgs/iconmonstr-minus-4.svg'),
+ //clap
+ AudioImport_p5("./audio/clap@2/" + ("0" + getRandomInt(1, 2)).slice(-2) + ".mp3"),
+ //btn_sounds ==> 9
+ AudioImport_p5("./audio/bridgeA/고향돌리도.mp3"),
+ AudioImport_p5("./audio/bridgeA/동물소리흉내.mp3"),
+ // AudioImport_p5("./audio/bridgeA/동물소리흉내02.mp3"),
+ AudioImport_p5("./audio/bridgeA/동물소리흉내03.mp3"),
+ AudioImport_p5("./audio/bridgeA/모래야돌아와.mp3"),
+ AudioImport_p5("./audio/bridgeA/물소리가있었다.mp3"),
+ AudioImport_p5("./audio/bridgeA/우와.mp3"),
+ AudioImport_p5("./audio/bridgeA/이거물에넣고해도되요.mp3"),
+ AudioImport_p5("./audio/bridgeA/흰수마자돌아와.mp3"),
+ AudioImport_p5("./audio/bridgeA/흰수마자어디갔니.mp3"),
+ //set_sounds ==> 8
+ AudioImport_p5("./audio/path/가을아침.mp3"),
+ AudioImport_p5("./audio/path/내나이.mp3"),
+ AudioImport_p5("./audio/path/노래.mp3"),
+ AudioImport_p5("./audio/path/사랑을했따.mp3"),
+ AudioImport_p5("./audio/path/아아아아.mp3"),
+ AudioImport_p5("./audio/path/하모니카.mp3"),
+ AudioImport_p5("./audio/path/합주.mp3"),
+ AudioImport_p5("./audio/path/휘파람.mp3"),
+ //beach_sounds ==> 8
+ AudioImport("./audio/beach/두드리는01.mp3"),
+ AudioImport("./audio/beach/두드리는02.mp3"),
+ // AudioImport("./audio/beach/두드리는03.mp3"),
+ // AudioImport("./audio/beach/두드리는04.mp3"),
+ AudioImport("./audio/beach/두드리는06.mp3"),
+ // AudioImport("./audio/beach/모래걸음.mp3"),
+ AudioImport("./audio/beach/물소리.mp3"),
+ AudioImport("./audio/beach/물장구.mp3"),
+ AudioImport("./audio/beach/손장구.mp3"),
+ AudioImport("./audio/beach/운더강강술래.mp3"),
+ // AudioImport("./audio/beach/웃음.mp3"),
+ AudioImport("./audio/beach/젖은모래쓸어내기.mp3"),
+ // AudioImport("./audio/beach/천막긁는.mp3"),
+ // AudioImport("./audio/beach/풍덩.mp3"),
+ //
+ ]).then(function(imports) {
+ //imgs
+ var phonehand = imports[0];
+ var anext = imports[1];
+ var aprev = imports[2];
+ var hand = imports[3];
+ var iconsound = imports[4];
+ var plus = imports[5];
+ var minus = imports[6];
+ //clap
+ var clap = imports[7];
+ //groups
+ var group_names = [
+ '너',
+ '곰곰',
+ '레나',
+ '은솔',
+ ];
+ var group_keys = [
+ 'grp1',
+ 'grp2',
+ 'grp3',
+ 'grp4',
+ ];
+ //buttons
+ var btn_names = [
+ '고향',
+ '동물1',
+ '동물2',
+ '모래',
+ '물소리',
+ '우와',
+ '이거',
+ '돌아와',
+ '어디'
+ ];
+ var btn_sounds = [
+ imports[8],
+ imports[9],
+ imports[10],
+ imports[11],
+ imports[12],
+ imports[13],
+ imports[14],
+ imports[15],
+ imports[16],
+ ];
+ //set list
+ var set_sounds = {
+ '가을아침': imports[17],
+ '내나이': imports[18],
+ '노래': imports[19],
+ '사랑': imports[20],
+ '아아': imports[21],
+ '하모니카': imports[22],
+ '합주': imports[23],
+ '휘파람': imports[24]
+ };
+ //beach list
+ var beach_sounds = {
+ '두드림1': imports[25],
+ '두드림2': imports[26],
+ '두드림6': imports[27],
+ '물소리': imports[28],
+ '물장구': imports[29],
+ '손장구': imports[30],
+ '강강': imports[31],
+ '모래': imports[32]
+ };
+ var beach_players = {
+ '두드림1': [],
+ '두드림2': [],
+ '두드림6': [],
+ '물소리': [],
+ '물장구': [],
+ '손장구': [],
+ '강강': [],
+ '모래': [],
+ };
+
+ //screen changer
+ var nscreen = 6;
+ var screens = [];
+ var screen_names = {};
+ screen_names['start'] = 1;
+ screen_names['select'] = 2;
+ screen_names['check'] = 3;
+ screen_names['bridgeA'] = 4;
+ screen_names['path'] = 5;
+ screen_names['beach'] = 6;
+ var curscreen;
+ for (var idx = 0; idx < nscreen; idx++) {
+ screens.push(new Layer());
+ }
+
+ function changeScreen(page) {
+ //pagination buttons
+ aprev._activate();
+ anext._activate();
+ //
+ if (page < 1) page = 1;
+ if (page > nscreen) page = nscreen;
+ curscreen = page;
+ for (var idx = 0; idx < nscreen; idx++) {
+ //
+ if (idx == page - 1) {
+ screens[idx].bringToFront();
+ top.bringToFront();
+ $('.objstring').eq(idx).css('z-index', 1);
+ //
+ screens[idx].activate();
+ } else {
+ screens[idx].sendToBack();
+ $('.objstring').eq(idx).css('z-index', -1);
+ }
+ }
+ //pagination buttons
+ if (curscreen == 1) {
+ aprev._deactivate();
+ }
+ if (curscreen == 2) {
+ anext._deactivate();
+ }
+ if (curscreen == 7) {
+ anext._deactivate();
+ }
+ }
+
+ function nextScreen() {
+ if (curscreen + 1 <= nscreen) {
+ curscreen++;
+ changeScreen(curscreen);
+ }
+ }
+
+ function prevScreen() {
+ if (curscreen - 1 > 0) {
+ curscreen--;
+ changeScreen(curscreen);
+ }
+ }
+
+ function changeScreenByName(pagename) {
+ changeScreen(screen_names[pagename]);
+ }
+
+ function getScreenNameNext() {
+ if (curscreen + 1 <= nscreen) {
+ return Object.keys(screen_names)[curscreen + 1 - 1];
+ } else {
+ return Object.keys(screen_names)[curscreen - 1];
+ }
+ }
+
+ function getScreenNamePrev() {
+ if (curscreen - 1 > 0) {
+ return Object.keys(screen_names)[curscreen - 1 - 1];
+ } else {
+ return Object.keys(screen_names)[curscreen - 1];
+ }
+ }
+
+ //top layer
+ var top = new Layer(); // new Layer() will be automatically activated at the moment.
+
+ //networking - socket.io
+ var socket = io('http://192.168.1.105:8080');
+ //var socket = io('https://choir.run');
+
+ //net. connection marker
+ var netstat = new Path.Circle({
+ center: view.bounds.topRight + [-vssw / 2, +vssw / 2],
+ radius: vssw / 4,
+ fillColor: 'hotpink',
+ strokeWidth: 2,
+ strokeColor: 'gray',
+ dashArray: [4, 4],
+ onFrame: function(event) {
+ this.rotate(1);
+ }
+ });
+ netstat.fillColor.alpha = 0;
+
+ //
+ socket.on('connect', function() {
+ console.log("i' m connected!");
+ top.activate();
+ netstat.fillColor.alpha = 1;
+ socket.on('disconnect', function() {
+ console.log("i' m disconnected!");
+ top.activate();
+ netstat.fillColor.alpha = 0;
+ });
+ });
+
+ //page change - prev. page
+ aprev.addTo(project);
+ aprev.scale(vsw / 4);
+ aprev.position = [0, 0]; //reset position, before relative positioning !!
+ aprev.translate([vssw, vssw * 2.5]);
+ aprev.fillColor = 'pink';
+ aprev._socket = socket;
+ aprev._isactive = false;
+ aprev._activate = function() {
+ this._isactive = true;
+ this.opacity = 1;
+ }
+ aprev._deactivate = function() {
+ this._isactive = false;
+ this.opacity = 0.3;
+ }
+ aprev.onClick = function() {
+ if (this._isactive == true) {
+ prevScreen();
+ }
+ };
+
+ //page change - next. page
+ anext.addTo(project);
+ anext.scale(vsw / 4);
+ anext.position = [0, 0]; //reset position, before relative positioning !!
+ anext.translate([vssw * 9, vssw * 2.5]);
+ anext.fillColor = 'pink';
+ anext._socket = socket;
+ anext._isactive = false;
+ anext._activate = function() {
+ this._isactive = true;
+ this.opacity = 1;
+ }
+ anext._deactivate = function() {
+ this._isactive = false;
+ this.opacity = 0.3;
+ }
+ anext.onClick = function() {
+ if (this._isactive == true) {
+ nextScreen();
+ }
+ };
+
+ //title background
+ new Path.Rectangle({
+ point: [vssw * 2, vssw * 1.5],
+ size: [vssw * 6, vssw * 2],
+ fillColor: 'white',
+ radius: 30,
+ }).opacity = 0.3;
+
+ //screen #1 - 'home'
+ changeScreen(1);
+ new Path.Rectangle([0, 0], vs).fillColor = '#999';
+
+ //hello, screen.
+ phonehand.addTo(project);
+ phonehand.scale(vsw / 1.5);
+ phonehand.position = view.center;
+ //phonehand.position.y -= vssh;
+
+ //screen #2 - 'select'
+
+ changeScreen(2);
+ new Path.Rectangle([0, 0], vs).fillColor = '#3333ff'; //;
+
+ //group select buttons
+ var group_selected = undefined; //key
+ for (var row = 0; row < 2; row++) {
+ for (var col = 0; col < 2; col++) {
+ var idx = row * 2 + col;
+ var c = new Path.Circle({
+ center: [col * vssw * 3 + vssw * 3, row * vssw * 3 + vssw * 6],
+ radius: vssw * 0.8,
+ fillColor: new Color({
+ hue: getRandom(0, 180),
+ saturation: 1,
+ brightness: 1
+ }),
+ _idx: idx,
+ onClick: function() {
+ group_selected = group_keys[this._idx];
+ console.log(group_selected);
+ //next screen.
+ changeScreen(3);
+ }
+ });
+ new PointText({
+ point: c.bounds.topLeft + [0, -5],
+ content: group_names[idx],
+ fontSize: '1em',
+ fontWeight: 'bold',
+ fillColor: c.fillColor
+ });
+ }
+ }
+
+ //screen #3 - check
+ changeScreen(3);
+ new Path.Rectangle([0, 0], vs).fillColor = '#393';
+
+ //TODO: info text.
+ new PointText({
+ content: "네트워크 테스트!",
+ point: view.center + [-vssw * 3, -vssw * 2],
+ fontWeight: 'bold',
+ fontSize: '2em',
+ fillColor: 'gold'
+ });
+ new PointText({
+ content: "사운드 테스트!",
+ point: view.center + [-vssw * 3, vssw * 0],
+ fontWeight: 'bold',
+ fontSize: '2em',
+ fillColor: 'pink'
+ });
+ new PointText({
+ content: "동그라미 터치!",
+ point: view.center + [-vssw * 3, vssw * 2],
+ fontWeight: 'bold',
+ fontSize: '2em',
+ fillColor: 'red'
+ });
+ new Path.Circle({
+ center: view.center,
+ radius: vsw / 4,
+ fillColor: 'white',
+ opacity: 0.5,
+ onClick: function() {
+ clap.play();
+ }
+ });
+
+ //screen #4 - bridgeA
+ changeScreen(4);
+ new Path.Rectangle([0, 0], vs).fillColor = '#333';
+
+ //sound list
+ var buttons = [];
+
+ for (var row = 0; row < 3; row++) {
+ for (var col = 0; col < 3; col++) {
+ var idx = row * 3 + col;
+
+ //play/stop button (networked between groups)
+ var c = new Group([
+ new Path.Circle({
+ center: [col * vssw * 2.5 + vssw * 2, row * vssw * 2.3 + vssw * 5.5],
+ radius: vssw * 0.8,
+ fillColor: new Color({
+ hue: getRandom(0, 180),
+ saturation: 1,
+ brightness: 1
+ }),
+ _socket: socket,
+ _key: btn_names[idx],
+ _player: btn_sounds[idx],
+ _playcount: 0,
+ _init: function() {
+ var that = this;
+ this._socket.on('sound', function(msg) {
+ if (msg.group == group_selected && msg.name == that._key) {
+ if (msg.action == 'start') {
+ that._playstart();
+ that._playcount++;
+ }
+ }
+ });
+ this.nextSibling.opacity = 0; //marker off!
+ this._player.playMode('restart');
+ },
+ _playstart: function() {
+ // play (re-)start now!
+ this._player.play();
+ this.nextSibling.opacity = 1; //marker on!
+ var that = this;
+ this._player.onended(function() {
+ if (that._playcount > 0) {
+ that._playcount--;
+ if (that._playcount == 0) { // only do this, when it is finally stopped.
+ that.nextSibling.opacity = 0; //marker off!
+ }
+ }
+ });
+ },
+ _playstop: function() {
+ this._player.stop();
+ this.nextSibling.opacity = 0; //marker off!
+ },
+ onMouseDown: function() {
+ //
+ this._playstart();
+ this._playcount++;
+ //
+ this._socket.emit('sound', {
+ name: this._key,
+ action: 'start',
+ group: group_selected
+ });
+ }
+ }),
+ //the marking ring around the button
+ new Path.Circle({
+ center: [col * vssw * 2.5 + vssw * 2, row * vssw * 2.3 + vssw * 5.5],
+ radius: vssw * 1,
+ strokeWidth: 5,
+ strokeColor: 'white'
+ })
+ ]);
+ c.firstChild._init();
+ buttons.push(c);
+ //labels
+ new PointText({
+ point: c.firstChild.bounds.topLeft + [0, -5],
+ content: btn_names[idx],
+ fontSize: '2em',
+ fontWeight: 'bold',
+ fillColor: c.firstChild.fillColor
+ });
+ }
+ }
+ //speed controller - frame
+ new Group({
+ children: [
+ new Path.Rectangle({
+ point: [vsw - vssw * 1.5, vssh * 2.5],
+ size: [vssw, vssh * 6],
+ radius: 20,
+ }),
+ new Path.Rectangle({
+ point: [vsw - vssw * 1.5, vssh * 2.5],
+ size: [vssw, vssh * 3],
+ fillColor: 'blue'
+ }),
+ new Path.Rectangle({
+ point: [vsw - vssw * 1.5, vssh * 2.5 + vssh * 3],
+ size: [vssw, vssh * 3],
+ fillColor: 'gold'
+ }),
+ ],
+ clipped: true
+ });
+ //speed controller - knob
+ var knob = new Path.Circle({
+ center: [vsw - vssw, vssh * 2.5 + vssw * 0.5],
+ radius: 20,
+ fillColor: 'white',
+ _start_y: vssh * 2.5 + vssw * 0.5,
+ _end_y: vssh * 2.5 + vssh * 6 - vssw * 0.5,
+ onMouseDrag: function(event) {
+ if (event.point.y > this._end_y) {
+ this.position.y = this._end_y;
+ } else if (event.point.y < this._start_y) {
+ this.position.y = this._start_y;
+ } else {
+ this.position.y = event.point.y;
+ }
+ var control = map(this.position.y, [this._start_y, this._end_y], [-1, 1]);
+ //playback speed change.. (perform the effect)
+ buttons.forEach(function(item) {
+ item.firstChild._player.rate(Math.pow(5, control));
+ });
+ }
+ });
+ //initial position of the knob. 0 means 1 (Math.pow(XXX, 0) == 1)
+ knob.position.y = map(0, [-1, 1], [knob._start_y, knob._end_y]);
+ //stop button
+ var stopbtn = new Group({
+ _socket: socket,
+ children: [
+ new Path.Circle({
+ center: [vssw * 2.7 + vssw * 2, 2.5 * vssw * 2.7 + vssw * 6],
+ radius: vssw * 0.8
+ })
+ ],
+ onMouseDown: function() {
+ buttons.forEach(function(item) {
+ item.firstChild._playstop();
+ item.firstChild._playcount = 0;
+ });
+ //
+ this._socket.emit('sound', {
+ name: 'stop',
+ action: 'stop',
+ group: group_selected
+ });
+ }
+ });
+ //label
+ stopbtn.addChild(new PointText({
+ point: stopbtn.bounds.topLeft + [0, -5],
+ content: 'stop',
+ fontSize: '2em',
+ fontWeight: 'bold'
+ }));
+ stopbtn.fillColor = 'red';
+ //'stop' handler
+ socket.on('sound', function(msg) {
+ if (msg.action == 'stop') {
+ buttons.forEach(function(item) {
+ item.firstChild._playstop();
+ item.firstChild._playcount = 0;
+ });
+ }
+ });
+
+ //screen #5 - path
+ changeScreen(5);
+ new Path.Rectangle([0, 0], vs).fillColor = '#333';
+
+ //
+ for (var row = 0; row < 8; row++) {
+ for (var col = 0; col < 1; col++) {
+ var idx = row * 1 + col;
+
+ //play/stop/marker button (networked between groups)
+ var c = new Group({
+ children: [
+ //play button
+ new Path.Rectangle({
+ point: [vssw * 1.4, row * vssw * 1.5 + vssw * 4.5],
+ radius: vssw * 0.4,
+ size: [vssw * 2.8, vssw * 0.8],
+ fillColor: new Color({
+ hue: getRandom(20, 60),
+ saturation: 1,
+ brightness: 1
+ }),
+ onMouseDown: function() {
+ var par = this.parent;
+ par._player.play();
+ par._playcount++;
+ par.lastChild.fillColor = 'white'; //marker on!
+ par._player.onended(function() {
+ if (par._playcount > 0) {
+ par._playcount--;
+ if (par._playcount == 0) { // only do this, when it is finally stopped.
+ par.lastChild.fillColor = 'black'; //marker off!
+ }
+ }
+ });
+ //
+ par._socket.emit('sound', {
+ name: par._key,
+ action: 'start',
+ group: 'path'
+ });
+ }
+ }),
+ //stop button
+ new Path.Rectangle({
+ point: [vssw * 4.8, row * vssw * 1.5 + vssw * 4.5],
+ radius: vssw * 0.4,
+ size: [vssw * 2.8, vssw * 0.8],
+ fillColor: new Color({
+ hue: getRandom(120, 250),
+ saturation: 1,
+ brightness: 1
+ }),
+ onMouseDown: function() {
+ var par = this.parent;
+ par._player.stop();
+ par._playcount = 0;
+ par.lastChild.fillColor = 'black'; //marker off!
+ //
+ par._socket.emit('sound', {
+ name: par._key,
+ action: 'stop',
+ group: 'path'
+ });
+ }
+ }),
+ //playing marker
+ new Path.Circle({
+ center: [vssw * 8.5, row * vssw * 1.5 + vssw * 4.9],
+ radius: vssw * 0.4,
+ fillColor: 'black'
+ })
+ ],
+ _socket: socket,
+ _key: Object.keys(set_sounds)[idx],
+ _player: set_sounds[Object.keys(set_sounds)[idx]],
+ _playcount: 0,
+ _init: function() {
+ this._player.playMode('restart');
+ }
+ });
+ c._init();
+ //label
+ new PointText({
+ point: c.firstChild.bounds.topLeft + [0, -5],
+ content: Object.keys(set_sounds)[idx],
+ fontSize: '1em',
+ fontWeight: 'bold',
+ fillColor: 'white'
+ });
+ }
+ }
+
+ //screen #6 - beach
+ changeScreen(6);
+ new Path.Rectangle([0, 0], vs).fillColor = '#333';
+
+ //
+ for (var row = 0; row < 8; row++) {
+ for (var col = 0; col < 1; col++) {
+ var idx = row * 1 + col;
+
+ //play/stop/playcount/faster/slower button (networked between groups)
+ var c = new Group({
+ children: [
+ //play button
+ new Path.Rectangle({
+ point: [vssw * 0.8, row * vssw * 1.5 + vssw * 4.5],
+ radius: vssw * 0.4,
+ size: [vssw * 1.6, vssw * 0.8],
+ fillColor: new Color({
+ hue: getRandom(20, 60),
+ saturation: 1,
+ brightness: 1
+ }),
+ onMouseDown: function(event) {
+ var par = this.parent;
+ par._players.push(par._player.start()._source); // start playbacks and collect their '_source's..
+ par._playcount++;
+ par.children.playcounter.content = '' + par._playcount;
+ //
+ par._socket.emit('sound', {
+ name: par._key,
+ action: 'start',
+ group: 'beach'
+ });
+ }
+ }),
+ //stop button
+ new Path.Rectangle({
+ point: [vssw * 2.8, row * vssw * 1.5 + vssw * 4.5],
+ radius: vssw * 0.4,
+ size: [vssw * 1.6, vssw * 0.8],
+ fillColor: new Color({
+ hue: getRandom(120, 250),
+ saturation: 1,
+ brightness: 1
+ }),
+ onMouseDown: function() {
+ var par = this.parent;
+ if (par._players.length > 0) {
+ (par._players.shift()).stop();
+ par._playcount--;
+ par.children.playcounter.content = '' + par._playcount;
+ }
+ //
+ par._socket.emit('sound', {
+ name: par._key,
+ action: 'stop',
+ group: 'beach'
+ });
+ }
+ }),
+ //playcounter
+ new PointText({
+ name: 'playcounter',
+ content: '' + 0,
+ point: [vssw * 4.8, row * vssw * 1.5 + vssw * 4.5 + vssw * 0.7],
+ fillColor: 'white',
+ fontSize: '2em',
+ fontWeight: 'bold'
+ }),
+ //faster button
+ new Path.Rectangle({
+ point: [vssw * 5.8, row * vssw * 1.5 + vssw * 4.5],
+ radius: vssw * 0.4,
+ size: [vssw * 1.6, vssw * 0.8],
+ fillColor: new Color({
+ hue: getRandom(20, 60),
+ saturation: 1,
+ brightness: 1
+ }),
+ onMouseDown: function() {
+ var par = this.parent;
+ if (par._players.length > 0) {
+ par._players[par._players.length - 1].playbackRate.value += 0.2;
+ }
+ //
+ par._socket.emit('sound', {
+ name: par._key,
+ action: 'faster',
+ group: 'beach'
+ });
+ }
+ }),
+ //slower button
+ new Path.Rectangle({
+ point: [vssw * 7.8, row * vssw * 1.5 + vssw * 4.5],
+ radius: vssw * 0.4,
+ size: [vssw * 1.6, vssw * 0.8],
+ fillColor: new Color({
+ hue: getRandom(120, 250),
+ saturation: 1,
+ brightness: 1
+ }),
+ onMouseDown: function() {
+ var par = this.parent;
+ if (par._players.length > 0) {
+ par._players[par._players.length - 1].playbackRate.value -= 0.2;
+ }
+ //
+ par._socket.emit('sound', {
+ name: par._key,
+ action: 'slower',
+ group: 'beach'
+ });
+ }
+ })
+ ],
+ _socket: socket,
+ _key: Object.keys(beach_sounds)[idx],
+ _player: beach_sounds[Object.keys(beach_sounds)[idx]],
+ _players: beach_players[Object.keys(beach_players)[idx]],
+ _playcount: 0,
+ _init: function() {
+ this._player.loop = true;
+ this._player.retrigger = true;
+ //socket io event handling..
+ var that = this;
+ this._socket.on('sound', function(msg) {
+ if (msg.group == 'beach' && msg.name == that._key) {
+ if (msg.action == 'start') {
+ that._players.push(that._player.start()._source); // start playbacks and collect their '_source's..
+ that._playcount++;
+ that.children.playcounter.content = '' + that._playcount;
+ } else if (msg.action == 'stop') {
+ if (that._players.length > 0) {
+ (that._players.shift()).stop();
+ that._playcount--;
+ that.children.playcounter.content = '' + that._playcount;
+ }
+ } else if (msg.action == 'faster') {
+ if (that._players.length > 0) {
+ that._players[that._players.length - 1].playbackRate.value += 0.2;
+ }
+ } else if (msg.action == 'slower') {
+ if (that._players.length > 0) {
+ that._players[that._players.length - 1].playbackRate.value -= 0.2;
+ }
+ }
+ }
+ });
+ }
+ });
+ c._init();
+ //label
+ new PointText({
+ point: c.firstChild.bounds.topLeft + [0, -5],
+ content: Object.keys(beach_sounds)[idx],
+ fontSize: '1em',
+ fontWeight: 'bold',
+ fillColor: 'white'
+ });
+ }
+ }
+
+ //home
+ changeScreen(1);
+
+ //reveal the curtain.
+ $('#page-loading').css('z-index', -1);
+
+ //network event handlers
+
+ //event: 'sound'
+ socket.on('sound', function(sound) {
+ if (sound.name == 'clap') {
+ if (sound.action == 'start') {
+ clap.start();
+ }
+ }
+ });
+
+ });
+
+});
diff --git a/public/conductor/lib/Tone-r12.min.js b/public/conductor/lib/Tone-r12.min.js
new file mode 100644
index 0000000..a511a39
--- /dev/null
+++ b/public/conductor/lib/Tone-r12.min.js
@@ -0,0 +1,14 @@
+!function(t,e){"function"==typeof define&&define.amd?define(function(){return e()}):"object"==typeof module?module.exports=e():t.Tone=e()}(this,function(){"use strict";function t(t){t(e)}var e;/**
+ * Tone.js
+ * @author Yotam Mann
+ * @license http://opensource.org/licenses/MIT MIT License
+ * @copyright 2014-2018 Yotam Mann
+ */
+return function(t){e=t()}(function(){var t,e=function(){if(!(this instanceof e))throw new Error("constructor needs to be called with the 'new' keyword")};return e.prototype.toString=function(){var t,i,n;for(t in e)if(i=t[0].match(/^[A-Z]$/),n=e[t]===this.constructor,e.isFunction(e[t])&&i&&n)return t;return"Tone"},e.prototype.dispose=function(){return this},e.prototype.set=function(t,i,n){var s,o,r,a,h,l,u;e.isObject(t)?n=i:e.isString(t)&&(s={},s[t]=i,t=s);t:for(o in t){if(i=t[o],r=this,-1!==o.indexOf(".")){for(a=o.split("."),h=0;hthis.memory&&(n=this.length-this.memory,this._timeline.splice(0,n)),this},t.Timeline.prototype.remove=function(t){var e=this._timeline.indexOf(t);return-1!==e&&this._timeline.splice(e,1),this},t.Timeline.prototype.get=function(e,i){i=t.defaultArg(i,"time");var n=this._search(e,i);return-1!==n?this._timeline[n]:null},t.Timeline.prototype.peek=function(){return this._timeline[0]},t.Timeline.prototype.shift=function(){return this._timeline.shift()},t.Timeline.prototype.getAfter=function(e,i){i=t.defaultArg(i,"time");var n=this._search(e,i);return n+10&&this._timeline[n-1][i]=0?this._timeline[s-1]:null)},t.Timeline.prototype.cancel=function(t){var e,i;if(this._timeline.length>1)if((e=this._search(t))>=0)if(this._timeline[e].time===t){for(i=e;i>=0&&this._timeline[i].time===t;i--)e=i;this._timeline=this._timeline.slice(0,e)}else this._timeline=this._timeline.slice(0,e+1);else this._timeline=[];else 1===this._timeline.length&&this._timeline[0].time>=t&&(this._timeline=[]);return this},t.Timeline.prototype.cancelBefore=function(t){var e=this._search(t);return e>=0&&(this._timeline=this._timeline.slice(e+1)),this},t.Timeline.prototype.previousEvent=function(t){var e=this._timeline.indexOf(t);return e>0?this._timeline[e-1]:null},t.Timeline.prototype._search=function(e,i){var n,s,o,r,a,h,l,u;if(0===this._timeline.length)return-1;if(i=t.defaultArg(i,"time"),n=0,s=this._timeline.length,o=s,s>0&&this._timeline[s-1][i]<=e)return s-1;for(;ne)return r;a[i]>e?o=r:n=r+1}return-1},t.Timeline.prototype._iterate=function(e,i,n){i=t.defaultArg(i,0),n=t.defaultArg(n,this._timeline.length-1),this._timeline.slice(i,n+1).forEach(function(t){e.call(this,t)}.bind(this))},t.Timeline.prototype.forEach=function(t){return this._iterate(t),this},t.Timeline.prototype.forEachBefore=function(t,e){var i=this._search(t);return-1!==i&&this._iterate(e,0,i),this},t.Timeline.prototype.forEachAfter=function(t,e){var i=this._search(t);return this._iterate(e,i+1),this},t.Timeline.prototype.forEachBetween=function(t,e,i){var n=this._search(t),s=this._search(e);return-1!==n&&-1!==s?(this._timeline[n].time!==t&&(n+=1),this._timeline[s].time===e&&(s-=1),this._iterate(i,n,s)):-1===n&&this._iterate(i,0,s),this},t.Timeline.prototype.forEachFrom=function(t,e){for(var i=this._search(t);i>=0&&this._timeline[i].time>=t;)i--;return this._iterate(e,i+1),this},t.Timeline.prototype.forEachAtTime=function(t,e){var i=this._search(t);return-1!==i&&this._iterate(function(i){i.time===t&&e.call(this,i)},0,i),this},t.Timeline.prototype.dispose=function(){return t.prototype.dispose.call(this),this._timeline=null,this},t.Timeline}),t(function(t){var e;t.supported&&(!window.hasOwnProperty("OfflineAudioContext")&&window.hasOwnProperty("webkitOfflineAudioContext")&&(window.OfflineAudioContext=window.webkitOfflineAudioContext),e=new OfflineAudioContext(1,1,44100),e.startRendering()instanceof Promise||(OfflineAudioContext.prototype._native_startRendering=OfflineAudioContext.prototype.startRendering,OfflineAudioContext.prototype.startRendering=function(){return new Promise(function(t){this.oncomplete=function(e){t(e.renderedBuffer)},this._native_startRendering()}.bind(this))}))}),t(function(t){var e,i,n,s;if(t.supported){!window.hasOwnProperty("AudioContext")&&window.hasOwnProperty("webkitAudioContext")&&(window.AudioContext=window.webkitAudioContext),AudioContext.prototype.close||(AudioContext.prototype.close=function(){return t.isFunction(this.suspend)&&this.suspend(),Promise.resolve()}),AudioContext.prototype.resume||(AudioContext.prototype.resume=function(){return Promise.resolve()}),!AudioContext.prototype.createGain&&AudioContext.prototype.createGainNode&&(AudioContext.prototype.createGain=AudioContext.prototype.createGainNode),!AudioContext.prototype.createDelay&&AudioContext.prototype.createDelayNode&&(AudioContext.prototype.createDelay=AudioContext.prototype.createDelayNode),e=!1,i=new OfflineAudioContext(1,1,44100),n=new Uint32Array([1179011410,48,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,8,0,0,0,0]).buffer;try{s=i.decodeAudioData(n),s instanceof Promise&&(e=!0)}catch(t){e=!1}e||(AudioContext.prototype._native_decodeAudioData=AudioContext.prototype.decodeAudioData,AudioContext.prototype.decodeAudioData=function(t){return new Promise(function(e,i){this._native_decodeAudioData(t,e,i)}.bind(this))})}}),t(function(t){t.Context=function(){var i,n;if(t.Emitter.call(this),i=t.defaults(arguments,["context"],t.Context),!i.context&&(i.context=new window.AudioContext,!i.context))throw new Error("could not create AudioContext. Possibly too many AudioContexts running already.");this._context=i.context;for(n in this._context)this._defineProperty(this._context,n);this._latencyHint=i.latencyHint,this._constants={},this.lookAhead=i.lookAhead,this._computedUpdateInterval=0,this._ticker=new e(this.emit.bind(this,"tick"),i.clockSource,i.updateInterval),this._timeouts=new t.Timeline,this._timeoutIds=0,this.on("tick",this._timeoutLoop.bind(this))},t.extend(t.Context,t.Emitter),t.Emitter.mixin(t.Context),t.Context.defaults={clockSource:"worker",latencyHint:"interactive",lookAhead:.1,updateInterval:.03},t.Context.prototype._defineProperty=function(e,i){t.isUndef(this[i])&&Object.defineProperty(this,i,{get:function(){return"function"==typeof e[i]?e[i].bind(e):e[i]},set:function(t){e[i]=t}})},t.Context.prototype.now=function(){return this._context.currentTime+this.lookAhead},t.Context.prototype.ready=function(){return new Promise(function(t){"running"===this._context.state?t():this._context.resume().then(function(){t()})}.bind(this))},t.Context.prototype.close=function(){return this._context.close().then(function(){t.Context.emit("close",this)}.bind(this))},t.Context.prototype.getConstant=function(t){var e,i,n,s;if(this._constants[t])return this._constants[t];for(e=this._context.createBuffer(1,128,this._context.sampleRate),i=e.getChannelData(0),n=0;n1&&(this.input=new Array(t)),1===e?this.output=this.context.createGain():e>1&&(this.output=new Array(e))},Object.defineProperty(t.AudioNode.prototype,"channelCount",{get:function(){return this.output.channelCount},set:function(t){return this.output.channelCount=t}}),Object.defineProperty(t.AudioNode.prototype,"channelCountMode",{get:function(){return this.output.channelCountMode},set:function(t){return this.output.channelCountMode=t}}),Object.defineProperty(t.AudioNode.prototype,"channelInterpretation",{get:function(){return this.output.channelInterpretation},set:function(t){return this.output.channelInterpretation=t}}),Object.defineProperty(t.AudioNode.prototype,"numberOfInputs",{get:function(){return this.input?t.isArray(this.input)?this.input.length:1:0}}),Object.defineProperty(t.AudioNode.prototype,"numberOfOutputs",{get:function(){return this.output?t.isArray(this.output)?this.output.length:1:0}}),t.AudioNode.prototype._onConnect=function(){},t.AudioNode.prototype.connect=function(e,i,n){return e._onConnect&&e._onConnect(this),t.isArray(this.output)?(i=t.defaultArg(i,0),this.output[i].connect(e,0,n)):this.output.connect(e,i,n),this},t.AudioNode.prototype.disconnect=function(e,i,n){t.isArray(this.output)?t.isNumber(e)?this.output[e].disconnect():(i=t.defaultArg(i,0),this.output[i].disconnect(e,0,n)):this.output.disconnect.apply(this.output,arguments)},t.AudioNode.prototype.chain=function(){var t,e,i=this;for(t=0;t3&&(s=parseFloat(parseFloat(s).toFixed(3))),t=[n,i,s],t.join(":")},t.Time.prototype.toTicks=function(){var t=this._beatsToUnits(1),e=this.valueOf()/t;return Math.round(e*this._getPPQ())},t.Time.prototype.toSeconds=function(){return this.valueOf()},t.Time.prototype.toMidi=function(){return t.Frequency.ftom(this.toFrequency())},t.Time}),t(function(t){return t.TransportTime=function(e,i){if(!(this instanceof t.TransportTime))return new t.TransportTime(e,i);t.Time.call(this,e,i)},t.extend(t.TransportTime,t.Time),t.TransportTime.prototype._now=function(){return t.Transport.seconds},t.TransportTime}),t(function(t){return t.Type={Default:"number",Time:"time",Frequency:"frequency",TransportTime:"transportTime",Ticks:"ticks",NormalRange:"normalRange",AudioRange:"audioRange",Decibels:"db",Interval:"interval",BPM:"bpm",Positive:"positive",Gain:"gain",Cents:"cents",Degrees:"degrees",MIDI:"midi",BarsBeatsSixteenths:"barsBeatsSixteenths",Samples:"samples",Hertz:"hertz",Note:"note",Milliseconds:"milliseconds",Seconds:"seconds",Notation:"notation"},t.prototype.toSeconds=function(e){return t.isNumber(e)?e:t.isUndef(e)?this.now():t.isString(e)?new t.Time(e).toSeconds():e instanceof t.TimeBase?e.toSeconds():void 0},t.prototype.toFrequency=function(e){return t.isNumber(e)?e:t.isString(e)||t.isUndef(e)?new t.Frequency(e).valueOf():e instanceof t.TimeBase?e.toFrequency():void 0},t.prototype.toTicks=function(e){return t.isNumber(e)||t.isString(e)?new t.TransportTime(e).toTicks():t.isUndef(e)?t.Transport.ticks:e instanceof t.TimeBase?e.toTicks():void 0},t}),t(function(t){return t.Param=function(){var e=t.defaults(arguments,["param","units","convert"],t.Param);t.AudioNode.call(this),this._param=this.input=e.param,this.units=e.units,this.convert=e.convert,this.overridden=!1,this._events=new t.Timeline(1e3),t.isDefined(e.value)&&this._param&&(this.value=e.value)},t.extend(t.Param,t.AudioNode),t.Param.defaults={units:t.Type.Default,convert:!0,param:void 0},Object.defineProperty(t.Param.prototype,"value",{get:function(){var t=this.now();return this._toUnits(this.getValueAtTime(t))},set:function(t){this._initialValue=this._fromUnits(t),this.cancelScheduledValues(this.context.currentTime),this.setValueAtTime(t,this.context.currentTime)}}),Object.defineProperty(t.Param.prototype,"minValue",{get:function(){return this.units===t.Type.Time||this.units===t.Type.Frequency||this.units===t.Type.NormalRange||this.units===t.Type.Positive||this.units===t.Type.BPM?0:this.units===t.Type.AudioRange?-1:this.units===t.Type.Decibels?-1/0:this._param.minValue}}),Object.defineProperty(t.Param.prototype,"maxValue",{get:function(){return this.units===t.Type.NormalRange||this.units===t.Type.AudioRange?1:this._param.maxValue}}),t.Param.prototype._fromUnits=function(e){if(!this.convert&&!t.isUndef(this.convert)||this.overridden)return e;switch(this.units){case t.Type.Time:return this.toSeconds(e);case t.Type.Frequency:return this.toFrequency(e);case t.Type.Decibels:return t.dbToGain(e);case t.Type.NormalRange:return Math.min(Math.max(e,0),1);case t.Type.AudioRange:return Math.min(Math.max(e,-1),1);case t.Type.Positive:return Math.max(e,0);default:return e}},t.Param.prototype._toUnits=function(e){if(!this.convert&&!t.isUndef(this.convert))return e;switch(this.units){case t.Type.Decibels:return t.gainToDb(e)
+;default:return e}},t.Param.prototype._minOutput=1e-5,t.Param.AutomationType={Linear:"linearRampToValueAtTime",Exponential:"exponentialRampToValueAtTime",Target:"setTargetAtTime",SetValue:"setValueAtTime"},t.Param.prototype.setValueAtTime=function(e,i){return i=this.toSeconds(i),e=this._fromUnits(e),this._events.add({type:t.Param.AutomationType.SetValue,value:e,time:i}),this._param.setValueAtTime(e,i),this},t.Param.prototype.getValueAtTime=function(e){var i,n,s,o,r,a;return e=this.toSeconds(e),i=this._events.getAfter(e),n=this._events.get(e),s=t.defaultArg(this._initialValue,this._param.defaultValue),o=s,null===n?o=s:n.type===t.Param.AutomationType.Target?(r=this._events.getBefore(n.time),a=null===r?s:r.value,o=this._exponentialApproach(n.time,a,n.value,n.constant,e)):o=null===i?n.value:i.type===t.Param.AutomationType.Linear?this._linearInterpolate(n.time,n.value,i.time,i.value,e):i.type===t.Param.AutomationType.Exponential?this._exponentialInterpolate(n.time,n.value,i.time,i.value,e):n.value,o},t.Param.prototype.setRampPoint=function(t){t=this.toSeconds(t);var e=this.getValueAtTime(t);return this.cancelAndHoldAtTime(t),0===e&&(e=this._minOutput),this.setValueAtTime(this._toUnits(e),t),this},t.Param.prototype.linearRampToValueAtTime=function(e,i){return e=this._fromUnits(e),i=this.toSeconds(i),this._events.add({type:t.Param.AutomationType.Linear,value:e,time:i}),this._param.linearRampToValueAtTime(e,i),this},t.Param.prototype.exponentialRampToValueAtTime=function(e,i){return e=this._fromUnits(e),e=Math.max(this._minOutput,e),i=this.toSeconds(i),this._events.add({type:t.Param.AutomationType.Exponential,time:i,value:e}),this._param.exponentialRampToValueAtTime(e,i),this},t.Param.prototype.exponentialRampTo=function(t,e,i){return i=this.toSeconds(i),this.setRampPoint(i),this.exponentialRampToValueAtTime(t,i+this.toSeconds(e)),this},t.Param.prototype.linearRampTo=function(t,e,i){return i=this.toSeconds(i),this.setRampPoint(i),this.linearRampToValueAtTime(t,i+this.toSeconds(e)),this},t.Param.prototype.targetRampTo=function(t,e,i){return i=this.toSeconds(i),this.setRampPoint(i),this.exponentialApproachValueAtTime(t,i,e),this},t.Param.prototype.exponentialApproachValueAtTime=function(t,e,i){var n=Math.log(this.toSeconds(i)+1)/Math.log(200);return e=this.toSeconds(e),this.setTargetAtTime(t,e,n)},t.Param.prototype.setTargetAtTime=function(e,i,n){if(e=this._fromUnits(e),n<=0)throw new Error("timeConstant must be greater than 0");return i=this.toSeconds(i),this._events.add({type:t.Param.AutomationType.Target,value:e,time:i,constant:n}),this._param.setTargetAtTime(e,i,n),this},t.Param.prototype.setValueCurveAtTime=function(e,i,n,s){var o,r;for(s=t.defaultArg(s,1),n=this.toSeconds(n),i=this.toSeconds(i),this.setValueAtTime(e[0]*s,i),o=n/(e.length-1),r=1;r=0;)this.emit("tick"),this._currentTime+=this.blockTime;return this._context.startRendering()},t.OfflineContext.prototype.close=function(){return this._context=null,Promise.resolve()},t.OfflineContext}),t(function(t){var e;t.supported&&(e=navigator.userAgent.toLowerCase(),e.includes("safari")&&!e.includes("chrome")&&e.includes("mobile")&&(t.OfflineContext.prototype.createBufferSource=function(){var t=this._context.createBufferSource(),e=t.start;return t.start=function(i){this.setTimeout(function(){e.call(t,i)}.bind(this),0)}.bind(this),t}))}),t(function(t){return t.Gain=function(){var e=t.defaults(arguments,["gain","units"],t.Gain);t.AudioNode.call(this),this.input=this.output=this._gainNode=this.context.createGain(),this.gain=new t.Param({param:this._gainNode.gain,units:e.units,value:e.gain,convert:e.convert}),this._readOnly("gain")},t.extend(t.Gain,t.AudioNode),t.Gain.defaults={gain:1,convert:!0},t.Gain.prototype.dispose=function(){t.AudioNode.prototype.dispose.call(this),this._gainNode.disconnect(),this._gainNode=null,this._writable("gain"),this.gain.dispose(),this.gain=null},t.Gain}),t(function(t){if(t.supported&&!AudioContext.prototype.createConstantSource){var e=function(t){var e,i,n,s;for(this.context=t,e=t.createBuffer(1,128,t.sampleRate),i=e.getChannelData(0),n=0;n0&&(a=1/s,h=1-r,s=h/a),"linear"===this._attackCurve?this._sig.linearRampTo(i,s,e):"exponential"===this._attackCurve?this._sig.targetRampTo(i,s,e):s>0&&(this._sig.cancelAndHoldAtTime(e),l=this._attackCurve,s0&&(n=this.toSeconds(this.release),"linear"===this._releaseCurve?this._sig.linearRampTo(0,n,e):"exponential"===this._releaseCurve?this._sig.targetRampTo(0,n,e):(s=this._releaseCurve,t.isArray(s)&&(this._sig.cancelAndHoldAtTime(e),this._sig.setValueCurveAtTime(s,e,n,i)))),this},t.Envelope.prototype.getValueAtTime=function(t){return this._sig.getValueAtTime(t)},t.Envelope.prototype.triggerAttackRelease=function(t,e,i){return e=this.toSeconds(e),this.triggerAttack(e,i),this.triggerRelease(e+this.toSeconds(t)),this},t.Envelope.prototype.cancel=function(t){return this._sig.cancelScheduledValues(t),this},t.Envelope.prototype.connect=t.SignalBase.prototype.connect,function(){function e(t){var e,i=new Array(t.length);for(e=0;e0?r:a)+h.time):h?0===h.value?1/0:h.time+(e-h.ticks)/h.value:e/this._initialValue},t.TickSignal.prototype.ticksToTime=function(e,i){return i=this.toSeconds(i),new t.Time(this.getDurationOfTicks(e,i))},t.TickSignal.prototype.timeToTicks=function(e,i){var n,s;return i=this.toSeconds(i),e=this.toSeconds(e),n=this.getTicksAtTime(i),s=this.getTicksAtTime(i+e),new t.Ticks(s-n)},t.TickSignal}),t(function(t){return t.TimelineState=function(e){t.Timeline.call(this),this._initial=e},t.extend(t.TimelineState,t.Timeline),t.TimelineState.prototype.getValueAtTime=function(t){var e=this.get(t);return null!==e?e.state:this._initial},t.TimelineState.prototype.setStateAtTime=function(t,e){return this.add({state:t,time:e}),this},t.TimelineState.prototype.getLastState=function(t,e){var i,n,s;for(e=this.toSeconds(e),i=this._search(e),n=i;n>=0;n--)if(s=this._timeline[n],s.state===t)return s},t.TimelineState.prototype.getNextState=function(t,e){var i,n,s;if(e=this.toSeconds(e),-1!==(i=this._search(e)))for(n=i;n0&&(this._tickOffset.cancel(i.time),this._state.cancel(i.time))}return this._state.cancel(e),this._state.setStateAtTime(t.State.Stopped,e),this.setTicksAtTime(0,e),this},t.TickSource.prototype.pause=function(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)===t.State.Started&&this._state.setStateAtTime(t.State.Paused,e),this},t.TickSource.prototype.cancel=function(t){return t=this.toSeconds(t),this._state.cancel(t),this._tickOffset.cancel(t),this},t.TickSource.prototype.getTicksAtTime=function(e){var i,n,s,o;return e=this.toSeconds(e),i=this._state.getLastState(t.State.Stopped,e),n={state:t.State.Paused,time:e},this._state.add(n),s=i,o=0,this._state.forEachBetween(i.time,e+this.sampleTime,function(e){var i=s.time,n=this._tickOffset.get(e.time);n.time>=s.time&&(o=n.ticks,i=n.time),s.state===t.State.Started&&e.state!==t.State.Started&&(o+=this.frequency.getTicksAtTime(e.time)-this.frequency.getTicksAtTime(i)),s=e}.bind(this)),this._state.remove(n),o},Object.defineProperty(t.TickSource.prototype,"ticks",{get:function(){return this.getTicksAtTime(this.now())},set:function(t){this.setTicksAtTime(t,this.now())}}),Object.defineProperty(t.TickSource.prototype,"seconds",{get:function(){return this.getSecondsAtTime(this.now())},set:function(t){var e=this.now(),i=this.frequency.timeToTicks(t,e);this.setTicksAtTime(i,e)}}),t.TickSource.prototype.getSecondsAtTime=function(e){var i,n,s,o;return e=this.toSeconds(e),i=this._state.getLastState(t.State.Stopped,e),n={state:t.State.Paused,time:e},this._state.add(n),s=i,o=0,this._state.forEachBetween(i.time,e+this.sampleTime,function(e){var i=s.time,n=this._tickOffset.get(e.time);n.time>=s.time&&(o=n.seconds,i=n.time),s.state===t.State.Started&&e.state!==t.State.Started&&(o+=e.time-i),s=e}.bind(this)),this._state.remove(n),o},t.TickSource.prototype.setTicksAtTime=function(t,e){return e=this.toSeconds(e),this._tickOffset.cancel(e),this._tickOffset.add({time:e,ticks:t,seconds:this.frequency.getDurationOfTicks(t,e)}),this},t.TickSource.prototype.getStateAtTime=function(t){return t=this.toSeconds(t),this._state.getValueAtTime(t)},t.TickSource.prototype.getTimeOfTick=function(e,i){var n,s,o,r;return i=t.defaultArg(i,this.now()),n=this._tickOffset.get(i),s=this._state.get(i),o=Math.max(n.time,s.time),r=this.frequency.getTicksAtTime(o)+e-n.ticks,this.frequency.getTimeOfTick(r)},t.TickSource.prototype.forEachTickBetween=function(e,i,n){var s,o,r,a,h,l,u=this._state.get(e);if(this._state.forEachBetween(e,i,function(i){u.state===t.State.Started&&i.state!==t.State.Started&&this.forEachTickBetween(Math.max(u.time,e),i.time-this.sampleTime,n),u=i}.bind(this)),e=Math.max(u.time,e),u.state===t.State.Started&&this._state)for(s=this.frequency.getTicksAtTime(e),o=this.frequency.getTicksAtTime(u.time),r=s-o,a=r%1,0!==a&&(a=1-a),h=this.frequency.getTimeOfTick(s+a),l=null;h0)if(null===t.left.right)e=t.left,e.right=t.right,i=e;else{for(e=t.left.right;null!==e.right;)e=e.right;e.parent.right=e.left,i=e.parent,e.left=t.left,e.right=t.right}else if(null===t.right.left)e=t.right,e.left=t.left,i=e;else{for(e=t.right.left;null!==e.left;)e=e.left;e.parent=e.parent,e.parent.left=e.right,i=e.parent,e.left=t.left,e.right=t.right}null!==t.parent?t.isLeftChild()?t.parent.left=e:t.parent.right=e:this._setRoot(e),this._rebalance(i)}t.dispose()},t.IntervalTimeline.prototype._rotateLeft=function(t){var e=t.parent,i=t.isLeftChild(),n=t.right;t.right=n.left,n.left=t,null!==e?i?e.left=n:e.right=n:this._setRoot(n)},t.IntervalTimeline.prototype._rotateRight=function(t){var e=t.parent,i=t.isLeftChild(),n=t.left;t.left=n.right,n.right=t,null!==e?i?e.left=n:e.right=n:this._setRoot(n)},t.IntervalTimeline.prototype._rebalance=function(t){var e=t.getBalance();e>1?t.left.getBalance()<0?this._rotateLeft(t.left):this._rotateRight(t):e<-1&&(t.right.getBalance()>0?this._rotateRight(t.right):this._rotateLeft(t))},t.IntervalTimeline.prototype.get=function(t){var e,i,n;if(null!==this._root&&(e=[],this._root.search(t,e),e.length>0)){for(i=e[0],n=1;ni.low&&(i=e[n]);return i.event}return null},t.IntervalTimeline.prototype.forEach=function(t){var e,i,n;if(null!==this._root)for(e=[],this._root.traverse(function(t){e.push(t)}),i=0;i=0;n--)(s=i[n].event)&&e(s);return this},t.IntervalTimeline.prototype.forEachFrom=function(t,e){var i,n,s;if(null!==this._root)for(i=[],this._root.searchAfter(t,i),n=i.length-1;n>=0;n--)s=i[n].event,e(s);return this},t.IntervalTimeline.prototype.dispose=function(){var t,e=[];for(null!==this._root&&this._root.traverse(function(t){e.push(t)}),t=0;tthis.max||(null!==this.left&&this.left.search(t,e),this.low<=t&&this.high>t&&e.push(this),this.low>t||null!==this.right&&this.right.search(t,e))},e.prototype.searchAfter=function(t,e){this.low>=t&&(e.push(this),null!==this.left&&this.left.searchAfter(t,e)),null!==this.right&&this.right.searchAfter(t,e)},e.prototype.traverse=function(t){t(this),null!==this.left&&this.left.traverse(t),null!==this.right&&this.right.traverse(t)},e.prototype.updateHeight=function(){null!==this.left&&null!==this.right?this.height=Math.max(this.left.height,this.right.height)+1:null!==this.right?this.height=this.right.height+1:null!==this.left?this.height=this.left.height+1:this.height=0},e.prototype.updateMax=function(){this.max=this.high,null!==this.left&&(this.max=Math.max(this.max,this.left.max)),null!==this.right&&(this.max=Math.max(this.max,this.right.max))},e.prototype.getBalance=function(){var t=0;return null!==this.left&&null!==this.right?t=this.left.height-this.right.height:null!==this.left?t=this.left.height+1:null!==this.right&&(t=-(this.right.height+1)),t},e.prototype.isLeftChild=function(){return null!==this.parent&&this.parent.left===this},Object.defineProperty(e.prototype,"left",{get:function(){return this._left},set:function(t){this._left=t,null!==t&&(t.parent=this),this.updateHeight(),this.updateMax()}}),Object.defineProperty(e.prototype,"right",{get:function(){return this._right},set:function(t){this._right=t,null!==t&&(t.parent=this),this.updateHeight(),this.updateMax()}}),e.prototype.dispose=function(){this.parent=null,this._left=null,this._right=null,this.event=null},t.IntervalTimeline}),t(function(t){return t.Ticks=function(e,i){if(!(this instanceof t.Ticks))return new t.Ticks(e,i);t.TransportTime.call(this,e,i)},t.extend(t.Ticks,t.TransportTime),t.Ticks.prototype._defaultUnits="i",t.Ticks.prototype._now=function(){return t.Transport.ticks},t.Ticks.prototype._beatsToUnits=function(t){return this._getPPQ()*t},t.Ticks.prototype._secondsToUnits=function(t){return t/(60/this._getBpm())*this._getPPQ()},t.Ticks.prototype._ticksToUnits=function(t){return t},t.Ticks.prototype.toTicks=function(){return this.valueOf()},t.Ticks.prototype.toSeconds=function(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())},t.Ticks}),t(function(t){return t.TransportEvent=function(e,i){i=t.defaultArg(i,t.TransportEvent.defaults),t.call(this),this.Transport=e,this.id=t.TransportEvent._eventId++,this.time=t.Ticks(i.time),this.callback=i.callback,this._once=i.once},t.extend(t.TransportEvent),t.TransportEvent.defaults={once:!1,callback:t.noOp},t.TransportEvent._eventId=0,t.TransportEvent.prototype.invoke=function(t){this.callback&&(this.callback(t),this._once&&this.Transport&&this.Transport.clear(this.id))},t.TransportEvent.prototype.dispose=function(){return t.prototype.dispose.call(this),this.Transport=null,this.callback=null,this.time=null,this},t.TransportEvent}),t(function(t){return t.TransportRepeatEvent=function(e,i){t.TransportEvent.call(this,e,i),i=t.defaultArg(i,t.TransportRepeatEvent.defaults),this.duration=t.Ticks(i.duration),this._interval=t.Ticks(i.interval),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this),this.Transport.on("start loopStart",this._boundRestart),this._restart()},t.extend(t.TransportRepeatEvent,t.TransportEvent),t.TransportRepeatEvent.defaults={duration:1/0,interval:1},t.TransportRepeatEvent.prototype.invoke=function(e){this._createEvents(e),t.TransportEvent.prototype.invoke.call(this,e)},t.TransportRepeatEvent.prototype._createEvents=function(e){var i=this.Transport.getTicksAtTime(e);i>=this.time&&i>=this._nextTick&&this._nextTick+this._intervalthis.time&&(this._nextTick=this.time+Math.ceil((i-this.time)/this._interval)*this._interval),this._currentId=this.Transport.scheduleOnce(this.invoke.bind(this),t.Ticks(this._nextTick)),this._nextTick+=this._interval,this._nextId=this.Transport.scheduleOnce(this.invoke.bind(this),t.Ticks(this._nextTick))},t.TransportRepeatEvent.prototype.dispose=function(){return this.Transport.clear(this._currentId),this.Transport.clear(this._nextId),this.Transport.off("start loopStart",this._boundRestart),this._boundCreateEvents=null,t.TransportEvent.prototype.dispose.call(this),this.duration=null,this._interval=null,this},t.TransportRepeatEvent}),t(function(t){t.Transport=function(){t.Emitter.call(this),t.getContext(function(){this.loop=!1,this._loopStart=0,this._loopEnd=0,this._ppq=e.defaults.PPQ,this._clock=new t.Clock({callback:this._processTick.bind(this),frequency:0}),this._bindClockEvents(),this.bpm=this._clock.frequency,this.bpm._toUnits=this._toUnits.bind(this),this.bpm._fromUnits=this._fromUnits.bind(this),this.bpm.units=t.Type.BPM,this.bpm.value=e.defaults.bpm,this._readOnly("bpm"),this._timeSignature=e.defaults.timeSignature,this._scheduledEvents={},this._timeline=new t.Timeline,this._repeatedEvents=new t.IntervalTimeline,this._syncedSignals=[],this._swingTicks=e.defaults.PPQ/2,this._swingAmount=0}.bind(this))},t.extend(t.Transport,t.Emitter),t.Transport.defaults={bpm:120,swing:0,swingSubdivision:"8n",timeSignature:4,loopStart:0,loopEnd:"4m",PPQ:192},t.Transport.prototype._processTick=function(e,i){var n,s;this._swingAmount>0&&i%this._ppq!=0&&i%(2*this._swingTicks)!=0&&(n=i%(2*this._swingTicks)/(2*this._swingTicks),s=Math.sin(n*Math.PI)*this._swingAmount,e+=t.Ticks(2*this._swingTicks/3).toSeconds()*s),this.loop&&i>=this._loopEnd&&(this.emit("loopEnd",e),this._clock.setTicksAtTime(this._loopStart,e),i=this._loopStart,this.emit("loopStart",e,this._clock.getSecondsAtTime(e)),this.emit("loop",e)),this._timeline.forEachAtTime(i,function(t){t.invoke(e)})},t.Transport.prototype.schedule=function(e,i){var n=new t.TransportEvent(this,{time:t.TransportTime(i),callback:e});return this._addEvent(n,this._timeline)},t.Transport.prototype.scheduleRepeat=function(e,i,n,s){var o=new t.TransportRepeatEvent(this,{callback:e,interval:t.Time(i),time:t.TransportTime(n),duration:t.Time(t.defaultArg(s,1/0))});return this._addEvent(o,this._repeatedEvents)},t.Transport.prototype.scheduleOnce=function(e,i){var n=new t.TransportEvent(this,{time:t.TransportTime(i),callback:e,once:!0});return this._addEvent(n,this._timeline)},t.Transport.prototype.clear=function(t){if(this._scheduledEvents.hasOwnProperty(t)){var e=this._scheduledEvents[t.toString()];e.timeline.remove(e.event),e.event.dispose(),delete this._scheduledEvents[t.toString()]}return this},t.Transport.prototype._addEvent=function(t,e){return this._scheduledEvents[t.id.toString()]={event:t,timeline:e},e.add(t),t.id},t.Transport.prototype.cancel=function(e){return e=t.defaultArg(e,0),e=this.toTicks(e),this._timeline.forEachFrom(e,function(t){this.clear(t.id)}.bind(this)),this._repeatedEvents.forEachFrom(e,function(t){this.clear(t.id)}.bind(this)),this},t.Transport.prototype._bindClockEvents=function(){this._clock.on("start",function(e,i){i=t.Ticks(i).toSeconds(),this.emit("start",e,i)}.bind(this)),this._clock.on("stop",function(t){this.emit("stop",t)}.bind(this)),this._clock.on("pause",function(t){this.emit("pause",t)}.bind(this))},Object.defineProperty(t.Transport.prototype,"state",{get:function(){return this._clock.getStateAtTime(this.now())}}),t.Transport.prototype.start=function(e,i){return t.isDefined(i)&&(i=this.toTicks(i)),this._clock.start(e,i),this},t.Transport.prototype.stop=function(t){return this._clock.stop(t),this},t.Transport.prototype.pause=function(t){return this._clock.pause(t),this},t.Transport.prototype.toggle=function(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)!==t.State.Started?this.start(e):this.stop(e),this},Object.defineProperty(t.Transport.prototype,"timeSignature",{get:function(){return this._timeSignature},set:function(e){t.isArray(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}}),Object.defineProperty(t.Transport.prototype,"loopStart",{get:function(){return t.Ticks(this._loopStart).toSeconds()},set:function(t){this._loopStart=this.toTicks(t)}}),Object.defineProperty(t.Transport.prototype,"loopEnd",{get:function(){return t.Ticks(this._loopEnd).toSeconds()},set:function(t){this._loopEnd=this.toTicks(t)}}),t.Transport.prototype.setLoopPoints=function(t,e){return this.loopStart=t,this.loopEnd=e,this},Object.defineProperty(t.Transport.prototype,"swing",{get:function(){return this._swingAmount},set:function(t){this._swingAmount=t}}),Object.defineProperty(t.Transport.prototype,"swingSubdivision",{get:function(){return t.Ticks(this._swingTicks).toNotation()},set:function(t){this._swingTicks=this.toTicks(t)}}),Object.defineProperty(t.Transport.prototype,"position",{get:function(){var e=this.now(),i=this._clock.getTicksAtTime(e);return t.Ticks(i).toBarsBeatsSixteenths()},set:function(t){var e=this.toTicks(t);this.ticks=e}}),Object.defineProperty(t.Transport.prototype,"seconds",{get:function(){return this._clock.seconds},set:function(t){var e=this.now(),i=this.bpm.timeToTicks(t,e);this.ticks=i}}),Object.defineProperty(t.Transport.prototype,"progress",{get:function(){var t;return this.loop?(t=this.now(),(this._clock.getTicksAtTime(t)-this._loopStart)/(this._loopEnd-this._loopStart)):0}}),Object.defineProperty(t.Transport.prototype,"ticks",{get:function(){return this._clock.ticks},set:function(e){if(this._clock.ticks!==e){var i=this.now();this.state===t.State.Started?(this.emit("stop",i),this._clock.setTicksAtTime(e,i),this.emit("start",i,this.seconds)):this._clock.setTicksAtTime(e,i)}}}),t.Transport.prototype.getTicksAtTime=function(t){return Math.round(this._clock.getTicksAtTime(t))},t.Transport.prototype.getSecondsAtTime=function(t){return this._clock.getSecondsAtTime(t)},Object.defineProperty(t.Transport.prototype,"PPQ",{get:function(){return this._ppq},set:function(t){var e=this.bpm.value;this._ppq=t,this.bpm.value=e}}),t.Transport.prototype._fromUnits=function(t){return 1/(60/t/this.PPQ)},t.Transport.prototype._toUnits=function(t){return t/this.PPQ*60},t.Transport.prototype.nextSubdivision=function(e){var i,n,s;return e=this.toTicks(e),this.state!==t.State.Started?0:(i=this.now(),n=this.getTicksAtTime(i),s=e-n%e,this._clock.nextTickTime(s,i))},t.Transport.prototype.syncSignal=function(e,i){var n,s;return i||(n=this.now(),i=0!==e.getValueAtTime(n)?e.getValueAtTime(n)/this.bpm.getValueAtTime(n):0),s=new t.Gain(i),this.bpm.chain(s,e._param),this._syncedSignals.push({ratio:s,signal:e,initial:e.value}),e.value=0,this},t.Transport.prototype.unsyncSignal=function(t){var e,i;for(e=this._syncedSignals.length-1;e>=0;e--)i=this._syncedSignals[e],i.signal===t&&(i.ratio.dispose(),i.signal.value=i.initial,this._syncedSignals.splice(e,1));return this},t.Transport.prototype.dispose=function(){return t.Emitter.prototype.dispose.call(this),this._clock.dispose(),this._clock=null,this._writable("bpm"),this.bpm=null,this._timeline.dispose(),this._timeline=null,this._repeatedEvents.dispose(),this._repeatedEvents=null,this};var e=t.Transport;return t.Transport=new e,t.Context.on("init",function(i){i.Transport instanceof e?t.Transport=i.Transport:t.Transport=new e,i.Transport=t.Transport}),t.Context.on("close",function(t){t.Transport instanceof e&&t.Transport.dispose()}),t.Transport}),t(function(t){return t.Volume=function(){var e=t.defaults(arguments,["volume"],t.Volume);t.AudioNode.call(this),this.output=this.input=new t.Gain(e.volume,t.Type.Decibels),this._unmutedVolume=e.volume,this.volume=this.output.gain,this._readOnly("volume"),this.mute=e.mute},t.extend(t.Volume,t.AudioNode),t.Volume.defaults={volume:0,mute:!1},Object.defineProperty(t.Volume.prototype,"mute",{get:function(){return this.volume.value===-1/0},set:function(t){!this.mute&&t?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!t&&(this.volume.value=this._unmutedVolume)}}),t.Volume.prototype.dispose=function(){return this.input.dispose(),t.AudioNode.prototype.dispose.call(this),this._writable("volume"),this.volume.dispose(),this.volume=null,this},t.Volume}),t(function(t){t.Master=function(){t.AudioNode.call(this),t.getContext(function(){this.createInsOuts(1,0),this._volume=this.output=new t.Volume,this.volume=this._volume.volume,this._readOnly("volume"),this.input.chain(this.output,this.context.destination)}.bind(this))},t.extend(t.Master,t.AudioNode),t.Master.defaults={volume:0,mute:!1},Object.defineProperty(t.Master.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.Master.prototype.chain=function(){this.input.disconnect(),this.input.chain.apply(this.input,arguments),arguments[arguments.length-1].connect(this.output)},t.Master.prototype.dispose=function(){t.AudioNode.prototype.dispose.call(this),this._writable("volume"),this._volume.dispose(),this._volume=null,this.volume=null},t.AudioNode.prototype.toMaster=function(){return this.connect(t.Master),this},window.AudioNode&&(AudioNode.prototype.toMaster=function(){return this.connect(t.Master),this});var e=t.Master;return t.Master=new e,t.Context.on("init",function(i){i.Master instanceof e?t.Master=i.Master:t.Master=new e,i.Master=t.Master}),t.Context.on("close",function(t){t.Master instanceof e&&t.Master.dispose()}),t.Master}),t(function(t){return t.Source=function(e){e=t.defaultArg(e,t.Source.defaults),t.AudioNode.call(this),this._volume=this.output=new t.Volume(e.volume),this.volume=this._volume.volume,this._readOnly("volume"),this._state=new t.TimelineState(t.State.Stopped),this._state.memory=100,this._synced=!1,this._scheduled=[],this._volume.output.output.channelCount=2,this._volume.output.output.channelCountMode="explicit",this.mute=e.mute},t.extend(t.Source,t.AudioNode),t.Source.defaults={volume:0,mute:!1},Object.defineProperty(t.Source.prototype,"state",{get:function(){return this._synced?t.Transport.state===t.State.Started?this._state.getValueAtTime(t.Transport.seconds):t.State.Stopped:this._state.getValueAtTime(this.now())}}),Object.defineProperty(t.Source.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.Source.prototype._start=t.noOp,t.Source.prototype.restart=t.noOp,
+t.Source.prototype._stop=t.noOp,t.Source.prototype.start=function(e,i,n){var s,o;return e=t.isUndef(e)&&this._synced?t.Transport.seconds:this.toSeconds(e),this._state.getValueAtTime(e)===t.State.Started?(this._state.cancel(e),this._state.setStateAtTime(t.State.Started,e),this.restart(e,i,n)):(this._state.setStateAtTime(t.State.Started,e),this._synced?(s=this._state.get(e),s.offset=t.defaultArg(i,0),s.duration=n,o=t.Transport.schedule(function(t){this._start(t,i,n)}.bind(this),e),this._scheduled.push(o),t.Transport.state===t.State.Started&&this._syncedStart(this.now(),t.Transport.seconds)):this._start.apply(this,arguments)),this},t.Source.prototype.stop=function(e){if(e=t.isUndef(e)&&this._synced?t.Transport.seconds:this.toSeconds(e),this._synced){var i=t.Transport.schedule(this._stop.bind(this),e);this._scheduled.push(i)}else this._stop.apply(this,arguments);return this._state.cancel(e),this._state.setStateAtTime(t.State.Stopped,e),this},t.Source.prototype.sync=function(){return this._synced=!0,this._syncedStart=function(e,i){var n,s,o;i>0&&(n=this._state.get(i))&&n.state===t.State.Started&&n.time!==i&&(s=i-this.toSeconds(n.time),n.duration&&(o=this.toSeconds(n.duration)-s),this._start(e,this.toSeconds(n.offset)+s,o))}.bind(this),this._syncedStop=function(e){var i=t.Transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(i)===t.State.Started&&this._stop(e)}.bind(this),t.Transport.on("start loopStart",this._syncedStart),t.Transport.on("stop pause loopEnd",this._syncedStop),this},t.Source.prototype.unsync=function(){var e,i;for(this._synced&&(t.Transport.off("stop pause loopEnd",this._syncedStop),t.Transport.off("start loopStart",this._syncedStart)),this._synced=!1,e=0;e0}}),Object.defineProperty(t.Buffer.prototype,"duration",{get:function(){return this._buffer?this._buffer.duration:0}}),Object.defineProperty(t.Buffer.prototype,"length",{get:function(){return this._buffer?this._buffer.length:0}}),Object.defineProperty(t.Buffer.prototype,"numberOfChannels",{get:function(){return this._buffer?this._buffer.numberOfChannels:0}}),t.Buffer.prototype.fromArray=function(t){var e,i=t[0].length>0,n=i?t.length:1,s=i?t[0].length:t.length,o=this.context.createBuffer(n,s,this.context.sampleRate);for(i||1!==n||(t=[t]),e=0;e=this._startTime&&(-1===this._stopTime||e<=this._stopTime)?t.State.Started:t.State.Stopped},t.OscillatorNode.prototype.start=function(t){if(-1!==this._startTime)throw new Error("cannot call OscillatorNode.start more than once");this._startTime=this.toSeconds(t),this._oscillator.start(this._startTime);var e=this.context.currentTime;return this._gainNode.gain.cancelScheduledValues(e),this._gainNode.gain.setValueAtTime(0,e),this._gainNode.gain.setValueAtTime(1,this._startTime),this},t.OscillatorNode.prototype.setPeriodicWave=function(t){return this._oscillator.setPeriodicWave(t),this},t.OscillatorNode.prototype.stop=function(t){return this.cancelStop(),this._stopTime=this.toSeconds(t),this._gainNode.gain.setValueAtTime(0,this._stopTime),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(function(){this._oscillator.stop(this.now()),this.onended()}.bind(this),this._stopTime-this.now()),this},t.OscillatorNode.prototype.cancelStop=function(){return-1!==this._startTime&&(this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this._gainNode.gain.setValueAtTime(1,Math.max(this.now(),this._startTime)),this.context.clearTimeout(this._timeout),this._stopTime=-1),this},Object.defineProperty(t.OscillatorNode.prototype,"type",{get:function(){return this._oscillator.type},set:function(t){this._oscillator.type=t}}),t.OscillatorNode.prototype.dispose=function(){return this.context.clearTimeout(this._timeout),t.AudioNode.prototype.dispose.call(this),this.onended=null,this._oscillator.disconnect(),this._oscillator=null,this._gainNode.dispose(),this._gainNode=null,this.frequency.dispose(),this.frequency=null,this.detune.dispose(),this.detune=null,this},t.OscillatorNode}),t(function(t){return t.Oscillator=function(){var e=t.defaults(arguments,["frequency","type"],t.Oscillator);t.Source.call(this,e),this._oscillator=null,this.frequency=new t.Signal(e.frequency,t.Type.Frequency),this.detune=new t.Signal(e.detune,t.Type.Cents),this._wave=null,this._partials=t.defaultArg(e.partials,[1]),this._phase=e.phase,this._type=null,this.type=e.type,this.phase=this._phase,this._readOnly(["frequency","detune"])},t.extend(t.Oscillator,t.Source),t.Oscillator.defaults={type:"sine",frequency:440,detune:0,phase:0,partials:[]},t.Oscillator.Type={Sine:"sine",Triangle:"triangle",Sawtooth:"sawtooth",Square:"square",Custom:"custom"},t.Oscillator.prototype._start=function(e){this._oscillator=new t.OscillatorNode,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),e=this.toSeconds(e),this._oscillator.start(e)},t.Oscillator.prototype._stop=function(t){return this._oscillator&&(t=this.toSeconds(t),this._oscillator.stop(t)),this},t.Oscillator.prototype.restart=function(t){return this._oscillator.cancelStop(),this._state.cancel(this.toSeconds(t)),this},t.Oscillator.prototype.syncFrequency=function(){return t.Transport.syncSignal(this.frequency),this},t.Oscillator.prototype.unsyncFrequency=function(){return t.Transport.unsyncSignal(this.frequency),this},Object.defineProperty(t.Oscillator.prototype,"type",{get:function(){return this._type},set:function(e){var i,n,s=[t.Oscillator.Type.Sine,t.Oscillator.Type.Square,t.Oscillator.Type.Triangle,t.Oscillator.Type.Sawtooth].includes(e);0===this._phase&&s?(this._wave=null,null!==this._oscillator&&this._oscillator.type):(i=this._getRealImaginary(e,this._phase),n=this.context.createPeriodicWave(i[0],i[1]),this._wave=n,null!==this._oscillator&&this._oscillator.setPeriodicWave(this._wave)),this._type=e}}),t.Oscillator.prototype._getRealImaginary=function(e,i){var n,s,o,r,a=4096,h=a/2,l=new Float32Array(h),u=new Float32Array(h),c=1;for(e===t.Oscillator.Type.Custom?(c=this._partials.length+1,h=c):(n=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e))&&(c=parseInt(n[2])+1,e=n[1],c=Math.max(c,2),h=c),s=1;s>1&1?-1:1):0;break;case t.Oscillator.Type.Custom:r=this._partials[s-1];break;default:throw new TypeError("Tone.Oscillator: invalid type: "+e)}0!==r?(l[s]=-r*Math.sin(i*s),u[s]=r*Math.cos(i*s)):(l[s]=0,u[s]=0)}return[l,u]},t.Oscillator.prototype._inverseFFT=function(t,e,i){var n,s=0,o=t.length;for(n=0;ns&&n=this.values.length&&(this.index=0):e===t.CtrlPattern.Type.Down?--this.index<0&&(this.index=this.values.length-1):e===t.CtrlPattern.Type.UpDown||e===t.CtrlPattern.Type.DownUp?(this._direction===t.CtrlPattern.Type.Up?this.index++:this.index--,this.index<0?(this.index=1,this._direction=t.CtrlPattern.Type.Up):this.index>=this.values.length&&(this.index=this.values.length-2,this._direction=t.CtrlPattern.Type.Down)):e===t.CtrlPattern.Type.Random?this.index=Math.floor(Math.random()*this.values.length):e===t.CtrlPattern.Type.RandomWalk?Math.random()<.5?(this.index--,this.index=Math.max(this.index,0)):(this.index++,this.index=Math.min(this.index,this.values.length-1)):e===t.CtrlPattern.Type.RandomOnce?++this.index>=this.values.length&&(this.index=0,this._shuffleValues()):e===t.CtrlPattern.Type.AlternateUp?(this._direction===t.CtrlPattern.Type.Up?(this.index+=2,this._direction=t.CtrlPattern.Type.Down):(this.index-=1,this._direction=t.CtrlPattern.Type.Up),this.index>=this.values.length&&(this.index=0,this._direction=t.CtrlPattern.Type.Up)):e===t.CtrlPattern.Type.AlternateDown&&(this._direction===t.CtrlPattern.Type.Up?(this.index+=1,this._direction=t.CtrlPattern.Type.Down):(this.index-=2,this._direction=t.CtrlPattern.Type.Up),this.index<0&&(this.index=this.values.length-1,this._direction=t.CtrlPattern.Type.Down)),this.value},t.CtrlPattern.prototype._shuffleValues=function(){var t,e,i=[];for(this._shuffled=[],t=0;t0;)e=i.splice(Math.floor(i.length*Math.random()),1),this._shuffled.push(e[0])},t.CtrlPattern.prototype.dispose=function(){this._shuffled=null,this.values=null},t.CtrlPattern}),t(function(t){return t.CtrlRandom=function(){var e=t.defaults(arguments,["min","max"],t.CtrlRandom);t.call(this),this.min=e.min,this.max=e.max,this.integer=e.integer},t.extend(t.CtrlRandom),t.CtrlRandom.defaults={min:0,max:1,integer:!1},Object.defineProperty(t.CtrlRandom.prototype,"value",{get:function(){var t=this.toSeconds(this.min),e=this.toSeconds(this.max),i=Math.random(),n=i*t+(1-i)*e;return this.integer&&(n=Math.floor(n)),n}}),t.CtrlRandom}),t(function(t){return t.Buffers=function(e){var i,n,s=Array.prototype.slice.call(arguments);s.shift(),i=t.defaults(s,["onload","baseUrl"],t.Buffers),t.call(this),this._buffers={},this.baseUrl=i.baseUrl,this._loadingCount=0;for(n in e)this._loadingCount++,this.add(n,e[n],this._bufferLoaded.bind(this,i.onload))},t.extend(t.Buffers),t.Buffers.defaults={onload:t.noOp,baseUrl:""},t.Buffers.prototype.has=function(t){return this._buffers.hasOwnProperty(t)},t.Buffers.prototype.get=function(t){if(this.has(t))return this._buffers[t];throw new Error("Tone.Buffers: no buffer named "+t)},t.Buffers.prototype._bufferLoaded=function(t){0===--this._loadingCount&&t&&t(this)},Object.defineProperty(t.Buffers.prototype,"loaded",{get:function(){var t,e,i=!0;for(t in this._buffers)e=this.get(t),i=i&&e.loaded;return i}}),t.Buffers.prototype.add=function(e,i,n){return n=t.defaultArg(n,t.noOp),i instanceof t.Buffer?(this._buffers[e]=i,n(this)):i instanceof AudioBuffer?(this._buffers[e]=new t.Buffer(i),n(this)):t.isString(i)&&(this._buffers[e]=new t.Buffer(this.baseUrl+i,n)),this},t.Buffers.prototype.dispose=function(){t.prototype.dispose.call(this);for(var e in this._buffers)this._buffers[e].dispose();return this._buffers=null,this},t.Buffers}),t(function(t){var e={};return t.prototype.send=function(i,n){e.hasOwnProperty(i)||(e[i]=this.context.createGain()),n=t.defaultArg(n,0);var s=new t.Gain(n,t.Type.Decibels);return this.connect(s),s.connect(e[i]),s},t.prototype.receive=function(t,i){return e.hasOwnProperty(t)||(e[t]=this.context.createGain()),e[t].connect(this,0,i),this},t.Context.on("init",function(t){t.Buses?e=t.Buses:(e={},t.Buses=e)}),t}),t(function(t){return t.Draw=function(){t.call(this),this._events=new t.Timeline,this.expiration=.25,this.anticipation=.008,this._boundDrawLoop=this._drawLoop.bind(this)},t.extend(t.Draw),t.Draw.prototype.schedule=function(t,e){return this._events.add({callback:t,time:this.toSeconds(e)}),1===this._events.length&&requestAnimationFrame(this._boundDrawLoop),this},t.Draw.prototype.cancel=function(t){return this._events.cancel(this.toSeconds(t)),this},t.Draw.prototype._drawLoop=function(){for(var e,i=t.now();this._events.length&&this._events.peek().time-this.anticipation<=i;)e=this._events.shift(),i-e.time<=this.expiration&&e.callback();this._events.length>0&&requestAnimationFrame(this._boundDrawLoop)},t.Draw=new t.Draw,t.Draw}),t(function(t){t.Listener=function(){t.call(this),this._orientation=[0,0,0,0,0,0],this._position=[0,0,0],t.getContext(function(){this.set(e.defaults)}.bind(this))},t.extend(t.Listener),t.Listener.defaults={positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:1,upX:0,upY:1,upZ:0},t.Listener.prototype._rampTimeConstant=.01,t.Listener.prototype.setPosition=function(t,e,i){if(this.context.listener.positionX){var n=this.now();this.context.listener.positionX.setTargetAtTime(t,n,this._rampTimeConstant),this.context.listener.positionY.setTargetAtTime(e,n,this._rampTimeConstant),this.context.listener.positionZ.setTargetAtTime(i,n,this._rampTimeConstant)}else this.context.listener.setPosition(t,e,i);return this._position=Array.prototype.slice.call(arguments),this},t.Listener.prototype.setOrientation=function(t,e,i,n,s,o){if(this.context.listener.forwardX){var r=this.now();this.context.listener.forwardX.setTargetAtTime(t,r,this._rampTimeConstant),this.context.listener.forwardY.setTargetAtTime(e,r,this._rampTimeConstant),this.context.listener.forwardZ.setTargetAtTime(i,r,this._rampTimeConstant),this.context.listener.upX.setTargetAtTime(n,r,this._rampTimeConstant),this.context.listener.upY.setTargetAtTime(s,r,this._rampTimeConstant),this.context.listener.upZ.setTargetAtTime(o,r,this._rampTimeConstant)}else this.context.listener.setOrientation(t,e,i,n,s,o);return this._orientation=Array.prototype.slice.call(arguments),this},Object.defineProperty(t.Listener.prototype,"positionX",{set:function(t){this._position[0]=t,this.setPosition.apply(this,this._position)},get:function(){return this._position[0]}}),Object.defineProperty(t.Listener.prototype,"positionY",{set:function(t){this._position[1]=t,this.setPosition.apply(this,this._position)},get:function(){return this._position[1]}}),Object.defineProperty(t.Listener.prototype,"positionZ",{set:function(t){this._position[2]=t,this.setPosition.apply(this,this._position)},get:function(){return this._position[2]}}),Object.defineProperty(t.Listener.prototype,"forwardX",{set:function(t){this._orientation[0]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[0]}}),Object.defineProperty(t.Listener.prototype,"forwardY",{set:function(t){this._orientation[1]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[1]}}),Object.defineProperty(t.Listener.prototype,"forwardZ",{set:function(t){this._orientation[2]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[2]}}),Object.defineProperty(t.Listener.prototype,"upX",{set:function(t){this._orientation[3]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[3]}}),Object.defineProperty(t.Listener.prototype,"upY",{set:function(t){this._orientation[4]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[4]}}),Object.defineProperty(t.Listener.prototype,"upZ",{set:function(t){this._orientation[5]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[5]}}),t.Listener.prototype.dispose=function(){return this._orientation=null,this._position=null,this};var e=t.Listener;return t.Listener=new e,t.Context.on("init",function(i){i.Listener instanceof e?t.Listener=i.Listener:t.Listener=new e,i.Listener=t.Listener}),t.Listener}),t(function(t){function e(i,n,s,o){var r,a;return o=t.defaultArg(o,0),r=new t.OfflineContext(2,n,s),t.context=r,a=i(t.Transport),r.currentTime>0&&o<1e3?e(i,n,s,++o):{response:a,context:r}}return t.Offline=function(i,n){var s,o=t.context.sampleRate,r=t.context,a=e(i,n,o),h=a.response,l=a.context;return s=h instanceof Promise?h.then(function(){return l.render()}):l.render(),t.context=r,s.then(function(e){return new t.Buffer(e)})},t.Offline}),t(function(t){return t.Effect=function(){var e=t.defaults(arguments,["wet"],t.Effect);t.AudioNode.call(this),this.createInsOuts(1,1),this._dryWet=new t.CrossFade(e.wet),this.wet=this._dryWet.fade,this.effectSend=new t.Gain,this.effectReturn=new t.Gain,this.input.connect(this._dryWet.a),this.input.connect(this.effectSend),this.effectReturn.connect(this._dryWet.b),this._dryWet.connect(this.output),this._readOnly(["wet"])},t.extend(t.Effect,t.AudioNode),t.Effect.defaults={wet:1},t.Effect.prototype.connectEffect=function(t){return this.effectSend.chain(t,this.effectReturn),this},t.Effect.prototype.dispose=function(){return t.AudioNode.prototype.dispose.call(this),this._dryWet.dispose(),this._dryWet=null,this.effectSend.dispose(),this.effectSend=null,this.effectReturn.dispose(),this.effectReturn=null,this._writable(["wet"]),this.wet=null,this},t.Effect}),t(function(t){return t.AutoFilter=function(){var e=t.defaults(arguments,["frequency","baseFrequency","octaves"],t.AutoFilter);t.Effect.call(this,e),this._lfo=new t.LFO({frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.filter=new t.Filter(e.filter),this._octaves=0,this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.type=e.type,this._readOnly(["frequency","depth"]),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency},t.extend(t.AutoFilter,t.Effect),t.AutoFilter.defaults={frequency:1,type:"sine",depth:1,baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}},t.AutoFilter.prototype.start=function(t){return this._lfo.start(t),this},t.AutoFilter.prototype.stop=function(t){return this._lfo.stop(t),this},t.AutoFilter.prototype.sync=function(t){return this._lfo.sync(t),this},t.AutoFilter.prototype.unsync=function(){return this._lfo.unsync(),this},Object.defineProperty(t.AutoFilter.prototype,"type",{get:function(){return this._lfo.type},set:function(t){this._lfo.type=t}}),Object.defineProperty(t.AutoFilter.prototype,"baseFrequency",{get:function(){return this._lfo.min},set:function(t){this._lfo.min=this.toFrequency(t),this.octaves=this._octaves}}),Object.defineProperty(t.AutoFilter.prototype,"octaves",{get:function(){return this._octaves},set:function(t){this._octaves=t,this._lfo.max=this.baseFrequency*Math.pow(2,t)}}),t.AutoFilter.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this._lfo.dispose(),this._lfo=null,this.filter.dispose(),this.filter=null,this._writable(["frequency","depth"]),this.frequency=null,this.depth=null,this},t.AutoFilter}),t(function(t){return t.AutoPanner=function(){var e=t.defaults(arguments,["frequency"],t.AutoPanner);t.Effect.call(this,e),this._lfo=new t.LFO({frequency:e.frequency,amplitude:e.depth,min:-1,max:1}),this.depth=this._lfo.amplitude,this._panner=new t.Panner,this.frequency=this._lfo.frequency,this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this.type=e.type,this._readOnly(["depth","frequency"])},t.extend(t.AutoPanner,t.Effect),t.AutoPanner.defaults={frequency:1,type:"sine",depth:1},t.AutoPanner.prototype.start=function(t){return this._lfo.start(t),this},t.AutoPanner.prototype.stop=function(t){return this._lfo.stop(t),this},t.AutoPanner.prototype.sync=function(t){return this._lfo.sync(t),this},t.AutoPanner.prototype.unsync=function(){return this._lfo.unsync(),this},Object.defineProperty(t.AutoPanner.prototype,"type",{get:function(){return this._lfo.type},set:function(t){this._lfo.type=t}}),t.AutoPanner.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this._lfo.dispose(),this._lfo=null,this._panner.dispose(),this._panner=null,this._writable(["depth","frequency"]),this.frequency=null,this.depth=null,this},t.AutoPanner}),t(function(t){return t.AutoWah=function(){var e=t.defaults(arguments,["baseFrequency","octaves","sensitivity"],t.AutoWah);t.Effect.call(this,e),this.follower=new t.Follower(e.follower),this._sweepRange=new t.ScaleExp(0,1,.5),this._baseFrequency=e.baseFrequency,this._octaves=e.octaves,this._inputBoost=new t.Gain,this._bandpass=new t.Filter({rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new t.Filter(0,"peaking"),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this.follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,this._readOnly(["gain","Q"])},t.extend(t.AutoWah,t.Effect),t.AutoWah.defaults={baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:{attack:.3,release:.5}},Object.defineProperty(t.AutoWah.prototype,"octaves",{get:function(){return this._octaves},set:function(t){this._octaves=t,this._setSweepRange()}}),Object.defineProperty(t.AutoWah.prototype,"baseFrequency",{get:function(){return this._baseFrequency},set:function(t){this._baseFrequency=t,this._setSweepRange()}}),Object.defineProperty(t.AutoWah.prototype,"sensitivity",{get:function(){return t.gainToDb(1/this._inputBoost.gain.value)},set:function(e){this._inputBoost.gain.value=1/t.dbToGain(e)}}),t.AutoWah.prototype._setSweepRange=function(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)},t.AutoWah.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this.follower.dispose(),this.follower=null,this._sweepRange.dispose(),this._sweepRange=null,this._bandpass.dispose(),this._bandpass=null,this._peaking.dispose(),this._peaking=null,this._inputBoost.dispose(),this._inputBoost=null,this._writable(["gain","Q"]),this.gain=null,this.Q=null,this},t.AutoWah}),t(function(t){return t.Modulo=function(e){t.SignalBase.call(this),this.createInsOuts(1,0),this._shaper=new t.WaveShaper(Math.pow(2,16)),this._multiply=new t.Multiply,this._subtract=this.output=new t.Subtract,this._modSignal=new t.Signal(e),this.input.fan(this._shaper,this._subtract),this._modSignal.connect(this._multiply,0,0),this._shaper.connect(this._multiply,0,1),this._multiply.connect(this._subtract,0,1),this._setWaveShaper(e)},t.extend(t.Modulo,t.SignalBase),t.Modulo.prototype._setWaveShaper=function(t){this._shaper.setMap(function(e){return Math.floor((e+1e-4)/t)})},Object.defineProperty(t.Modulo.prototype,"value",{get:function(){return this._modSignal.value},set:function(t){this._modSignal.value=t,this._setWaveShaper(t)}}),t.Modulo.prototype.dispose=function(){return t.SignalBase.prototype.dispose.call(this),this._shaper.dispose(),this._shaper=null,this._multiply.dispose(),this._multiply=null,this._subtract.dispose(),this._subtract=null,this._modSignal.dispose(),this._modSignal=null,this},t.Modulo}),t(function(t){return t.BitCrusher=function(){var e,i=t.defaults(arguments,["bits"],t.BitCrusher);t.Effect.call(this,i),e=1/Math.pow(2,i.bits-1),this._subtract=new t.Subtract,this._modulo=new t.Modulo(e),this._bits=i.bits,this.effectSend.fan(this._subtract,this._modulo),this._modulo.connect(this._subtract,0,1),this._subtract.connect(this.effectReturn)},t.extend(t.BitCrusher,t.Effect),t.BitCrusher.defaults={bits:4},Object.defineProperty(t.BitCrusher.prototype,"bits",{get:function(){return this._bits},set:function(t){this._bits=t;var e=1/Math.pow(2,t-1);this._modulo.value=e}}),t.BitCrusher.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this._subtract.dispose(),this._subtract=null,this._modulo.dispose(),this._modulo=null,this},t.BitCrusher}),t(function(t){return t.Chebyshev=function(){var e=t.defaults(arguments,["order"],t.Chebyshev);t.Effect.call(this,e),this._shaper=new t.WaveShaper(4096),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample},t.extend(t.Chebyshev,t.Effect),t.Chebyshev.defaults={order:1,oversample:"none"},t.Chebyshev.prototype._getCoefficient=function(t,e,i){return i.hasOwnProperty(e)?i[e]:(i[e]=0===e?0:1===e?t:2*t*this._getCoefficient(t,e-1,i)-this._getCoefficient(t,e-2,i),i[e])},Object.defineProperty(t.Chebyshev.prototype,"order",{get:function(){return this._order},set:function(t){var e,i,n,s;for(this._order=t,e=new Array(4096),i=e.length,n=0;n=this._startTime&&!this._sourceStopped?t.State.Started:t.State.Stopped},t.BufferSource.prototype.start=function(e,i,n,s,o){var r,a,h,l;if(-1!==this._startTime)throw new Error("Tone.BufferSource can only be started once.");if(!this.buffer.loaded)throw new Error("Tone.BufferSource: buffer is either not set or not loaded.");return e=this.toSeconds(e),i=this.loop?t.defaultArg(i,this.loopStart):t.defaultArg(i,0),i=this.toSeconds(i),s=t.defaultArg(s,1),this._gain=s,o=this.toSeconds(t.defaultArg(o,this.fadeIn)),this.fadeIn=o,o>0?(this._gainNode.gain.setValueAtTime(0,e),"linear"===this.curve?this._gainNode.gain.linearRampToValueAtTime(this._gain,e+o):this._gainNode.gain.exponentialApproachValueAtTime(this._gain,e,o)):this._gainNode.gain.setValueAtTime(s,e),this._startTime=e,r=this.toSeconds(t.defaultArg(n,this.buffer.duration-i%this.buffer.duration)),r=Math.max(r,0),t.isDefined(n)&&(this.loop||(r=Math.min(r,this.buffer.duration-i%this.buffer.duration)),this.stop(e+r,this.fadeOut)),this.loop&&(a=this.loopEnd||this.buffer.duration,h=this.loopStart,l=a-h,i>=a&&(i=(i-h)%l+h)),this._source.buffer=this.buffer.get(),this._source.loopEnd=this.loopEnd||this.buffer.duration,ithis.sampleTime?(this._gainNode.gain.setValueAtTime(this._gain,s),"linear"===this.curve?this._gainNode.gain.linearRampToValueAtTime(0,e):this._gainNode.gain.exponentialApproachValueAtTime(0,s,i)):this._gainNode.gain.setValueAtTime(0,e),t.context.clearTimeout(this._onendedTimeout),this._onendedTimeout=t.context.setTimeout(this._onended.bind(this),this._stopTime-this.now()),this)},t.BufferSource.prototype.cancelStop=function(){if(-1!==this._startTime&&!this._sourceStopped){var t=this.toSeconds(this.fadeIn);this._gainNode.gain.cancelScheduledValues(this._startTime+t+this.sampleTime),this._gainNode.gain.setValueAtTime(1,Math.max(this.now(),this._startTime+t+this.sampleTime)),this.context.clearTimeout(this._onendedTimeout),this._stopTime=-1}return this},t.BufferSource.prototype._onended=function(){if(!this._sourceStopped){this._sourceStopped=!0;var t="exponential"===this.curve?2*this.fadeOut:0;this._sourceStarted&&-1!==this._stopTime&&this._source.stop(this._stopTime+t),this.onended(this)}},Object.defineProperty(t.BufferSource.prototype,"loopStart",{get:function(){return this._source.loopStart},set:function(t){this._source.loopStart=this.toSeconds(t)}}),Object.defineProperty(t.BufferSource.prototype,"loopEnd",{get:function(){return this._source.loopEnd},set:function(t){this._source.loopEnd=this.toSeconds(t)}}),Object.defineProperty(t.BufferSource.prototype,"buffer",{get:function(){return this._buffer},set:function(t){this._buffer.set(t)}}),Object.defineProperty(t.BufferSource.prototype,"loop",{get:function(){return this._source.loop},set:function(t){this._source.loop=t,this.cancelStop()}}),t.BufferSource.prototype.dispose=function(){return t.AudioNode.prototype.dispose.call(this),this.onended=null,this._source.onended=null,this._source.disconnect(),this._source=null,this._gainNode.dispose(),this._gainNode=null,this._buffer.dispose(),this._buffer=null,this._startTime=-1,this.playbackRate=null,t.context.clearTimeout(this._onendedTimeout),this},t.BufferSource}),t(function(t){function e(){for(var e in s)o[e]=(new t.Buffer).fromArray(s[e])}var i,n,s,o;return t.Noise=function(){var e=t.defaults(arguments,["type"],t.Noise);t.Source.call(this,e),this._source=null,this._type=e.type,this._playbackRate=e.playbackRate},t.extend(t.Noise,t.Source),t.Noise.defaults={type:"white",playbackRate:1},Object.defineProperty(t.Noise.prototype,"type",{get:function(){return this._type},set:function(e){if(this._type!==e){if(!(e in o))throw new TypeError("Tone.Noise: invalid type: "+e);if(this._type=e,this.state===t.State.Started){var i=this.now();this._stop(i),this._start(i)}}}}),Object.defineProperty(t.Noise.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._source&&(this._source.playbackRate.value=t)}}),t.Noise.prototype._start=function(e){var i=o[this._type];this._source=new t.BufferSource(i).connect(this.output),this._source.loop=!0,this._source.playbackRate.value=this._playbackRate,this._source.start(this.toSeconds(e),Math.random()*(i.duration-.001))},t.Noise.prototype._stop=function(t){this._source&&(this._source.stop(this.toSeconds(t)),this._source=null)},t.Noise.prototype.restart=function(t){this._stop(t),this._start(t)},t.Noise.prototype.dispose=function(){return t.Source.prototype.dispose.call(this),null!==this._source&&(this._source.disconnect(),this._source=null),this._buffer=null,this},i=220500,n=2,s={pink:function(){var t,e,s,o,r,a,h,l,u,c,p,d=[];for(t=0;tthis.probability)return;this.humanize&&(i=.02,t.isBoolean(this.humanize)||(i=this.toSeconds(this.humanize)),e+=(2*Math.random()-1)*i),this.callback(e,this.value)}},t.Event.prototype._getLoopDuration=function(){return Math.round((this._loopEnd-this._loopStart)/this._playbackRate)},Object.defineProperty(t.Event.prototype,"loop",{get:function(){return this._loop},set:function(t){this._loop=t,this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"loopEnd",{get:function(){return t.Ticks(this._loopEnd).toSeconds()},set:function(t){this._loopEnd=this.toTicks(t),this._loop&&this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"loopStart",{get:function(){return t.Ticks(this._loopStart).toSeconds()},set:function(t){this._loopStart=this.toTicks(t),this._loop&&this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"progress",{get:function(){var e,i,n;return this._loop?(e=t.Transport.ticks,i=this._state.get(e),null!==i&&i.state===t.State.Started?(n=this._getLoopDuration(),(e-i.time)%n/n):0):0}}),t.Event.prototype.dispose=function(){this.cancel(),this._state.dispose(),this._state=null,this.callback=null,this.value=null},t.Event}),t(function(t){return t.Loop=function(){var e=t.defaults(arguments,["callback","interval"],t.Loop);t.call(this),this._event=new t.Event({callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability}),this.callback=e.callback,this.iterations=e.iterations},t.extend(t.Loop),t.Loop.defaults={interval:"4n",callback:t.noOp,playbackRate:1,iterations:1/0,probability:!0,mute:!1},t.Loop.prototype.start=function(t){return this._event.start(t),this},t.Loop.prototype.stop=function(t){return this._event.stop(t),this},t.Loop.prototype.cancel=function(t){return this._event.cancel(t),this},t.Loop.prototype._tick=function(t){this.callback(t)},Object.defineProperty(t.Loop.prototype,"state",{get:function(){return this._event.state}}),Object.defineProperty(t.Loop.prototype,"progress",{get:function(){return this._event.progress}}),Object.defineProperty(t.Loop.prototype,"interval",{get:function(){return this._event.loopEnd},set:function(t){this._event.loopEnd=t}}),Object.defineProperty(t.Loop.prototype,"playbackRate",{get:function(){return this._event.playbackRate},set:function(t){this._event.playbackRate=t}}),Object.defineProperty(t.Loop.prototype,"humanize",{get:function(){return this._event.humanize},set:function(t){this._event.humanize=t}}),Object.defineProperty(t.Loop.prototype,"probability",{get:function(){return this._event.probability},set:function(t){this._event.probability=t}}),Object.defineProperty(t.Loop.prototype,"mute",{get:function(){return this._event.mute},set:function(t){this._event.mute=t}}),Object.defineProperty(t.Loop.prototype,"iterations",{get:function(){return!0===this._event.loop?1/0:this._event.loop},set:function(t){this._event.loop=t===1/0||t}}),t.Loop.prototype.dispose=function(){this._event.dispose(),this._event=null,this.callback=null},t.Loop}),t(function(t){return t.Part=function(){var e,i=t.defaults(arguments,["callback","events"],t.Part);for(t.Event.call(this,i),this._events=[],e=0;e=this._loopStart&&e.startOffset=n&&(e.loop=!1,e.start(t.Ticks(i))):e.startOffset>=n&&e.start(t.Ticks(i))},Object.defineProperty(t.Part.prototype,"startOffset",{get:function(){return this._startOffset},set:function(t){this._startOffset=t,this._forEach(function(t){t.startOffset+=this._startOffset})}}),t.Part.prototype.stop=function(e){var i=this.toTicks(e);return this._state.cancel(i),this._state.setStateAtTime(t.State.Stopped,i),this._forEach(function(t){t.stop(e)}),this},t.Part.prototype.at=function(e,i){var n,s,o;for(e=t.TransportTime(e),n=t.Ticks(1).toSeconds(),s=0;s=0;n--)s=this._events[n],s instanceof t.Part?s.remove(e,i):s.startOffset===e&&(t.isUndef(i)||t.isDefined(i)&&s.value===i)&&(this._events.splice(n,1),s.dispose());return this},t.Part.prototype.removeAll=function(){return this._forEach(function(t){t.dispose()}),this._events=[],this},t.Part.prototype.cancel=function(t){return this._forEach(function(e){e.cancel(t)}),this._state.cancel(this.toTicks(t)),this},t.Part.prototype._forEach=function(e,i){var n,s;if(this._events)for(i=t.defaultArg(i,this),n=this._events.length-1;n>=0;n--)s=this._events[n],s instanceof t.Part?s._forEach(e,i):e.call(i,s);return this},t.Part.prototype._setAll=function(t,e){this._forEach(function(i){i[t]=e})},t.Part.prototype._tick=function(t,e){this.mute||this.callback(t,e)},t.Part.prototype._testLoopBoundries=function(e){e.startOffset=this._loopEnd?e.cancel(0):e.state===t.State.Stopped&&this._restartEvent(e)},Object.defineProperty(t.Part.prototype,"probability",{get:function(){return this._probability},set:function(t){this._probability=t,this._setAll("probability",t)}}),Object.defineProperty(t.Part.prototype,"humanize",{get:function(){return this._humanize},set:function(t){this._humanize=t,this._setAll("humanize",t)}}),Object.defineProperty(t.Part.prototype,"loop",{get:function(){return this._loop},set:function(t){this._loop=t,this._forEach(function(e){e._loopStart=this._loopStart,e._loopEnd=this._loopEnd,e.loop=t,this._testLoopBoundries(e)})}}),Object.defineProperty(t.Part.prototype,"loopEnd",{get:function(){return t.Ticks(this._loopEnd).toSeconds()},set:function(t){this._loopEnd=this.toTicks(t),this._loop&&this._forEach(function(e){e.loopEnd=t,this._testLoopBoundries(e)})}}),Object.defineProperty(t.Part.prototype,"loopStart",{get:function(){return t.Ticks(this._loopStart).toSeconds()},set:function(t){this._loopStart=this.toTicks(t),this._loop&&this._forEach(function(t){t.loopStart=this.loopStart,this._testLoopBoundries(t)})}}),Object.defineProperty(t.Part.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._setAll("playbackRate",t)}}),Object.defineProperty(t.Part.prototype,"length",{get:function(){return this._events.length}}),t.Part.prototype.dispose=function(){return this.removeAll(),this._state.dispose(),this._state=null,this.callback=null,this._events=null,this},t.Part}),t(function(t){return t.Pattern=function(){var e=t.defaults(arguments,["callback","values","pattern"],t.Pattern);t.Loop.call(this,e),this._pattern=new t.CtrlPattern({values:e.values,type:e.pattern,index:e.index})},t.extend(t.Pattern,t.Loop),t.Pattern.defaults={pattern:t.CtrlPattern.Type.Up,callback:t.noOp,values:[]},t.Pattern.prototype._tick=function(t){
+this.callback(t,this._pattern.value),this._pattern.next()},Object.defineProperty(t.Pattern.prototype,"index",{get:function(){return this._pattern.index},set:function(t){this._pattern.index=t}}),Object.defineProperty(t.Pattern.prototype,"values",{get:function(){return this._pattern.values},set:function(t){this._pattern.values=t}}),Object.defineProperty(t.Pattern.prototype,"value",{get:function(){return this._pattern.value}}),Object.defineProperty(t.Pattern.prototype,"pattern",{get:function(){return this._pattern.type},set:function(t){this._pattern.type=t}}),t.Pattern.prototype.dispose=function(){t.Loop.prototype.dispose.call(this),this._pattern.dispose(),this._pattern=null},t.Pattern}),t(function(t){return t.Sequence=function(){var e,i=t.defaults(arguments,["callback","events","subdivision"],t.Sequence),n=i.events;if(delete i.events,t.Part.call(this,i),this._subdivision=this.toTicks(i.subdivision),t.isUndef(i.loopEnd)&&t.isDefined(n)&&(this._loopEnd=n.length*this._subdivision),this._loop=!0,t.isDefined(n))for(e=0;e1&&(e=-t/2,i=t/(this._oscillators.length-1),this._forEach(function(t,n){t.detune.value=e+i*n}))}}),Object.defineProperty(t.FatOscillator.prototype,"count",{get:function(){return this._oscillators.length},set:function(e){var i,n;if(e=Math.max(e,1),this._oscillators.length!==e){for(this._forEach(function(t){t.dispose()}),this._oscillators=[],i=0;i0&&this.getLevelAtTime(e)>.05){var i=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(t,i,e)}else this.frequency.setValueAtTime(t,e);return this},t.Monophonic}),t(function(t){return t.Synth=function(e){e=t.defaultArg(e,t.Synth.defaults),t.Monophonic.call(this,e),this.oscillator=new t.OmniOscillator(e.oscillator),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new t.AmplitudeEnvelope(e.envelope),this.oscillator.chain(this.envelope,this.output),this._readOnly(["oscillator","frequency","detune","envelope"])},t.extend(t.Synth,t.Monophonic),t.Synth.defaults={oscillator:{type:"triangle"},envelope:{attack:.005,decay:.1,sustain:.3,release:1}},t.Synth.prototype._triggerEnvelopeAttack=function(t,e){return this.envelope.triggerAttack(t,e),this.oscillator.start(t),0===this.envelope.sustain&&this.oscillator.stop(t+this.envelope.attack+this.envelope.decay),this},t.Synth.prototype._triggerEnvelopeRelease=function(t){return t=this.toSeconds(t),this.envelope.triggerRelease(t),this.oscillator.stop(t+this.envelope.release),this},t.Synth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["oscillator","frequency","detune","envelope"]),this.oscillator.dispose(),this.oscillator=null,this.envelope.dispose(),this.envelope=null,this.frequency=null,this.detune=null,this},t.Synth}),t(function(t){return t.AMSynth=function(e){e=t.defaultArg(e,t.AMSynth.defaults),t.Monophonic.call(this,e),this._carrier=new t.Synth,this._carrier.volume.value=-10,this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope.set(e.envelope),this._modulator=new t.Synth,this._modulator.volume.value=-10,this.modulation=this._modulator.oscillator.set(e.modulation),this.modulationEnvelope=this._modulator.envelope.set(e.modulationEnvelope),this.frequency=new t.Signal(440,t.Type.Frequency),this.detune=new t.Signal(e.detune,t.Type.Cents),this.harmonicity=new t.Multiply(e.harmonicity),this.harmonicity.units=t.Type.Positive,this._modulationScale=new t.AudioToGain,this._modulationNode=new t.Gain,this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),this._readOnly(["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])},t.extend(t.AMSynth,t.Monophonic),t.AMSynth.defaults={harmonicity:3,detune:0,oscillator:{type:"sine"},envelope:{attack:.01,decay:.01,sustain:1,release:.5},modulation:{type:"square"},modulationEnvelope:{attack:.5,decay:0,sustain:1,release:.5}},t.AMSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this._carrier._triggerEnvelopeAttack(t,e),this._modulator._triggerEnvelopeAttack(t),this},t.AMSynth.prototype._triggerEnvelopeRelease=function(t){return this._carrier._triggerEnvelopeRelease(t),this._modulator._triggerEnvelopeRelease(t),this},t.AMSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"]),this._carrier.dispose(),this._carrier=null,this._modulator.dispose(),this._modulator=null,this.frequency.dispose(),this.frequency=null,this.detune.dispose(),this.detune=null,this.harmonicity.dispose(),this.harmonicity=null,this._modulationScale.dispose(),this._modulationScale=null,this._modulationNode.dispose(),this._modulationNode=null,this.oscillator=null,this.envelope=null,this.modulationEnvelope=null,this.modulation=null,this},t.AMSynth}),t(function(t){return t.MonoSynth=function(e){e=t.defaultArg(e,t.MonoSynth.defaults),t.Monophonic.call(this,e),this.oscillator=new t.OmniOscillator(e.oscillator),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new t.Filter(e.filter),this.filterEnvelope=new t.FrequencyEnvelope(e.filterEnvelope),this.envelope=new t.AmplitudeEnvelope(e.envelope),this.oscillator.chain(this.filter,this.envelope,this.output),this.filterEnvelope.connect(this.filter.frequency),this._readOnly(["oscillator","frequency","detune","filter","filterEnvelope","envelope"])},t.extend(t.MonoSynth,t.Monophonic),t.MonoSynth.defaults={frequency:"C4",detune:0,oscillator:{type:"square"},filter:{Q:6,type:"lowpass",rolloff:-24},envelope:{attack:.005,decay:.1,sustain:.9,release:1},filterEnvelope:{attack:.06,decay:.2,sustain:.5,release:2,baseFrequency:200,octaves:7,exponent:2}},t.MonoSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this.envelope.triggerAttack(t,e),this.filterEnvelope.triggerAttack(t),this.oscillator.start(t),0===this.envelope.sustain&&this.oscillator.stop(t+this.envelope.attack+this.envelope.decay),this},t.MonoSynth.prototype._triggerEnvelopeRelease=function(t){return this.envelope.triggerRelease(t),this.filterEnvelope.triggerRelease(t),this.oscillator.stop(t+this.envelope.release),this},t.MonoSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["oscillator","frequency","detune","filter","filterEnvelope","envelope"]),this.oscillator.dispose(),this.oscillator=null,this.envelope.dispose(),this.envelope=null,this.filterEnvelope.dispose(),this.filterEnvelope=null,this.filter.dispose(),this.filter=null,this.frequency=null,this.detune=null,this},t.MonoSynth}),t(function(t){return t.DuoSynth=function(e){e=t.defaultArg(e,t.DuoSynth.defaults),t.Monophonic.call(this,e),this.voice0=new t.MonoSynth(e.voice0),this.voice0.volume.value=-10,this.voice1=new t.MonoSynth(e.voice1),this.voice1.volume.value=-10,this._vibrato=new t.LFO(e.vibratoRate,-50,50),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new t.Gain(e.vibratoAmount,t.Type.Positive),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new t.Signal(440,t.Type.Frequency),this.harmonicity=new t.Multiply(e.harmonicity),this.harmonicity.units=t.Type.Positive,this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),this._readOnly(["voice0","voice1","frequency","vibratoAmount","vibratoRate"])},t.extend(t.DuoSynth,t.Monophonic),t.DuoSynth.defaults={vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:{volume:-10,portamento:0,oscillator:{type:"sine"},filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}},voice1:{volume:-10,portamento:0,oscillator:{type:"sine"},filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}},t.DuoSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this.voice0._triggerEnvelopeAttack(t,e),this.voice1._triggerEnvelopeAttack(t,e),this},t.DuoSynth.prototype._triggerEnvelopeRelease=function(t){return this.voice0._triggerEnvelopeRelease(t),this.voice1._triggerEnvelopeRelease(t),this},t.DuoSynth.prototype.getLevelAtTime=function(t){return(this.voice0.getLevelAtTime(t)+this.voice1.getLevelAtTime(t))/2},t.DuoSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["voice0","voice1","frequency","vibratoAmount","vibratoRate"]),this.voice0.dispose(),this.voice0=null,this.voice1.dispose(),this.voice1=null,this.frequency.dispose(),this.frequency=null,this._vibratoGain.dispose(),this._vibratoGain=null,this._vibrato=null,this.harmonicity.dispose(),this.harmonicity=null,this.vibratoAmount.dispose(),this.vibratoAmount=null,this.vibratoRate=null,this},t.DuoSynth}),t(function(t){return t.FMSynth=function(e){e=t.defaultArg(e,t.FMSynth.defaults),t.Monophonic.call(this,e),this._carrier=new t.Synth(e.carrier),this._carrier.volume.value=-10,this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope.set(e.envelope),this._modulator=new t.Synth(e.modulator),this._modulator.volume.value=-10,this.modulation=this._modulator.oscillator.set(e.modulation),this.modulationEnvelope=this._modulator.envelope.set(e.modulationEnvelope),this.frequency=new t.Signal(440,t.Type.Frequency),this.detune=new t.Signal(e.detune,t.Type.Cents),this.harmonicity=new t.Multiply(e.harmonicity),this.harmonicity.units=t.Type.Positive,this.modulationIndex=new t.Multiply(e.modulationIndex),this.modulationIndex.units=t.Type.Positive,this._modulationNode=new t.Gain(0),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this._readOnly(["frequency","harmonicity","modulationIndex","oscillator","envelope","modulation","modulationEnvelope","detune"])},t.extend(t.FMSynth,t.Monophonic),t.FMSynth.defaults={harmonicity:3,modulationIndex:10,detune:0,oscillator:{type:"sine"},envelope:{attack:.01,decay:.01,sustain:1,release:.5},modulation:{type:"square"},modulationEnvelope:{attack:.5,decay:0,sustain:1,release:.5}},t.FMSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this._carrier._triggerEnvelopeAttack(t,e),this._modulator._triggerEnvelopeAttack(t),this},t.FMSynth.prototype._triggerEnvelopeRelease=function(t){return t=this.toSeconds(t),this._carrier._triggerEnvelopeRelease(t),this._modulator._triggerEnvelopeRelease(t),this},t.FMSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["frequency","harmonicity","modulationIndex","oscillator","envelope","modulation","modulationEnvelope","detune"]),this._carrier.dispose(),this._carrier=null,this._modulator.dispose(),this._modulator=null,this.frequency.dispose(),this.frequency=null,this.detune.dispose(),this.detune=null,this.modulationIndex.dispose(),this.modulationIndex=null,this.harmonicity.dispose(),this.harmonicity=null,this._modulationNode.dispose(),this._modulationNode=null,this.oscillator=null,this.envelope=null,this.modulationEnvelope=null,this.modulation=null,this},t.FMSynth}),t(function(t){return t.MembraneSynth=function(e){e=t.defaultArg(e,t.MembraneSynth.defaults),t.Instrument.call(this,e),this.oscillator=new t.OmniOscillator(e.oscillator),this.envelope=new t.AmplitudeEnvelope(e.envelope),this.octaves=e.octaves,this.pitchDecay=e.pitchDecay,this.oscillator.chain(this.envelope,this.output),this._readOnly(["oscillator","envelope"])},t.extend(t.MembraneSynth,t.Instrument),t.MembraneSynth.defaults={pitchDecay:.05,octaves:10,oscillator:{type:"sine"},envelope:{attack:.001,decay:.4,sustain:.01,release:1.4,attackCurve:"exponential"}},t.MembraneSynth.prototype.triggerAttack=function(t,e,i){e=this.toSeconds(e),t=this.toFrequency(t);var n=t*this.octaves;return this.oscillator.frequency.setValueAtTime(n,e),this.oscillator.frequency.exponentialRampToValueAtTime(t,e+this.toSeconds(this.pitchDecay)),this.envelope.triggerAttack(e,i),this.oscillator.start(e),this},t.MembraneSynth.prototype.triggerRelease=function(t){return t=this.toSeconds(t),this.envelope.triggerRelease(t),this.oscillator.stop(t+this.envelope.release),this},t.MembraneSynth.prototype.dispose=function(){return t.Instrument.prototype.dispose.call(this),this._writable(["oscillator","envelope"]),this.oscillator.dispose(),this.oscillator=null,this.envelope.dispose(),this.envelope=null,this},t.MembraneSynth}),t(function(t){var e=[1,1.483,1.932,2.546,2.63,3.897];return t.MetalSynth=function(i){var n,s,o;for(i=t.defaultArg(i,t.MetalSynth.defaults),t.Instrument.call(this,i),this.frequency=new t.Signal(i.frequency,t.Type.Frequency),this._oscillators=[],this._freqMultipliers=[],this._amplitue=new t.Gain(0).connect(this.output),this._highpass=new t.Filter({type:"highpass",Q:-3.0102999566398125}).connect(this._amplitue),this._octaves=i.octaves,this._filterFreqScaler=new t.Scale(i.resonance,7e3),this.envelope=new t.Envelope({attack:i.envelope.attack,attackCurve:"linear",decay:i.envelope.decay,sustain:0,release:i.envelope.release}).chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitue.gain),n=0;ne&&(o.voice.triggerRelease(e),o.release=e);return this},t.PolySynth.prototype.sync=function(){return this._syncMethod("triggerAttack",1),this._syncMethod("triggerRelease",1),this},t.PolySynth.prototype.set=function(t,e,i){for(var n=0;nt&&(i.release=t,i.voice.triggerRelease(t));return this},t.PolySynth.prototype.dispose=function(){t.Instrument.prototype.dispose.call(this);for(var e=0;e0)n=i[0];else if(!n&&t.isDefined(e))throw new Error("Tone.UserMedia: no matching device: "+e);return this._device=n,s={audio:{echoCancellation:!1,sampleRate:this.context.sampleRate}},n&&(s.audio.deviceId=n.deviceId),navigator.mediaDevices.getUserMedia(s).then(function(t){return this._stream||(this._stream=t,this._mediaStream=this.context.createMediaStreamSource(t),this._mediaStream.connect(this.output)),this}.bind(this))}.bind(this))},t.UserMedia.prototype.close=function(){return this._stream&&(this._stream.getAudioTracks().forEach(function(t){t.stop()}),this._stream=null,this._mediaStream.disconnect(),this._mediaStream=null),this._device=null,this},t.UserMedia.enumerateDevices=function(){return navigator.mediaDevices.enumerateDevices().then(function(t){return t.filter(function(t){return"audioinput"===t.kind})})},Object.defineProperty(t.UserMedia.prototype,"state",{get:function(){return this._stream&&this._stream.active?t.State.Started:t.State.Stopped}}),Object.defineProperty(t.UserMedia.prototype,"deviceId",{get:function(){if(this._device)return this._device.deviceId}}),Object.defineProperty(t.UserMedia.prototype,"groupId",{get:function(){if(this._device)return this._device.groupId}}),Object.defineProperty(t.UserMedia.prototype,"label",{get:function(){if(this._device)return this._device.label}}),Object.defineProperty(t.UserMedia.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.UserMedia.prototype.dispose=function(){return t.AudioNode.prototype.dispose.call(this),this.close(),this._writable("volume"),this._volume.dispose(),this._volume=null,this.volume=null,this},Object.defineProperty(t.UserMedia,"supported",{get:function(){return t.isDefined(navigator.mediaDevices)&&t.isFunction(navigator.mediaDevices.getUserMedia)}}),t.UserMedia}),t(function(t){return t.Midi=function(e,i){if(!(this instanceof t.Midi))return new t.Midi(e,i);t.Frequency.call(this,e,i)},t.extend(t.Midi,t.Frequency),t.Midi.prototype._defaultUnits="midi",t.Midi.prototype._frequencyToUnits=function(e){return t.Frequency.ftom(t.Frequency.prototype._frequencyToUnits.call(this,e))},t.Midi.prototype._ticksToUnits=function(e){return t.Frequency.ftom(t.Frequency.prototype._ticksToUnits.call(this,e))},t.Midi.prototype._beatsToUnits=function(e){return t.Frequency.ftom(t.Frequency.prototype._beatsToUnits.call(this,e))},t.Midi.prototype._secondsToUnits=function(e){return t.Frequency.ftom(t.Frequency.prototype._secondsToUnits.call(this,e))},t.Midi.prototype.toMidi=function(){return this.valueOf()},t.Midi.prototype.toFrequency=function(){return t.Frequency.mtof(this.toMidi())},t.Midi.prototype.transpose=function(t){return new this.constructor(this.toMidi()+t)},t.Midi}),e});
\ No newline at end of file
diff --git a/public/conductor/lib/Tone-reserved.min.js b/public/conductor/lib/Tone-reserved.min.js
new file mode 100644
index 0000000..889234e
--- /dev/null
+++ b/public/conductor/lib/Tone-reserved.min.js
@@ -0,0 +1,14 @@
+!function(t,e){"function"==typeof define&&define.amd?define(function(){return e()}):"object"==typeof module?module.exports=e():t.Tone=e()}(this,function(){"use strict";function t(t){t(e)}var e;/**
+ * Tone.js
+ * @author Yotam Mann
+ * @license http://opensource.org/licenses/MIT MIT License
+ * @copyright 2014-2017 Yotam Mann
+ */
+return function(t){e=t()}(function(){var t,e=function(t,e){this.isUndef(t)||1===t?this.input=this.context.createGain():t>1&&(this.input=new Array(t)),this.isUndef(e)||1===e?this.output=this.context.createGain():e>1&&(this.output=new Array(t))};return e.prototype.set=function(t,i,n){var s,o,r,a,h,l,u;this.isObject(t)?n=i:this.isString(t)&&(s={},s[t]=i,t=s);t:for(o in t){if(i=t[o],r=this,o.indexOf(".")!==-1){for(a=o.split("."),h=0;h1)for(t=arguments[0],e=1;e0)for(t=this,e=0;e0)for(var t=0;t0;)t=t.trim(),e=function(t,e){var i,n,s,o,r,a,h=["_binaryExpressions","_unaryExpressions","_primaryExpressions","_syntaxGlue"];for(i=0;i0){if(a+=1===s?e[i]:s.toString()+"*"+e[i],(t-=s*n)3&&(s=parseFloat(s).toFixed(3)),t=[n,i,s],t.join(":")},t.Time.prototype.toTicks=function(){var e=this._beatsToUnits(1),i=this.valueOf()/e;return Math.floor(i*t.Transport.PPQ)},t.Time.prototype.toSamples=function(){return this.toSeconds()*this.context.sampleRate},t.Time.prototype.toFrequency=function(){return 1/this.toSeconds()},t.Time.prototype.toSeconds=function(){return this.valueOf()},t.Time.prototype.toMilliseconds=function(){return 1e3*this.toSeconds()},t.Time.prototype.valueOf=function(){return this._expr()+(this._plusNow?this.now():0)},t.Time}),t(function(t){var e,i;return t.Frequency=function(e,i){if(!(this instanceof t.Frequency))return new t.Frequency(e,i);t.TimeBase.call(this,e,i)},t.extend(t.Frequency,t.TimeBase),t.Frequency.prototype._primaryExpressions=Object.create(t.TimeBase.prototype._primaryExpressions),t.Frequency.prototype._primaryExpressions.midi={regexp:/^(\d+(?:\.\d+)?midi)/,method:function(t){return this.midiToFrequency(t)}},t.Frequency.prototype._primaryExpressions.note={regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method:function(t,i){var n=e[t.toLowerCase()],s=n+12*(parseInt(i)+1);return this.midiToFrequency(s)}},t.Frequency.prototype._primaryExpressions.tr={regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method:function(t,e,i){var n=1;return t&&"0"!==t&&(n*=this._beatsToUnits(this._timeSignature()*parseFloat(t))),e&&"0"!==e&&(n*=this._beatsToUnits(parseFloat(e))),i&&"0"!==i&&(n*=this._beatsToUnits(parseFloat(i)/4)),n}},t.Frequency.prototype.transpose=function(t){return this._expr=function(t,e){return t()*this.intervalToFrequencyRatio(e)}.bind(this,this._expr,t),this},t.Frequency.prototype.harmonize=function(t){return this._expr=function(t,e){var i,n=t(),s=[];for(i=0;i1&&(this.input=new Array(e)),1===i?this.output=new t.Gain:i>1&&(this.output=new Array(e))},t.Gain}),t(function(t){return t.Signal=function(){var e=this.optionsObject(arguments,["value","units"],t.Signal.defaults);this.output=this._gain=this.context.createGain(),e.param=this._gain.gain,t.Param.call(this,e),this.input=this._param=this._gain.gain,this.context.getConstant(1).chain(this._gain)},t.extend(t.Signal,t.Param),t.Signal.defaults={value:0,units:t.Type.Default,convert:!0},t.Signal.prototype.connect=t.SignalBase.prototype.connect,t.Signal.prototype.dispose=function(){return t.Param.prototype.dispose.call(this),this._param=null,this._gain.disconnect(),this._gain=null,this},t.Signal}),t(function(t){return t.Timeline=function(){var e=this.optionsObject(arguments,["memory"],t.Timeline.defaults);this._timeline=[],this._toRemove=[],this._iterating=!1,this.memory=e.memory},t.extend(t.Timeline),t.Timeline.defaults={memory:1/0},Object.defineProperty(t.Timeline.prototype,"length",{get:function(){return this._timeline.length}}),t.Timeline.prototype.add=function(t){var e,i;if(this.isUndef(t.time))throw new Error("Tone.Timeline: events must have a time attribute");return this._timeline.length?(e=this._search(t.time),this._timeline.splice(e+1,0,t)):this._timeline.push(t),this.length>this.memory&&(i=this.length-this.memory,this._timeline.splice(0,i)),this},t.Timeline.prototype.remove=function(t){if(this._iterating)this._toRemove.push(t);else{var e=this._timeline.indexOf(t);e!==-1&&this._timeline.splice(e,1)}return this},t.Timeline.prototype.get=function(t){var e=this._search(t);return e!==-1?this._timeline[e]:null},t.Timeline.prototype.peek=function(){return this._timeline[0]},t.Timeline.prototype.shift=function(){return this._timeline.shift()},t.Timeline.prototype.getAfter=function(t){var e=this._search(t);return e+10&&this._timeline[i-1].time=0?this._timeline[e-1]:null)},t.Timeline.prototype.cancel=function(t){var e,i;if(this._timeline.length>1)if((e=this._search(t))>=0)if(this._timeline[e].time===t){for(i=e;i>=0&&this._timeline[i].time===t;i--)e=i;this._timeline=this._timeline.slice(0,e)}else this._timeline=this._timeline.slice(0,e+1);else this._timeline=[];else 1===this._timeline.length&&this._timeline[0].time>=t&&(this._timeline=[]);return this},t.Timeline.prototype.cancelBefore=function(t){if(this._timeline.length){var e=this._search(t);e>=0&&(this._timeline=this._timeline.slice(e+1))}return this},t.Timeline.prototype._search=function(t){var e,i,n,s,o,r=0,a=this._timeline.length,h=a;if(a>0&&this._timeline[a-1].time<=t)return a-1;for(;rt)return e;i.time>t?h=e:i.time0){for(s=0;s=0&&this._timeline[i].time>=t;)i--;return this._iterate(e,i+1),this},t.Timeline.prototype.forEachAtTime=function(t,e){var i=this._search(t);return i!==-1&&this._iterate(function(i){i.time===t&&e(i)},0,i),this},t.Timeline.prototype.dispose=function(){t.prototype.dispose.call(this),this._timeline=null,this._toRemove=null},t.Timeline}),t(function(t){return t.TimelineSignal=function(){var e=this.optionsObject(arguments,["value","units"],t.Signal.defaults);this._events=new t.Timeline(10),t.Signal.apply(this,e),e.param=this._param,t.Param.call(this,e),this._initial=this._fromUnits(this._param.value)},t.extend(t.TimelineSignal,t.Param),t.TimelineSignal.Type={Linear:"linear",Exponential:"exponential",Target:"target",Curve:"curve",Set:"set"},Object.defineProperty(t.TimelineSignal.prototype,"value",{get:function(){var t=this.now(),e=this.getValueAtTime(t);return this._toUnits(e)},set:function(t){var e=this._fromUnits(t);this._initial=e,this.cancelScheduledValues(),this._param.value=e}}),t.TimelineSignal.prototype.setValueAtTime=function(e,i){return e=this._fromUnits(e),i=this.toSeconds(i),this._events.add({type:t.TimelineSignal.Type.Set,value:e,time:i}),this._param.setValueAtTime(e,i),this},t.TimelineSignal.prototype.linearRampToValueAtTime=function(e,i){return e=this._fromUnits(e),i=this.toSeconds(i),this._events.add({type:t.TimelineSignal.Type.Linear,value:e,time:i}),this._param.linearRampToValueAtTime(e,i),this},t.TimelineSignal.prototype.exponentialRampToValueAtTime=function(e,i){var n,s;return i=this.toSeconds(i),n=this._searchBefore(i),n&&0===n.value&&this.setValueAtTime(this._minOutput,n.time),e=this._fromUnits(e),s=Math.max(e,this._minOutput),this._events.add({type:t.TimelineSignal.Type.Exponential,value:s,time:i}),ee?(this.cancelScheduledValues(e),this.linearRampToValueAtTime(i,e)):(s=this._searchAfter(e),s&&(this.cancelScheduledValues(e),s.type===t.TimelineSignal.Type.Linear?this.linearRampToValueAtTime(i,e):s.type===t.TimelineSignal.Type.Exponential&&this.exponentialRampToValueAtTime(i,e)),this.setValueAtTime(i,e)),this},t.TimelineSignal.prototype.linearRampToValueBetween=function(t,e,i){return this.setRampPoint(e),this.linearRampToValueAtTime(t,i),this},t.TimelineSignal.prototype.exponentialRampToValueBetween=function(t,e,i){return this.setRampPoint(e),this.exponentialRampToValueAtTime(t,i),this},t.TimelineSignal.prototype._searchBefore=function(t){return this._events.get(t)},t.TimelineSignal.prototype._searchAfter=function(t){return this._events.getAfter(t)},t.TimelineSignal.prototype.getValueAtTime=function(e){var i,n,s,o,r;return e=this.toSeconds(e),i=this._searchAfter(e),n=this._searchBefore(e),s=this._initial,null===n?s=this._initial:n.type===t.TimelineSignal.Type.Target?(o=this._events.getBefore(n.time),r=null===o?this._initial:o.value,s=this._exponentialApproach(n.time,r,n.value,n.constant,e)):s=n.type===t.TimelineSignal.Type.Curve?this._curveInterpolate(n.time,n.value,n.duration,e):null===i?n.value:i.type===t.TimelineSignal.Type.Linear?this._linearInterpolate(n.time,n.value,i.time,i.value,e):i.type===t.TimelineSignal.Type.Exponential?this._exponentialInterpolate(n.time,n.value,i.time,i.value,e):n.value,s},t.TimelineSignal.prototype.connect=t.SignalBase.prototype.connect,t.TimelineSignal.prototype._exponentialApproach=function(t,e,i,n,s){return i+(e-i)*Math.exp(-(s-t)/n)},t.TimelineSignal.prototype._linearInterpolate=function(t,e,i,n,s){return e+(s-t)/(i-t)*(n-e)},t.TimelineSignal.prototype._exponentialInterpolate=function(t,e,i,n,s){return(e=Math.max(this._minOutput,e))*Math.pow(n/e,(s-t)/(i-t))},t.TimelineSignal.prototype._curveInterpolate=function(t,e,i,n){var s,o,r,a,h,l=e.length;return n>=t+i?e[l-1]:n<=t?e[0]:(s=(n-t)/i,o=Math.floor((l-1)*s),r=Math.ceil((l-1)*s),a=e[o],h=e[r],r===o?a:this._linearInterpolate(o,a,r,h,s*(l-1)))},t.TimelineSignal.prototype.dispose=function(){t.Signal.prototype.dispose.call(this),t.Param.prototype.dispose.call(this),this._events.dispose(),this._events=null},t.TimelineSignal}),t(function(t){return t.Pow=function(e){this._exp=this.defaultArg(e,1),this._expScaler=this.input=this.output=new t.WaveShaper(this._expFunc(this._exp),8192)},t.extend(t.Pow,t.SignalBase),Object.defineProperty(t.Pow.prototype,"value",{get:function(){return this._exp},set:function(t){this._exp=t,this._expScaler.setMap(this._expFunc(this._exp))}}),t.Pow.prototype._expFunc=function(t){return function(e){return Math.pow(Math.abs(e),t)}},t.Pow.prototype.dispose=function(){return t.prototype.dispose.call(this),this._expScaler.dispose(),this._expScaler=null,this},t.Pow}),t(function(t){return t.Envelope=function(){var e=this.optionsObject(arguments,["attack","decay","sustain","release"],t.Envelope.defaults);this.attack=e.attack,this.decay=e.decay,this.sustain=e.sustain,this.release=e.release,this._attackCurve="linear",this._releaseCurve="exponential",this._sig=this.output=new t.TimelineSignal,this._sig.setValueAtTime(0,0),this.attackCurve=e.attackCurve,this.releaseCurve=e.releaseCurve},t.extend(t.Envelope),t.Envelope.defaults={attack:.01,decay:.1,sustain:.5,release:1,attackCurve:"linear",releaseCurve:"exponential"},Object.defineProperty(t.Envelope.prototype,"value",{get:function(){return this.getValueAtTime(this.now())}}),Object.defineProperty(t.Envelope.prototype,"attackCurve",{get:function(){if(this.isString(this._attackCurve))return this._attackCurve;if(this.isArray(this._attackCurve)){for(var e in t.Envelope.Type)if(t.Envelope.Type[e].In===this._attackCurve)return e;return this._attackCurve}},set:function(e){if(t.Envelope.Type.hasOwnProperty(e)){var i=t.Envelope.Type[e];this.isObject(i)?this._attackCurve=i.In:this._attackCurve=i}else{if(!this.isArray(e))throw new Error("Tone.Envelope: invalid curve: "+e);this._attackCurve=e}}}),Object.defineProperty(t.Envelope.prototype,"releaseCurve",{get:function(){if(this.isString(this._releaseCurve))return this._releaseCurve;if(this.isArray(this._releaseCurve)){for(var e in t.Envelope.Type)if(t.Envelope.Type[e].Out===this._releaseCurve)return e;return this._releaseCurve}},set:function(e){if(t.Envelope.Type.hasOwnProperty(e)){var i=t.Envelope.Type[e];this.isObject(i)?this._releaseCurve=i.Out:this._releaseCurve=i}else{if(!this.isArray(e))throw new Error("Tone.Envelope: invalid curve: "+e);this._releaseCurve=e}}}),t.Envelope.prototype.triggerAttack=function(t,e){var i,n,s,o,r,a,h,l,u;return t=this.toSeconds(t),i=this.toSeconds(this.attack),n=i,s=this.toSeconds(this.decay),e=this.defaultArg(e,1),o=this.getValueAtTime(t),o>0&&(r=1/n,a=1-o,n=a/r),"linear"===this._attackCurve?this._sig.linearRampToValue(e,n,t):"exponential"===this._attackCurve?this._sig.exponentialRampToValue(e,n,t):n>0&&(this._sig.setRampPoint(t),h=this._attackCurve,n0&&(i=this.toSeconds(this.release),"linear"===this._releaseCurve?this._sig.linearRampToValue(0,i,t):"exponential"===this._releaseCurve?this._sig.exponentialRampToValue(0,i,t):(n=this._releaseCurve,this.isArray(n)&&(this._sig.setRampPoint(t),this._sig.setValueCurveAtTime(n,t,i,e)))),this},t.Envelope.prototype.getValueAtTime=function(t){return this._sig.getValueAtTime(t)},t.Envelope.prototype.triggerAttackRelease=function(t,e,i){return e=this.toSeconds(e),this.triggerAttack(e,i),this.triggerRelease(e+this.toSeconds(t)),this},t.Envelope.prototype.cancel=function(t){return this._sig.cancelScheduledValues(t),this},t.Envelope.prototype.connect=t.Signal.prototype.connect,function(){function e(t){var e,i=new Array(t.length);for(e=0;e0;)e=e.trim(),i=function(e){var i,n,s,o,r,a;for(i in t.Expr._Expressions){n=t.Expr._Expressions[i];for(s in n)if(o=n[s],r=o.regexp,null!==(a=e.match(r)))return{type:i,value:a[0],method:o.method}}throw new SyntaxError("Tone.Expr: Unexpected token "+e)}(e),s.push(i),e=e.substr(i.value.length);return{next:function(){return s[++n]},peek:function(){return s[n+1]}}},t.Expr.prototype._parseTree=function(e){function i(t,e){return!u(t)&&"glue"===t.type&&t.value===e}function n(e,i,n){var s,o,r=!1,a=t.Expr._Expressions[i];if(!u(e))for(s in a)if(o=a[s],o.regexp.test(e.value)){if(u(n))return!0;if(o.precedence===n)return!0}return r}function s(t){var e,i;for(u(t)&&(t=5),e=t<0?o():s(t-1),i=l.peek();n(i,"binary",t);)i=l.next(),e={operator:i.value,method:i.method,args:[e,s(t-1)]},i=l.peek();return e}function o(){var t,e;return t=l.peek(),n(t,"unary")?(t=l.next(),e=o(),{operator:t.value,method:t.method,args:[e]}):r()}function r(){var t,e;if(t=l.peek(),u(t))throw new SyntaxError("Tone.Expr: Unexpected termination of expression");if("func"===t.type)return t=l.next(),a(t);if("value"===t.type)return t=l.next(),{method:t.method,args:t.value};if(i(t,"(")){if(l.next(),e=s(),t=l.next(),!i(t,")"))throw new SyntaxError("Expected )");return e}throw new SyntaxError("Tone.Expr: Parse error, cannot process token "+t.value)}function a(t){var e,n=[];if(e=l.next(),!i(e,"("))throw new SyntaxError('Tone.Expr: Expected ( in a function call "'+t.value+'"');if(e=l.peek(),i(e,")")||(n=h()),e=l.next(),!i(e,")"))throw new SyntaxError('Tone.Expr: Expected ) in a function call "'+t.value+'"');return{method:t.method,args:n,name:name}}function h(){for(var t,e,n=[];;){if(e=s(),u(e))break;if(n.push(e),t=l.peek(),!i(t,","))break;l.next()}return n}var l=this._tokenize(e),u=this.isUndef.bind(this);return s()},t.Expr.prototype._eval=function(t){if(!this.isUndef(t)){var e=t.method(t.args,this);return this._nodes.push(e),e}},t.Expr.prototype._disposeNodes=function(){var t,e;for(t=0;tthis._nextTick&&this._state;)e=this._state.getValueAtTime(this._nextTick),e!==this._lastState&&(this._lastState=e,i=this._state.get(this._nextTick),e===t.State.Started?(this._nextTick=i.time,this.isUndef(i.offset)||(this.ticks=i.offset),this.emit("start",i.time,this.ticks)):e===t.State.Stopped?(this.ticks=0,this.emit("stop",i.time)):e===t.State.Paused&&this.emit("pause",i.time)),n=this._nextTick,this.frequency&&(this._nextTick+=1/this.frequency.getValueAtTime(this._nextTick),e===t.State.Started&&(this.callback(n),this.ticks++))},t.Clock.prototype.getStateAtTime=function(t){return t=this.toSeconds(t),this._state.getValueAtTime(t)},t.Clock.prototype.dispose=function(){t.Emitter.prototype.dispose.call(this),this.context.off("tick",this._boundLoop),this._writable("frequency"),this.frequency.dispose(),this.frequency=null,this._boundLoop=null,this._nextTick=1/0,this.callback=null,this._state.dispose(),this._state=null},t.Clock}),t(function(t){t.IntervalTimeline=function(){this._root=null,this._length=0},t.extend(t.IntervalTimeline),t.IntervalTimeline.prototype.add=function(t){if(this.isUndef(t.time)||this.isUndef(t.duration))throw new Error("Tone.IntervalTimeline: events must have time and duration parameters");var i=new e(t.time,t.time+t.duration,t);for(null===this._root?this._root=i:this._root.insert(i),this._length++;null!==i;)i.updateHeight(),i.updateMax(),this._rebalance(i),i=i.parent;return this},t.IntervalTimeline.prototype.remove=function(t){var e,i,n;if(null!==this._root)for(e=[],this._root.search(t.time,e),i=0;i0)if(null===t.left.right)e=t.left,e.right=t.right,i=e;else{for(e=t.left.right;null!==e.right;)e=e.right;e.parent.right=e.left,i=e.parent,e.left=t.left,e.right=t.right}else if(null===t.right.left)e=t.right,e.left=t.left,i=e;else{for(e=t.right.left;null!==e.left;)e=e.left;e.parent=e.parent,e.parent.left=e.right,i=e.parent,e.left=t.left,e.right=t.right}null!==t.parent?t.isLeftChild()?t.parent.left=e:t.parent.right=e:this._setRoot(e),this._rebalance(i)}t.dispose()},t.IntervalTimeline.prototype._rotateLeft=function(t){var e=t.parent,i=t.isLeftChild(),n=t.right;t.right=n.left,n.left=t,null!==e?i?e.left=n:e.right=n:this._setRoot(n)},t.IntervalTimeline.prototype._rotateRight=function(t){var e=t.parent,i=t.isLeftChild(),n=t.left;t.left=n.right,n.right=t,null!==e?i?e.left=n:e.right=n:this._setRoot(n)},t.IntervalTimeline.prototype._rebalance=function(t){var e=t.getBalance();e>1?t.left.getBalance()<0?this._rotateLeft(t.left):this._rotateRight(t):e<-1&&(t.right.getBalance()>0?this._rotateRight(t.right):this._rotateLeft(t))},t.IntervalTimeline.prototype.get=function(t){var e,i,n;if(null!==this._root&&(e=[],this._root.search(t,e),e.length>0)){for(i=e[0],n=1;ni.low&&(i=e[n]);return i.event}return null},t.IntervalTimeline.prototype.forEach=function(t){var e,i,n;if(null!==this._root)for(e=[],null!==this._root&&this._root.traverse(function(t){e.push(t)}),i=0;i=0;n--)(s=i[n].event)&&e(s);return this},t.IntervalTimeline.prototype.forEachAfter=function(t,e){var i,n,s;if(null!==this._root)for(i=[],this._root.searchAfter(t,i),n=i.length-1;n>=0;n--)(s=i[n].event)&&e(s);return this},t.IntervalTimeline.prototype.dispose=function(){var t,e=[];for(null!==this._root&&this._root.traverse(function(t){e.push(t)}),t=0;tthis.max||(null!==this.left&&this.left.search(t,e),this.low<=t&&this.high>t&&e.push(this),this.low>t||null!==this.right&&this.right.search(t,e))},e.prototype.searchAfter=function(t,e){this.low>=t&&(e.push(this),null!==this.left&&this.left.searchAfter(t,e)),null!==this.right&&this.right.searchAfter(t,e)},e.prototype.traverse=function(t){t(this),null!==this.left&&this.left.traverse(t),null!==this.right&&this.right.traverse(t)},e.prototype.updateHeight=function(){null!==this.left&&null!==this.right?this.height=Math.max(this.left.height,this.right.height)+1:null!==this.right?this.height=this.right.height+1:null!==this.left?this.height=this.left.height+1:this.height=0},e.prototype.updateMax=function(){this.max=this.high,null!==this.left&&(this.max=Math.max(this.max,this.left.max)),null!==this.right&&(this.max=Math.max(this.max,this.right.max))},e.prototype.getBalance=function(){var t=0;return null!==this.left&&null!==this.right?t=this.left.height-this.right.height:null!==this.left?t=this.left.height+1:null!==this.right&&(t=-(this.right.height+1)),t},e.prototype.isLeftChild=function(){return null!==this.parent&&this.parent.left===this},Object.defineProperty(e.prototype,"left",{get:function(){return this._left},set:function(t){this._left=t,null!==t&&(t.parent=this),this.updateHeight(),this.updateMax()}}),Object.defineProperty(e.prototype,"right",{get:function(){return this._right},set:function(t){this._right=t,null!==t&&(t.parent=this),this.updateHeight(),this.updateMax()}}),e.prototype.dispose=function(){this.parent=null,this._left=null,this._right=null,this.event=null},t.IntervalTimeline}),t(function(t){t.Transport=function(){t.Emitter.call(this),this.loop=!1,this._loopStart=0,this._loopEnd=0,this._ppq=e.defaults.PPQ,this._clock=new t.Clock({callback:this._processTick.bind(this),frequency:0}),this._bindClockEvents(),this.bpm=this._clock.frequency,this.bpm._toUnits=this._toUnits.bind(this),this.bpm._fromUnits=this._fromUnits.bind(this),this.bpm.units=t.Type.BPM,this.bpm.value=e.defaults.bpm,this._readOnly("bpm"),this._timeSignature=e.defaults.timeSignature,this._scheduledEvents={},this._eventID=0,this._timeline=new t.Timeline,this._repeatedEvents=new t.IntervalTimeline,this._onceEvents=new t.Timeline,this._syncedSignals=[],this._swingTicks=e.defaults.PPQ/2,this._swingAmount=0},t.extend(t.Transport,t.Emitter),t.Transport.defaults={bpm:120,swing:0,swingSubdivision:"8n",timeSignature:4,loopStart:0,loopEnd:"4m",PPQ:192},t.Transport.prototype._processTick=function(e){var i,n,s=this._clock.ticks;this._swingAmount>0&&s%this._ppq!=0&&s%(2*this._swingTicks)!=0&&(i=s%(2*this._swingTicks)/(2*this._swingTicks),n=Math.sin(i*Math.PI)*this._swingAmount,e+=t.Time(2*this._swingTicks/3,"i")*n),this.loop&&s===this._loopEnd&&(this.emit("loopEnd",e),this._clock.ticks=this._loopStart,s=this._loopStart,this.emit("loopStart",e,this.seconds),this.emit("loop",e)),this._onceEvents.forEachBefore(s,function(t){t.callback(e),delete this._scheduledEvents[t.id.toString()]}.bind(this)),this._onceEvents.cancelBefore(s),this._timeline.forEachAtTime(s,function(t){t.callback(e)}),this._repeatedEvents.forEachAtTime(s,function(t){(s-t.time)%t.interval==0&&t.callback(e)})},t.Transport.prototype.schedule=function(t,e){var i={time:this.toTicks(e),callback:t},n=this._eventID++;return this._scheduledEvents[n.toString()]={event:i,timeline:this._timeline},this._timeline.add(i),n},t.Transport.prototype.scheduleRepeat=function(t,e,i,n){var s,o;if(e<=0)throw new Error("Tone.Transport: repeat events must have an interval larger than 0");return s={time:this.toTicks(i),duration:this.toTicks(this.defaultArg(n,1/0)),interval:this.toTicks(e),callback:t},o=this._eventID++,this._scheduledEvents[o.toString()]={event:s,timeline:this._repeatedEvents},this._repeatedEvents.add(s),o},t.Transport.prototype.scheduleOnce=function(t,e){var i=this._eventID++,n={time:this.toTicks(e),callback:t,id:i};return this._scheduledEvents[i.toString()]={event:n,timeline:this._onceEvents},this._onceEvents.add(n),i},t.Transport.prototype.clear=function(t){if(this._scheduledEvents.hasOwnProperty(t)){var e=this._scheduledEvents[t.toString()];e.timeline.remove(e.event),delete this._scheduledEvents[t.toString()]}return this},t.Transport.prototype.cancel=function(t){return t=this.defaultArg(t,0),t=this.toTicks(t),this._timeline.cancel(t),this._onceEvents.cancel(t),this._repeatedEvents.cancel(t),this},t.Transport.prototype._bindClockEvents=function(){this._clock.on("start",function(e,i){i=t.Time(this._clock.ticks,"i").toSeconds(),this.emit("start",e,i)}.bind(this)),this._clock.on("stop",function(t){this.emit("stop",t)}.bind(this)),this._clock.on("pause",function(t){this.emit("pause",t)}.bind(this))},Object.defineProperty(t.Transport.prototype,"state",{get:function(){return this._clock.getStateAtTime(this.now())}}),t.Transport.prototype.start=function(t,e){return this.isUndef(e)||(e=this.toTicks(e)),this._clock.start(t,e),this},t.Transport.prototype.stop=function(t){return this._clock.stop(t),this},t.Transport.prototype.pause=function(t){return this._clock.pause(t),this},Object.defineProperty(t.Transport.prototype,"timeSignature",{get:function(){return this._timeSignature},set:function(t){this.isArray(t)&&(t=t[0]/t[1]*4),this._timeSignature=t}}),Object.defineProperty(t.Transport.prototype,"loopStart",{get:function(){return t.TransportTime(this._loopStart,"i").toSeconds()},set:function(t){this._loopStart=this.toTicks(t)}}),Object.defineProperty(t.Transport.prototype,"loopEnd",{get:function(){return t.TransportTime(this._loopEnd,"i").toSeconds()},set:function(t){this._loopEnd=this.toTicks(t)}}),t.Transport.prototype.setLoopPoints=function(t,e){return this.loopStart=t,this.loopEnd=e,this},Object.defineProperty(t.Transport.prototype,"swing",{get:function(){return this._swingAmount},set:function(t){this._swingAmount=t}}),Object.defineProperty(t.Transport.prototype,"swingSubdivision",{get:function(){return t.Time(this._swingTicks,"i").toNotation()},set:function(t){this._swingTicks=this.toTicks(t)}}),Object.defineProperty(t.Transport.prototype,"position",{get:function(){return t.TransportTime(this.ticks,"i").toBarsBeatsSixteenths()},set:function(t){var e=this.toTicks(t);this.ticks=e}}),Object.defineProperty(t.Transport.prototype,"seconds",{get:function(){return t.TransportTime(this.ticks,"i").toSeconds()},set:function(t){var e=this.toTicks(t);this.ticks=e}}),Object.defineProperty(t.Transport.prototype,"progress",{get:function(){return this.loop?(this.ticks-this._loopStart)/(this._loopEnd-this._loopStart):0}}),Object.defineProperty(t.Transport.prototype,"ticks",{get:function(){return this._clock.ticks},set:function(e){if(this._clock.ticks!==e){var i=this.now();this.state===t.State.Started?(this.emit("stop",i),this._clock.ticks=e,this.emit("start",i,this.seconds)):this._clock.ticks=e}}}),Object.defineProperty(t.Transport.prototype,"PPQ",{get:function(){return this._ppq},set:function(t){var e=this.bpm.value;this._ppq=t,this.bpm.value=e}}),Object.defineProperty(t.Transport.prototype,"latencyHint",{get:function(){return t.Clock.latencyHint},set:function(e){t.Clock.latencyHint=e}}),t.Transport.prototype._fromUnits=function(t){return 1/(60/t/this.PPQ)},t.Transport.prototype._toUnits=function(t){return t/this.PPQ*60},t.Transport.prototype.nextSubdivision=function(e){var i,n,s;return e=this.toSeconds(e),this.state!==t.State.Started?0:(i=this._clock._nextTick,n=t.Time(this.ticks,"i"),s=e-n%e,0===s&&(s=e),i+s)},t.Transport.prototype.syncSignal=function(e,i){i||(i=0!==e._param.value?e._param.value/this.bpm._param.value:0);var n=new t.Gain(i);return this.bpm.chain(n,e._param),this._syncedSignals.push({ratio:n,signal:e,initial:e._param.value}),e._param.value=0,this},t.Transport.prototype.unsyncSignal=function(t){var e,i;for(e=this._syncedSignals.length-1;e>=0;e--)i=this._syncedSignals[e],i.signal===t&&(i.ratio.dispose(),i.signal._param.value=i.initial,this._syncedSignals.splice(e,1));return this},t.Transport.prototype.dispose=function(){return t.Emitter.prototype.dispose.call(this),this._clock.dispose(),this._clock=null,this._writable("bpm"),this.bpm=null,this._timeline.dispose(),this._timeline=null,this._onceEvents.dispose(),this._onceEvents=null,this._repeatedEvents.dispose(),this._repeatedEvents=null,this};var e=t.Transport;return t.Transport=new e,t.Context.on("init",function(i){i.Transport instanceof e?t.Transport=i.Transport:(t.Transport=new e,i.Transport=t.Transport)}),t.Transport}),t(function(t){return t.Volume=function(){var e=this.optionsObject(arguments,["volume"],t.Volume.defaults);this.output=this.input=new t.Gain(e.volume,t.Type.Decibels),this._unmutedVolume=e.volume,this.volume=this.output.gain,this._readOnly("volume"),this.mute=e.mute},t.extend(t.Volume),t.Volume.defaults={volume:0,mute:!1},Object.defineProperty(t.Volume.prototype,"mute",{get:function(){return this.volume.value===-(1/0)},set:function(t){!this.mute&&t?(this._unmutedVolume=this.volume.value,this.volume.value=-(1/0)):this.mute&&!t&&(this.volume.value=this._unmutedVolume)}}),t.Volume.prototype.dispose=function(){return this.input.dispose(),t.prototype.dispose.call(this),this._writable("volume"),this.volume.dispose(),this.volume=null,this},t.Volume}),t(function(t){t.Master=function(){this.createInsOuts(1,1),this._volume=this.output=new t.Volume,this.volume=this._volume.volume,this._readOnly("volume"),this.input.chain(this.output,this.context.destination)},t.extend(t.Master),t.Master.defaults={volume:0,mute:!1},Object.defineProperty(t.Master.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.Master.prototype.chain=function(){this.input.disconnect(),this.input.chain.apply(this.input,arguments),arguments[arguments.length-1].connect(this.output)},t.Master.prototype.dispose=function(){t.prototype.dispose.call(this),this._writable("volume"),this._volume.dispose(),this._volume=null,this.volume=null},t.prototype.toMaster=function(){return this.connect(t.Master),this},AudioNode.prototype.toMaster=function(){return this.connect(t.Master),this};var e=t.Master;return t.Master=new e,t.Context.on("init",function(i){i.Master instanceof e?t.Master=i.Master:t.Master=new e,i.Master=t.Master}),t.Master}),t(function(t){return t.Source=function(e){e=this.defaultArg(e,t.Source.defaults),this._volume=this.output=new t.Volume(e.volume),this.volume=this._volume.volume,this._readOnly("volume"),this._state=new t.TimelineState(t.State.Stopped),this._state.memory=10,this._synced=!1,this._scheduled=[],this._volume.output.output.channelCount=2,this._volume.output.output.channelCountMode="explicit",this.mute=e.mute},t.extend(t.Source),t.Source.defaults={volume:0,mute:!1},Object.defineProperty(t.Source.prototype,"state",{get:function(){return this._synced?t.Transport.state===t.State.Started?this._state.getValueAtTime(t.Transport.seconds):t.State.Stopped:this._state.getValueAtTime(this.now())}}),Object.defineProperty(t.Source.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.Source.prototype._start=t.noOp,t.Source.prototype._stop=t.noOp,t.Source.prototype.start=function(e,i,n){var s,o;return e=this.isUndef(e)&&this._synced?t.Transport.seconds:this.toSeconds(e),this.retrigger||this._state.getValueAtTime(e)!==t.State.Started||this.stop(e),this._state.setStateAtTime(t.State.Started,e),this._synced?(s=this._state.get(e),s.offset=this.defaultArg(i,0),s.duration=n,o=t.Transport.schedule(function(t){this._start(t,i,n)}.bind(this),e),this._scheduled.push(o)):this._start.apply(this,arguments),this},t.Source.prototype.stop=function(e){if(e=this.isUndef(e)&&this._synced?t.Transport.seconds:this.toSeconds(e),this._state.cancel(e),this._state.setStateAtTime(t.State.Stopped,e),this._synced){var i=t.Transport.schedule(this._stop.bind(this),e);this._scheduled.push(i)}else this._stop.apply(this,arguments);return this},t.Source.prototype.sync=function(){return this._synced=!0,t.Transport.on("start loopStart",function(e,i){var n,s,o;i>0&&(n=this._state.get(i))&&n.state===t.State.Started&&n.time!==i&&(s=i-this.toSeconds(n.time),n.duration&&(o=this.toSeconds(n.duration)-s),this._start(e,this.toSeconds(n.offset)+s,o))}.bind(this)),t.Transport.on("stop pause loopEnd",function(e){this._state.getValueAtTime(t.Transport.seconds)===t.State.Started&&this._stop(e)}.bind(this)),this},t.Source.prototype.unsync=function(){var e,i;for(this._synced=!1,t.Transport.off("start stop pause loopEnd loopStart"),e=0;e>1&1?-1:1):0;break;case t.Oscillator.Type.Custom:r=this._partials[s-1];break;default:throw new TypeError("Tone.Oscillator: invalid type: "+e)}0!==r?(l[s]=-r*Math.sin(i*s),u[s]=r*Math.cos(i*s)):(l[s]=0,u[s]=0)}return[l,u]},t.Oscillator.prototype._inverseFFT=function(t,e,i){var n,s=0,o=t.length;for(n=0;nn&&i=this.values.length&&(this.index=0):e===t.CtrlPattern.Type.Down?--this.index<0&&(this.index=this.values.length-1):e===t.CtrlPattern.Type.UpDown||e===t.CtrlPattern.Type.DownUp?(this._direction===t.CtrlPattern.Type.Up?this.index++:this.index--,this.index<0?(this.index=1,this._direction=t.CtrlPattern.Type.Up):this.index>=this.values.length&&(this.index=this.values.length-2,this._direction=t.CtrlPattern.Type.Down)):e===t.CtrlPattern.Type.Random?this.index=Math.floor(Math.random()*this.values.length):e===t.CtrlPattern.Type.RandomWalk?Math.random()<.5?(this.index--,this.index=Math.max(this.index,0)):(this.index++,this.index=Math.min(this.index,this.values.length-1)):e===t.CtrlPattern.Type.RandomOnce?++this.index>=this.values.length&&(this.index=0,this._shuffleValues()):e===t.CtrlPattern.Type.AlternateUp?(this._direction===t.CtrlPattern.Type.Up?(this.index+=2,this._direction=t.CtrlPattern.Type.Down):(this.index-=1,this._direction=t.CtrlPattern.Type.Up),this.index>=this.values.length&&(this.index=0,this._direction=t.CtrlPattern.Type.Up)):e===t.CtrlPattern.Type.AlternateDown&&(this._direction===t.CtrlPattern.Type.Up?(this.index+=1,this._direction=t.CtrlPattern.Type.Down):(this.index-=2,this._direction=t.CtrlPattern.Type.Up),this.index<0&&(this.index=this.values.length-1,this._direction=t.CtrlPattern.Type.Down)),this.value},t.CtrlPattern.prototype._shuffleValues=function(){var t,e,i=[];for(this._shuffled=[],t=0;t0;)e=i.splice(Math.floor(i.length*Math.random()),1),this._shuffled.push(e[0])},t.CtrlPattern.prototype.dispose=function(){this._shuffled=null,this.values=null},t.CtrlPattern}),t(function(t){return t.CtrlRandom=function(){var e=this.optionsObject(arguments,["min","max"],t.CtrlRandom.defaults);this.min=e.min,this.max=e.max,this.integer=e.integer},t.extend(t.CtrlRandom),t.CtrlRandom.defaults={min:0,max:1,integer:!1},Object.defineProperty(t.CtrlRandom.prototype,"value",{get:function(){var t=this.toSeconds(this.min),e=this.toSeconds(this.max),i=Math.random(),n=i*t+(1-i)*e;return this.integer&&(n=Math.floor(n)),n}}),t.CtrlRandom}),t(function(t){return window.AudioBuffer&&!AudioBuffer.prototype.copyToChannel&&(AudioBuffer.prototype.copyToChannel=function(t,e,i){var n,s=this.getChannelData(e);for(i=i||0,n=0;n0}}),Object.defineProperty(t.Buffer.prototype,"duration",{get:function(){return this._buffer?this._buffer.duration:0}}),Object.defineProperty(t.Buffer.prototype,"length",{get:function(){return this._buffer?this._buffer.length:0}}),Object.defineProperty(t.Buffer.prototype,"numberOfChannels",{get:function(){return this._buffer?this._buffer.numberOfChannels:0}}),t.Buffer.prototype.fromArray=function(t){var e,i=t[0].length>0,n=i?t.length:1,s=i?t[0].length:t.length,o=this.context.createBuffer(n,s,this.context.sampleRate);for(i||1!==n||(t=[t]),e=0;e0&&requestAnimationFrame(this._boundDrawLoop)},t.Draw=new t.Draw,t.Draw}),t(function(t){t.Listener=function(){var t=this.optionsObject(arguments,["positionX","positionY","positionZ"],e.defaults);this._orientation=[t.forwardX,t.forwardY,t.forwardZ,t.upX,t.upY,t.upZ],this._position=[t.positionX,t.positionY,t.positionZ],this.forwardX=t.forwardX,this.forwardY=t.forwardY,this.forwardZ=t.forwardZ,this.upX=t.upX,this.upY=t.upY,this.upZ=t.upZ,this.positionX=t.positionX,this.positionY=t.positionY,this.positionZ=t.positionZ},t.extend(t.Listener),t.Listener.defaults={positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:1,upX:0,upY:1,upZ:0},t.Listener.prototype._rampTimeConstant=.01,t.Listener.prototype.setPosition=function(t,e,i){if(this.context.listener.positionX){var n=this.now();this.context.listener.positionX.setTargetAtTime(t,n,this._rampTimeConstant),this.context.listener.positionY.setTargetAtTime(e,n,this._rampTimeConstant),this.context.listener.positionZ.setTargetAtTime(i,n,this._rampTimeConstant)}else this.context.listener.setPosition(t,e,i);return this._position=Array.prototype.slice.call(arguments),this},t.Listener.prototype.setOrientation=function(t,e,i,n,s,o){if(this.context.listener.forwardX){var r=this.now();this.context.listener.forwardX.setTargetAtTime(t,r,this._rampTimeConstant),this.context.listener.forwardY.setTargetAtTime(e,r,this._rampTimeConstant),this.context.listener.forwardZ.setTargetAtTime(i,r,this._rampTimeConstant),this.context.listener.upX.setTargetAtTime(n,r,this._rampTimeConstant),this.context.listener.upY.setTargetAtTime(s,r,this._rampTimeConstant),this.context.listener.upZ.setTargetAtTime(o,r,this._rampTimeConstant)}else this.context.listener.setOrientation(t,e,i,n,s,o);return this._orientation=Array.prototype.slice.call(arguments),this},Object.defineProperty(t.Listener.prototype,"positionX",{set:function(t){this._position[0]=t,this.setPosition.apply(this,this._position)},get:function(){return this._position[0]}}),Object.defineProperty(t.Listener.prototype,"positionY",{set:function(t){this._position[1]=t,this.setPosition.apply(this,this._position)},get:function(){return this._position[1]}}),Object.defineProperty(t.Listener.prototype,"positionZ",{set:function(t){this._position[2]=t,this.setPosition.apply(this,this._position)},get:function(){return this._position[2]}}),Object.defineProperty(t.Listener.prototype,"forwardX",{set:function(t){this._orientation[0]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[0]}}),Object.defineProperty(t.Listener.prototype,"forwardY",{set:function(t){this._orientation[1]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[1]}}),Object.defineProperty(t.Listener.prototype,"forwardZ",{set:function(t){this._orientation[2]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[2]}}),Object.defineProperty(t.Listener.prototype,"upX",{set:function(t){this._orientation[3]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[3]}}),Object.defineProperty(t.Listener.prototype,"upY",{set:function(t){this._orientation[4]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[4]}}),Object.defineProperty(t.Listener.prototype,"upZ",{set:function(t){this._orientation[5]=t,this.setOrientation.apply(this,this._orientation)},get:function(){return this._orientation[5]}}),t.Listener.prototype.dispose=function(){return this._orientation=null,this._position=null,this};var e=t.Listener;return t.Listener=new e,t.Context.on("init",function(i){i.Listener instanceof e?t.Listener=i.Listener:t.Listener=new e,i.Listener=t.Listener}),t.Listener}),t(function(t){return!window.hasOwnProperty("OfflineAudioContext")&&window.hasOwnProperty("webkitOfflineAudioContext")&&(window.OfflineAudioContext=window.webkitOfflineAudioContext),t.OfflineContext=function(e,i,n){var s=new OfflineAudioContext(e,i*n,n);t.Context.call(this,s),this._duration=i,this._currentTime=0,this.lookAhead=this.blockTime,this.updateInterval=this.blockTime},t.extend(t.OfflineContext,t.Context),t.OfflineContext.prototype.now=function(){return this._currentTime},t.OfflineContext.prototype._createWorker=function(){return{postMessage:function(){}}},t.OfflineContext.prototype.render=function(){for(;this._duration-this._currentTime>=0;)this.emit("tick"),this._currentTime+=t.prototype.blockTime;return new Promise(function(t){this._context.oncomplete=function(e){t(e.renderedBuffer)},this._context.startRendering()}.bind(this))},t.OfflineContext}),t(function(t){return t.Offline=function(e,i){var n,s=t.context.sampleRate,o=t.context,r=new t.OfflineContext(2,i,s);return t.context=r,e(t.Transport),n=r.render(),t.context=o,n.then(function(e){return new t.Buffer(e)})},t.Offline}),t(function(t){return t.Effect=function(){this.createInsOuts(1,1);var e=this.optionsObject(arguments,["wet"],t.Effect.defaults);this._dryWet=new t.CrossFade(e.wet),this.wet=this._dryWet.fade,this.effectSend=new t.Gain,this.effectReturn=new t.Gain,this.input.connect(this._dryWet.a),this.input.connect(this.effectSend),this.effectReturn.connect(this._dryWet.b),this._dryWet.connect(this.output),this._readOnly(["wet"])},t.extend(t.Effect),t.Effect.defaults={wet:1},t.Effect.prototype.connectEffect=function(t){return this.effectSend.chain(t,this.effectReturn),this},t.Effect.prototype.dispose=function(){return t.prototype.dispose.call(this),this._dryWet.dispose(),this._dryWet=null,this.effectSend.dispose(),this.effectSend=null,this.effectReturn.dispose(),this.effectReturn=null,this._writable(["wet"]),this.wet=null,this},t.Effect}),t(function(t){return t.AutoFilter=function(){var e=this.optionsObject(arguments,["frequency","baseFrequency","octaves"],t.AutoFilter.defaults);t.Effect.call(this,e),this._lfo=new t.LFO({frequency:e.frequency,amplitude:e.depth}),this.depth=this._lfo.amplitude,this.frequency=this._lfo.frequency,this.filter=new t.Filter(e.filter),this._octaves=0,this.connectEffect(this.filter),this._lfo.connect(this.filter.frequency),this.type=e.type,this._readOnly(["frequency","depth"]),this.octaves=e.octaves,this.baseFrequency=e.baseFrequency},
+t.extend(t.AutoFilter,t.Effect),t.AutoFilter.defaults={frequency:1,type:"sine",depth:1,baseFrequency:200,octaves:2.6,filter:{type:"lowpass",rolloff:-12,Q:1}},t.AutoFilter.prototype.start=function(t){return this._lfo.start(t),this},t.AutoFilter.prototype.stop=function(t){return this._lfo.stop(t),this},t.AutoFilter.prototype.sync=function(t){return this._lfo.sync(t),this},t.AutoFilter.prototype.unsync=function(){return this._lfo.unsync(),this},Object.defineProperty(t.AutoFilter.prototype,"type",{get:function(){return this._lfo.type},set:function(t){this._lfo.type=t}}),Object.defineProperty(t.AutoFilter.prototype,"baseFrequency",{get:function(){return this._lfo.min},set:function(t){this._lfo.min=this.toFrequency(t),this.octaves=this._octaves}}),Object.defineProperty(t.AutoFilter.prototype,"octaves",{get:function(){return this._octaves},set:function(t){this._octaves=t,this._lfo.max=this.baseFrequency*Math.pow(2,t)}}),t.AutoFilter.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this._lfo.dispose(),this._lfo=null,this.filter.dispose(),this.filter=null,this._writable(["frequency","depth"]),this.frequency=null,this.depth=null,this},t.AutoFilter}),t(function(t){return t.AutoPanner=function(){var e=this.optionsObject(arguments,["frequency"],t.AutoPanner.defaults);t.Effect.call(this,e),this._lfo=new t.LFO({frequency:e.frequency,amplitude:e.depth,min:-1,max:1}),this.depth=this._lfo.amplitude,this._panner=new t.Panner,this.frequency=this._lfo.frequency,this.connectEffect(this._panner),this._lfo.connect(this._panner.pan),this.type=e.type,this._readOnly(["depth","frequency"])},t.extend(t.AutoPanner,t.Effect),t.AutoPanner.defaults={frequency:1,type:"sine",depth:1},t.AutoPanner.prototype.start=function(t){return this._lfo.start(t),this},t.AutoPanner.prototype.stop=function(t){return this._lfo.stop(t),this},t.AutoPanner.prototype.sync=function(t){return this._lfo.sync(t),this},t.AutoPanner.prototype.unsync=function(){return this._lfo.unsync(),this},Object.defineProperty(t.AutoPanner.prototype,"type",{get:function(){return this._lfo.type},set:function(t){this._lfo.type=t}}),t.AutoPanner.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this._lfo.dispose(),this._lfo=null,this._panner.dispose(),this._panner=null,this._writable(["depth","frequency"]),this.frequency=null,this.depth=null,this},t.AutoPanner}),t(function(t){return t.AutoWah=function(){var e=this.optionsObject(arguments,["baseFrequency","octaves","sensitivity"],t.AutoWah.defaults);t.Effect.call(this,e),this.follower=new t.Follower(e.follower),this._sweepRange=new t.ScaleExp(0,1,.5),this._baseFrequency=e.baseFrequency,this._octaves=e.octaves,this._inputBoost=new t.Gain,this._bandpass=new t.Filter({rolloff:-48,frequency:0,Q:e.Q}),this._peaking=new t.Filter(0,"peaking"),this._peaking.gain.value=e.gain,this.gain=this._peaking.gain,this.Q=this._bandpass.Q,this.effectSend.chain(this._inputBoost,this.follower,this._sweepRange),this._sweepRange.connect(this._bandpass.frequency),this._sweepRange.connect(this._peaking.frequency),this.effectSend.chain(this._bandpass,this._peaking,this.effectReturn),this._setSweepRange(),this.sensitivity=e.sensitivity,this._readOnly(["gain","Q"])},t.extend(t.AutoWah,t.Effect),t.AutoWah.defaults={baseFrequency:100,octaves:6,sensitivity:0,Q:2,gain:2,follower:{attack:.3,release:.5}},Object.defineProperty(t.AutoWah.prototype,"octaves",{get:function(){return this._octaves},set:function(t){this._octaves=t,this._setSweepRange()}}),Object.defineProperty(t.AutoWah.prototype,"baseFrequency",{get:function(){return this._baseFrequency},set:function(t){this._baseFrequency=t,this._setSweepRange()}}),Object.defineProperty(t.AutoWah.prototype,"sensitivity",{get:function(){return this.gainToDb(1/this._inputBoost.gain.value)},set:function(t){this._inputBoost.gain.value=1/this.dbToGain(t)}}),t.AutoWah.prototype._setSweepRange=function(){this._sweepRange.min=this._baseFrequency,this._sweepRange.max=Math.min(this._baseFrequency*Math.pow(2,this._octaves),this.context.sampleRate/2)},t.AutoWah.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this.follower.dispose(),this.follower=null,this._sweepRange.dispose(),this._sweepRange=null,this._bandpass.dispose(),this._bandpass=null,this._peaking.dispose(),this._peaking=null,this._inputBoost.dispose(),this._inputBoost=null,this._writable(["gain","Q"]),this.gain=null,this.Q=null,this},t.AutoWah}),t(function(t){return t.BitCrusher=function(){var e,i=this.optionsObject(arguments,["bits"],t.BitCrusher.defaults);t.Effect.call(this,i),e=1/Math.pow(2,i.bits-1),this._subtract=new t.Subtract,this._modulo=new t.Modulo(e),this._bits=i.bits,this.effectSend.fan(this._subtract,this._modulo),this._modulo.connect(this._subtract,0,1),this._subtract.connect(this.effectReturn)},t.extend(t.BitCrusher,t.Effect),t.BitCrusher.defaults={bits:4},Object.defineProperty(t.BitCrusher.prototype,"bits",{get:function(){return this._bits},set:function(t){this._bits=t;var e=1/Math.pow(2,t-1);this._modulo.value=e}}),t.BitCrusher.prototype.dispose=function(){return t.Effect.prototype.dispose.call(this),this._subtract.dispose(),this._subtract=null,this._modulo.dispose(),this._modulo=null,this},t.BitCrusher}),t(function(t){return t.Chebyshev=function(){var e=this.optionsObject(arguments,["order"],t.Chebyshev.defaults);t.Effect.call(this,e),this._shaper=new t.WaveShaper(4096),this._order=e.order,this.connectEffect(this._shaper),this.order=e.order,this.oversample=e.oversample},t.extend(t.Chebyshev,t.Effect),t.Chebyshev.defaults={order:1,oversample:"none"},t.Chebyshev.prototype._getCoefficient=function(t,e,i){return i.hasOwnProperty(e)?i[e]:(i[e]=0===e?0:1===e?t:2*t*this._getCoefficient(t,e-1,i)-this._getCoefficient(t,e-2,i),i[e])},Object.defineProperty(t.Chebyshev.prototype,"order",{get:function(){return this._order},set:function(t){var e,i,n,s;for(this._order=t,e=new Array(4096),i=e.length,n=0;nthis.probability)return;if(this.humanize){var i=.02;this.isBoolean(this.humanize)||(i=this.toSeconds(this.humanize)),e+=(2*Math.random()-1)*i}this.callback(e,this.value)}},t.Event.prototype._getLoopDuration=function(){return Math.round((this._loopEnd-this._loopStart)/this._playbackRate)},Object.defineProperty(t.Event.prototype,"loop",{get:function(){return this._loop},set:function(t){this._loop=t,this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"loopEnd",{get:function(){return t.TransportTime(this._loopEnd,"i").toNotation()},set:function(t){this._loopEnd=this.toTicks(t),this._loop&&this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"loopStart",{get:function(){return t.TransportTime(this._loopStart,"i").toNotation()},set:function(t){this._loopStart=this.toTicks(t),this._loop&&this._rescheduleEvents()}}),Object.defineProperty(t.Event.prototype,"progress",{get:function(){var e,i,n;return this._loop?(e=t.Transport.ticks,i=this._state.get(e),null!==i&&i.state===t.State.Started?(n=this._getLoopDuration(),(e-i.time)%n/n):0):0}}),t.Event.prototype.dispose=function(){this.cancel(),this._state.dispose(),this._state=null,this.callback=null,this.value=null},t.Event}),t(function(t){
+return t.Loop=function(){var e=this.optionsObject(arguments,["callback","interval"],t.Loop.defaults);this._event=new t.Event({callback:this._tick.bind(this),loop:!0,loopEnd:e.interval,playbackRate:e.playbackRate,probability:e.probability}),this.callback=e.callback,this.iterations=e.iterations},t.extend(t.Loop),t.Loop.defaults={interval:"4n",callback:t.noOp,playbackRate:1,iterations:1/0,probability:!0,mute:!1},t.Loop.prototype.start=function(t){return this._event.start(t),this},t.Loop.prototype.stop=function(t){return this._event.stop(t),this},t.Loop.prototype.cancel=function(t){return this._event.cancel(t),this},t.Loop.prototype._tick=function(t){this.callback(t)},Object.defineProperty(t.Loop.prototype,"state",{get:function(){return this._event.state}}),Object.defineProperty(t.Loop.prototype,"progress",{get:function(){return this._event.progress}}),Object.defineProperty(t.Loop.prototype,"interval",{get:function(){return this._event.loopEnd},set:function(t){this._event.loopEnd=t}}),Object.defineProperty(t.Loop.prototype,"playbackRate",{get:function(){return this._event.playbackRate},set:function(t){this._event.playbackRate=t}}),Object.defineProperty(t.Loop.prototype,"humanize",{get:function(){return this._event.humanize},set:function(t){this._event.humanize=t}}),Object.defineProperty(t.Loop.prototype,"probability",{get:function(){return this._event.probability},set:function(t){this._event.probability=t}}),Object.defineProperty(t.Loop.prototype,"mute",{get:function(){return this._event.mute},set:function(t){this._event.mute=t}}),Object.defineProperty(t.Loop.prototype,"iterations",{get:function(){return this._event.loop===!0?1/0:this._event.loop},set:function(t){this._event.loop=t===1/0||t}}),t.Loop.prototype.dispose=function(){this._event.dispose(),this._event=null,this.callback=null},t.Loop}),t(function(t){return t.Part=function(){var e,i,n=this.optionsObject(arguments,["callback","events"],t.Part.defaults);if(this._loop=n.loop,this._loopStart=this.toTicks(n.loopStart),this._loopEnd=this.toTicks(n.loopEnd),this._playbackRate=n.playbackRate,this._probability=n.probability,this._humanize=n.humanize,this._startOffset=0,this._state=new t.TimelineState(t.State.Stopped),this._events=[],this.callback=n.callback,this.mute=n.mute,e=this.defaultArg(n.events,[]),!this.isUndef(n.events))for(i=0;i=this._loopStart&&e.startOffset=n&&(e.loop=!1,e.start(t.TransportTime(i,"i"))):e.startOffset>=n&&e.start(t.TransportTime(i,"i"))},Object.defineProperty(t.Part.prototype,"startOffset",{get:function(){return this._startOffset},set:function(t){this._startOffset=t,this._forEach(function(t){t.startOffset+=this._startOffset})}}),t.Part.prototype.stop=function(e){var i=this.toTicks(e);return this._state.cancel(i),this._state.setStateAtTime(t.State.Stopped,i),this._forEach(function(t){t.stop(e)}),this},t.Part.prototype.at=function(e,i){var n,s,o;for(e=t.TransportTime(e),n=t.Time(1,"i").toSeconds(),s=0;s=0;n--)s=this._events[n],s instanceof t.Part?s.remove(e,i):s.startOffset===e&&(this.isUndef(i)||!this.isUndef(i)&&s.value===i)&&(this._events.splice(n,1),s.dispose());return this},t.Part.prototype.removeAll=function(){return this._forEach(function(t){t.dispose()}),this._events=[],this},t.Part.prototype.cancel=function(t){return t=this.toTicks(t),this._forEach(function(e){e.cancel(t)}),this._state.cancel(t),this},t.Part.prototype._forEach=function(e,i){var n,s;for(i=this.defaultArg(i,this),n=this._events.length-1;n>=0;n--)s=this._events[n],s instanceof t.Part?s._forEach(e,i):e.call(i,s);return this},t.Part.prototype._setAll=function(t,e){this._forEach(function(i){i[t]=e})},t.Part.prototype._tick=function(t,e){this.mute||this.callback(t,e)},t.Part.prototype._testLoopBoundries=function(e){e.startOffset=this._loopEnd?e.cancel(0):e.state===t.State.Stopped&&this._restartEvent(e)},Object.defineProperty(t.Part.prototype,"probability",{get:function(){return this._probability},set:function(t){this._probability=t,this._setAll("probability",t)}}),Object.defineProperty(t.Part.prototype,"humanize",{get:function(){return this._humanize},set:function(t){this._humanize=t,this._setAll("humanize",t)}}),Object.defineProperty(t.Part.prototype,"loop",{get:function(){return this._loop},set:function(t){this._loop=t,this._forEach(function(e){e._loopStart=this._loopStart,e._loopEnd=this._loopEnd,e.loop=t,this._testLoopBoundries(e)})}}),Object.defineProperty(t.Part.prototype,"loopEnd",{get:function(){return t.TransportTime(this._loopEnd,"i").toNotation()},set:function(t){this._loopEnd=this.toTicks(t),this._loop&&this._forEach(function(e){e.loopEnd=t,this._testLoopBoundries(e)})}}),Object.defineProperty(t.Part.prototype,"loopStart",{get:function(){return t.TransportTime(this._loopStart,"i").toNotation()},set:function(t){this._loopStart=this.toTicks(t),this._loop&&this._forEach(function(t){t.loopStart=this.loopStart,this._testLoopBoundries(t)})}}),Object.defineProperty(t.Part.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._setAll("playbackRate",t)}}),Object.defineProperty(t.Part.prototype,"length",{get:function(){return this._events.length}}),t.Part.prototype.dispose=function(){return this.removeAll(),this._state.dispose(),this._state=null,this.callback=null,this._events=null,this},t.Part}),t(function(t){return t.Pattern=function(){var e=this.optionsObject(arguments,["callback","values","pattern"],t.Pattern.defaults);t.Loop.call(this,e),this._pattern=new t.CtrlPattern({values:e.values,type:e.pattern,index:e.index})},t.extend(t.Pattern,t.Loop),t.Pattern.defaults={pattern:t.CtrlPattern.Type.Up,values:[]},t.Pattern.prototype._tick=function(t){this.callback(t,this._pattern.value),this._pattern.next()},Object.defineProperty(t.Pattern.prototype,"index",{get:function(){return this._pattern.index},set:function(t){this._pattern.index=t}}),Object.defineProperty(t.Pattern.prototype,"values",{get:function(){return this._pattern.values},set:function(t){this._pattern.values=t}}),Object.defineProperty(t.Pattern.prototype,"value",{get:function(){return this._pattern.value}}),Object.defineProperty(t.Pattern.prototype,"pattern",{get:function(){return this._pattern.type},set:function(t){this._pattern.type=t}}),t.Pattern.prototype.dispose=function(){t.Loop.prototype.dispose.call(this),this._pattern.dispose(),this._pattern=null},t.Pattern}),t(function(t){return t.Sequence=function(){var e,i=this.optionsObject(arguments,["callback","events","subdivision"],t.Sequence.defaults),n=i.events;if(delete i.events,t.Part.call(this,i),this._subdivision=this.toTicks(i.subdivision),this.isUndef(i.loopEnd)&&!this.isUndef(n)&&(this._loopEnd=n.length*this._subdivision),this._loop=!0,!this.isUndef(n))for(e=0;e1&&(e=-t/2,i=t/(this._oscillators.length-1),this._forEach(function(t,n){t.detune.value=e+i*n}))}}),Object.defineProperty(t.FatOscillator.prototype,"count",{get:function(){return this._oscillators.length},set:function(e){var i,n;if(e=Math.max(e,1),this._oscillators.length!==e){for(this._forEach(function(t){t.dispose()}),this._oscillators=[],i=0;i0?(i=this.frequency.value,this.frequency.setValueAtTime(i,e),n=this.toSeconds(this.portamento),this.frequency.exponentialRampToValueAtTime(t,e+n)):this.frequency.setValueAtTime(t,e),this},t.Monophonic}),t(function(t){return t.Synth=function(e){e=this.defaultArg(e,t.Synth.defaults),t.Monophonic.call(this,e),this.oscillator=new t.OmniOscillator(e.oscillator),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new t.AmplitudeEnvelope(e.envelope),this.oscillator.chain(this.envelope,this.output),this.oscillator.start(),this._readOnly(["oscillator","frequency","detune","envelope"])},t.extend(t.Synth,t.Monophonic),t.Synth.defaults={oscillator:{type:"triangle"},envelope:{attack:.005,decay:.1,sustain:.3,release:1}},t.Synth.prototype._triggerEnvelopeAttack=function(t,e){return this.envelope.triggerAttack(t,e),this},t.Synth.prototype._triggerEnvelopeRelease=function(t){return this.envelope.triggerRelease(t),this},t.Synth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["oscillator","frequency","detune","envelope"]),this.oscillator.dispose(),this.oscillator=null,this.envelope.dispose(),this.envelope=null,this.frequency=null,this.detune=null,this},t.Synth}),t(function(t){return t.AMSynth=function(e){e=this.defaultArg(e,t.AMSynth.defaults),t.Monophonic.call(this,e),this._carrier=new t.Synth,this._carrier.volume.value=-10,this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope.set(e.envelope),this._modulator=new t.Synth,this._modulator.volume.value=-10,this.modulation=this._modulator.oscillator.set(e.modulation),this.modulationEnvelope=this._modulator.envelope.set(e.modulationEnvelope),this.frequency=new t.Signal(440,t.Type.Frequency),this.detune=new t.Signal(e.detune,t.Type.Cents),this.harmonicity=new t.Multiply(e.harmonicity),this.harmonicity.units=t.Type.Positive,this._modulationScale=new t.AudioToGain,this._modulationNode=new t.Gain,this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),this._readOnly(["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"])},t.extend(t.AMSynth,t.Monophonic),t.AMSynth.defaults={harmonicity:3,detune:0,oscillator:{type:"sine"},envelope:{attack:.01,decay:.01,sustain:1,release:.5},modulation:{type:"square"},modulationEnvelope:{attack:.5,decay:0,sustain:1,release:.5}},t.AMSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this.envelope.triggerAttack(t,e),this.modulationEnvelope.triggerAttack(t,e),this},t.AMSynth.prototype._triggerEnvelopeRelease=function(t){return this.envelope.triggerRelease(t),this.modulationEnvelope.triggerRelease(t),this},t.AMSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["frequency","harmonicity","oscillator","envelope","modulation","modulationEnvelope","detune"]),this._carrier.dispose(),this._carrier=null,this._modulator.dispose(),this._modulator=null,this.frequency.dispose(),this.frequency=null,this.detune.dispose(),this.detune=null,this.harmonicity.dispose(),this.harmonicity=null,this._modulationScale.dispose(),this._modulationScale=null,this._modulationNode.dispose(),this._modulationNode=null,this.oscillator=null,this.envelope=null,this.modulationEnvelope=null,this.modulation=null,this},t.AMSynth}),t(function(t){return t.MonoSynth=function(e){e=this.defaultArg(e,t.MonoSynth.defaults),t.Monophonic.call(this,e),this.oscillator=new t.OmniOscillator(e.oscillator),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.filter=new t.Filter(e.filter),this.filterEnvelope=new t.FrequencyEnvelope(e.filterEnvelope),this.envelope=new t.AmplitudeEnvelope(e.envelope),this.oscillator.chain(this.filter,this.envelope,this.output),this.oscillator.start(),this.filterEnvelope.connect(this.filter.frequency),this._readOnly(["oscillator","frequency","detune","filter","filterEnvelope","envelope"])},t.extend(t.MonoSynth,t.Monophonic),t.MonoSynth.defaults={frequency:"C4",detune:0,oscillator:{type:"square"},filter:{Q:6,type:"lowpass",rolloff:-24},envelope:{attack:.005,decay:.1,sustain:.9,release:1},filterEnvelope:{attack:.06,decay:.2,sustain:.5,release:2,baseFrequency:200,octaves:7,exponent:2}},t.MonoSynth.prototype._triggerEnvelopeAttack=function(t,e){return this.envelope.triggerAttack(t,e),this.filterEnvelope.triggerAttack(t),this},t.MonoSynth.prototype._triggerEnvelopeRelease=function(t){return this.envelope.triggerRelease(t),this.filterEnvelope.triggerRelease(t),this},t.MonoSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["oscillator","frequency","detune","filter","filterEnvelope","envelope"]),this.oscillator.dispose(),this.oscillator=null,this.envelope.dispose(),this.envelope=null,this.filterEnvelope.dispose(),this.filterEnvelope=null,this.filter.dispose(),this.filter=null,this.frequency=null,this.detune=null,this},t.MonoSynth}),t(function(t){return t.DuoSynth=function(e){e=this.defaultArg(e,t.DuoSynth.defaults),t.Monophonic.call(this,e),this.voice0=new t.MonoSynth(e.voice0),this.voice0.volume.value=-10,this.voice1=new t.MonoSynth(e.voice1),this.voice1.volume.value=-10,this._vibrato=new t.LFO(e.vibratoRate,-50,50),this._vibrato.start(),this.vibratoRate=this._vibrato.frequency,this._vibratoGain=new t.Gain(e.vibratoAmount,t.Type.Positive),this.vibratoAmount=this._vibratoGain.gain,this.frequency=new t.Signal(440,t.Type.Frequency),this.harmonicity=new t.Multiply(e.harmonicity),this.harmonicity.units=t.Type.Positive,this.frequency.connect(this.voice0.frequency),this.frequency.chain(this.harmonicity,this.voice1.frequency),this._vibrato.connect(this._vibratoGain),this._vibratoGain.fan(this.voice0.detune,this.voice1.detune),this.voice0.connect(this.output),this.voice1.connect(this.output),this._readOnly(["voice0","voice1","frequency","vibratoAmount","vibratoRate"])},t.extend(t.DuoSynth,t.Monophonic),t.DuoSynth.defaults={vibratoAmount:.5,vibratoRate:5,harmonicity:1.5,voice0:{volume:-10,portamento:0,oscillator:{type:"sine"},filterEnvelope:{
+attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}},voice1:{volume:-10,portamento:0,oscillator:{type:"sine"},filterEnvelope:{attack:.01,decay:0,sustain:1,release:.5},envelope:{attack:.01,decay:0,sustain:1,release:.5}}},t.DuoSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this.voice0.envelope.triggerAttack(t,e),this.voice1.envelope.triggerAttack(t,e),this.voice0.filterEnvelope.triggerAttack(t),this.voice1.filterEnvelope.triggerAttack(t),this},t.DuoSynth.prototype._triggerEnvelopeRelease=function(t){return this.voice0.triggerRelease(t),this.voice1.triggerRelease(t),this},t.DuoSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["voice0","voice1","frequency","vibratoAmount","vibratoRate"]),this.voice0.dispose(),this.voice0=null,this.voice1.dispose(),this.voice1=null,this.frequency.dispose(),this.frequency=null,this._vibratoGain.dispose(),this._vibratoGain=null,this._vibrato=null,this.harmonicity.dispose(),this.harmonicity=null,this.vibratoAmount.dispose(),this.vibratoAmount=null,this.vibratoRate=null,this},t.DuoSynth}),t(function(t){return t.FMSynth=function(e){e=this.defaultArg(e,t.FMSynth.defaults),t.Monophonic.call(this,e),this._carrier=new t.Synth(e.carrier),this._carrier.volume.value=-10,this.oscillator=this._carrier.oscillator,this.envelope=this._carrier.envelope.set(e.envelope),this._modulator=new t.Synth(e.modulator),this._modulator.volume.value=-10,this.modulation=this._modulator.oscillator.set(e.modulation),this.modulationEnvelope=this._modulator.envelope.set(e.modulationEnvelope),this.frequency=new t.Signal(440,t.Type.Frequency),this.detune=new t.Signal(e.detune,t.Type.Cents),this.harmonicity=new t.Multiply(e.harmonicity),this.harmonicity.units=t.Type.Positive,this.modulationIndex=new t.Multiply(e.modulationIndex),this.modulationIndex.units=t.Type.Positive,this._modulationNode=new t.Gain(0),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this.detune.fan(this._carrier.detune,this._modulator.detune),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this._readOnly(["frequency","harmonicity","modulationIndex","oscillator","envelope","modulation","modulationEnvelope","detune"])},t.extend(t.FMSynth,t.Monophonic),t.FMSynth.defaults={harmonicity:3,modulationIndex:10,detune:0,oscillator:{type:"sine"},envelope:{attack:.01,decay:.01,sustain:1,release:.5},modulation:{type:"square"},modulationEnvelope:{attack:.5,decay:0,sustain:1,release:.5}},t.FMSynth.prototype._triggerEnvelopeAttack=function(t,e){return t=this.toSeconds(t),this.envelope.triggerAttack(t,e),this.modulationEnvelope.triggerAttack(t),this},t.FMSynth.prototype._triggerEnvelopeRelease=function(t){return t=this.toSeconds(t),this.envelope.triggerRelease(t),this.modulationEnvelope.triggerRelease(t),this},t.FMSynth.prototype.dispose=function(){return t.Monophonic.prototype.dispose.call(this),this._writable(["frequency","harmonicity","modulationIndex","oscillator","envelope","modulation","modulationEnvelope","detune"]),this._carrier.dispose(),this._carrier=null,this._modulator.dispose(),this._modulator=null,this.frequency.dispose(),this.frequency=null,this.detune.dispose(),this.detune=null,this.modulationIndex.dispose(),this.modulationIndex=null,this.harmonicity.dispose(),this.harmonicity=null,this._modulationNode.dispose(),this._modulationNode=null,this.oscillator=null,this.envelope=null,this.modulationEnvelope=null,this.modulation=null,this},t.FMSynth}),t(function(t){return t.MembraneSynth=function(e){e=this.defaultArg(e,t.MembraneSynth.defaults),t.Instrument.call(this,e),this.oscillator=new t.OmniOscillator(e.oscillator).start(),this.envelope=new t.AmplitudeEnvelope(e.envelope),this.octaves=e.octaves,this.pitchDecay=e.pitchDecay,this.oscillator.chain(this.envelope,this.output),this._readOnly(["oscillator","envelope"])},t.extend(t.MembraneSynth,t.Instrument),t.MembraneSynth.defaults={pitchDecay:.05,octaves:10,oscillator:{type:"sine"},envelope:{attack:.001,decay:.4,sustain:.01,release:1.4,attackCurve:"exponential"}},t.MembraneSynth.prototype.triggerAttack=function(t,e,i){e=this.toSeconds(e),t=this.toFrequency(t);var n=t*this.octaves;return this.oscillator.frequency.setValueAtTime(n,e),this.oscillator.frequency.exponentialRampToValueAtTime(t,e+this.toSeconds(this.pitchDecay)),this.envelope.triggerAttack(e,i),this},t.MembraneSynth.prototype.triggerRelease=function(t){return this.envelope.triggerRelease(t),this},t.MembraneSynth.prototype.dispose=function(){return t.Instrument.prototype.dispose.call(this),this._writable(["oscillator","envelope"]),this.oscillator.dispose(),this.oscillator=null,this.envelope.dispose(),this.envelope=null,this},t.MembraneSynth}),t(function(t){var e=[1,1.483,1.932,2.546,2.63,3.897];return t.MetalSynth=function(i){var n,s,o;for(i=this.defaultArg(i,t.MetalSynth.defaults),t.Instrument.call(this,i),this.frequency=new t.Signal(i.frequency,t.Type.Frequency),this._oscillators=[],this._freqMultipliers=[],this._amplitue=new t.Gain(0).connect(this.output),this._highpass=new t.Filter({type:"highpass",Q:-3.0102999566398125}).connect(this._amplitue),this._octaves=i.octaves,this._filterFreqScaler=new t.Scale(i.resonance,7e3),this.envelope=new t.Envelope({attack:i.envelope.attack,attackCurve:"linear",decay:i.envelope.decay,sustain:0,release:i.envelope.release}).chain(this._filterFreqScaler,this._highpass.frequency),this.envelope.connect(this._amplitue.gain),n=0;n=this._startTime&&e0?(this._gainNode.gain.setValueAtTime(0,t),this._gainNode.gain.linearRampToValueAtTime(this._gain,t+s)):this._gainNode.gain.setValueAtTime(n,t),this._startTime=t+s,this.isUndef(i)||(i=this.defaultArg(i,this.buffer.duration-e),i=this.toSeconds(i),this.stop(t+i+s,s))),this},t.BufferSource.prototype.stop=function(t,e){return this.buffer&&(t=this.toSeconds(t),e=this.isUndef(e)?this.toSeconds(this.fadeOut):this.toSeconds(e),this._stopTime=t+e,this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),e>0?(this._gainNode.gain.setValueAtTime(this._gain,t),this._gainNode.gain.linearRampToValueAtTime(0,t+e),t+=e):this._gainNode.gain.setValueAtTime(0,t),this.isNumber(this._source.playbackState)&&2!==this._source.playbackState||this._source.stop(t),clearTimeout(this._onendedTimeout),this._onendedTimeout=setTimeout(this._onended.bind(this),1e3*(this._stopTime-this.now()))),this},t.BufferSource.prototype._onended=function(){this.onended(this),this.dispose()},Object.defineProperty(t.BufferSource.prototype,"loopStart",{get:function(){return this._source.loopStart},set:function(t){this._source.loopStart=this.toSeconds(t)}}),Object.defineProperty(t.BufferSource.prototype,"loopEnd",{get:function(){return this._source.loopEnd},set:function(t){this._source.loopEnd=this.toSeconds(t)}}),Object.defineProperty(t.BufferSource.prototype,"buffer",{get:function(){return this._source?this._source.buffer:null},set:function(e){e instanceof t.Buffer?this._source.buffer=e.get():this._source.buffer=e}}),Object.defineProperty(t.BufferSource.prototype,"loop",{get:function(){return this._source.loop},set:function(t){this._source.loop=t}}),t.BufferSource.prototype.dispose=function(){return this.onended=null,this._source&&(this._source.disconnect(),this._source=null),this._gainNode&&(this._gainNode.dispose(),this._gainNode=null),this._startTime=-1,this.playbackRate=null,this.output=null,clearTimeout(this._onendedTimeout),this},t.BufferSource}),t(function(t){function e(){for(var e in s)o[e]=(new t.Buffer).fromArray(s[e])}var i,n,s,o;return t.Noise=function(){var e=this.optionsObject(arguments,["type"],t.Noise.defaults);t.Source.call(this,e),this._source=null,this._type=e.type,this._playbackRate=e.playbackRate},t.extend(t.Noise,t.Source),t.Noise.defaults={type:"white",playbackRate:1},Object.defineProperty(t.Noise.prototype,"type",{get:function(){return this._type},set:function(e){if(this._type!==e){if(!(e in o))throw new TypeError("Tone.Noise: invalid type: "+e);if(this._type=e,this.state===t.State.Started){var i=this.now()+this.blockTime;this._stop(i),this._start(i)}}}}),Object.defineProperty(t.Noise.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._source&&(this._source.playbackRate.value=t)}}),t.Noise.prototype._start=function(e){var i=o[this._type];this._source=new t.BufferSource(i).connect(this.output),this._source.loop=!0,this._source.playbackRate.value=this._playbackRate,this._source.start(this.toSeconds(e),Math.random()*(i.duration-.001))},t.Noise.prototype._stop=function(t){this._source&&(this._source.stop(this.toSeconds(t)),this._source=null)},t.Noise.prototype.dispose=function(){return t.Source.prototype.dispose.call(this),null!==this._source&&(this._source.disconnect(),this._source=null),this._buffer=null,this},i=220500,n=2,s={pink:function(){var t,e,s,o,r,a,h,l,u,p,c,f=[];for(t=0;te&&(o.voice.triggerRelease(e),o.release=e);return this},t.PolySynth.prototype.set=function(t,e,i){for(var n=0;nt&&(i.release=t,i.voice.triggerRelease(t));return this},t.PolySynth.prototype.dispose=function(){t.Instrument.prototype.dispose.call(this);for(var e=0;es)for(;i>s;)i-=r;this._source.start(e,i)}else this._source.start(e,i,n);return this},t.Player.prototype._stop=function(t){return this._source&&(this._source.stop(this.toSeconds(t)),this._source=null),this},t.Player.prototype.seek=function(e,i){return i=this.toSeconds(i),this._state.getValueAtTime(i)===t.State.Started&&(e=this.toSeconds(e),this._stop(i),this._start(i,e)),this},t.Player.prototype.setLoopPoints=function(t,e){return this.loopStart=t,this.loopEnd=e,this},Object.defineProperty(t.Player.prototype,"loopStart",{get:function(){return this._loopStart},set:function(t){this._loopStart=t,this._source&&(this._source.loopStart=this.toSeconds(t))}}),Object.defineProperty(t.Player.prototype,"loopEnd",{get:function(){return this._loopEnd},set:function(t){this._loopEnd=t,this._source&&(this._source.loopEnd=this.toSeconds(t))}}),Object.defineProperty(t.Player.prototype,"buffer",{get:function(){return this._buffer},set:function(t){this._buffer.set(t)}}),Object.defineProperty(t.Player.prototype,"loop",{get:function(){return this._loop},set:function(t){this._loop=t,this._source&&(this._source.loop=t)}}),Object.defineProperty(t.Player.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this._source&&(this._source.playbackRate.value=t)}}),Object.defineProperty(t.Player.prototype,"reverse",{get:function(){return this._buffer.reverse},set:function(t){this._buffer.reverse=t}}),t.Player.prototype.dispose=function(){return t.Source.prototype.dispose.call(this),null!==this._source&&(this._source.disconnect(),this._source=null),this._buffer.dispose(),this._buffer=null,this},t.Player}),t(function(t){return t.Sampler=function(){var e=this.optionsObject(arguments,["url","onload"],t.Sampler.defaults);t.Instrument.call(this,e),this.player=new t.Player(e.url,e.onload),this.player.retrigger=!0,this.envelope=new t.AmplitudeEnvelope(e.envelope),this.player.chain(this.envelope,this.output),this._readOnly(["player","envelope"]),this.loop=e.loop,this.reverse=e.reverse},t.extend(t.Sampler,t.Instrument),t.Sampler.defaults={onload:t.noOp,loop:!1,reverse:!1,envelope:{attack:.001,decay:0,sustain:1,release:.1}},t.Sampler.prototype.triggerAttack=function(t,e,i){return e=this.toSeconds(e),t=this.defaultArg(t,0),this.player.playbackRate=this.intervalToFrequencyRatio(t),this.player.start(e),this.envelope.triggerAttack(e,i),this},t.Sampler.prototype.triggerRelease=function(t){return t=this.toSeconds(t),this.envelope.triggerRelease(t),this.player.stop(this.toSeconds(this.envelope.release)+t),this},Object.defineProperty(t.Sampler.prototype,"loop",{get:function(){return this.player.loop},set:function(t){this.player.loop=t}}),Object.defineProperty(t.Sampler.prototype,"reverse",{get:function(){return this.player.reverse},set:function(t){this.player.reverse=t}}),Object.defineProperty(t.Sampler.prototype,"buffer",{get:function(){return this.player.buffer},set:function(t){this.player.buffer=t}}),t.Sampler.prototype.dispose=function(){return t.Instrument.prototype.dispose.call(this),this._writable(["player","envelope"]),this.player.dispose(),this.player=null,this.envelope.dispose(),this.envelope=null,this},t.Sampler}),t(function(t){return t.GainToAudio=function(){this._norm=this.input=this.output=new t.WaveShaper(function(t){return 2*Math.abs(t)-1})},t.extend(t.GainToAudio,t.SignalBase),t.GainToAudio.prototype.dispose=function(){return t.prototype.dispose.call(this),this._norm.dispose(),this._norm=null,this},t.GainToAudio}),t(function(t){return t.Normalize=function(e,i){this._inputMin=this.defaultArg(e,0),this._inputMax=this.defaultArg(i,1),this._sub=this.input=new t.Add(0),this._div=this.output=new t.Multiply(1),this._sub.connect(this._div),this._setRange()},t.extend(t.Normalize,t.SignalBase),Object.defineProperty(t.Normalize.prototype,"min",{get:function(){return this._inputMin},set:function(t){this._inputMin=t,this._setRange()}}),Object.defineProperty(t.Normalize.prototype,"max",{get:function(){return this._inputMax},set:function(t){this._inputMax=t,this._setRange()}}),t.Normalize.prototype._setRange=function(){this._sub.value=-this._inputMin,this._div.value=1/(this._inputMax-this._inputMin)},t.Normalize.prototype.dispose=function(){return t.prototype.dispose.call(this),this._sub.dispose(),this._sub=null,this._div.dispose(),this._div=null,this},t.Normalize}),t(function(t){return t.MultiPlayer=function(){var e=this.optionsObject(arguments,["urls","onload"],t.MultiPlayer.defaults);e.urls instanceof t.Buffers?this.buffers=e.urls:this.buffers=new t.Buffers(e.urls,e.onload),this._activeSources={},this.fadeIn=e.fadeIn,this.fadeOut=e.fadeOut,this._volume=this.output=new t.Volume(e.volume),this.volume=this._volume.volume,this._readOnly("volume"),this._volume.output.output.channelCount=2,this._volume.output.output.channelCountMode="explicit",this.mute=e.mute},t.extend(t.MultiPlayer,t.Source),t.MultiPlayer.defaults={onload:t.noOp,fadeIn:0,fadeOut:0},t.MultiPlayer.prototype._makeSource=function(e){var i,n;return this.isString(e)||this.isNumber(e)?i=this.buffers.get(e).get():e instanceof t.Buffer?i=e.get():e instanceof AudioBuffer&&(i=e),n=new t.BufferSource(i).connect(this.output),this._activeSources.hasOwnProperty(e)||(this._activeSources[e]=[]),this._activeSources[e].push(n),n},t.MultiPlayer.prototype.start=function(t,e,i,n,s,o){e=this.toSeconds(e);var r=this._makeSource(t);return r.start(e,i,n,this.defaultArg(o,1),this.fadeIn),n&&r.stop(e+this.toSeconds(n),this.fadeOut),s=this.defaultArg(s,0),r.playbackRate.value=this.intervalToFrequencyRatio(s),this},t.MultiPlayer.prototype.startLoop=function(t,e,i,n,s,o,r){e=this.toSeconds(e);var a=this._makeSource(t);return a.loop=!0,a.loopStart=this.toSeconds(this.defaultArg(n,0)),a.loopEnd=this.toSeconds(this.defaultArg(s,0)),a.start(e,i,void 0,this.defaultArg(r,1),this.fadeIn),o=this.defaultArg(o,0),a.playbackRate.value=this.intervalToFrequencyRatio(o),this},t.MultiPlayer.prototype.stop=function(t,e){if(!this._activeSources[t]||!this._activeSources[t].length)throw new Error("Tone.MultiPlayer: cannot stop a buffer that hasn't been started or is already stopped");return e=this.toSeconds(e),this._activeSources[t].shift().stop(e,this.fadeOut),this},t.MultiPlayer.prototype.stopAll=function(t){var e,i,n;t=this.toSeconds(t);for(e in this._activeSources)for(i=this._activeSources[e],n=0;n0?t.State.Started:t.State.Stopped}}),Object.defineProperty(t.MultiPlayer.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.MultiPlayer.prototype.dispose=function(){t.prototype.dispose.call(this),this._volume.dispose(),this._volume=null,this._writable("volume"),this.volume=null;for(var e in this._activeSources)this._activeSources[e].forEach(function(t){t.dispose()});return this.buffers.dispose(),this.buffers=null,this._activeSources=null,this},t.MultiPlayer}),t(function(t){return t.GrainPlayer=function(){var e=this.optionsObject(arguments,["url","onload"],t.GrainPlayer.defaults);t.Source.call(this),this.buffer=new t.Buffer(e.url,e.onload),this._player=(new t.MultiPlayer).connect(this.output),this._clock=new t.Clock(this._tick.bind(this),1),this._loopStart=0,this._loopEnd=0,this._playbackRate=e.playbackRate,this._grainSize=e.grainSize,this._overlap=e.overlap,this.detune=e.detune,this.drift=e.drift,this.overlap=e.overlap,this.loop=e.loop,this.playbackRate=e.playbackRate,this.grainSize=e.grainSize,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.reverse=e.reverse},t.extend(t.GrainPlayer,t.Source),t.GrainPlayer.defaults={onload:t.noOp,overlap:.1,grainSize:.2,drift:0,playbackRate:1,detune:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1},t.GrainPlayer.prototype._start=function(t,e,i){e=this.defaultArg(e,0),e=this.toSeconds(e),t=this.toSeconds(t),this._offset=e,this._clock.start(t),this._player.volume.setValueAtTime(0,t),i&&this._stop(t+this.toSeconds(i))},t.GrainPlayer.prototype._stop=function(t){this._clock.stop(t),this._player.volume.cancelScheduledValues(t),this._player.volume.setValueAtTime(-(1/0),t)},t.GrainPlayer.prototype._tick=function(t){var e,i,n,s,o,r,a=this.buffer.duration;this.loop&&this._loopEnd>0&&(a=this._loopEnd),e=(2*Math.random()-1)*this.drift,i=this._offset-this._overlap+e,n=this.detune/100,i=Math.max(i,0),i=Math.min(i,a),s=this._player.fadeIn,this.loop&&this._offset>a?(o=this._offset-a,this._player.start(this.buffer,t,i,o+this._overlap,n),i=this._offset%a,this._offset=this._loopStart,this._player.fadeIn=0,this._player.start(this.buffer,t+o,this._offset,i+this._overlap,n)):this._offset>a?this.stop(t):(0===i&&(this._player.fadeIn=0),this._player.start(this.buffer,t,i,this.grainSize+this._overlap,n)),this._player.fadeIn=s,r=this._clock._nextTick-t,this._offset+=r*this._playbackRate},t.GrainPlayer.prototype.scrub=function(t,e){return this._offset=this.toSeconds(t),this._tick(this.toSeconds(e)),this},Object.defineProperty(t.GrainPlayer.prototype,"playbackRate",{get:function(){return this._playbackRate},set:function(t){this._playbackRate=t,this.grainSize=this._grainSize}}),Object.defineProperty(t.GrainPlayer.prototype,"loopStart",{get:function(){return this._loopStart},set:function(t){this._loopStart=this.toSeconds(t)}}),Object.defineProperty(t.GrainPlayer.prototype,"loopEnd",{get:function(){return this._loopEnd},set:function(t){this._loopEnd=this.toSeconds(t)}}),Object.defineProperty(t.GrainPlayer.prototype,"reverse",{get:function(){return this.buffer.reverse},set:function(t){this.buffer.reverse=t}}),Object.defineProperty(t.GrainPlayer.prototype,"grainSize",{get:function(){return this._grainSize},set:function(t){this._grainSize=this.toSeconds(t),this._clock.frequency.value=this._playbackRate/this._grainSize}}),Object.defineProperty(t.GrainPlayer.prototype,"overlap",{get:function(){return this._overlap},set:function(t){t=this.toSeconds(t),this._overlap=t,this._overlap<0?(this._player.fadeIn=.01,this._player.fadeOut=.01):(this._player.fadeIn=t,this._player.fadeOut=t)}}),t.GrainPlayer.prototype.dispose=function(){return t.Source.prototype.dispose.call(this),this.buffer.dispose(),this.buffer=null,this._player.dispose(),this._player=null,this._clock.dispose(),this._clock=null,this},t.GrainPlayer}),t(function(t){return t.UserMedia=function(){var e=this.optionsObject(arguments,["volume"],t.UserMedia.defaults);this._mediaStream=null,this._stream=null,this._device=null,this._volume=this.output=new t.Volume(e.volume),this.volume=this._volume.volume,this._readOnly("volume"),this.mute=e.mute},t.extend(t.UserMedia),t.UserMedia.defaults={volume:0,mute:!1},t.UserMedia.prototype.open=function(t){return t=this.defaultArg(t,"default"),this.enumerateDevices().then(function(e){var i,n;if(this.isNumber(t)?i=e[t]:(i=e.find(function(e){return e.label===t||e.deviceId===t}))||(i=e[0]),!i)throw new Error("Tone.UserMedia: no matching audio inputs.");return this._device=i,n={audio:{deviceId:i.deviceId,echoCancellation:!1,sampleRate:this.context.sampleRate}},navigator.mediaDevices.getUserMedia(n).then(function(t){return this._stream||(this._stream=t,this._mediaStream=this.context.createMediaStreamSource(t),this._mediaStream.connect(this.output)),this}.bind(this))}.bind(this))},t.UserMedia.prototype.close=function(){return this._stream&&(this._stream.getAudioTracks().forEach(function(t){t.stop()}),this._stream=null,this._mediaStream.disconnect(),this._mediaStream=null),this._device=null,this},t.UserMedia.prototype.enumerateDevices=function(){return navigator.mediaDevices.enumerateDevices().then(function(t){return t.filter(function(t){return"audioinput"===t.kind})})},Object.defineProperty(t.UserMedia.prototype,"state",{get:function(){return this._stream&&this._stream.active?t.State.Started:t.State.Stopped}}),Object.defineProperty(t.UserMedia.prototype,"deviceId",{get:function(){if(this._device)return this._device.deviceId}}),Object.defineProperty(t.UserMedia.prototype,"groupId",{get:function(){if(this._device)return this._device.groupId}}),Object.defineProperty(t.UserMedia.prototype,"label",{get:function(){if(this._device)return this._device.label}}),Object.defineProperty(t.UserMedia.prototype,"mute",{get:function(){return this._volume.mute},set:function(t){this._volume.mute=t}}),t.UserMedia.prototype.dispose=function(){return t.prototype.dispose.call(this),this.close(),this._writable("volume"),this._volume.dispose(),this._volume=null,this.volume=null,this},
+Object.defineProperty(t.UserMedia,"supported",{get:function(){return!t.prototype.isUndef(navigator.mediaDevices)&&t.prototype.isFunction(navigator.mediaDevices.getUserMedia)}}),t.UserMedia}),e});
\ No newline at end of file
diff --git a/public/conductor/lib/colors-2.2.0.min.css b/public/conductor/lib/colors-2.2.0.min.css
new file mode 100644
index 0000000..7066d47
--- /dev/null
+++ b/public/conductor/lib/colors-2.2.0.min.css
@@ -0,0 +1 @@
+.bg-navy{background-color:#001F3F}.bg-blue{background-color:#0074D9}.bg-aqua{background-color:#7FDBFF}.bg-teal{background-color:#39CCCC}.bg-olive{background-color:#3D9970}.bg-green{background-color:#2ECC40}.bg-lime{background-color:#01FF70}.bg-yellow{background-color:#FFDC00}.bg-orange{background-color:#FF851B}.bg-red{background-color:#FF4136}.bg-fuchsia{background-color:#F012BE}.bg-purple{background-color:#B10DC9}.bg-maroon{background-color:#85144B}.bg-white{background-color:#fff}.bg-gray{background-color:#aaa}.bg-silver{background-color:#ddd}.bg-black{background-color:#111}.navy{color:#001F3F}.blue{color:#0074D9}.aqua{color:#7FDBFF}.teal{color:#39CCCC}.olive{color:#3D9970}.green{color:#2ECC40}.lime{color:#01FF70}.yellow{color:#FFDC00}.orange{color:#FF851B}.red{color:#FF4136}.fuchsia{color:#F012BE}.purple{color:#B10DC9}.maroon{color:#85144B}.white{color:#fff}.silver{color:#ddd}.gray{color:#aaa}.black{color:#111}.border--navy{border-color:#001F3F}.border--blue{border-color:#0074D9}.border--aqua{border-color:#7FDBFF}.border--teal{border-color:#39CCCC}.border--olive{border-color:#3D9970}.border--green{border-color:#2ECC40}.border--lime{border-color:#01FF70}.border--yellow{border-color:#FFDC00}.border--orange{border-color:#FF851B}.border--red{border-color:#FF4136}.border--fuchsia{border-color:#F012BE}.border--purple{border-color:#B10DC9}.border--maroon{border-color:#85144B}.border--white{border-color:#fff}.border--gray{border-color:#aaa}.border--silver{border-color:#ddd}.border--black{border-color:#111}.fill-navy{fill:#001F3F}.fill-blue{fill:#0074D9}.fill-aqua{fill:#7FDBFF}.fill-teal{fill:#39CCCC}.fill-olive{fill:#3D9970}.fill-green{fill:#2ECC40}.fill-lime{fill:#01FF70}.fill-yellow{fill:#FFDC00}.fill-orange{fill:#FF851B}.fill-red{fill:#FF4136}.fill-fuchsia{fill:#F012BE}.fill-purple{fill:#B10DC9}.fill-maroon{fill:#85144B}.fill-white{fill:#fff}.fill-gray{fill:#aaa}.fill-silver{fill:#ddd}.fill-black{fill:#111}.stroke-navy{stroke:#001F3F}.stroke-blue{stroke:#0074D9}.stroke-aqua{stroke:#7FDBFF}.stroke-teal{stroke:#39CCCC}.stroke-olive{stroke:#3D9970}.stroke-green{stroke:#2ECC40}.stroke-lime{stroke:#01FF70}.stroke-yellow{stroke:#FFDC00}.stroke-orange{stroke:#FF851B}.stroke-red{stroke:#FF4136}.stroke-fuchsia{stroke:#F012BE}.stroke-purple{stroke:#B10DC9}.stroke-maroon{stroke:#85144B}.stroke-white{stroke:#fff}.stroke-gray{stroke:#aaa}.stroke-silver{stroke:#ddd}.stroke-black{stroke:#111}
\ No newline at end of file
diff --git a/public/conductor/lib/hammer-v2.0.8.min.js b/public/conductor/lib/hammer-v2.0.8.min.js
new file mode 100644
index 0000000..edadee1
--- /dev/null
+++ b/public/conductor/lib/hammer-v2.0.8.min.js
@@ -0,0 +1,7 @@
+/*! Hammer.JS - v2.0.8 - 2016-04-23
+ * http://hammerjs.github.io/
+ *
+ * Copyright (c) 2016 Jorik Tangelder;
+ * Licensed under the MIT license */
+!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&la(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==oa?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=ra(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=qa(j.x)>qa(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};b.eventType!==Ea&&f.eventType!==Ga||(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ha&&(i>Da||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=qa(l.x)>qa(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:pa(c/b),y:pa(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ia:qa(a)>=qa(b)?0>a?Ja:Ka:0>b?La:Ma}function H(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Ra)+I(a[1],a[0],Ra)}function K(a,b){return H(b[0],b[1],Ra)/H(a[0],a[1],Ra)}function L(){this.evEl=Ta,this.evWin=Ua,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Xa,this.evWin=Ya,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=$a,this.evWin=_a,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ga|Ha)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=bb,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Ea|Fa)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Ea)for(e=0;e-1&&d.splice(a,1)};setTimeout(e,cb)}}function U(a){for(var b=a.srcEvent.clientX,c=a.srcEvent.clientY,d=0;d=f&&db>=g)return!0}return!1}function V(a,b){this.manager=a,this.set(b)}function W(a){if(p(a,jb))return jb;var b=p(a,kb),c=p(a,lb);return b&&c?jb:b||c?b?kb:lb:p(a,ib)?ib:hb}function X(){if(!fb)return!1;var b={},c=a.CSS&&a.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(d){b[d]=c?a.CSS.supports("touch-action",d):!0}),b}function Y(a){this.options=la({},this.defaults,a||{}),this.id=v(),this.manager=null,this.options.enable=l(this.options.enable,!0),this.state=nb,this.simultaneous={},this.requireFail=[]}function Z(a){return a&sb?"cancel":a&qb?"end":a&pb?"move":a&ob?"start":""}function $(a){return a==Ma?"down":a==La?"up":a==Ja?"left":a==Ka?"right":""}function _(a,b){var c=b.manager;return c?c.get(a):a}function aa(){Y.apply(this,arguments)}function ba(){aa.apply(this,arguments),this.pX=null,this.pY=null}function ca(){aa.apply(this,arguments)}function da(){Y.apply(this,arguments),this._timer=null,this._input=null}function ea(){aa.apply(this,arguments)}function fa(){aa.apply(this,arguments)}function ga(){Y.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ha(a,b){return b=b||{},b.recognizers=l(b.recognizers,ha.defaults.preset),new ia(a,b)}function ia(a,b){this.options=la({},ha.defaults,b||{}),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=a,this.input=y(this),this.touchAction=new V(this,this.options.touchAction),ja(this,!0),g(this.options.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ja(a,b){var c=a.element;if(c.style){var d;g(a.options.cssProps,function(e,f){d=u(c.style,f),b?(a.oldCssProps[d]=c.style[d],c.style[d]=e):c.style[d]=a.oldCssProps[d]||""}),b||(a.oldCssProps={})}}function ka(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var la,ma=["","webkit","Moz","MS","ms","o"],na=b.createElement("div"),oa="function",pa=Math.round,qa=Math.abs,ra=Date.now;la="function"!=typeof Object.assign?function(a){if(a===d||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;ch&&(b.push(a),h=b.length-1):e&(Ga|Ha)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Za={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},$a="touchstart",_a="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Za[a.type];if(b===Ea&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ga|Ha)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}}});var ab={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},bb="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=ab[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}});var cb=2500,db=25;i(R,x,{handler:function(a,b,c){var d=c.pointerType==za,e=c.pointerType==Ba;if(!(e&&c.sourceCapabilities&&c.sourceCapabilities.firesTouchEvents)){if(d)S.call(this,b,c);else if(e&&U.call(this,c))return;this.callback(a,b,c)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var eb=u(na.style,"touchAction"),fb=eb!==d,gb="compute",hb="auto",ib="manipulation",jb="none",kb="pan-x",lb="pan-y",mb=X();V.prototype={set:function(a){a==gb&&(a=this.compute()),fb&&this.manager.element.style&&mb[a]&&(this.manager.element.style[eb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),W(a.join(" "))},preventDefaults:function(a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,jb)&&!mb[jb],f=p(d,lb)&&!mb[lb],g=p(d,kb)&&!mb[kb];if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}return g&&f?void 0:e||f&&c&Na||g&&c&Oa?this.preventSrc(b):void 0},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var nb=1,ob=2,pb=4,qb=8,rb=qb,sb=16,tb=32;Y.prototype={defaults:{},set:function(a){return la(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=_(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=_(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=_(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;qb>d&&b(c.options.event+Z(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=qb&&b(c.options.event+Z(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=tb)},canEmit:function(){for(var a=0;af?Ja:Ka,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ia:0>g?La:Ma,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return aa.prototype.attrTest.call(this,a)&&(this.state&ob||!(this.state&ob)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i(ca,aa,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&ob)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(da,Y,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[hb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Ga|Ha)&&!f)this.reset();else if(a.eventType&Ea)this.reset(),this._timer=e(function(){this.state=rb,this.tryEmit()},b.time,this);else if(a.eventType&Ga)return rb;return tb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===rb&&(a&&a.eventType&Ga?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=ra(),this.manager.emit(this.options.event,this._input)))}}),i(ea,aa,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&ob)}}),i(fa,aa,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Na|Oa,pointers:1},getTouchAction:function(){return ba.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Na|Oa)?b=a.overallVelocity:c&Na?b=a.overallVelocityX:c&Oa&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&qa(b)>this.options.velocity&&a.eventType&Ga},emit:function(a){var b=$(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ga,Y,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ib]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
+a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading..........!?
+
+
+
+
+
+
+
+ 소리나는 걸음
+ 조를 골라주세요
+ 연결 확인
+ 장소 #1
+ 장소 #2
+ 장소 #3
+ 장소 #4
+
+
+