"],"id":426}]]},"ace":{"folds":[],"scrolltop":45.5,"scrollleft":0,"selection":{"start":{"row":5,"column":26},"end":{"row":5,"column":26},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":0,"state":"start","mode":"ace/mode/ejs"}},"timestamp":1447223132436,"hash":"65ce390b73a42b6a23aeb58f39a67f49e0fcbfc2"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/Final/views/login.ejs b/.c9/metadata/workspace/YelpCamp/Final/views/login.ejs
deleted file mode 100644
index dae54343..00000000
--- a/.c9/metadata/workspace/YelpCamp/Final/views/login.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"login.ejs","tooltip":"/YelpCamp/Final/views/login.ejs","undoManager":{"mark":24,"position":24,"stack":[[{"start":{"row":0,"column":0},"end":{"row":10,"column":0},"action":"remove","lines":["<% include ./partials/header %> ","","
Login!
","","","<% include ./partials/footer %> ",""],"id":2}],[{"start":{"row":0,"column":0},"end":{"row":22,"column":0},"action":"insert","lines":["<% include ./partials/header %>","
","<% include ../partials/footer %>","",""],"id":3}],[{"start":{"row":8,"column":32},"end":{"row":9,"column":0},"action":"insert","lines":["",""],"id":4}],[{"start":{"row":3,"column":0},"end":{"row":7,"column":7},"action":"remove","lines":[""],"id":5}],[{"start":{"row":10,"column":41},"end":{"row":10,"column":61},"action":"remove","lines":["eate a New Campgroun"],"id":6}],[{"start":{"row":10,"column":40},"end":{"row":10,"column":41},"action":"remove","lines":["r"],"id":7}],[{"start":{"row":10,"column":39},"end":{"row":10,"column":40},"action":"remove","lines":["C"],"id":8}],[{"start":{"row":10,"column":39},"end":{"row":10,"column":40},"action":"insert","lines":["S"],"id":9}],[{"start":{"row":10,"column":40},"end":{"row":10,"column":41},"action":"insert","lines":["i"],"id":10}],[{"start":{"row":10,"column":41},"end":{"row":10,"column":42},"action":"insert","lines":["g"],"id":11}],[{"start":{"row":10,"column":42},"end":{"row":10,"column":43},"action":"insert","lines":["n"],"id":12}],[{"start":{"row":10,"column":43},"end":{"row":10,"column":44},"action":"insert","lines":[" "],"id":13}],[{"start":{"row":10,"column":44},"end":{"row":10,"column":45},"action":"insert","lines":["U"],"id":14}],[{"start":{"row":10,"column":45},"end":{"row":10,"column":46},"action":"insert","lines":["p"],"id":15}],[{"start":{"row":10,"column":46},"end":{"row":10,"column":47},"action":"remove","lines":["d"],"id":16}],[{"start":{"row":12,"column":54},"end":{"row":13,"column":16},"action":"insert","lines":[""," "],"id":17}],[{"start":{"row":13,"column":16},"end":{"row":17,"column":7},"action":"insert","lines":[""],"id":18}],[{"start":{"row":12,"column":0},"end":{"row":12,"column":54},"action":"remove","lines":[" "],"id":50}],[{"start":{"row":12,"column":51},"end":{"row":13,"column":0},"action":"remove","lines":["",""],"id":51}],[{"start":{"row":27,"column":11},"end":{"row":27,"column":12},"action":"remove","lines":["."],"id":52}],[{"start":{"row":27,"column":11},"end":{"row":27,"column":12},"action":"insert","lines":["."],"id":53}],[{"start":{"row":0,"column":0},"end":{"row":5,"column":0},"action":"remove","lines":["<% include ./partials/header %> ","
Sign Up!
","","","<% include ./partials/footer %> ",""],"id":54}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"remove","lines":["",""],"id":55}],[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"remove","lines":["",""],"id":56}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"remove","lines":["."],"id":58}],[{"start":{"row":20,"column":11},"end":{"row":20,"column":12},"action":"remove","lines":["."],"id":59}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":9,"column":40},"end":{"row":9,"column":40},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":7,"state":"start","mode":"ace/mode/ejs"}},"timestamp":1446334446448,"hash":"d42731db3a47b7513fc145235e14961b51b66d03"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v1/app.js b/.c9/metadata/workspace/YelpCamp/v1/app.js
deleted file mode 100644
index e972ce5a..00000000
--- a/.c9/metadata/workspace/YelpCamp/v1/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v1/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":25,"column":12},"end":{"row":25,"column":13},"action":"insert","lines":["a"],"id":1468}],[{"start":{"row":25,"column":13},"end":{"row":25,"column":14},"action":"insert","lines":["m"],"id":1469}],[{"start":{"row":25,"column":14},"end":{"row":25,"column":15},"action":"insert","lines":["p"],"id":1470}],[{"start":{"row":25,"column":15},"end":{"row":25,"column":16},"action":"insert","lines":["g"],"id":1471}],[{"start":{"row":25,"column":16},"end":{"row":25,"column":17},"action":"insert","lines":["r"],"id":1472}],[{"start":{"row":25,"column":17},"end":{"row":25,"column":18},"action":"insert","lines":["o"],"id":1473}],[{"start":{"row":25,"column":18},"end":{"row":25,"column":19},"action":"insert","lines":["u"],"id":1474}],[{"start":{"row":25,"column":19},"end":{"row":25,"column":20},"action":"insert","lines":["n"],"id":1475}],[{"start":{"row":25,"column":20},"end":{"row":25,"column":21},"action":"insert","lines":["d"],"id":1476}],[{"start":{"row":25,"column":21},"end":{"row":25,"column":22},"action":"insert","lines":[" "],"id":1477}],[{"start":{"row":25,"column":21},"end":{"row":25,"column":22},"action":"remove","lines":[" "],"id":1478}],[{"start":{"row":25,"column":21},"end":{"row":25,"column":22},"action":"insert","lines":[" "],"id":1479}],[{"start":{"row":25,"column":22},"end":{"row":25,"column":23},"action":"insert","lines":["="],"id":1480}],[{"start":{"row":25,"column":23},"end":{"row":25,"column":24},"action":"insert","lines":[" "],"id":1481}],[{"start":{"row":25,"column":24},"end":{"row":25,"column":25},"action":"insert","lines":["{"],"id":1482}],[{"start":{"row":25,"column":25},"end":{"row":25,"column":26},"action":"insert","lines":["}"],"id":1483}],[{"start":{"row":25,"column":25},"end":{"row":25,"column":26},"action":"insert","lines":["n"],"id":1484}],[{"start":{"row":25,"column":26},"end":{"row":25,"column":27},"action":"insert","lines":["a"],"id":1485}],[{"start":{"row":25,"column":27},"end":{"row":25,"column":28},"action":"insert","lines":["m"],"id":1486}],[{"start":{"row":25,"column":28},"end":{"row":25,"column":29},"action":"insert","lines":["e"],"id":1487}],[{"start":{"row":25,"column":29},"end":{"row":25,"column":30},"action":"insert","lines":[" "],"id":1488}],[{"start":{"row":25,"column":29},"end":{"row":25,"column":30},"action":"remove","lines":[" "],"id":1489}],[{"start":{"row":25,"column":29},"end":{"row":25,"column":30},"action":"insert","lines":[":"],"id":1490}],[{"start":{"row":25,"column":30},"end":{"row":25,"column":31},"action":"insert","lines":[" "],"id":1491}],[{"start":{"row":25,"column":31},"end":{"row":25,"column":32},"action":"insert","lines":["n"],"id":1492}],[{"start":{"row":25,"column":32},"end":{"row":25,"column":33},"action":"insert","lines":["a"],"id":1493}],[{"start":{"row":25,"column":33},"end":{"row":25,"column":34},"action":"insert","lines":["m"],"id":1494}],[{"start":{"row":25,"column":34},"end":{"row":25,"column":35},"action":"insert","lines":["e"],"id":1495}],[{"start":{"row":25,"column":35},"end":{"row":25,"column":36},"action":"insert","lines":[" "],"id":1496}],[{"start":{"row":25,"column":35},"end":{"row":25,"column":36},"action":"remove","lines":[" "],"id":1497}],[{"start":{"row":25,"column":35},"end":{"row":25,"column":36},"action":"insert","lines":[","],"id":1498}],[{"start":{"row":25,"column":36},"end":{"row":25,"column":37},"action":"insert","lines":[" "],"id":1499}],[{"start":{"row":25,"column":37},"end":{"row":25,"column":38},"action":"insert","lines":["i"],"id":1500}],[{"start":{"row":25,"column":38},"end":{"row":25,"column":39},"action":"insert","lines":["m"],"id":1501}],[{"start":{"row":25,"column":39},"end":{"row":25,"column":40},"action":"insert","lines":["a"],"id":1502}],[{"start":{"row":25,"column":40},"end":{"row":25,"column":41},"action":"insert","lines":["g"],"id":1503}],[{"start":{"row":25,"column":41},"end":{"row":25,"column":42},"action":"insert","lines":["e"],"id":1504}],[{"start":{"row":25,"column":42},"end":{"row":25,"column":43},"action":"insert","lines":[" "],"id":1505}],[{"start":{"row":25,"column":42},"end":{"row":25,"column":43},"action":"remove","lines":[" "],"id":1506}],[{"start":{"row":25,"column":42},"end":{"row":25,"column":43},"action":"insert","lines":[":"],"id":1507}],[{"start":{"row":25,"column":43},"end":{"row":25,"column":44},"action":"insert","lines":[" "],"id":1508}],[{"start":{"row":25,"column":44},"end":{"row":25,"column":45},"action":"insert","lines":["i"],"id":1509}],[{"start":{"row":25,"column":45},"end":{"row":25,"column":46},"action":"insert","lines":["m"],"id":1510}],[{"start":{"row":25,"column":46},"end":{"row":25,"column":47},"action":"insert","lines":["a"],"id":1511}],[{"start":{"row":25,"column":47},"end":{"row":25,"column":48},"action":"insert","lines":["g"],"id":1512}],[{"start":{"row":25,"column":48},"end":{"row":25,"column":49},"action":"insert","lines":["e"],"id":1513}],[{"start":{"row":25,"column":49},"end":{"row":25,"column":50},"action":"insert","lines":[" "],"id":1514}],[{"start":{"row":25,"column":49},"end":{"row":25,"column":50},"action":"remove","lines":[" "],"id":1515}],[{"start":{"row":26,"column":21},"end":{"row":26,"column":22},"action":"insert","lines":["n"],"id":1516}],[{"start":{"row":26,"column":22},"end":{"row":26,"column":23},"action":"insert","lines":["e"],"id":1517}],[{"start":{"row":26,"column":23},"end":{"row":26,"column":24},"action":"insert","lines":["w"],"id":1518}],[{"start":{"row":26,"column":21},"end":{"row":26,"column":24},"action":"remove","lines":["new"],"id":1519},{"start":{"row":26,"column":21},"end":{"row":26,"column":34},"action":"insert","lines":["newCampground"]}],[{"start":{"row":26,"column":35},"end":{"row":26,"column":36},"action":"insert","lines":[";"],"id":1520}],[{"start":{"row":27,"column":39},"end":{"row":28,"column":0},"action":"insert","lines":["",""],"id":1521},{"start":{"row":28,"column":0},"end":{"row":28,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":28,"column":4},"end":{"row":28,"column":5},"action":"insert","lines":["r"],"id":1522}],[{"start":{"row":28,"column":5},"end":{"row":28,"column":6},"action":"insert","lines":["e"],"id":1523}],[{"start":{"row":28,"column":6},"end":{"row":28,"column":7},"action":"insert","lines":["s"],"id":1524}],[{"start":{"row":28,"column":7},"end":{"row":28,"column":8},"action":"insert","lines":[" "],"id":1525}],[{"start":{"row":28,"column":7},"end":{"row":28,"column":8},"action":"remove","lines":[" "],"id":1526}],[{"start":{"row":28,"column":7},"end":{"row":28,"column":8},"action":"insert","lines":["."],"id":1527}],[{"start":{"row":28,"column":8},"end":{"row":28,"column":9},"action":"insert","lines":["r"],"id":1528}],[{"start":{"row":28,"column":9},"end":{"row":28,"column":10},"action":"insert","lines":["e"],"id":1529}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"insert","lines":["s"],"id":1530}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"remove","lines":["s"],"id":1531}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"insert","lines":["d"],"id":1532}],[{"start":{"row":28,"column":11},"end":{"row":28,"column":12},"action":"insert","lines":["i"],"id":1533}],[{"start":{"row":28,"column":12},"end":{"row":28,"column":13},"action":"insert","lines":["r"],"id":1534},{"start":{"row":28,"column":13},"end":{"row":28,"column":14},"action":"insert","lines":["e"]}],[{"start":{"row":28,"column":14},"end":{"row":28,"column":15},"action":"insert","lines":["c"],"id":1535}],[{"start":{"row":28,"column":15},"end":{"row":28,"column":16},"action":"insert","lines":["t"],"id":1536}],[{"start":{"row":28,"column":16},"end":{"row":28,"column":17},"action":"insert","lines":[" "],"id":1537}],[{"start":{"row":28,"column":16},"end":{"row":28,"column":17},"action":"remove","lines":[" "],"id":1538}],[{"start":{"row":28,"column":16},"end":{"row":28,"column":18},"action":"insert","lines":["()"],"id":1539}],[{"start":{"row":28,"column":17},"end":{"row":28,"column":19},"action":"insert","lines":["\"\""],"id":1540}],[{"start":{"row":28,"column":18},"end":{"row":28,"column":19},"action":"insert","lines":["."],"id":1541},{"start":{"row":28,"column":19},"end":{"row":28,"column":20},"action":"insert","lines":["/"]}],[{"start":{"row":28,"column":19},"end":{"row":28,"column":20},"action":"remove","lines":["/"],"id":1542}],[{"start":{"row":28,"column":18},"end":{"row":28,"column":19},"action":"remove","lines":["."],"id":1543}],[{"start":{"row":28,"column":18},"end":{"row":28,"column":19},"action":"insert","lines":["/"],"id":1544}],[{"start":{"row":28,"column":19},"end":{"row":28,"column":20},"action":"insert","lines":["c"],"id":1545}],[{"start":{"row":28,"column":20},"end":{"row":28,"column":21},"action":"insert","lines":["a"],"id":1546}],[{"start":{"row":28,"column":21},"end":{"row":28,"column":22},"action":"insert","lines":["m"],"id":1547}],[{"start":{"row":28,"column":22},"end":{"row":28,"column":23},"action":"insert","lines":["p"],"id":1548}],[{"start":{"row":28,"column":23},"end":{"row":28,"column":24},"action":"insert","lines":["g"],"id":1549}],[{"start":{"row":28,"column":24},"end":{"row":28,"column":25},"action":"insert","lines":["r"],"id":1550}],[{"start":{"row":28,"column":25},"end":{"row":28,"column":26},"action":"insert","lines":["o"],"id":1551}],[{"start":{"row":28,"column":26},"end":{"row":28,"column":27},"action":"insert","lines":["u"],"id":1552}],[{"start":{"row":28,"column":27},"end":{"row":28,"column":28},"action":"insert","lines":["n"],"id":1553}],[{"start":{"row":28,"column":28},"end":{"row":28,"column":29},"action":"insert","lines":["d"],"id":1554}],[{"start":{"row":28,"column":29},"end":{"row":28,"column":30},"action":"insert","lines":["s"],"id":1555}],[{"start":{"row":28,"column":30},"end":{"row":28,"column":31},"action":"insert","lines":[" "],"id":1556}],[{"start":{"row":28,"column":30},"end":{"row":28,"column":31},"action":"remove","lines":[" "],"id":1557}],[{"start":{"row":28,"column":32},"end":{"row":28,"column":33},"action":"insert","lines":[";"],"id":1558}],[{"start":{"row":11,"column":0},"end":{"row":12,"column":0},"action":"insert","lines":["",""],"id":1560}],[{"start":{"row":11,"column":0},"end":{"row":11,"column":4},"action":"insert","lines":[" "],"id":1561}],[{"start":{"row":11,"column":4},"end":{"row":11,"column":8},"action":"insert","lines":[" "],"id":1562}],[{"start":{"row":11,"column":8},"end":{"row":13,"column":110},"action":"insert","lines":["{name: \"Salmon Creek\", image: \"https://farm9.staticflickr.com/8442/7962474612_bf2baf67c0.jpg\"},"," {name: \"Granite Hill\", image: \"https://farm1.staticflickr.com/60/215827008_6489cd30c3.jpg\"},"," {name: \"Mountain Goat's Rest\", image: \"https://farm7.staticflickr.com/6057/6234565071_4d20668bbd.jpg\"}"],"id":1563}],[{"start":{"row":14,"column":0},"end":{"row":15,"column":0},"action":"insert","lines":["",""],"id":1564}],[{"start":{"row":14,"column":0},"end":{"row":14,"column":4},"action":"insert","lines":[" "],"id":1565}],[{"start":{"row":14,"column":4},"end":{"row":14,"column":8},"action":"insert","lines":[" "],"id":1566}],[{"start":{"row":14,"column":8},"end":{"row":16,"column":110},"action":"insert","lines":["{name: \"Salmon Creek\", image: \"https://farm9.staticflickr.com/8442/7962474612_bf2baf67c0.jpg\"},"," {name: \"Granite Hill\", image: \"https://farm1.staticflickr.com/60/215827008_6489cd30c3.jpg\"},"," {name: \"Mountain Goat's Rest\", image: \"https://farm7.staticflickr.com/6057/6234565071_4d20668bbd.jpg\"}"],"id":1567}],[{"start":{"row":10,"column":110},"end":{"row":10,"column":111},"action":"insert","lines":[","],"id":1568}],[{"start":{"row":13,"column":110},"end":{"row":13,"column":111},"action":"insert","lines":[","],"id":1569}]]},"ace":{"folds":[],"scrolltop":438,"scrollleft":0,"selection":{"start":{"row":25,"column":0},"end":{"row":25,"column":3},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":15,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1445214043000,"hash":"608643a7adb1246641cc119eb87a35e9fb2f4cc9"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v1/package.json b/.c9/metadata/workspace/YelpCamp/v1/package.json
deleted file mode 100644
index 0304b2db..00000000
--- a/.c9/metadata/workspace/YelpCamp/v1/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"package.json","tooltip":"/YelpCamp/v1/package.json","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":120,"scrollleft":0,"selection":{"start":{"row":12,"column":10},"end":{"row":12,"column":10},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":3,"state":"start","mode":"ace/mode/json"}},"timestamp":1445200984406,"hash":"2502146a813c077735d793f20c521c687f90a872"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v1/readme.md b/.c9/metadata/workspace/YelpCamp/v1/readme.md
deleted file mode 100644
index e3f6958d..00000000
--- a/.c9/metadata/workspace/YelpCamp/v1/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v1/readme.md","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":296.5,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":10,"state":"start","mode":"ace/mode/markdown"}},"timestamp":1445309916466,"hash":"dbeb9bdfb617943a12b5b1d55accfabc09633112"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v1/views/campgrounds.ejs b/.c9/metadata/workspace/YelpCamp/v1/views/campgrounds.ejs
deleted file mode 100644
index 6eeb22e7..00000000
--- a/.c9/metadata/workspace/YelpCamp/v1/views/campgrounds.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campgrounds.ejs","tooltip":"/YelpCamp/v1/views/campgrounds.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"insert","lines":["r"],"id":1613}],[{"start":{"row":8,"column":44},"end":{"row":8,"column":45},"action":"insert","lines":["-"],"id":1614}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":["r"],"id":1615}],[{"start":{"row":8,"column":46},"end":{"row":8,"column":47},"action":"insert","lines":["i"],"id":1616}],[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"insert","lines":["g"],"id":1617}],[{"start":{"row":8,"column":48},"end":{"row":8,"column":49},"action":"insert","lines":["h"],"id":1618}],[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"insert","lines":["t"],"id":1619}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"insert","lines":[" "],"id":1620}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"remove","lines":[" "],"id":1621}],[{"start":{"row":9,"column":20},"end":{"row":9,"column":21},"action":"insert","lines":["<"],"id":1622}],[{"start":{"row":9,"column":21},"end":{"row":9,"column":22},"action":"insert","lines":["l"],"id":1623}],[{"start":{"row":9,"column":22},"end":{"row":9,"column":23},"action":"insert","lines":["i"],"id":1624}],[{"start":{"row":9,"column":23},"end":{"row":9,"column":24},"action":"insert","lines":["L"],"id":1625}],[{"start":{"row":9,"column":23},"end":{"row":9,"column":24},"action":"remove","lines":["L"],"id":1626}],[{"start":{"row":9,"column":23},"end":{"row":9,"column":29},"action":"insert","lines":[">"],"id":1627}],[{"start":{"row":9,"column":24},"end":{"row":9,"column":25},"action":"insert","lines":["<"],"id":1628}],[{"start":{"row":9,"column":25},"end":{"row":9,"column":26},"action":"insert","lines":["a"],"id":1629}],[{"start":{"row":9,"column":26},"end":{"row":9,"column":31},"action":"insert","lines":[">"],"id":1630}],[{"start":{"row":9,"column":27},"end":{"row":9,"column":28},"action":"insert","lines":["L"],"id":1631}],[{"start":{"row":9,"column":28},"end":{"row":9,"column":29},"action":"insert","lines":["o"],"id":1632}],[{"start":{"row":9,"column":29},"end":{"row":9,"column":30},"action":"insert","lines":["g"],"id":1633}],[{"start":{"row":9,"column":30},"end":{"row":9,"column":31},"action":"insert","lines":["i"],"id":1634}],[{"start":{"row":9,"column":31},"end":{"row":9,"column":32},"action":"insert","lines":["n"],"id":1635}],[{"start":{"row":9,"column":32},"end":{"row":9,"column":33},"action":"insert","lines":[" "],"id":1636}],[{"start":{"row":9,"column":32},"end":{"row":9,"column":33},"action":"remove","lines":[" "],"id":1637}],[{"start":{"row":9,"column":26},"end":{"row":9,"column":27},"action":"insert","lines":[" "],"id":1638}],[{"start":{"row":9,"column":27},"end":{"row":9,"column":28},"action":"insert","lines":["c"],"id":1639}],[{"start":{"row":9,"column":28},"end":{"row":9,"column":29},"action":"insert","lines":["l"],"id":1640}],[{"start":{"row":9,"column":29},"end":{"row":9,"column":30},"action":"insert","lines":["a"],"id":1641}],[{"start":{"row":9,"column":30},"end":{"row":9,"column":31},"action":"insert","lines":["s"],"id":1642}],[{"start":{"row":9,"column":31},"end":{"row":9,"column":32},"action":"insert","lines":["s"],"id":1643}],[{"start":{"row":9,"column":32},"end":{"row":9,"column":33},"action":"insert","lines":[" "],"id":1644}],[{"start":{"row":9,"column":32},"end":{"row":9,"column":33},"action":"remove","lines":[" "],"id":1645}],[{"start":{"row":9,"column":31},"end":{"row":9,"column":32},"action":"remove","lines":["s"],"id":1646}],[{"start":{"row":9,"column":30},"end":{"row":9,"column":31},"action":"remove","lines":["s"],"id":1647}],[{"start":{"row":9,"column":29},"end":{"row":9,"column":30},"action":"remove","lines":["a"],"id":1648}],[{"start":{"row":9,"column":28},"end":{"row":9,"column":29},"action":"remove","lines":["l"],"id":1649}],[{"start":{"row":9,"column":27},"end":{"row":9,"column":28},"action":"remove","lines":["c"],"id":1650}],[{"start":{"row":9,"column":26},"end":{"row":9,"column":27},"action":"remove","lines":[" "],"id":1651}],[{"start":{"row":9,"column":26},"end":{"row":9,"column":27},"action":"insert","lines":[" "],"id":1652}],[{"start":{"row":9,"column":27},"end":{"row":9,"column":28},"action":"insert","lines":["h"],"id":1653}],[{"start":{"row":9,"column":28},"end":{"row":9,"column":29},"action":"insert","lines":["r"],"id":1654}],[{"start":{"row":9,"column":29},"end":{"row":9,"column":30},"action":"insert","lines":["e"],"id":1655}],[{"start":{"row":9,"column":30},"end":{"row":9,"column":31},"action":"insert","lines":["f"],"id":1656}],[{"start":{"row":9,"column":31},"end":{"row":9,"column":32},"action":"insert","lines":[" "],"id":1657}],[{"start":{"row":9,"column":31},"end":{"row":9,"column":32},"action":"remove","lines":[" "],"id":1658}],[{"start":{"row":9,"column":31},"end":{"row":9,"column":32},"action":"insert","lines":["="],"id":1659}],[{"start":{"row":9,"column":32},"end":{"row":9,"column":34},"action":"insert","lines":["\"\""],"id":1660}],[{"start":{"row":9,"column":33},"end":{"row":9,"column":34},"action":"insert","lines":["/"],"id":1661}],[{"start":{"row":10,"column":0},"end":{"row":11,"column":0},"action":"insert","lines":["
"],"id":917}],[{"start":{"row":13,"column":16},"end":{"row":13,"column":20},"action":"insert","lines":[" "],"id":918}],[{"start":{"row":3,"column":11},"end":{"row":3,"column":12},"action":"insert","lines":[" "],"id":919}],[{"start":{"row":3,"column":12},"end":{"row":3,"column":13},"action":"insert","lines":["s"],"id":920}],[{"start":{"row":3,"column":13},"end":{"row":3,"column":14},"action":"insert","lines":["t"],"id":921}],[{"start":{"row":3,"column":14},"end":{"row":3,"column":15},"action":"insert","lines":["y"],"id":922}],[{"start":{"row":3,"column":15},"end":{"row":3,"column":16},"action":"insert","lines":["l"],"id":923}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"insert","lines":["c"],"id":924}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"remove","lines":["c"],"id":925}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"insert","lines":["e"],"id":926}],[{"start":{"row":3,"column":17},"end":{"row":3,"column":18},"action":"insert","lines":[" "],"id":927}],[{"start":{"row":3,"column":17},"end":{"row":3,"column":18},"action":"remove","lines":[" "],"id":928}],[{"start":{"row":3,"column":17},"end":{"row":3,"column":18},"action":"insert","lines":["="],"id":929}],[{"start":{"row":3,"column":18},"end":{"row":3,"column":20},"action":"insert","lines":["\"\""],"id":930}],[{"start":{"row":3,"column":19},"end":{"row":3,"column":20},"action":"insert","lines":["t"],"id":931}],[{"start":{"row":3,"column":20},"end":{"row":3,"column":21},"action":"insert","lines":["e"],"id":932}],[{"start":{"row":3,"column":21},"end":{"row":3,"column":22},"action":"insert","lines":["x"],"id":933}],[{"start":{"row":3,"column":22},"end":{"row":3,"column":23},"action":"insert","lines":["t"],"id":934}],[{"start":{"row":3,"column":23},"end":{"row":3,"column":24},"action":"insert","lines":["-"],"id":935}],[{"start":{"row":3,"column":24},"end":{"row":3,"column":25},"action":"insert","lines":["a"],"id":936}],[{"start":{"row":3,"column":25},"end":{"row":3,"column":26},"action":"insert","lines":["l"],"id":937}],[{"start":{"row":3,"column":26},"end":{"row":3,"column":27},"action":"insert","lines":["i"],"id":938}],[{"start":{"row":3,"column":27},"end":{"row":3,"column":28},"action":"insert","lines":["g"],"id":939}],[{"start":{"row":3,"column":28},"end":{"row":3,"column":29},"action":"insert","lines":["n"],"id":940}],[{"start":{"row":3,"column":29},"end":{"row":3,"column":30},"action":"insert","lines":[" "],"id":941}],[{"start":{"row":3,"column":29},"end":{"row":3,"column":30},"action":"remove","lines":[" "],"id":942}],[{"start":{"row":3,"column":29},"end":{"row":3,"column":30},"action":"insert","lines":[":"],"id":943}],[{"start":{"row":3,"column":30},"end":{"row":3,"column":31},"action":"insert","lines":[" "],"id":944}],[{"start":{"row":3,"column":31},"end":{"row":3,"column":32},"action":"insert","lines":["c"],"id":945}],[{"start":{"row":3,"column":32},"end":{"row":3,"column":33},"action":"insert","lines":["e"],"id":946}],[{"start":{"row":3,"column":33},"end":{"row":3,"column":34},"action":"insert","lines":["m"],"id":947}],[{"start":{"row":3,"column":34},"end":{"row":3,"column":35},"action":"insert","lines":["t"],"id":948}],[{"start":{"row":3,"column":35},"end":{"row":3,"column":36},"action":"insert","lines":["e"],"id":949}],[{"start":{"row":3,"column":36},"end":{"row":3,"column":37},"action":"insert","lines":["r"],"id":950}],[{"start":{"row":3,"column":37},"end":{"row":3,"column":38},"action":"insert","lines":[" "],"id":951}],[{"start":{"row":3,"column":37},"end":{"row":3,"column":38},"action":"remove","lines":[" "],"id":952}],[{"start":{"row":3,"column":36},"end":{"row":3,"column":37},"action":"remove","lines":["r"],"id":953}],[{"start":{"row":3,"column":35},"end":{"row":3,"column":36},"action":"remove","lines":["e"],"id":954}],[{"start":{"row":3,"column":34},"end":{"row":3,"column":35},"action":"remove","lines":["t"],"id":955}],[{"start":{"row":3,"column":33},"end":{"row":3,"column":34},"action":"remove","lines":["m"],"id":956}],[{"start":{"row":3,"column":33},"end":{"row":3,"column":34},"action":"insert","lines":["n"],"id":957}],[{"start":{"row":3,"column":34},"end":{"row":3,"column":35},"action":"insert","lines":["t"],"id":958}],[{"start":{"row":3,"column":35},"end":{"row":3,"column":36},"action":"insert","lines":["e"],"id":959}],[{"start":{"row":3,"column":36},"end":{"row":3,"column":37},"action":"insert","lines":["r"],"id":1006}],[{"start":{"row":3,"column":37},"end":{"row":3,"column":38},"action":"insert","lines":[";"],"id":1007}],[{"start":{"row":3,"column":37},"end":{"row":3,"column":38},"action":"remove","lines":[";"],"id":1008}],[{"start":{"row":17,"column":4},"end":{"row":17,"column":8},"action":"remove","lines":[" "],"id":1009}],[{"start":{"row":17,"column":0},"end":{"row":17,"column":4},"action":"remove","lines":[" "],"id":1010}],[{"start":{"row":16,"column":14},"end":{"row":17,"column":0},"action":"remove","lines":["",""],"id":1011}],[{"start":{"row":13,"column":53},"end":{"row":13,"column":57},"action":"remove","lines":["ault"],"id":1012}],[{"start":{"row":13,"column":52},"end":{"row":13,"column":53},"action":"remove","lines":["f"],"id":1013}],[{"start":{"row":13,"column":51},"end":{"row":13,"column":52},"action":"remove","lines":["e"],"id":1014}],[{"start":{"row":13,"column":50},"end":{"row":13,"column":51},"action":"remove","lines":["d"],"id":1015}],[{"start":{"row":13,"column":50},"end":{"row":13,"column":51},"action":"insert","lines":["p"],"id":1016}],[{"start":{"row":13,"column":51},"end":{"row":13,"column":52},"action":"insert","lines":["r"],"id":1017}],[{"start":{"row":13,"column":52},"end":{"row":13,"column":53},"action":"insert","lines":["i"],"id":1018}],[{"start":{"row":13,"column":53},"end":{"row":13,"column":54},"action":"insert","lines":["m"],"id":1019}],[{"start":{"row":13,"column":54},"end":{"row":13,"column":55},"action":"insert","lines":["a"],"id":1020}],[{"start":{"row":13,"column":55},"end":{"row":13,"column":56},"action":"insert","lines":["r"],"id":1021}],[{"start":{"row":13,"column":56},"end":{"row":13,"column":57},"action":"insert","lines":["y"],"id":1022}],[{"start":{"row":13,"column":57},"end":{"row":13,"column":58},"action":"insert","lines":[" "],"id":1023}],[{"start":{"row":13,"column":57},"end":{"row":13,"column":58},"action":"remove","lines":[" "],"id":1024}],[{"start":{"row":17,"column":0},"end":{"row":18,"column":0},"action":"remove","lines":[" Go Back",""],"id":1025}],[{"start":{"row":15,"column":19},"end":{"row":16,"column":0},"action":"insert","lines":["",""],"id":1026},{"start":{"row":16,"column":0},"end":{"row":16,"column":12},"action":"insert","lines":[" "]}],[{"start":{"row":16,"column":12},"end":{"row":17,"column":0},"action":"insert","lines":[" Go Back",""],"id":1027}],[{"start":{"row":16,"column":16},"end":{"row":16,"column":20},"action":"remove","lines":[" "],"id":1028}],[{"start":{"row":16,"column":12},"end":{"row":16,"column":16},"action":"remove","lines":[" "],"id":1029}],[{"start":{"row":16,"column":8},"end":{"row":16,"column":12},"action":"remove","lines":[" "],"id":1030}],[{"start":{"row":16,"column":8},"end":{"row":16,"column":12},"action":"insert","lines":[" "],"id":1031}],[{"start":{"row":16,"column":46},"end":{"row":17,"column":0},"action":"remove","lines":["",""],"id":1033}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"remove","lines":["0"],"id":1034}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"insert","lines":["2"],"id":1035}],[{"start":{"row":4,"column":41},"end":{"row":4,"column":42},"action":"insert","lines":["0"],"id":1036}],[{"start":{"row":4,"column":42},"end":{"row":4,"column":43},"action":"insert","lines":["p"],"id":1037}],[{"start":{"row":4,"column":43},"end":{"row":4,"column":44},"action":"insert","lines":["x"],"id":1038}],[{"start":{"row":4,"column":44},"end":{"row":4,"column":45},"action":"insert","lines":[" "],"id":1039},{"start":{"row":4,"column":44},"end":{"row":4,"column":45},"action":"remove","lines":[" "]}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"remove","lines":["2"],"id":1040}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"insert","lines":["5"],"id":1041}],[{"start":{"row":4,"column":41},"end":{"row":4,"column":42},"action":"remove","lines":["0"],"id":1042}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"remove","lines":["5"],"id":1043}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"insert","lines":["2"],"id":1044}],[{"start":{"row":4,"column":41},"end":{"row":4,"column":42},"action":"insert","lines":["5"],"id":1045}]]},"ace":{"folds":[],"scrolltop":199.5,"scrollleft":0,"selection":{"start":{"row":5,"column":47},"end":{"row":5,"column":47},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":6,"state":"start","mode":"ace/mode/ejs"}},"timestamp":1445217746690,"hash":"ca42780c1f613ebd78245d0a0d4cef50d306afd7"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v1/views/partials/footer.ejs b/.c9/metadata/workspace/YelpCamp/v1/views/partials/footer.ejs
deleted file mode 100644
index 739c9dd1..00000000
--- a/.c9/metadata/workspace/YelpCamp/v1/views/partials/footer.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"footer.ejs","tooltip":"/YelpCamp/v1/views/partials/footer.ejs","undoManager":{"mark":0,"position":0,"stack":[[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"remove","lines":["
TradeMark YelpCamp 2015
",""],"id":35}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":1,"column":7},"end":{"row":1,"column":7},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445217773803,"hash":"bb10c4f95b27ef87be5e39eee11dd2c13cf00ecd"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v1/views/partials/header.ejs b/.c9/metadata/workspace/YelpCamp/v1/views/partials/header.ejs
deleted file mode 100644
index b0a89f86..00000000
--- a/.c9/metadata/workspace/YelpCamp/v1/views/partials/header.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"header.ejs","tooltip":"/YelpCamp/v1/views/partials/header.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":4,"column":15},"end":{"row":4,"column":16},"action":"remove","lines":["y"],"id":132}],[{"start":{"row":4,"column":14},"end":{"row":4,"column":15},"action":"remove","lines":["t"],"id":133}],[{"start":{"row":4,"column":14},"end":{"row":4,"column":15},"action":"insert","lines":["r"],"id":134}],[{"start":{"row":4,"column":15},"end":{"row":4,"column":16},"action":"insert","lines":["e"],"id":135}],[{"start":{"row":4,"column":16},"end":{"row":4,"column":17},"action":"insert","lines":["l"],"id":136}],[{"start":{"row":4,"column":17},"end":{"row":4,"column":18},"action":"insert","lines":[" "],"id":137}],[{"start":{"row":4,"column":17},"end":{"row":4,"column":18},"action":"remove","lines":[" "],"id":138}],[{"start":{"row":4,"column":17},"end":{"row":4,"column":18},"action":"insert","lines":["="],"id":139}],[{"start":{"row":4,"column":18},"end":{"row":4,"column":19},"action":"insert","lines":["\""],"id":140}],[{"start":{"row":4,"column":19},"end":{"row":4,"column":20},"action":"insert","lines":["s"],"id":141}],[{"start":{"row":4,"column":20},"end":{"row":4,"column":21},"action":"insert","lines":["y"],"id":142}],[{"start":{"row":4,"column":21},"end":{"row":4,"column":22},"action":"insert","lines":["l"],"id":143}],[{"start":{"row":4,"column":21},"end":{"row":4,"column":22},"action":"remove","lines":["l"],"id":144}],[{"start":{"row":4,"column":20},"end":{"row":4,"column":21},"action":"remove","lines":["y"],"id":145}],[{"start":{"row":4,"column":20},"end":{"row":4,"column":21},"action":"insert","lines":["t"],"id":146}],[{"start":{"row":4,"column":21},"end":{"row":4,"column":22},"action":"insert","lines":["y"],"id":147}],[{"start":{"row":4,"column":22},"end":{"row":4,"column":23},"action":"insert","lines":["l"],"id":148}],[{"start":{"row":4,"column":23},"end":{"row":4,"column":24},"action":"insert","lines":["e"],"id":149}],[{"start":{"row":4,"column":24},"end":{"row":4,"column":25},"action":"insert","lines":["s"],"id":150}],[{"start":{"row":4,"column":25},"end":{"row":4,"column":26},"action":"insert","lines":["h"],"id":151}],[{"start":{"row":4,"column":26},"end":{"row":4,"column":27},"action":"insert","lines":["e"],"id":152}],[{"start":{"row":4,"column":27},"end":{"row":4,"column":28},"action":"insert","lines":["e"],"id":153}],[{"start":{"row":4,"column":28},"end":{"row":4,"column":29},"action":"insert","lines":["t"],"id":154}],[{"start":{"row":4,"column":29},"end":{"row":4,"column":30},"action":"insert","lines":[" "],"id":155}],[{"start":{"row":4,"column":29},"end":{"row":4,"column":30},"action":"remove","lines":[" "],"id":156}],[{"start":{"row":4,"column":29},"end":{"row":4,"column":30},"action":"insert","lines":["\""],"id":157}],[{"start":{"row":4,"column":30},"end":{"row":4,"column":31},"action":"insert","lines":[" "],"id":158}],[{"start":{"row":4,"column":108},"end":{"row":5,"column":0},"action":"insert","lines":["",""],"id":159},{"start":{"row":5,"column":0},"end":{"row":5,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":5,"column":8},"end":{"row":5,"column":9},"action":"insert","lines":["s"],"id":160}],[{"start":{"row":5,"column":9},"end":{"row":5,"column":10},"action":"insert","lines":["t"],"id":161}],[{"start":{"row":5,"column":10},"end":{"row":5,"column":11},"action":"insert","lines":["y"],"id":162}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":12},"action":"insert","lines":["l"],"id":163}],[{"start":{"row":5,"column":12},"end":{"row":5,"column":13},"action":"insert","lines":["e"],"id":164}],[{"start":{"row":5,"column":13},"end":{"row":5,"column":14},"action":"insert","lines":[" "],"id":165}],[{"start":{"row":5,"column":13},"end":{"row":5,"column":14},"action":"remove","lines":[" "],"id":166}],[{"start":{"row":5,"column":8},"end":{"row":5,"column":9},"action":"insert","lines":["<"],"id":167}],[{"start":{"row":5,"column":14},"end":{"row":5,"column":23},"action":"insert","lines":[">"],"id":168}],[{"start":{"row":5,"column":15},"end":{"row":7,"column":8},"action":"insert","lines":[""," "," "],"id":169}],[{"start":{"row":6,"column":12},"end":{"row":6,"column":13},"action":"insert","lines":["b"],"id":171}],[{"start":{"row":6,"column":13},"end":{"row":6,"column":14},"action":"insert","lines":["o"],"id":172}],[{"start":{"row":6,"column":14},"end":{"row":6,"column":15},"action":"insert","lines":["d"],"id":173}],[{"start":{"row":6,"column":15},"end":{"row":6,"column":16},"action":"insert","lines":["y"],"id":174}],[{"start":{"row":6,"column":16},"end":{"row":6,"column":17},"action":"insert","lines":[" "],"id":175}],[{"start":{"row":6,"column":16},"end":{"row":6,"column":17},"action":"remove","lines":[" "],"id":176}],[{"start":{"row":6,"column":16},"end":{"row":6,"column":17},"action":"insert","lines":[" "],"id":177}],[{"start":{"row":6,"column":17},"end":{"row":6,"column":18},"action":"insert","lines":["{"],"id":178}],[{"start":{"row":6,"column":18},"end":{"row":8,"column":13},"action":"insert","lines":[""," "," }"],"id":179}],[{"start":{"row":7,"column":16},"end":{"row":8,"column":0},"action":"insert","lines":[" background: url(http://c1.staticflickr.com/9/8002/7299820870_aa216b2687_k.jpg);",""],"id":180}],[{"start":{"row":7,"column":97},"end":{"row":8,"column":0},"action":"remove","lines":["",""],"id":181}],[{"start":{"row":7,"column":17},"end":{"row":7,"column":18},"action":"remove","lines":[" "],"id":182}],[{"start":{"row":7,"column":16},"end":{"row":7,"column":17},"action":"remove","lines":[" "],"id":183}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":16},"action":"remove","lines":[" "],"id":184}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":12},"action":"remove","lines":[" "],"id":185}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"insert","lines":[" "],"id":186}],[{"start":{"row":7,"column":9},"end":{"row":7,"column":10},"action":"insert","lines":[" "],"id":187}],[{"start":{"row":7,"column":10},"end":{"row":7,"column":11},"action":"insert","lines":[" "],"id":188}],[{"start":{"row":7,"column":11},"end":{"row":7,"column":12},"action":"insert","lines":[" "],"id":189}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":190}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":14},"action":"insert","lines":[" "],"id":191}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":14},"action":"remove","lines":[" "],"id":192}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"remove","lines":[" "],"id":193}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":194}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":14},"action":"insert","lines":[" "],"id":195}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":14},"action":"remove","lines":[" "],"id":196}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"remove","lines":[" "],"id":197}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":198}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":14},"action":"insert","lines":[" "],"id":199}],[{"start":{"row":7,"column":14},"end":{"row":7,"column":15},"action":"insert","lines":[" "],"id":200}],[{"start":{"row":7,"column":14},"end":{"row":7,"column":15},"action":"remove","lines":[" "],"id":201}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":14},"action":"remove","lines":[" "],"id":202}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"remove","lines":[" "],"id":203}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":12},"action":"remove","lines":[" "],"id":204}],[{"start":{"row":7,"column":4},"end":{"row":7,"column":8},"action":"remove","lines":[" "],"id":205}],[{"start":{"row":7,"column":0},"end":{"row":7,"column":4},"action":"remove","lines":[" "],"id":206}],[{"start":{"row":6,"column":18},"end":{"row":7,"column":0},"action":"remove","lines":["",""],"id":207}],[{"start":{"row":6,"column":18},"end":{"row":7,"column":0},"action":"insert","lines":["",""],"id":208},{"start":{"row":7,"column":0},"end":{"row":7,"column":16},"action":"insert","lines":[" "]}],[{"start":{"row":7,"column":16},"end":{"row":7,"column":17},"action":"insert","lines":[" "],"id":209}],[{"start":{"row":7,"column":16},"end":{"row":7,"column":17},"action":"remove","lines":[" "],"id":210}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":16},"action":"remove","lines":[" "],"id":211}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":12},"action":"remove","lines":[" "],"id":212}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"insert","lines":[" "],"id":213}],[{"start":{"row":7,"column":9},"end":{"row":7,"column":10},"action":"insert","lines":[" "],"id":214}],[{"start":{"row":7,"column":10},"end":{"row":7,"column":11},"action":"insert","lines":[" "],"id":215}],[{"start":{"row":7,"column":11},"end":{"row":7,"column":12},"action":"insert","lines":[" "],"id":216}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":217}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"remove","lines":[" "],"id":218}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":219}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"remove","lines":[" "],"id":220}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":221}],[{"start":{"row":5,"column":0},"end":{"row":9,"column":16},"action":"remove","lines":[" "],"id":222}],[{"start":{"row":4,"column":108},"end":{"row":5,"column":0},"action":"remove","lines":["",""],"id":223}],[{"start":{"row":6,"column":10},"end":{"row":7,"column":8},"action":"insert","lines":[""," "],"id":224}],[{"start":{"row":7,"column":8},"end":{"row":8,"column":0},"action":"insert","lines":["",""],"id":225},{"start":{"row":8,"column":0},"end":{"row":8,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":8,"column":8},"end":{"row":21,"column":10},"action":"insert","lines":[" "],"id":226}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":12},"action":"remove","lines":[" "],"id":227}],[{"start":{"row":8,"column":4},"end":{"row":8,"column":8},"action":"remove","lines":[" "],"id":228}],[{"start":{"row":8,"column":0},"end":{"row":8,"column":4},"action":"remove","lines":[" "],"id":229},{"start":{"row":9,"column":0},"end":{"row":9,"column":4},"action":"remove","lines":[" "]},{"start":{"row":10,"column":0},"end":{"row":10,"column":4},"action":"remove","lines":[" "]},{"start":{"row":11,"column":0},"end":{"row":11,"column":4},"action":"remove","lines":[" "]},{"start":{"row":12,"column":0},"end":{"row":12,"column":4},"action":"remove","lines":[" "]},{"start":{"row":13,"column":0},"end":{"row":13,"column":4},"action":"remove","lines":[" "]},{"start":{"row":14,"column":0},"end":{"row":14,"column":4},"action":"remove","lines":[" "]},{"start":{"row":15,"column":0},"end":{"row":15,"column":4},"action":"remove","lines":[" "]},{"start":{"row":16,"column":0},"end":{"row":16,"column":4},"action":"remove","lines":[" "]},{"start":{"row":17,"column":0},"end":{"row":17,"column":4},"action":"remove","lines":[" "]},{"start":{"row":18,"column":0},"end":{"row":18,"column":4},"action":"remove","lines":[" "]},{"start":{"row":19,"column":0},"end":{"row":19,"column":4},"action":"remove","lines":[" "]},{"start":{"row":20,"column":0},"end":{"row":20,"column":4},"action":"remove","lines":[" "]},{"start":{"row":21,"column":0},"end":{"row":21,"column":4},"action":"remove","lines":[" "]}],[{"start":{"row":8,"column":0},"end":{"row":8,"column":4},"action":"insert","lines":[" "],"id":230},{"start":{"row":9,"column":0},"end":{"row":9,"column":4},"action":"insert","lines":[" "]},{"start":{"row":10,"column":0},"end":{"row":10,"column":4},"action":"insert","lines":[" "]},{"start":{"row":11,"column":0},"end":{"row":11,"column":4},"action":"insert","lines":[" "]},{"start":{"row":12,"column":0},"end":{"row":12,"column":4},"action":"insert","lines":[" "]},{"start":{"row":13,"column":0},"end":{"row":13,"column":4},"action":"insert","lines":[" "]},{"start":{"row":14,"column":0},"end":{"row":14,"column":4},"action":"insert","lines":[" "]},{"start":{"row":15,"column":0},"end":{"row":15,"column":4},"action":"insert","lines":[" "]},{"start":{"row":16,"column":0},"end":{"row":16,"column":4},"action":"insert","lines":[" "]},{"start":{"row":17,"column":0},"end":{"row":17,"column":4},"action":"insert","lines":[" "]},{"start":{"row":18,"column":0},"end":{"row":18,"column":4},"action":"insert","lines":[" "]},{"start":{"row":19,"column":0},"end":{"row":19,"column":4},"action":"insert","lines":[" "]},{"start":{"row":20,"column":0},"end":{"row":20,"column":4},"action":"insert","lines":[" "]},{"start":{"row":21,"column":0},"end":{"row":21,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":7,"column":4},"end":{"row":7,"column":8},"action":"remove","lines":[" "],"id":231}],[{"start":{"row":7,"column":0},"end":{"row":7,"column":4},"action":"remove","lines":[" "],"id":232}],[{"start":{"row":6,"column":10},"end":{"row":7,"column":0},"action":"remove","lines":["",""],"id":233}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":7,"column":17},"end":{"row":7,"column":17},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445215281482,"hash":"a613090d9307f768782828fe6d80ca8dd8678941"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/app.js b/.c9/metadata/workspace/YelpCamp/v10/app.js
deleted file mode 100644
index 55300f59..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v10/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":6,"column":43},"end":{"row":6,"column":44},"action":"insert","lines":["d"],"id":51}],[{"start":{"row":6,"column":44},"end":{"row":6,"column":45},"action":"insert","lines":["e"],"id":52}],[{"start":{"row":6,"column":45},"end":{"row":6,"column":46},"action":"insert","lines":[" "],"id":53}],[{"start":{"row":6,"column":45},"end":{"row":6,"column":46},"action":"remove","lines":[" "],"id":54}],[{"start":{"row":6,"column":47},"end":{"row":6,"column":48},"action":"insert","lines":[","],"id":55}],[{"start":{"row":20,"column":47},"end":{"row":21,"column":0},"action":"insert","lines":["",""],"id":56}],[{"start":{"row":21,"column":0},"end":{"row":21,"column":1},"action":"insert","lines":["a"],"id":57}],[{"start":{"row":21,"column":1},"end":{"row":21,"column":2},"action":"insert","lines":["p"],"id":58}],[{"start":{"row":21,"column":2},"end":{"row":21,"column":3},"action":"insert","lines":["p"],"id":59}],[{"start":{"row":21,"column":3},"end":{"row":21,"column":4},"action":"insert","lines":[" "],"id":60}],[{"start":{"row":21,"column":3},"end":{"row":21,"column":4},"action":"remove","lines":[" "],"id":61}],[{"start":{"row":21,"column":3},"end":{"row":21,"column":4},"action":"insert","lines":["."],"id":62}],[{"start":{"row":21,"column":4},"end":{"row":21,"column":5},"action":"insert","lines":["u"],"id":63}],[{"start":{"row":21,"column":5},"end":{"row":21,"column":6},"action":"insert","lines":["s"],"id":64}],[{"start":{"row":21,"column":6},"end":{"row":21,"column":7},"action":"insert","lines":["e"],"id":65}],[{"start":{"row":21,"column":7},"end":{"row":21,"column":8},"action":"insert","lines":[" "],"id":66}],[{"start":{"row":21,"column":7},"end":{"row":21,"column":8},"action":"remove","lines":[" "],"id":67}],[{"start":{"row":21,"column":7},"end":{"row":21,"column":9},"action":"insert","lines":["()"],"id":68}],[{"start":{"row":21,"column":8},"end":{"row":21,"column":9},"action":"insert","lines":["m"],"id":69}],[{"start":{"row":21,"column":9},"end":{"row":21,"column":10},"action":"insert","lines":["e"],"id":70}],[{"start":{"row":21,"column":10},"end":{"row":21,"column":11},"action":"insert","lines":["t"],"id":71}],[{"start":{"row":21,"column":11},"end":{"row":21,"column":12},"action":"insert","lines":["h"],"id":72}],[{"start":{"row":21,"column":12},"end":{"row":21,"column":13},"action":"insert","lines":["o"],"id":73}],[{"start":{"row":21,"column":13},"end":{"row":21,"column":14},"action":"insert","lines":["d"],"id":74}],[{"start":{"row":21,"column":8},"end":{"row":21,"column":14},"action":"remove","lines":["method"],"id":75},{"start":{"row":21,"column":8},"end":{"row":21,"column":14},"action":"insert","lines":["method"]}],[{"start":{"row":21,"column":14},"end":{"row":21,"column":15},"action":"insert","lines":["O"],"id":76}],[{"start":{"row":21,"column":15},"end":{"row":21,"column":16},"action":"insert","lines":["v"],"id":77}],[{"start":{"row":21,"column":8},"end":{"row":21,"column":16},"action":"remove","lines":["methodOv"],"id":78},{"start":{"row":21,"column":8},"end":{"row":21,"column":22},"action":"insert","lines":["methodOverride"]}],[{"start":{"row":21,"column":22},"end":{"row":21,"column":24},"action":"insert","lines":["()"],"id":79}],[{"start":{"row":21,"column":23},"end":{"row":21,"column":25},"action":"insert","lines":["\"\""],"id":80}],[{"start":{"row":21,"column":24},"end":{"row":21,"column":25},"action":"insert","lines":["_"],"id":81}],[{"start":{"row":21,"column":25},"end":{"row":21,"column":26},"action":"insert","lines":["m"],"id":82}],[{"start":{"row":21,"column":26},"end":{"row":21,"column":27},"action":"insert","lines":["e"],"id":83}],[{"start":{"row":21,"column":27},"end":{"row":21,"column":28},"action":"insert","lines":["t"],"id":84}],[{"start":{"row":21,"column":28},"end":{"row":21,"column":29},"action":"insert","lines":["h"],"id":85}],[{"start":{"row":21,"column":29},"end":{"row":21,"column":30},"action":"insert","lines":["o"],"id":86}],[{"start":{"row":21,"column":30},"end":{"row":21,"column":31},"action":"insert","lines":["d"],"id":87}],[{"start":{"row":21,"column":31},"end":{"row":21,"column":32},"action":"insert","lines":[" "],"id":88}],[{"start":{"row":21,"column":31},"end":{"row":21,"column":32},"action":"remove","lines":[" "],"id":89}],[{"start":{"row":21,"column":34},"end":{"row":21,"column":35},"action":"insert","lines":[";"],"id":90}],[{"start":{"row":10,"column":36},"end":{"row":10,"column":37},"action":"insert","lines":[","],"id":91}],[{"start":{"row":10,"column":37},"end":{"row":11,"column":0},"action":"insert","lines":["",""],"id":92},{"start":{"row":11,"column":0},"end":{"row":11,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":11,"column":4},"end":{"row":11,"column":5},"action":"insert","lines":["m"],"id":93}],[{"start":{"row":11,"column":5},"end":{"row":11,"column":6},"action":"insert","lines":["i"],"id":94}],[{"start":{"row":11,"column":6},"end":{"row":11,"column":7},"action":"insert","lines":["d"],"id":95}],[{"start":{"row":11,"column":7},"end":{"row":11,"column":8},"action":"insert","lines":["d"],"id":96}],[{"start":{"row":11,"column":8},"end":{"row":11,"column":9},"action":"insert","lines":["l"],"id":97}],[{"start":{"row":11,"column":9},"end":{"row":11,"column":10},"action":"insert","lines":["e"],"id":98}],[{"start":{"row":11,"column":10},"end":{"row":11,"column":11},"action":"insert","lines":["w"],"id":99}],[{"start":{"row":11,"column":11},"end":{"row":11,"column":12},"action":"insert","lines":["a"],"id":100}],[{"start":{"row":11,"column":12},"end":{"row":11,"column":13},"action":"insert","lines":["r"],"id":101}],[{"start":{"row":11,"column":13},"end":{"row":11,"column":14},"action":"insert","lines":["e"],"id":102}],[{"start":{"row":11,"column":14},"end":{"row":11,"column":15},"action":"insert","lines":[" "],"id":103}],[{"start":{"row":11,"column":14},"end":{"row":11,"column":15},"action":"remove","lines":[" "],"id":104}],[{"start":{"row":11,"column":14},"end":{"row":11,"column":15},"action":"insert","lines":[" "],"id":105}],[{"start":{"row":11,"column":15},"end":{"row":11,"column":16},"action":"insert","lines":["="],"id":106}],[{"start":{"row":11,"column":16},"end":{"row":11,"column":17},"action":"insert","lines":[" "],"id":107}],[{"start":{"row":11,"column":17},"end":{"row":11,"column":18},"action":"insert","lines":["r"],"id":108}],[{"start":{"row":11,"column":18},"end":{"row":11,"column":19},"action":"insert","lines":["e"],"id":109}],[{"start":{"row":11,"column":19},"end":{"row":11,"column":20},"action":"insert","lines":["q"],"id":110}],[{"start":{"row":11,"column":20},"end":{"row":11,"column":21},"action":"insert","lines":["u"],"id":111}],[{"start":{"row":11,"column":21},"end":{"row":11,"column":22},"action":"insert","lines":["i"],"id":112}],[{"start":{"row":11,"column":22},"end":{"row":11,"column":23},"action":"insert","lines":["r"],"id":113}],[{"start":{"row":11,"column":23},"end":{"row":11,"column":24},"action":"insert","lines":["e"],"id":114}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":25},"action":"insert","lines":[" "],"id":115}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":25},"action":"remove","lines":[" "],"id":116}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":25},"action":"insert","lines":[")"],"id":117}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":25},"action":"remove","lines":[")"],"id":118}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":26},"action":"insert","lines":["()"],"id":119}],[{"start":{"row":11,"column":25},"end":{"row":11,"column":27},"action":"insert","lines":["\"\""],"id":120}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"insert","lines":["/"],"id":121}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"remove","lines":["/"],"id":122}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"insert","lines":[","],"id":123}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"remove","lines":[","],"id":124}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"insert","lines":[","],"id":125}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"remove","lines":[","],"id":126}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"insert","lines":["."],"id":127}],[{"start":{"row":11,"column":27},"end":{"row":11,"column":28},"action":"insert","lines":["/"],"id":128}],[{"start":{"row":11,"column":28},"end":{"row":11,"column":29},"action":"insert","lines":["m"],"id":129}],[{"start":{"row":11,"column":29},"end":{"row":11,"column":30},"action":"insert","lines":["i"],"id":130}],[{"start":{"row":11,"column":30},"end":{"row":11,"column":31},"action":"insert","lines":["d"],"id":131}],[{"start":{"row":11,"column":31},"end":{"row":11,"column":32},"action":"insert","lines":["d"],"id":132}],[{"start":{"row":11,"column":32},"end":{"row":11,"column":33},"action":"insert","lines":["l"],"id":133}],[{"start":{"row":11,"column":33},"end":{"row":11,"column":34},"action":"insert","lines":["e"],"id":134}],[{"start":{"row":11,"column":34},"end":{"row":11,"column":35},"action":"insert","lines":["a"],"id":135}],[{"start":{"row":11,"column":35},"end":{"row":11,"column":36},"action":"insert","lines":["r"],"id":136}],[{"start":{"row":11,"column":36},"end":{"row":11,"column":37},"action":"insert","lines":["e"],"id":137}],[{"start":{"row":11,"column":37},"end":{"row":11,"column":38},"action":"insert","lines":[" "],"id":138}],[{"start":{"row":11,"column":37},"end":{"row":11,"column":38},"action":"remove","lines":[" "],"id":139}],[{"start":{"row":11,"column":36},"end":{"row":11,"column":37},"action":"remove","lines":["e"],"id":140}],[{"start":{"row":11,"column":35},"end":{"row":11,"column":36},"action":"remove","lines":["r"],"id":141}],[{"start":{"row":11,"column":34},"end":{"row":11,"column":35},"action":"remove","lines":["a"],"id":142}],[{"start":{"row":11,"column":34},"end":{"row":11,"column":35},"action":"insert","lines":["w"],"id":143}],[{"start":{"row":11,"column":35},"end":{"row":11,"column":36},"action":"insert","lines":["a"],"id":144}],[{"start":{"row":11,"column":36},"end":{"row":11,"column":37},"action":"insert","lines":["r"],"id":145}],[{"start":{"row":11,"column":37},"end":{"row":11,"column":38},"action":"insert","lines":["e"],"id":146}],[{"start":{"row":11,"column":38},"end":{"row":11,"column":39},"action":"insert","lines":[" "],"id":147}],[{"start":{"row":11,"column":38},"end":{"row":11,"column":39},"action":"remove","lines":[" "],"id":148}],[{"start":{"row":11,"column":0},"end":{"row":11,"column":40},"action":"remove","lines":[" middleware = require(\"./middleware\")"],"id":149}],[{"start":{"row":10,"column":37},"end":{"row":11,"column":0},"action":"remove","lines":["",""],"id":150}],[{"start":{"row":10,"column":36},"end":{"row":10,"column":37},"action":"remove","lines":[","],"id":151}]]},"ace":{"folds":[],"scrolltop":157.5,"scrollleft":0,"selection":{"start":{"row":13,"column":10},"end":{"row":13,"column":10},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":5,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1446968431538,"hash":"a9c5b1442af139f8c8baa2439dd7be2026d7536b"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/middleware/index.js b/.c9/metadata/workspace/YelpCamp/v10/middleware/index.js
deleted file mode 100644
index 9a898b50..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/middleware/index.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.js","tooltip":"/YelpCamp/v10/middleware/index.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":41,"column":16},"end":{"row":41,"column":17},"action":"insert","lines":["L"],"id":385}],[{"start":{"row":41,"column":17},"end":{"row":41,"column":18},"action":"insert","lines":["o"],"id":386}],[{"start":{"row":41,"column":18},"end":{"row":41,"column":19},"action":"insert","lines":["g"],"id":387}],[{"start":{"row":41,"column":19},"end":{"row":41,"column":20},"action":"insert","lines":["g"],"id":388}],[{"start":{"row":41,"column":20},"end":{"row":41,"column":21},"action":"insert","lines":["e"],"id":389}],[{"start":{"row":41,"column":14},"end":{"row":41,"column":21},"action":"remove","lines":["isLogge"],"id":390},{"start":{"row":41,"column":14},"end":{"row":41,"column":24},"action":"insert","lines":["isLoggedIn"]}],[{"start":{"row":41,"column":24},"end":{"row":41,"column":25},"action":"insert","lines":[" "],"id":391}],[{"start":{"row":41,"column":25},"end":{"row":41,"column":26},"action":"insert","lines":["="],"id":392}],[{"start":{"row":41,"column":26},"end":{"row":41,"column":27},"action":"insert","lines":[" "],"id":393}],[{"start":{"row":41,"column":27},"end":{"row":46,"column":1},"action":"insert","lines":["function isLoggedIn(req, res, next){"," if(req.isAuthenticated()){"," return next();"," }"," res.redirect(\"/login\");","}"],"id":394}],[{"start":{"row":41,"column":38},"end":{"row":41,"column":46},"action":"remove","lines":["LoggedIn"],"id":395}],[{"start":{"row":41,"column":37},"end":{"row":41,"column":38},"action":"remove","lines":["s"],"id":396}],[{"start":{"row":41,"column":36},"end":{"row":41,"column":37},"action":"remove","lines":["i"],"id":397}],[{"start":{"row":41,"column":35},"end":{"row":41,"column":36},"action":"remove","lines":[" "],"id":398}],[{"start":{"row":48,"column":30},"end":{"row":48,"column":31},"action":"insert","lines":[";"],"id":399}],[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":400}],[{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"insert","lines":["v"],"id":401}],[{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"insert","lines":["a"],"id":402}],[{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"insert","lines":["r"],"id":403}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":[" "],"id":404}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"remove","lines":[" "],"id":405}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":[" "],"id":406}],[{"start":{"row":0,"column":4},"end":{"row":0,"column":5},"action":"insert","lines":["C"],"id":407}],[{"start":{"row":0,"column":5},"end":{"row":0,"column":6},"action":"insert","lines":["a"],"id":408}],[{"start":{"row":0,"column":6},"end":{"row":0,"column":7},"action":"insert","lines":["m"],"id":409}],[{"start":{"row":0,"column":7},"end":{"row":0,"column":8},"action":"insert","lines":["p"],"id":410}],[{"start":{"row":0,"column":8},"end":{"row":0,"column":9},"action":"insert","lines":["g"],"id":411}],[{"start":{"row":0,"column":9},"end":{"row":0,"column":10},"action":"insert","lines":["r"],"id":412}],[{"start":{"row":0,"column":10},"end":{"row":0,"column":11},"action":"insert","lines":["o"],"id":413}],[{"start":{"row":0,"column":11},"end":{"row":0,"column":12},"action":"insert","lines":["u"],"id":414}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"insert","lines":["n"],"id":415}],[{"start":{"row":0,"column":13},"end":{"row":0,"column":14},"action":"insert","lines":["d"],"id":416}],[{"start":{"row":0,"column":14},"end":{"row":0,"column":15},"action":"insert","lines":[" "],"id":417}],[{"start":{"row":0,"column":14},"end":{"row":0,"column":15},"action":"remove","lines":[" "],"id":418}],[{"start":{"row":0,"column":14},"end":{"row":0,"column":15},"action":"insert","lines":[" "],"id":419}],[{"start":{"row":0,"column":15},"end":{"row":0,"column":16},"action":"insert","lines":["="],"id":420}],[{"start":{"row":0,"column":16},"end":{"row":0,"column":17},"action":"insert","lines":[" "],"id":421}],[{"start":{"row":0,"column":17},"end":{"row":0,"column":18},"action":"insert","lines":["r"],"id":422}],[{"start":{"row":0,"column":18},"end":{"row":0,"column":19},"action":"insert","lines":["e"],"id":423}],[{"start":{"row":0,"column":19},"end":{"row":0,"column":20},"action":"insert","lines":["q"],"id":424}],[{"start":{"row":0,"column":20},"end":{"row":0,"column":21},"action":"insert","lines":["u"],"id":425}],[{"start":{"row":0,"column":21},"end":{"row":0,"column":22},"action":"insert","lines":["i"],"id":426}],[{"start":{"row":0,"column":22},"end":{"row":0,"column":23},"action":"insert","lines":["r"],"id":427}],[{"start":{"row":0,"column":23},"end":{"row":0,"column":24},"action":"insert","lines":["e"],"id":428}],[{"start":{"row":0,"column":24},"end":{"row":0,"column":25},"action":"insert","lines":[" "],"id":429}],[{"start":{"row":0,"column":24},"end":{"row":0,"column":25},"action":"remove","lines":[" "],"id":430}],[{"start":{"row":0,"column":24},"end":{"row":0,"column":26},"action":"insert","lines":["()"],"id":431}],[{"start":{"row":0,"column":25},"end":{"row":0,"column":26},"action":"insert","lines":[":"],"id":432}],[{"start":{"row":0,"column":25},"end":{"row":0,"column":26},"action":"remove","lines":[":"],"id":433}],[{"start":{"row":0,"column":25},"end":{"row":0,"column":27},"action":"insert","lines":["\"\""],"id":434}],[{"start":{"row":0,"column":26},"end":{"row":0,"column":27},"action":"insert","lines":["."],"id":435}],[{"start":{"row":0,"column":27},"end":{"row":0,"column":28},"action":"insert","lines":["."],"id":436}],[{"start":{"row":0,"column":28},"end":{"row":0,"column":29},"action":"insert","lines":["/"],"id":437}],[{"start":{"row":0,"column":29},"end":{"row":0,"column":30},"action":"insert","lines":["m"],"id":438}],[{"start":{"row":0,"column":30},"end":{"row":0,"column":31},"action":"insert","lines":["o"],"id":439}],[{"start":{"row":0,"column":31},"end":{"row":0,"column":32},"action":"insert","lines":["e"],"id":440}],[{"start":{"row":0,"column":32},"end":{"row":0,"column":33},"action":"insert","lines":["l"],"id":441}],[{"start":{"row":0,"column":32},"end":{"row":0,"column":33},"action":"remove","lines":["l"],"id":442}],[{"start":{"row":0,"column":31},"end":{"row":0,"column":32},"action":"remove","lines":["e"],"id":443}],[{"start":{"row":0,"column":31},"end":{"row":0,"column":32},"action":"insert","lines":["d"],"id":444}],[{"start":{"row":0,"column":32},"end":{"row":0,"column":33},"action":"insert","lines":["e"],"id":445}],[{"start":{"row":0,"column":33},"end":{"row":0,"column":34},"action":"insert","lines":["l"],"id":446}],[{"start":{"row":0,"column":34},"end":{"row":0,"column":35},"action":"insert","lines":["s"],"id":447}],[{"start":{"row":0,"column":35},"end":{"row":0,"column":36},"action":"insert","lines":[" "],"id":448}],[{"start":{"row":0,"column":35},"end":{"row":0,"column":36},"action":"remove","lines":[" "],"id":449}],[{"start":{"row":0,"column":35},"end":{"row":0,"column":36},"action":"insert","lines":["/"],"id":450}],[{"start":{"row":0,"column":36},"end":{"row":0,"column":37},"action":"insert","lines":["c"],"id":451}],[{"start":{"row":0,"column":37},"end":{"row":0,"column":38},"action":"insert","lines":["a"],"id":452}],[{"start":{"row":0,"column":38},"end":{"row":0,"column":39},"action":"insert","lines":["m"],"id":453}],[{"start":{"row":0,"column":39},"end":{"row":0,"column":40},"action":"insert","lines":["p"],"id":454}],[{"start":{"row":0,"column":40},"end":{"row":0,"column":41},"action":"insert","lines":["g"],"id":455}],[{"start":{"row":0,"column":41},"end":{"row":0,"column":42},"action":"insert","lines":["r"],"id":456}],[{"start":{"row":0,"column":42},"end":{"row":0,"column":43},"action":"insert","lines":["o"],"id":457}],[{"start":{"row":0,"column":43},"end":{"row":0,"column":44},"action":"insert","lines":["u"],"id":458}],[{"start":{"row":0,"column":44},"end":{"row":0,"column":45},"action":"insert","lines":["n"],"id":459}],[{"start":{"row":0,"column":45},"end":{"row":0,"column":46},"action":"insert","lines":["d"],"id":460}],[{"start":{"row":0,"column":46},"end":{"row":0,"column":47},"action":"insert","lines":[" "],"id":461}],[{"start":{"row":0,"column":46},"end":{"row":0,"column":47},"action":"remove","lines":[" "],"id":462}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"insert","lines":["var Campground = require(\"../models/campground\")",""],"id":463}],[{"start":{"row":0,"column":48},"end":{"row":0,"column":49},"action":"insert","lines":[";"],"id":464}],[{"start":{"row":1,"column":5},"end":{"row":1,"column":15},"action":"remove","lines":["ampground "],"id":465}],[{"start":{"row":1,"column":5},"end":{"row":1,"column":6},"action":"insert","lines":["o"],"id":466}],[{"start":{"row":1,"column":6},"end":{"row":1,"column":7},"action":"insert","lines":["m"],"id":467}],[{"start":{"row":1,"column":7},"end":{"row":1,"column":8},"action":"insert","lines":["m"],"id":468}],[{"start":{"row":1,"column":8},"end":{"row":1,"column":9},"action":"insert","lines":["e"],"id":469}],[{"start":{"row":1,"column":9},"end":{"row":1,"column":10},"action":"insert","lines":["n"],"id":470}],[{"start":{"row":1,"column":10},"end":{"row":1,"column":11},"action":"insert","lines":["t"],"id":471}],[{"start":{"row":1,"column":11},"end":{"row":1,"column":12},"action":"insert","lines":[" "],"id":472}],[{"start":{"row":1,"column":11},"end":{"row":1,"column":12},"action":"remove","lines":[" "],"id":473}],[{"start":{"row":1,"column":11},"end":{"row":1,"column":12},"action":"insert","lines":[" "],"id":474}],[{"start":{"row":1,"column":34},"end":{"row":1,"column":43},"action":"remove","lines":["ampground"],"id":475}],[{"start":{"row":1,"column":34},"end":{"row":1,"column":35},"action":"insert","lines":["o"],"id":476}],[{"start":{"row":1,"column":35},"end":{"row":1,"column":36},"action":"insert","lines":["m"],"id":477}],[{"start":{"row":1,"column":36},"end":{"row":1,"column":37},"action":"insert","lines":["m"],"id":478}],[{"start":{"row":1,"column":37},"end":{"row":1,"column":38},"action":"insert","lines":["e"],"id":479}],[{"start":{"row":1,"column":38},"end":{"row":1,"column":39},"action":"insert","lines":["n"],"id":480}],[{"start":{"row":1,"column":39},"end":{"row":1,"column":40},"action":"insert","lines":["t"],"id":481}],[{"start":{"row":1,"column":40},"end":{"row":1,"column":41},"action":"insert","lines":[" "],"id":482}],[{"start":{"row":1,"column":40},"end":{"row":1,"column":41},"action":"remove","lines":[" "],"id":483}],[{"start":{"row":1,"column":42},"end":{"row":1,"column":43},"action":"insert","lines":[";"],"id":484}],[{"start":{"row":1,"column":43},"end":{"row":2,"column":0},"action":"insert","lines":["",""],"id":485}]]},"ace":{"folds":[],"scrolltop":79.5,"scrollleft":0,"selection":{"start":{"row":10,"column":36},"end":{"row":10,"column":36},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":2,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1447222661935,"hash":"13795810041c9dc036e231303189342e9c92babb"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/models/campground.js b/.c9/metadata/workspace/YelpCamp/v10/models/campground.js
deleted file mode 100644
index 8e3813d6..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/models/campground.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campground.js","tooltip":"/YelpCamp/v10/models/campground.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":81,"scrollleft":0,"selection":{"start":{"row":7,"column":8},"end":{"row":7,"column":8},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":2,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1446430040971,"hash":"6a47307c1260b8ae223431925a4d312d0e9ff1df"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/models/comment.js b/.c9/metadata/workspace/YelpCamp/v10/models/comment.js
deleted file mode 100644
index c60d08e5..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/models/comment.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"comment.js","tooltip":"/YelpCamp/v10/models/comment.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":40.5,"scrollleft":0,"selection":{"start":{"row":5,"column":9},"end":{"row":5,"column":10},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":0,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1446967252740,"hash":"d5d10fe426a42c2448c441bc121bd9a5ea8a1ab6"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/models/user.js b/.c9/metadata/workspace/YelpCamp/v10/models/user.js
deleted file mode 100644
index 8cc962c4..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/models/user.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"user.js","tooltip":"/YelpCamp/v10/models/user.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":8,"column":40},"end":{"row":8,"column":40},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446430053269,"hash":"ce08b2516b11cf283b51822bef488db693bc30cc"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/node_modules/express/index.js b/.c9/metadata/workspace/YelpCamp/v10/node_modules/express/index.js
deleted file mode 100644
index 84920349..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/node_modules/express/index.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.js","tooltip":"/YelpCamp/v10/node_modules/express/index.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":1.5,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446968573856,"hash":"3f41478fdab31acabab8fa1d26126483a141ffb6"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/public/stylesheets/main.css b/.c9/metadata/workspace/YelpCamp/v10/public/stylesheets/main.css
deleted file mode 100644
index 38ea3b6c..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/public/stylesheets/main.css
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"main.css","tooltip":"/YelpCamp/v10/public/stylesheets/main.css","undoManager":{"mark":41,"position":41,"stack":[[{"start":{"row":10,"column":1},"end":{"row":11,"column":0},"action":"insert","lines":["",""],"id":2}],[{"start":{"row":11,"column":0},"end":{"row":12,"column":0},"action":"insert","lines":["",""],"id":3}],[{"start":{"row":12,"column":0},"end":{"row":12,"column":1},"action":"insert","lines":["#"],"id":4}],[{"start":{"row":12,"column":1},"end":{"row":12,"column":2},"action":"insert","lines":["d"],"id":5}],[{"start":{"row":12,"column":2},"end":{"row":12,"column":3},"action":"insert","lines":["e"],"id":6}],[{"start":{"row":12,"column":3},"end":{"row":12,"column":4},"action":"insert","lines":["l"],"id":7}],[{"start":{"row":12,"column":4},"end":{"row":12,"column":5},"action":"insert","lines":["t"],"id":8}],[{"start":{"row":12,"column":4},"end":{"row":12,"column":5},"action":"remove","lines":["t"],"id":9}],[{"start":{"row":12,"column":4},"end":{"row":12,"column":5},"action":"insert","lines":["e"],"id":10}],[{"start":{"row":12,"column":5},"end":{"row":12,"column":6},"action":"insert","lines":["t"],"id":11}],[{"start":{"row":12,"column":6},"end":{"row":12,"column":7},"action":"insert","lines":["e"],"id":12}],[{"start":{"row":12,"column":7},"end":{"row":12,"column":8},"action":"insert","lines":[" "],"id":13}],[{"start":{"row":12,"column":7},"end":{"row":12,"column":8},"action":"remove","lines":[" "],"id":14}],[{"start":{"row":12,"column":7},"end":{"row":12,"column":8},"action":"insert","lines":["-"],"id":15}],[{"start":{"row":12,"column":8},"end":{"row":12,"column":9},"action":"insert","lines":["f"],"id":16}],[{"start":{"row":12,"column":9},"end":{"row":12,"column":10},"action":"insert","lines":["o"],"id":17}],[{"start":{"row":12,"column":10},"end":{"row":12,"column":11},"action":"insert","lines":["r"],"id":18}],[{"start":{"row":12,"column":11},"end":{"row":12,"column":12},"action":"insert","lines":["m"],"id":19}],[{"start":{"row":12,"column":12},"end":{"row":12,"column":13},"action":"insert","lines":[" "],"id":20}],[{"start":{"row":12,"column":12},"end":{"row":12,"column":13},"action":"remove","lines":[" "],"id":21}],[{"start":{"row":12,"column":12},"end":{"row":12,"column":13},"action":"insert","lines":[" "],"id":22}],[{"start":{"row":12,"column":13},"end":{"row":12,"column":14},"action":"insert","lines":["{"],"id":23}],[{"start":{"row":12,"column":14},"end":{"row":14,"column":1},"action":"insert","lines":[""," ","}"],"id":24}],[{"start":{"row":13,"column":4},"end":{"row":13,"column":5},"action":"insert","lines":["d"],"id":25}],[{"start":{"row":13,"column":5},"end":{"row":13,"column":6},"action":"insert","lines":["i"],"id":26}],[{"start":{"row":13,"column":6},"end":{"row":13,"column":7},"action":"insert","lines":["s"],"id":27}],[{"start":{"row":13,"column":7},"end":{"row":13,"column":8},"action":"insert","lines":["p"],"id":28}],[{"start":{"row":13,"column":8},"end":{"row":13,"column":9},"action":"insert","lines":["l"],"id":29}],[{"start":{"row":13,"column":9},"end":{"row":13,"column":10},"action":"insert","lines":["a"],"id":30}],[{"start":{"row":13,"column":10},"end":{"row":13,"column":11},"action":"insert","lines":["y"],"id":31}],[{"start":{"row":13,"column":11},"end":{"row":13,"column":12},"action":"insert","lines":[" "],"id":32}],[{"start":{"row":13,"column":11},"end":{"row":13,"column":12},"action":"remove","lines":[" "],"id":33}],[{"start":{"row":13,"column":11},"end":{"row":13,"column":13},"action":"insert","lines":[":;"],"id":34}],[{"start":{"row":13,"column":12},"end":{"row":13,"column":13},"action":"insert","lines":[" "],"id":35}],[{"start":{"row":13,"column":13},"end":{"row":13,"column":14},"action":"insert","lines":["i"],"id":36}],[{"start":{"row":13,"column":14},"end":{"row":13,"column":15},"action":"insert","lines":["n"],"id":37}],[{"start":{"row":13,"column":15},"end":{"row":13,"column":16},"action":"insert","lines":["l"],"id":38}],[{"start":{"row":13,"column":16},"end":{"row":13,"column":17},"action":"insert","lines":["i"],"id":39}],[{"start":{"row":13,"column":17},"end":{"row":13,"column":18},"action":"insert","lines":["n"],"id":40}],[{"start":{"row":13,"column":18},"end":{"row":13,"column":19},"action":"insert","lines":["e"],"id":41}],[{"start":{"row":13,"column":19},"end":{"row":13,"column":20},"action":"insert","lines":[" "],"id":42}],[{"start":{"row":13,"column":19},"end":{"row":13,"column":20},"action":"remove","lines":[" "],"id":43}]]},"ace":{"folds":[],"scrolltop":138,"scrollleft":0,"selection":{"start":{"row":11,"column":0},"end":{"row":11,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":4,"state":"ruleset","mode":"ace/mode/css"}},"timestamp":1446429543806,"hash":"7c14dd4b7d3634535352e29f5836b5e3ae65322b"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/readme.md b/.c9/metadata/workspace/YelpCamp/v10/readme.md
deleted file mode 100644
index 6ff4ec52..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v10/readme.md","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":124,"column":27},"end":{"row":124,"column":28},"action":"insert","lines":["c"],"id":839}],[{"start":{"row":124,"column":28},"end":{"row":124,"column":29},"action":"insert","lines":["a"],"id":840}],[{"start":{"row":124,"column":29},"end":{"row":124,"column":30},"action":"insert","lines":["m"],"id":841}],[{"start":{"row":124,"column":30},"end":{"row":124,"column":31},"action":"insert","lines":["p"],"id":842}],[{"start":{"row":124,"column":31},"end":{"row":124,"column":32},"action":"insert","lines":["g"],"id":843}],[{"start":{"row":124,"column":32},"end":{"row":124,"column":33},"action":"insert","lines":["r"],"id":844}],[{"start":{"row":124,"column":33},"end":{"row":124,"column":34},"action":"insert","lines":["o"],"id":845}],[{"start":{"row":124,"column":34},"end":{"row":124,"column":35},"action":"insert","lines":["u"],"id":846}],[{"start":{"row":124,"column":35},"end":{"row":124,"column":36},"action":"insert","lines":["n"],"id":847}],[{"start":{"row":124,"column":36},"end":{"row":124,"column":37},"action":"insert","lines":["d"],"id":848}],[{"start":{"row":124,"column":37},"end":{"row":124,"column":38},"action":"insert","lines":["s"],"id":849}],[{"start":{"row":124,"column":38},"end":{"row":124,"column":39},"action":"insert","lines":[" "],"id":850}],[{"start":{"row":124,"column":38},"end":{"row":124,"column":39},"action":"remove","lines":[" "],"id":851}],[{"start":{"row":124,"column":38},"end":{"row":124,"column":39},"action":"insert","lines":["/"],"id":852}],[{"start":{"row":124,"column":39},"end":{"row":124,"column":40},"action":"insert","lines":[":"],"id":853}],[{"start":{"row":124,"column":40},"end":{"row":124,"column":41},"action":"insert","lines":["i"],"id":854}],[{"start":{"row":124,"column":41},"end":{"row":124,"column":42},"action":"insert","lines":["d"],"id":855}],[{"start":{"row":124,"column":42},"end":{"row":124,"column":43},"action":"insert","lines":[" "],"id":856}],[{"start":{"row":124,"column":42},"end":{"row":124,"column":43},"action":"remove","lines":[" "],"id":857}],[{"start":{"row":124,"column":42},"end":{"row":125,"column":0},"action":"insert","lines":["",""],"id":858}],[{"start":{"row":125,"column":0},"end":{"row":125,"column":1},"action":"insert","lines":["C"],"id":859}],[{"start":{"row":125,"column":1},"end":{"row":125,"column":2},"action":"insert","lines":["o"],"id":860}],[{"start":{"row":125,"column":2},"end":{"row":125,"column":3},"action":"insert","lines":["m"],"id":861}],[{"start":{"row":125,"column":3},"end":{"row":125,"column":4},"action":"insert","lines":["m"],"id":862}],[{"start":{"row":125,"column":4},"end":{"row":125,"column":5},"action":"insert","lines":["e"],"id":863}],[{"start":{"row":125,"column":5},"end":{"row":125,"column":6},"action":"insert","lines":["n"],"id":864}],[{"start":{"row":125,"column":6},"end":{"row":125,"column":7},"action":"insert","lines":["t"],"id":865}],[{"start":{"row":125,"column":7},"end":{"row":125,"column":8},"action":"insert","lines":[" "],"id":866}],[{"start":{"row":125,"column":7},"end":{"row":125,"column":8},"action":"remove","lines":[" "],"id":867}],[{"start":{"row":125,"column":7},"end":{"row":125,"column":8},"action":"insert","lines":[" "],"id":868}],[{"start":{"row":125,"column":8},"end":{"row":125,"column":9},"action":"insert","lines":["D"],"id":869}],[{"start":{"row":125,"column":9},"end":{"row":125,"column":10},"action":"insert","lines":["e"],"id":870}],[{"start":{"row":125,"column":10},"end":{"row":125,"column":11},"action":"insert","lines":["s"],"id":871}],[{"start":{"row":125,"column":11},"end":{"row":125,"column":12},"action":"insert","lines":["t"],"id":872}],[{"start":{"row":125,"column":12},"end":{"row":125,"column":13},"action":"insert","lines":["r"],"id":873}],[{"start":{"row":125,"column":13},"end":{"row":125,"column":14},"action":"insert","lines":["o"],"id":874}],[{"start":{"row":125,"column":14},"end":{"row":125,"column":15},"action":"insert","lines":["y"],"id":875}],[{"start":{"row":125,"column":15},"end":{"row":125,"column":16},"action":"insert","lines":[" "],"id":876}],[{"start":{"row":125,"column":15},"end":{"row":125,"column":16},"action":"remove","lines":[" "],"id":877}],[{"start":{"row":125,"column":15},"end":{"row":125,"column":16},"action":"insert","lines":[" "],"id":878}],[{"start":{"row":125,"column":16},"end":{"row":125,"column":17},"action":"insert","lines":["R"],"id":879}],[{"start":{"row":125,"column":17},"end":{"row":125,"column":18},"action":"insert","lines":["o"],"id":880}],[{"start":{"row":125,"column":18},"end":{"row":125,"column":19},"action":"insert","lines":["u"],"id":881}],[{"start":{"row":125,"column":19},"end":{"row":125,"column":20},"action":"insert","lines":["t"],"id":882}],[{"start":{"row":125,"column":20},"end":{"row":125,"column":21},"action":"insert","lines":["e"],"id":883}],[{"start":{"row":125,"column":21},"end":{"row":125,"column":22},"action":"insert","lines":[" "],"id":884}],[{"start":{"row":125,"column":21},"end":{"row":125,"column":22},"action":"remove","lines":[" "],"id":885}],[{"start":{"row":125,"column":21},"end":{"row":125,"column":22},"action":"insert","lines":[":"],"id":886}],[{"start":{"row":125,"column":22},"end":{"row":125,"column":23},"action":"insert","lines":[" "],"id":887}],[{"start":{"row":125,"column":23},"end":{"row":125,"column":24},"action":"insert","lines":[" "],"id":888}],[{"start":{"row":125,"column":24},"end":{"row":125,"column":25},"action":"insert","lines":[" "],"id":889}],[{"start":{"row":125,"column":25},"end":{"row":125,"column":26},"action":"insert","lines":[" "],"id":890}],[{"start":{"row":125,"column":26},"end":{"row":125,"column":27},"action":"insert","lines":["/"],"id":891}],[{"start":{"row":125,"column":27},"end":{"row":125,"column":28},"action":"insert","lines":["c"],"id":892}],[{"start":{"row":125,"column":28},"end":{"row":125,"column":29},"action":"insert","lines":["a"],"id":893}],[{"start":{"row":125,"column":29},"end":{"row":125,"column":30},"action":"insert","lines":["m"],"id":894}],[{"start":{"row":125,"column":30},"end":{"row":125,"column":31},"action":"insert","lines":["p"],"id":895}],[{"start":{"row":125,"column":31},"end":{"row":125,"column":32},"action":"insert","lines":["g"],"id":896}],[{"start":{"row":125,"column":32},"end":{"row":125,"column":33},"action":"insert","lines":["r"],"id":897}],[{"start":{"row":125,"column":33},"end":{"row":125,"column":34},"action":"insert","lines":["o"],"id":898}],[{"start":{"row":125,"column":34},"end":{"row":125,"column":35},"action":"insert","lines":["u"],"id":899}],[{"start":{"row":125,"column":35},"end":{"row":125,"column":36},"action":"insert","lines":["n"],"id":900}],[{"start":{"row":125,"column":36},"end":{"row":125,"column":37},"action":"insert","lines":["d"],"id":901}],[{"start":{"row":125,"column":37},"end":{"row":125,"column":38},"action":"insert","lines":["s"],"id":902}],[{"start":{"row":125,"column":38},"end":{"row":125,"column":39},"action":"insert","lines":[" "],"id":903}],[{"start":{"row":125,"column":38},"end":{"row":125,"column":39},"action":"remove","lines":[" "],"id":904}],[{"start":{"row":125,"column":38},"end":{"row":125,"column":39},"action":"insert","lines":["/"],"id":905}],[{"start":{"row":125,"column":39},"end":{"row":125,"column":40},"action":"insert","lines":[":"],"id":906}],[{"start":{"row":125,"column":40},"end":{"row":125,"column":41},"action":"insert","lines":["i"],"id":907}],[{"start":{"row":125,"column":41},"end":{"row":125,"column":42},"action":"insert","lines":["d"],"id":908}],[{"start":{"row":125,"column":42},"end":{"row":125,"column":43},"action":"insert","lines":[" "],"id":909}],[{"start":{"row":125,"column":42},"end":{"row":125,"column":43},"action":"remove","lines":[" "],"id":910}],[{"start":{"row":125,"column":42},"end":{"row":125,"column":43},"action":"insert","lines":["/"],"id":911}],[{"start":{"row":125,"column":43},"end":{"row":125,"column":44},"action":"insert","lines":["c"],"id":912}],[{"start":{"row":125,"column":44},"end":{"row":125,"column":45},"action":"insert","lines":["o"],"id":913}],[{"start":{"row":125,"column":45},"end":{"row":125,"column":46},"action":"insert","lines":["m"],"id":914}],[{"start":{"row":125,"column":46},"end":{"row":125,"column":47},"action":"insert","lines":["m"],"id":915}],[{"start":{"row":125,"column":47},"end":{"row":125,"column":48},"action":"insert","lines":["e"],"id":916}],[{"start":{"row":125,"column":48},"end":{"row":125,"column":49},"action":"insert","lines":["n"],"id":917}],[{"start":{"row":125,"column":49},"end":{"row":125,"column":50},"action":"insert","lines":["t"],"id":918}],[{"start":{"row":125,"column":50},"end":{"row":125,"column":51},"action":"insert","lines":["s"],"id":919}],[{"start":{"row":125,"column":51},"end":{"row":125,"column":52},"action":"insert","lines":[" "],"id":920}],[{"start":{"row":125,"column":51},"end":{"row":125,"column":52},"action":"remove","lines":[" "],"id":921}],[{"start":{"row":125,"column":51},"end":{"row":125,"column":52},"action":"insert","lines":["/"],"id":922}],[{"start":{"row":125,"column":52},"end":{"row":125,"column":53},"action":"insert","lines":[":"],"id":923}],[{"start":{"row":125,"column":53},"end":{"row":125,"column":54},"action":"insert","lines":["c"],"id":924}],[{"start":{"row":125,"column":54},"end":{"row":125,"column":55},"action":"insert","lines":["o"],"id":925}],[{"start":{"row":125,"column":55},"end":{"row":125,"column":56},"action":"insert","lines":["m"],"id":926}],[{"start":{"row":125,"column":56},"end":{"row":125,"column":57},"action":"insert","lines":["m"],"id":927}],[{"start":{"row":125,"column":57},"end":{"row":125,"column":58},"action":"insert","lines":["e"],"id":928}],[{"start":{"row":125,"column":58},"end":{"row":125,"column":59},"action":"insert","lines":["n"],"id":929}],[{"start":{"row":125,"column":59},"end":{"row":125,"column":60},"action":"insert","lines":["t"],"id":930}],[{"start":{"row":125,"column":60},"end":{"row":125,"column":61},"action":"insert","lines":[" "],"id":931}],[{"start":{"row":125,"column":60},"end":{"row":125,"column":61},"action":"remove","lines":[" "],"id":932}],[{"start":{"row":125,"column":60},"end":{"row":125,"column":61},"action":"insert","lines":["_"],"id":933}],[{"start":{"row":125,"column":61},"end":{"row":125,"column":62},"action":"insert","lines":["i"],"id":934}],[{"start":{"row":125,"column":62},"end":{"row":125,"column":63},"action":"insert","lines":["d"],"id":935}],[{"start":{"row":125,"column":63},"end":{"row":125,"column":64},"action":"insert","lines":[" "],"id":936}],[{"start":{"row":125,"column":63},"end":{"row":125,"column":64},"action":"remove","lines":[" "],"id":937}],[{"start":{"row":135,"column":0},"end":{"row":136,"column":0},"action":"insert","lines":["",""],"id":938}],[{"start":{"row":136,"column":0},"end":{"row":137,"column":0},"action":"insert","lines":["",""],"id":939}]]},"ace":{"folds":[],"scrolltop":3813.5,"scrollleft":0,"selection":{"start":{"row":155,"column":34},"end":{"row":155,"column":34},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":145,"state":"listblock","mode":"ace/mode/markdown"}},"timestamp":1447306876490,"hash":"8195ed4559d953b4ac2155f4176e49d00994c8e0"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/routes/campgrounds.js b/.c9/metadata/workspace/YelpCamp/v10/routes/campgrounds.js
deleted file mode 100644
index b35a09b1..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/routes/campgrounds.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campgrounds.js","tooltip":"/YelpCamp/v10/routes/campgrounds.js","ace":{"folds":[],"scrolltop":2288,"scrollleft":0,"selection":{"start":{"row":90,"column":0},"end":{"row":90,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":12,"state":"start","mode":"ace/mode/javascript"}},"hash":"0c16c488539fc138237d6a7636ed78eadd1a1a19","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":80,"column":30},"end":{"row":80,"column":31},"action":"insert","lines":["e"],"id":2270}],[{"start":{"row":80,"column":31},"end":{"row":80,"column":32},"action":"insert","lines":[" "],"id":2271}],[{"start":{"row":80,"column":31},"end":{"row":80,"column":32},"action":"remove","lines":[" "],"id":2272}],[{"start":{"row":80,"column":31},"end":{"row":80,"column":32},"action":"insert","lines":["."],"id":2273}],[{"start":{"row":2,"column":49},"end":{"row":3,"column":0},"action":"insert","lines":["",""],"id":2274}],[{"start":{"row":3,"column":0},"end":{"row":3,"column":36},"action":"insert","lines":["middleware = require(\"./middleware\")"],"id":2275}],[{"start":{"row":3,"column":1},"end":{"row":3,"column":2},"action":"insert","lines":["v"],"id":2276}],[{"start":{"row":3,"column":1},"end":{"row":3,"column":2},"action":"remove","lines":["v"],"id":2277}],[{"start":{"row":3,"column":0},"end":{"row":3,"column":1},"action":"insert","lines":["v"],"id":2278}],[{"start":{"row":3,"column":1},"end":{"row":3,"column":2},"action":"insert","lines":["a"],"id":2279}],[{"start":{"row":3,"column":2},"end":{"row":3,"column":3},"action":"insert","lines":["r"],"id":2280}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"insert","lines":[" "],"id":2281}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"remove","lines":[" "],"id":2282}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"insert","lines":[" "],"id":2283}],[{"start":{"row":3,"column":27},"end":{"row":3,"column":28},"action":"insert","lines":["."],"id":2284}],[{"start":{"row":3,"column":0},"end":{"row":4,"column":0},"action":"remove","lines":["var middleware = require(\"../middleware\")",""],"id":2285}],[{"start":{"row":18,"column":17},"end":{"row":18,"column":28},"action":"remove","lines":["middleware."],"id":2288}],[{"start":{"row":41,"column":21},"end":{"row":41,"column":30},"action":"remove","lines":["ddleware."],"id":2289}],[{"start":{"row":41,"column":20},"end":{"row":41,"column":21},"action":"remove","lines":["i"],"id":2290}],[{"start":{"row":41,"column":19},"end":{"row":41,"column":20},"action":"remove","lines":["m"],"id":2291}],[{"start":{"row":60,"column":25},"end":{"row":60,"column":35},"action":"remove","lines":["iddleware."],"id":2292}],[{"start":{"row":60,"column":24},"end":{"row":60,"column":25},"action":"remove","lines":["m"],"id":2293}],[{"start":{"row":67,"column":18},"end":{"row":67,"column":29},"action":"remove","lines":["middleware."],"id":2294}],[{"start":{"row":80,"column":21},"end":{"row":80,"column":32},"action":"remove","lines":["middleware."],"id":2295}],[{"start":{"row":2,"column":49},"end":{"row":3,"column":0},"action":"insert","lines":["",""],"id":2296}],[{"start":{"row":3,"column":0},"end":{"row":3,"column":1},"action":"insert","lines":["v"],"id":2297}],[{"start":{"row":3,"column":1},"end":{"row":3,"column":2},"action":"insert","lines":["a"],"id":2298}],[{"start":{"row":3,"column":2},"end":{"row":3,"column":3},"action":"insert","lines":["r"],"id":2299}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"insert","lines":[" "],"id":2300}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"remove","lines":[" "],"id":2301}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"insert","lines":[" "],"id":2302}],[{"start":{"row":3,"column":4},"end":{"row":3,"column":5},"action":"insert","lines":["m"],"id":2303}],[{"start":{"row":3,"column":5},"end":{"row":3,"column":6},"action":"insert","lines":["i"],"id":2304}],[{"start":{"row":3,"column":6},"end":{"row":3,"column":7},"action":"insert","lines":["d"],"id":2305}],[{"start":{"row":3,"column":7},"end":{"row":3,"column":8},"action":"insert","lines":["d"],"id":2306}],[{"start":{"row":3,"column":8},"end":{"row":3,"column":9},"action":"insert","lines":["l"],"id":2307}],[{"start":{"row":3,"column":9},"end":{"row":3,"column":10},"action":"insert","lines":["e"],"id":2308}],[{"start":{"row":3,"column":10},"end":{"row":3,"column":11},"action":"insert","lines":["w"],"id":2309}],[{"start":{"row":3,"column":11},"end":{"row":3,"column":12},"action":"insert","lines":["a"],"id":2310}],[{"start":{"row":3,"column":12},"end":{"row":3,"column":13},"action":"insert","lines":["r"],"id":2311}],[{"start":{"row":3,"column":13},"end":{"row":3,"column":14},"action":"insert","lines":["e"],"id":2312}],[{"start":{"row":3,"column":14},"end":{"row":3,"column":15},"action":"insert","lines":[" "],"id":2313}],[{"start":{"row":3,"column":14},"end":{"row":3,"column":15},"action":"remove","lines":[" "],"id":2314}],[{"start":{"row":3,"column":14},"end":{"row":3,"column":15},"action":"insert","lines":[" "],"id":2315}],[{"start":{"row":3,"column":15},"end":{"row":3,"column":16},"action":"insert","lines":["="],"id":2316}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"insert","lines":[" "],"id":2317}],[{"start":{"row":3,"column":17},"end":{"row":3,"column":18},"action":"insert","lines":["r"],"id":2318}],[{"start":{"row":3,"column":18},"end":{"row":3,"column":19},"action":"insert","lines":["e"],"id":2319}],[{"start":{"row":3,"column":19},"end":{"row":3,"column":20},"action":"insert","lines":["q"],"id":2320}],[{"start":{"row":3,"column":20},"end":{"row":3,"column":21},"action":"insert","lines":["u"],"id":2321}],[{"start":{"row":3,"column":21},"end":{"row":3,"column":22},"action":"insert","lines":["i"],"id":2322}],[{"start":{"row":3,"column":22},"end":{"row":3,"column":23},"action":"insert","lines":["r"],"id":2323}],[{"start":{"row":3,"column":23},"end":{"row":3,"column":24},"action":"insert","lines":["e"],"id":2324}],[{"start":{"row":3,"column":24},"end":{"row":3,"column":25},"action":"insert","lines":[" "],"id":2325}],[{"start":{"row":3,"column":24},"end":{"row":3,"column":25},"action":"remove","lines":[" "],"id":2326}],[{"start":{"row":3,"column":24},"end":{"row":3,"column":25},"action":"insert","lines":[")"],"id":2327}],[{"start":{"row":3,"column":24},"end":{"row":3,"column":25},"action":"remove","lines":[")"],"id":2328}],[{"start":{"row":3,"column":24},"end":{"row":3,"column":26},"action":"insert","lines":["()"],"id":2329}],[{"start":{"row":3,"column":25},"end":{"row":3,"column":27},"action":"insert","lines":["\"\""],"id":2330}],[{"start":{"row":3,"column":26},"end":{"row":3,"column":27},"action":"insert","lines":["."],"id":2331}],[{"start":{"row":3,"column":27},"end":{"row":3,"column":28},"action":"insert","lines":["."],"id":2332}],[{"start":{"row":3,"column":28},"end":{"row":3,"column":29},"action":"insert","lines":["/"],"id":2333}],[{"start":{"row":3,"column":29},"end":{"row":3,"column":30},"action":"insert","lines":["m"],"id":2334}],[{"start":{"row":3,"column":30},"end":{"row":3,"column":31},"action":"insert","lines":["i"],"id":2335}],[{"start":{"row":3,"column":31},"end":{"row":3,"column":32},"action":"insert","lines":["d"],"id":2336}],[{"start":{"row":3,"column":32},"end":{"row":3,"column":33},"action":"insert","lines":["d"],"id":2337}],[{"start":{"row":3,"column":33},"end":{"row":3,"column":34},"action":"insert","lines":["l"],"id":2338}],[{"start":{"row":3,"column":34},"end":{"row":3,"column":35},"action":"insert","lines":["e"],"id":2339}],[{"start":{"row":3,"column":35},"end":{"row":3,"column":36},"action":"insert","lines":["w"],"id":2340}],[{"start":{"row":3,"column":36},"end":{"row":3,"column":37},"action":"insert","lines":["a"],"id":2341}],[{"start":{"row":3,"column":37},"end":{"row":3,"column":38},"action":"insert","lines":["r"],"id":2342}],[{"start":{"row":3,"column":38},"end":{"row":3,"column":39},"action":"insert","lines":["e"],"id":2343}],[{"start":{"row":3,"column":39},"end":{"row":3,"column":40},"action":"insert","lines":[" "],"id":2344}],[{"start":{"row":3,"column":39},"end":{"row":3,"column":40},"action":"remove","lines":[" "],"id":2345}],[{"start":{"row":3,"column":39},"end":{"row":3,"column":40},"action":"insert","lines":["/"],"id":2346}],[{"start":{"row":3,"column":40},"end":{"row":3,"column":41},"action":"insert","lines":["i"],"id":2347}],[{"start":{"row":3,"column":41},"end":{"row":3,"column":42},"action":"insert","lines":["n"],"id":2348}],[{"start":{"row":3,"column":42},"end":{"row":3,"column":43},"action":"insert","lines":["d"],"id":2349}],[{"start":{"row":3,"column":43},"end":{"row":3,"column":44},"action":"insert","lines":["e"],"id":2350}],[{"start":{"row":3,"column":44},"end":{"row":3,"column":45},"action":"insert","lines":["x"],"id":2351}],[{"start":{"row":3,"column":45},"end":{"row":3,"column":46},"action":"insert","lines":[" "],"id":2352}],[{"start":{"row":3,"column":45},"end":{"row":3,"column":46},"action":"remove","lines":[" "],"id":2353}],[{"start":{"row":3,"column":45},"end":{"row":3,"column":46},"action":"insert","lines":["."],"id":2354}],[{"start":{"row":3,"column":46},"end":{"row":3,"column":47},"action":"insert","lines":["j"],"id":2355}],[{"start":{"row":3,"column":47},"end":{"row":3,"column":48},"action":"insert","lines":["s"],"id":2356}],[{"start":{"row":3,"column":48},"end":{"row":3,"column":49},"action":"insert","lines":[" "],"id":2357}],[{"start":{"row":3,"column":48},"end":{"row":3,"column":49},"action":"remove","lines":[" "],"id":2358}],[{"start":{"row":3,"column":40},"end":{"row":3,"column":48},"action":"remove","lines":["index.js"],"id":2359}],[{"start":{"row":3,"column":39},"end":{"row":3,"column":40},"action":"remove","lines":["/"],"id":2360}],[{"start":{"row":3,"column":41},"end":{"row":3,"column":42},"action":"insert","lines":[";"],"id":2361}],[{"start":{"row":19,"column":17},"end":{"row":19,"column":18},"action":"insert","lines":["m"],"id":2362}],[{"start":{"row":19,"column":18},"end":{"row":19,"column":19},"action":"insert","lines":["i"],"id":2363}],[{"start":{"row":19,"column":19},"end":{"row":19,"column":20},"action":"insert","lines":["d"],"id":2364}],[{"start":{"row":19,"column":20},"end":{"row":19,"column":21},"action":"insert","lines":["d"],"id":2365}],[{"start":{"row":19,"column":21},"end":{"row":19,"column":22},"action":"insert","lines":["l"],"id":2366}],[{"start":{"row":19,"column":17},"end":{"row":19,"column":22},"action":"remove","lines":["middl"],"id":2367},{"start":{"row":19,"column":17},"end":{"row":19,"column":27},"action":"insert","lines":["middleware"]}],[{"start":{"row":19,"column":27},"end":{"row":19,"column":28},"action":"insert","lines":["."],"id":2368}],[{"start":{"row":42,"column":19},"end":{"row":42,"column":30},"action":"insert","lines":["middleware."],"id":2369}],[{"start":{"row":61,"column":24},"end":{"row":61,"column":35},"action":"insert","lines":["middleware."],"id":2370}],[{"start":{"row":68,"column":18},"end":{"row":68,"column":29},"action":"insert","lines":["middleware."],"id":2371}],[{"start":{"row":81,"column":21},"end":{"row":81,"column":32},"action":"insert","lines":["middleware."],"id":2372}]]},"timestamp":1446968627000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/routes/comments.js b/.c9/metadata/workspace/YelpCamp/v10/routes/comments.js
deleted file mode 100644
index 7c7034ef..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/routes/comments.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"comments.js","tooltip":"/YelpCamp/v10/routes/comments.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"remove","lines":["a"],"id":1423}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"remove","lines":["C"],"id":1424}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"insert","lines":["c"],"id":1425}],[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"insert","lines":["o"],"id":1426}],[{"start":{"row":95,"column":26},"end":{"row":95,"column":27},"action":"insert","lines":["m"],"id":1427}],[{"start":{"row":95,"column":26},"end":{"row":95,"column":27},"action":"remove","lines":["m"],"id":1428}],[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"remove","lines":["o"],"id":1429}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"remove","lines":["c"],"id":1430}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"insert","lines":["C"],"id":1431}],[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"insert","lines":["o"],"id":1432}],[{"start":{"row":95,"column":26},"end":{"row":95,"column":27},"action":"insert","lines":["m"],"id":1433}],[{"start":{"row":95,"column":27},"end":{"row":95,"column":28},"action":"insert","lines":["m"],"id":1434}],[{"start":{"row":95,"column":28},"end":{"row":95,"column":29},"action":"insert","lines":["e"],"id":1435}],[{"start":{"row":95,"column":29},"end":{"row":95,"column":30},"action":"insert","lines":["n"],"id":1436}],[{"start":{"row":95,"column":30},"end":{"row":95,"column":31},"action":"insert","lines":["t"],"id":1437}],[{"start":{"row":95,"column":31},"end":{"row":95,"column":32},"action":"insert","lines":[" "],"id":1438}],[{"start":{"row":95,"column":31},"end":{"row":95,"column":32},"action":"remove","lines":[" "],"id":1439}],[{"start":{"row":46,"column":74},"end":{"row":47,"column":0},"action":"insert","lines":["",""],"id":1440},{"start":{"row":47,"column":0},"end":{"row":47,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":47,"column":0},"end":{"row":47,"column":4},"action":"remove","lines":[" "],"id":1441}],[{"start":{"row":46,"column":74},"end":{"row":47,"column":0},"action":"remove","lines":["",""],"id":1442}],[{"start":{"row":57,"column":26},"end":{"row":57,"column":48},"action":"insert","lines":["checkCommentOwnership,"],"id":1443}],[{"start":{"row":57,"column":48},"end":{"row":57,"column":49},"action":"insert","lines":[","],"id":1444}],[{"start":{"row":57,"column":48},"end":{"row":57,"column":49},"action":"remove","lines":[","],"id":1445}],[{"start":{"row":57,"column":26},"end":{"row":57,"column":27},"action":"insert","lines":[" "],"id":1446}],[{"start":{"row":68,"column":30},"end":{"row":68,"column":52},"action":"insert","lines":["checkCommentOwnership,"],"id":1447}],[{"start":{"row":68,"column":52},"end":{"row":68,"column":53},"action":"insert","lines":[" "],"id":1448}],[{"start":{"row":68,"column":53},"end":{"row":68,"column":54},"action":"insert","lines":["m"],"id":1449}],[{"start":{"row":68,"column":53},"end":{"row":68,"column":54},"action":"remove","lines":["m"],"id":1450}],[{"start":{"row":88,"column":0},"end":{"row":105,"column":1},"action":"remove","lines":["function checkCommentOwnership(req, res, next) {"," if(req.isAuthenticated()){"," Comment.findById(req.params.comment_id, function(err, foundComment){"," if(err){"," res.redirect(\"back\");"," } else {"," // does user own the comment?"," if(foundComment.author.id.equals(req.user._id)) {"," next();"," } else {"," res.redirect(\"back\");"," }"," }"," });"," } else {"," res.redirect(\"back\");"," }","}"],"id":1451}],[{"start":{"row":81,"column":0},"end":{"row":86,"column":1},"action":"remove","lines":["function isLoggedIn(req, res, next){"," if(req.isAuthenticated()){"," return next();"," }"," res.redirect(\"/login\");","}"],"id":1452}],[{"start":{"row":80,"column":0},"end":{"row":84,"column":0},"action":"remove","lines":["//middleware","","","",""],"id":1453}],[{"start":{"row":79,"column":0},"end":{"row":80,"column":0},"action":"remove","lines":["",""],"id":1454}],[{"start":{"row":78,"column":0},"end":{"row":79,"column":0},"action":"remove","lines":["",""],"id":1455}],[{"start":{"row":77,"column":3},"end":{"row":78,"column":0},"action":"remove","lines":["",""],"id":1456}],[{"start":{"row":19,"column":16},"end":{"row":19,"column":17},"action":"insert","lines":["m"],"id":1457}],[{"start":{"row":19,"column":17},"end":{"row":19,"column":18},"action":"insert","lines":["i"],"id":1458}],[{"start":{"row":19,"column":18},"end":{"row":19,"column":19},"action":"insert","lines":["d"],"id":1459}],[{"start":{"row":19,"column":19},"end":{"row":19,"column":20},"action":"insert","lines":["d"],"id":1460}],[{"start":{"row":19,"column":20},"end":{"row":19,"column":21},"action":"insert","lines":["l"],"id":1461}],[{"start":{"row":19,"column":21},"end":{"row":19,"column":22},"action":"insert","lines":["e"],"id":1462}],[{"start":{"row":19,"column":22},"end":{"row":19,"column":23},"action":"insert","lines":["w"],"id":1463}],[{"start":{"row":19,"column":23},"end":{"row":19,"column":24},"action":"insert","lines":["a"],"id":1464}],[{"start":{"row":19,"column":24},"end":{"row":19,"column":25},"action":"insert","lines":["r"],"id":1465}],[{"start":{"row":19,"column":25},"end":{"row":19,"column":26},"action":"insert","lines":["e"],"id":1466}],[{"start":{"row":19,"column":26},"end":{"row":19,"column":27},"action":"insert","lines":[" "],"id":1467}],[{"start":{"row":19,"column":26},"end":{"row":19,"column":27},"action":"remove","lines":[" "],"id":1468}],[{"start":{"row":19,"column":26},"end":{"row":19,"column":27},"action":"insert","lines":["."],"id":1469}],[{"start":{"row":6,"column":19},"end":{"row":6,"column":20},"action":"insert","lines":["m"],"id":1470}],[{"start":{"row":6,"column":20},"end":{"row":6,"column":21},"action":"insert","lines":["i"],"id":1471}],[{"start":{"row":6,"column":21},"end":{"row":6,"column":22},"action":"insert","lines":["d"],"id":1472}],[{"start":{"row":6,"column":22},"end":{"row":6,"column":23},"action":"insert","lines":["d"],"id":1473}],[{"start":{"row":6,"column":23},"end":{"row":6,"column":24},"action":"insert","lines":["l"],"id":1474}],[{"start":{"row":6,"column":24},"end":{"row":6,"column":25},"action":"insert","lines":["e"],"id":1475}],[{"start":{"row":6,"column":25},"end":{"row":6,"column":26},"action":"insert","lines":["w"],"id":1476}],[{"start":{"row":6,"column":26},"end":{"row":6,"column":27},"action":"insert","lines":["a"],"id":1477}],[{"start":{"row":6,"column":27},"end":{"row":6,"column":28},"action":"insert","lines":["r"],"id":1478}],[{"start":{"row":6,"column":28},"end":{"row":6,"column":29},"action":"insert","lines":["e"],"id":1479}],[{"start":{"row":6,"column":29},"end":{"row":6,"column":30},"action":"insert","lines":[" "],"id":1480}],[{"start":{"row":6,"column":29},"end":{"row":6,"column":30},"action":"remove","lines":[" "],"id":1481}],[{"start":{"row":6,"column":29},"end":{"row":6,"column":30},"action":"insert","lines":["."],"id":1482}],[{"start":{"row":46,"column":32},"end":{"row":46,"column":33},"action":"insert","lines":["m"],"id":1483}],[{"start":{"row":46,"column":33},"end":{"row":46,"column":34},"action":"insert","lines":["i"],"id":1484}],[{"start":{"row":46,"column":34},"end":{"row":46,"column":35},"action":"insert","lines":["d"],"id":1485}],[{"start":{"row":46,"column":35},"end":{"row":46,"column":36},"action":"insert","lines":["d"],"id":1486}],[{"start":{"row":46,"column":36},"end":{"row":46,"column":37},"action":"insert","lines":["l"],"id":1487}],[{"start":{"row":46,"column":37},"end":{"row":46,"column":38},"action":"insert","lines":["e"],"id":1488}],[{"start":{"row":46,"column":38},"end":{"row":46,"column":39},"action":"insert","lines":["w"],"id":1489}],[{"start":{"row":46,"column":39},"end":{"row":46,"column":40},"action":"insert","lines":["a"],"id":1490}],[{"start":{"row":46,"column":40},"end":{"row":46,"column":41},"action":"insert","lines":["r"],"id":1491}],[{"start":{"row":46,"column":41},"end":{"row":46,"column":42},"action":"insert","lines":["e"],"id":1492}],[{"start":{"row":46,"column":42},"end":{"row":46,"column":43},"action":"insert","lines":[" "],"id":1493}],[{"start":{"row":46,"column":42},"end":{"row":46,"column":43},"action":"remove","lines":[" "],"id":1494}],[{"start":{"row":46,"column":42},"end":{"row":46,"column":43},"action":"insert","lines":["."],"id":1495}],[{"start":{"row":57,"column":27},"end":{"row":57,"column":28},"action":"insert","lines":["m"],"id":1496}],[{"start":{"row":57,"column":28},"end":{"row":57,"column":29},"action":"insert","lines":["i"],"id":1497}],[{"start":{"row":57,"column":29},"end":{"row":57,"column":30},"action":"insert","lines":["d"],"id":1498}],[{"start":{"row":57,"column":30},"end":{"row":57,"column":31},"action":"insert","lines":["d"],"id":1499}],[{"start":{"row":57,"column":31},"end":{"row":57,"column":32},"action":"insert","lines":["l"],"id":1500}],[{"start":{"row":57,"column":32},"end":{"row":57,"column":33},"action":"insert","lines":["e"],"id":1501}],[{"start":{"row":57,"column":33},"end":{"row":57,"column":34},"action":"insert","lines":["w"],"id":1502}],[{"start":{"row":57,"column":34},"end":{"row":57,"column":35},"action":"insert","lines":["a"],"id":1503}],[{"start":{"row":57,"column":35},"end":{"row":57,"column":36},"action":"insert","lines":["r"],"id":1504}],[{"start":{"row":57,"column":36},"end":{"row":57,"column":37},"action":"insert","lines":["e"],"id":1505}],[{"start":{"row":57,"column":37},"end":{"row":57,"column":38},"action":"insert","lines":[" "],"id":1506}],[{"start":{"row":57,"column":27},"end":{"row":57,"column":38},"action":"remove","lines":["middleware "],"id":1538}],[{"start":{"row":46,"column":32},"end":{"row":46,"column":43},"action":"remove","lines":["middleware."],"id":1539}],[{"start":{"row":19,"column":16},"end":{"row":19,"column":27},"action":"remove","lines":["middleware."],"id":1540}],[{"start":{"row":6,"column":19},"end":{"row":6,"column":30},"action":"remove","lines":["middleware."],"id":1541}],[{"start":{"row":6,"column":18},"end":{"row":6,"column":19},"action":"remove","lines":[" "],"id":1542}],[{"start":{"row":3,"column":43},"end":{"row":4,"column":0},"action":"insert","lines":["",""],"id":1543}],[{"start":{"row":4,"column":0},"end":{"row":4,"column":42},"action":"insert","lines":["var middleware = require(\"../middleware\");"],"id":1544}],[{"start":{"row":7,"column":18},"end":{"row":7,"column":19},"action":"insert","lines":["m"],"id":1545}],[{"start":{"row":7,"column":19},"end":{"row":7,"column":20},"action":"insert","lines":["i"],"id":1546}],[{"start":{"row":7,"column":20},"end":{"row":7,"column":21},"action":"insert","lines":["d"],"id":1547}],[{"start":{"row":7,"column":21},"end":{"row":7,"column":22},"action":"insert","lines":["d"],"id":1548}],[{"start":{"row":7,"column":18},"end":{"row":7,"column":22},"action":"remove","lines":["midd"],"id":1549},{"start":{"row":7,"column":18},"end":{"row":7,"column":28},"action":"insert","lines":["middleware"]}],[{"start":{"row":7,"column":28},"end":{"row":7,"column":29},"action":"insert","lines":["."],"id":1550}],[{"start":{"row":20,"column":16},"end":{"row":20,"column":27},"action":"insert","lines":["middleware."],"id":1551}],[{"start":{"row":47,"column":32},"end":{"row":47,"column":43},"action":"insert","lines":["middleware."],"id":1552}],[{"start":{"row":58,"column":27},"end":{"row":58,"column":38},"action":"insert","lines":["middleware."],"id":1553}],[{"start":{"row":69,"column":30},"end":{"row":69,"column":41},"action":"insert","lines":["middleware."],"id":1554}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":9,"column":27},"end":{"row":9,"column":27},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446968649000,"hash":"7c0e533cec0fe28f7ac8f6ff59804b8ceadc7435"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/edit.ejs b/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/edit.ejs
deleted file mode 100644
index d4fbe39c..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/edit.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"edit.ejs","tooltip":"/YelpCamp/v10/views/campgrounds/edit.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":3,"column":58},"end":{"row":3,"column":59},"action":"insert","lines":[" "],"id":141}],[{"start":{"row":3,"column":58},"end":{"row":3,"column":59},"action":"remove","lines":[" "],"id":142}],[{"start":{"row":3,"column":58},"end":{"row":3,"column":59},"action":"insert","lines":["."],"id":143}],[{"start":{"row":3,"column":59},"end":{"row":3,"column":60},"action":"insert","lines":["n"],"id":144}],[{"start":{"row":3,"column":60},"end":{"row":3,"column":61},"action":"insert","lines":["a"],"id":145}],[{"start":{"row":3,"column":61},"end":{"row":3,"column":62},"action":"insert","lines":["m"],"id":146}],[{"start":{"row":3,"column":62},"end":{"row":3,"column":63},"action":"insert","lines":["e"],"id":147}],[{"start":{"row":3,"column":63},"end":{"row":3,"column":64},"action":"insert","lines":[" "],"id":148}],[{"start":{"row":3,"column":63},"end":{"row":3,"column":64},"action":"remove","lines":[" "],"id":149}],[{"start":{"row":3,"column":63},"end":{"row":3,"column":64},"action":"insert","lines":[" "],"id":150}],[{"start":{"row":7,"column":75},"end":{"row":7,"column":90},"action":"remove","lines":["ceholder=\"name\""],"id":151}],[{"start":{"row":7,"column":74},"end":{"row":7,"column":75},"action":"remove","lines":["a"],"id":152}],[{"start":{"row":7,"column":73},"end":{"row":7,"column":74},"action":"remove","lines":["l"],"id":153}],[{"start":{"row":7,"column":72},"end":{"row":7,"column":73},"action":"remove","lines":["p"],"id":154}],[{"start":{"row":7,"column":72},"end":{"row":7,"column":73},"action":"insert","lines":["v"],"id":155}],[{"start":{"row":7,"column":73},"end":{"row":7,"column":74},"action":"insert","lines":["a"],"id":156}],[{"start":{"row":7,"column":74},"end":{"row":7,"column":75},"action":"insert","lines":["l"],"id":157}],[{"start":{"row":7,"column":75},"end":{"row":7,"column":76},"action":"insert","lines":["u"],"id":158}],[{"start":{"row":7,"column":76},"end":{"row":7,"column":77},"action":"insert","lines":["e"],"id":159}],[{"start":{"row":7,"column":77},"end":{"row":7,"column":78},"action":"insert","lines":[" "],"id":160}],[{"start":{"row":7,"column":77},"end":{"row":7,"column":78},"action":"remove","lines":[" "],"id":161}],[{"start":{"row":7,"column":77},"end":{"row":7,"column":78},"action":"insert","lines":["="],"id":162}],[{"start":{"row":7,"column":78},"end":{"row":7,"column":80},"action":"insert","lines":["\"\""],"id":163}],[{"start":{"row":7,"column":79},"end":{"row":7,"column":80},"action":"insert","lines":["<"],"id":164}],[{"start":{"row":7,"column":80},"end":{"row":7,"column":81},"action":"insert","lines":["%"],"id":165}],[{"start":{"row":7,"column":81},"end":{"row":7,"column":82},"action":"insert","lines":["="],"id":166}],[{"start":{"row":7,"column":82},"end":{"row":7,"column":83},"action":"insert","lines":[" "],"id":167}],[{"start":{"row":7,"column":83},"end":{"row":7,"column":84},"action":"insert","lines":["c"],"id":168}],[{"start":{"row":7,"column":84},"end":{"row":7,"column":85},"action":"insert","lines":["a"],"id":169}],[{"start":{"row":7,"column":85},"end":{"row":7,"column":86},"action":"insert","lines":["m"],"id":170}],[{"start":{"row":7,"column":86},"end":{"row":7,"column":87},"action":"insert","lines":["p"],"id":171}],[{"start":{"row":7,"column":87},"end":{"row":7,"column":88},"action":"insert","lines":["g"],"id":172}],[{"start":{"row":7,"column":88},"end":{"row":7,"column":89},"action":"insert","lines":["r"],"id":173}],[{"start":{"row":7,"column":89},"end":{"row":7,"column":90},"action":"insert","lines":["o"],"id":174}],[{"start":{"row":7,"column":90},"end":{"row":7,"column":91},"action":"insert","lines":["u"],"id":175}],[{"start":{"row":7,"column":91},"end":{"row":7,"column":92},"action":"insert","lines":["n"],"id":176}],[{"start":{"row":7,"column":92},"end":{"row":7,"column":93},"action":"insert","lines":["d"],"id":177}],[{"start":{"row":7,"column":93},"end":{"row":7,"column":94},"action":"insert","lines":[" "],"id":178}],[{"start":{"row":7,"column":93},"end":{"row":7,"column":94},"action":"remove","lines":[" "],"id":179}],[{"start":{"row":7,"column":93},"end":{"row":7,"column":94},"action":"insert","lines":["."],"id":180}],[{"start":{"row":7,"column":94},"end":{"row":7,"column":95},"action":"insert","lines":["n"],"id":181}],[{"start":{"row":7,"column":95},"end":{"row":7,"column":96},"action":"insert","lines":["a"],"id":182}],[{"start":{"row":7,"column":96},"end":{"row":7,"column":97},"action":"insert","lines":["m"],"id":183}],[{"start":{"row":7,"column":97},"end":{"row":7,"column":98},"action":"insert","lines":["e"],"id":184}],[{"start":{"row":7,"column":98},"end":{"row":7,"column":99},"action":"insert","lines":[" "],"id":185}],[{"start":{"row":7,"column":98},"end":{"row":7,"column":99},"action":"remove","lines":[" "],"id":186}],[{"start":{"row":7,"column":98},"end":{"row":7,"column":99},"action":"insert","lines":[" "],"id":187}],[{"start":{"row":7,"column":99},"end":{"row":7,"column":100},"action":"insert","lines":["%"],"id":188}],[{"start":{"row":7,"column":100},"end":{"row":7,"column":101},"action":"insert","lines":[">"],"id":189}],[{"start":{"row":10,"column":73},"end":{"row":10,"column":96},"action":"remove","lines":["placeholder=\"image url\""],"id":190}],[{"start":{"row":10,"column":73},"end":{"row":10,"column":103},"action":"insert","lines":["value=\"<%= campground.name %>\""],"id":191}],[{"start":{"row":10,"column":98},"end":{"row":10,"column":99},"action":"remove","lines":["e"],"id":192}],[{"start":{"row":10,"column":97},"end":{"row":10,"column":98},"action":"remove","lines":["m"],"id":193}],[{"start":{"row":10,"column":96},"end":{"row":10,"column":97},"action":"remove","lines":["a"],"id":194}],[{"start":{"row":10,"column":95},"end":{"row":10,"column":96},"action":"remove","lines":["n"],"id":195}],[{"start":{"row":10,"column":95},"end":{"row":10,"column":96},"action":"insert","lines":["i"],"id":196}],[{"start":{"row":10,"column":96},"end":{"row":10,"column":97},"action":"insert","lines":["m"],"id":197}],[{"start":{"row":10,"column":97},"end":{"row":10,"column":98},"action":"insert","lines":["a"],"id":198}],[{"start":{"row":10,"column":98},"end":{"row":10,"column":99},"action":"insert","lines":["g"],"id":199}],[{"start":{"row":10,"column":99},"end":{"row":10,"column":100},"action":"insert","lines":["e"],"id":200}],[{"start":{"row":13,"column":79},"end":{"row":13,"column":104},"action":"remove","lines":["placeholder=\"description\""],"id":201},{"start":{"row":13,"column":79},"end":{"row":13,"column":109},"action":"insert","lines":["value=\"<%= campground.name %>\""]}],[{"start":{"row":13,"column":101},"end":{"row":13,"column":105},"action":"remove","lines":["name"],"id":202}],[{"start":{"row":13,"column":101},"end":{"row":13,"column":102},"action":"insert","lines":["d"],"id":203}],[{"start":{"row":13,"column":102},"end":{"row":13,"column":103},"action":"insert","lines":["r"],"id":204}],[{"start":{"row":13,"column":102},"end":{"row":13,"column":103},"action":"remove","lines":["r"],"id":205}],[{"start":{"row":13,"column":102},"end":{"row":13,"column":103},"action":"insert","lines":["e"],"id":206}],[{"start":{"row":13,"column":103},"end":{"row":13,"column":104},"action":"insert","lines":["s"],"id":207}],[{"start":{"row":13,"column":104},"end":{"row":13,"column":105},"action":"insert","lines":["c"],"id":208}],[{"start":{"row":13,"column":105},"end":{"row":13,"column":106},"action":"insert","lines":["r"],"id":209}],[{"start":{"row":13,"column":106},"end":{"row":13,"column":107},"action":"insert","lines":["i"],"id":210}],[{"start":{"row":13,"column":107},"end":{"row":13,"column":108},"action":"insert","lines":["p"],"id":211}],[{"start":{"row":13,"column":108},"end":{"row":13,"column":109},"action":"insert","lines":["t"],"id":212}],[{"start":{"row":13,"column":109},"end":{"row":13,"column":110},"action":"insert","lines":["i"],"id":213}],[{"start":{"row":13,"column":110},"end":{"row":13,"column":111},"action":"insert","lines":["o"],"id":214}],[{"start":{"row":13,"column":111},"end":{"row":13,"column":112},"action":"insert","lines":["n"],"id":215}],[{"start":{"row":13,"column":112},"end":{"row":13,"column":113},"action":"insert","lines":[" "],"id":216}],[{"start":{"row":13,"column":112},"end":{"row":13,"column":113},"action":"remove","lines":[" "],"id":217}],[{"start":{"row":7,"column":66},"end":{"row":7,"column":67},"action":"insert","lines":["b"],"id":218}],[{"start":{"row":7,"column":67},"end":{"row":7,"column":68},"action":"insert","lines":["l"],"id":219}],[{"start":{"row":7,"column":67},"end":{"row":7,"column":68},"action":"remove","lines":["l"],"id":220}],[{"start":{"row":7,"column":66},"end":{"row":7,"column":67},"action":"remove","lines":["b"],"id":221}],[{"start":{"row":7,"column":66},"end":{"row":7,"column":67},"action":"insert","lines":["c"],"id":222}],[{"start":{"row":7,"column":67},"end":{"row":7,"column":68},"action":"insert","lines":["a"],"id":223}],[{"start":{"row":7,"column":68},"end":{"row":7,"column":69},"action":"insert","lines":["m"],"id":224}],[{"start":{"row":7,"column":69},"end":{"row":7,"column":70},"action":"insert","lines":["p"],"id":225}],[{"start":{"row":7,"column":70},"end":{"row":7,"column":71},"action":"insert","lines":["g"],"id":226}],[{"start":{"row":7,"column":71},"end":{"row":7,"column":72},"action":"insert","lines":["r"],"id":227}],[{"start":{"row":7,"column":72},"end":{"row":7,"column":73},"action":"insert","lines":["o"],"id":228}],[{"start":{"row":7,"column":73},"end":{"row":7,"column":74},"action":"insert","lines":["u"],"id":229}],[{"start":{"row":7,"column":74},"end":{"row":7,"column":75},"action":"insert","lines":["n"],"id":230}],[{"start":{"row":7,"column":75},"end":{"row":7,"column":76},"action":"insert","lines":["d"],"id":231}],[{"start":{"row":7,"column":76},"end":{"row":7,"column":77},"action":"insert","lines":[" "],"id":232}],[{"start":{"row":7,"column":76},"end":{"row":7,"column":77},"action":"remove","lines":[" "],"id":233}],[{"start":{"row":7,"column":76},"end":{"row":7,"column":77},"action":"insert","lines":["["],"id":234}],[{"start":{"row":7,"column":81},"end":{"row":7,"column":82},"action":"insert","lines":["]"],"id":235}],[{"start":{"row":10,"column":66},"end":{"row":10,"column":77},"action":"insert","lines":["campground["],"id":236}],[{"start":{"row":13,"column":66},"end":{"row":13,"column":77},"action":"insert","lines":["campground["],"id":237}],[{"start":{"row":10,"column":82},"end":{"row":10,"column":83},"action":"insert","lines":["]"],"id":238}],[{"start":{"row":13,"column":88},"end":{"row":13,"column":89},"action":"insert","lines":["]"],"id":239}],[{"start":{"row":5,"column":61},"end":{"row":5,"column":65},"action":"remove","lines":["edit"],"id":240}],[{"start":{"row":5,"column":60},"end":{"row":5,"column":61},"action":"remove","lines":["/"],"id":241}]]},"ace":{"folds":[],"scrolltop":51,"scrollleft":0,"selection":{"start":{"row":10,"column":53},"end":{"row":10,"column":53},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":79,"mode":"ace/mode/ejs"}},"timestamp":1446428550732,"hash":"b7cff7dd53485ed2411e7f39622a7f6dbc97a330"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/new.ejs b/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/new.ejs
deleted file mode 100644
index e541af2c..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/new.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"new.ejs","tooltip":"/YelpCamp/v10/views/campgrounds/new.ejs","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":296.5,"scrollleft":0,"selection":{"start":{"row":25,"column":0},"end":{"row":25,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":1,"state":"start","mode":"ace/mode/ejs"}},"timestamp":1446427977936,"hash":"2e55b7c51bbb7b76cc8b6f082aeedef06bb148c6"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/show.ejs b/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/show.ejs
deleted file mode 100644
index a8761684..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/views/campgrounds/show.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"show.ejs","tooltip":"/YelpCamp/v10/views/campgrounds/show.ejs","ace":{"folds":[],"scrolltop":964,"scrollleft":84,"selection":{"start":{"row":48,"column":31},"end":{"row":48,"column":31},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"hash":"0c2d11573ebd4d1d67226d6fe7d22015b44386c3","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":45,"column":53},"end":{"row":45,"column":54},"action":"insert","lines":["c"],"id":309}],[{"start":{"row":45,"column":54},"end":{"row":45,"column":55},"action":"insert","lines":["l"],"id":310}],[{"start":{"row":45,"column":55},"end":{"row":45,"column":56},"action":"insert","lines":["a"],"id":311}],[{"start":{"row":45,"column":56},"end":{"row":45,"column":57},"action":"insert","lines":["s"],"id":312}],[{"start":{"row":45,"column":57},"end":{"row":45,"column":58},"action":"insert","lines":["s"],"id":313}],[{"start":{"row":45,"column":58},"end":{"row":45,"column":59},"action":"insert","lines":[" "],"id":314}],[{"start":{"row":45,"column":58},"end":{"row":45,"column":59},"action":"remove","lines":[" "],"id":315}],[{"start":{"row":45,"column":58},"end":{"row":45,"column":59},"action":"insert","lines":["="],"id":316}],[{"start":{"row":45,"column":59},"end":{"row":45,"column":61},"action":"insert","lines":["\"\""],"id":317}],[{"start":{"row":45,"column":60},"end":{"row":45,"column":61},"action":"insert","lines":["b"],"id":318}],[{"start":{"row":45,"column":61},"end":{"row":45,"column":62},"action":"insert","lines":["t"],"id":319}],[{"start":{"row":45,"column":62},"end":{"row":45,"column":63},"action":"insert","lines":["n"],"id":320}],[{"start":{"row":45,"column":63},"end":{"row":45,"column":64},"action":"insert","lines":[" "],"id":321}],[{"start":{"row":45,"column":63},"end":{"row":45,"column":64},"action":"remove","lines":[" "],"id":322}],[{"start":{"row":45,"column":63},"end":{"row":45,"column":64},"action":"insert","lines":[" "],"id":323}],[{"start":{"row":45,"column":64},"end":{"row":45,"column":65},"action":"insert","lines":["b"],"id":324}],[{"start":{"row":45,"column":65},"end":{"row":45,"column":66},"action":"insert","lines":["t"],"id":325}],[{"start":{"row":45,"column":66},"end":{"row":45,"column":67},"action":"insert","lines":["n"],"id":326}],[{"start":{"row":45,"column":67},"end":{"row":45,"column":68},"action":"insert","lines":[" "],"id":327}],[{"start":{"row":45,"column":67},"end":{"row":45,"column":68},"action":"remove","lines":[" "],"id":328}],[{"start":{"row":45,"column":67},"end":{"row":45,"column":68},"action":"insert","lines":["0"],"id":329},{"start":{"row":45,"column":68},"end":{"row":45,"column":69},"action":"insert","lines":["-"]}],[{"start":{"row":45,"column":69},"end":{"row":45,"column":70},"action":"insert","lines":["x"],"id":330}],[{"start":{"row":45,"column":69},"end":{"row":45,"column":70},"action":"remove","lines":["x"],"id":331}],[{"start":{"row":45,"column":68},"end":{"row":45,"column":69},"action":"remove","lines":["-"],"id":332}],[{"start":{"row":45,"column":67},"end":{"row":45,"column":68},"action":"remove","lines":["0"],"id":333}],[{"start":{"row":45,"column":67},"end":{"row":45,"column":68},"action":"insert","lines":["-"],"id":334}],[{"start":{"row":45,"column":68},"end":{"row":45,"column":69},"action":"insert","lines":["x"],"id":335}],[{"start":{"row":45,"column":69},"end":{"row":45,"column":70},"action":"insert","lines":["s"],"id":336}],[{"start":{"row":45,"column":70},"end":{"row":45,"column":71},"action":"insert","lines":[" "],"id":337}],[{"start":{"row":45,"column":70},"end":{"row":45,"column":71},"action":"remove","lines":[" "],"id":338}],[{"start":{"row":45,"column":70},"end":{"row":45,"column":71},"action":"insert","lines":[" "],"id":339}],[{"start":{"row":45,"column":71},"end":{"row":45,"column":72},"action":"insert","lines":["b"],"id":340}],[{"start":{"row":45,"column":72},"end":{"row":45,"column":73},"action":"insert","lines":["t"],"id":341}],[{"start":{"row":45,"column":73},"end":{"row":45,"column":74},"action":"insert","lines":["n"],"id":342}],[{"start":{"row":45,"column":74},"end":{"row":45,"column":75},"action":"insert","lines":[" "],"id":343}],[{"start":{"row":45,"column":74},"end":{"row":45,"column":75},"action":"remove","lines":[" "],"id":344}],[{"start":{"row":45,"column":74},"end":{"row":45,"column":75},"action":"insert","lines":["-"],"id":345}],[{"start":{"row":45,"column":75},"end":{"row":45,"column":76},"action":"insert","lines":["d"],"id":346}],[{"start":{"row":45,"column":76},"end":{"row":45,"column":77},"action":"insert","lines":["a"],"id":347}],[{"start":{"row":45,"column":77},"end":{"row":45,"column":78},"action":"insert","lines":["n"],"id":348}],[{"start":{"row":45,"column":78},"end":{"row":45,"column":79},"action":"insert","lines":["g"],"id":349}],[{"start":{"row":45,"column":79},"end":{"row":45,"column":80},"action":"insert","lines":["e"],"id":350}],[{"start":{"row":45,"column":80},"end":{"row":45,"column":81},"action":"insert","lines":["r"],"id":351}],[{"start":{"row":45,"column":81},"end":{"row":45,"column":82},"action":"insert","lines":[" "],"id":352}],[{"start":{"row":45,"column":81},"end":{"row":45,"column":82},"action":"remove","lines":[" "],"id":353}],[{"start":{"row":45,"column":82},"end":{"row":45,"column":83},"action":"insert","lines":[" "],"id":354}],[{"start":{"row":45,"column":83},"end":{"row":45,"column":84},"action":"insert","lines":["v"],"id":355}],[{"start":{"row":45,"column":84},"end":{"row":45,"column":85},"action":"insert","lines":["a"],"id":356}],[{"start":{"row":45,"column":85},"end":{"row":45,"column":86},"action":"insert","lines":["l"],"id":357}],[{"start":{"row":45,"column":86},"end":{"row":45,"column":87},"action":"insert","lines":["u"],"id":358}],[{"start":{"row":45,"column":87},"end":{"row":45,"column":88},"action":"insert","lines":["e"],"id":359}],[{"start":{"row":45,"column":88},"end":{"row":45,"column":89},"action":"insert","lines":[" "],"id":360}],[{"start":{"row":45,"column":88},"end":{"row":45,"column":89},"action":"remove","lines":[" "],"id":361}],[{"start":{"row":45,"column":88},"end":{"row":45,"column":89},"action":"insert","lines":["="],"id":362}],[{"start":{"row":45,"column":89},"end":{"row":45,"column":91},"action":"insert","lines":["\"\""],"id":363}],[{"start":{"row":45,"column":90},"end":{"row":45,"column":91},"action":"insert","lines":["D"],"id":364}],[{"start":{"row":45,"column":91},"end":{"row":45,"column":92},"action":"insert","lines":["e"],"id":365}],[{"start":{"row":45,"column":92},"end":{"row":45,"column":93},"action":"insert","lines":["l"],"id":366}],[{"start":{"row":45,"column":93},"end":{"row":45,"column":94},"action":"insert","lines":["e"],"id":367}],[{"start":{"row":45,"column":94},"end":{"row":45,"column":95},"action":"insert","lines":["t"],"id":368}],[{"start":{"row":45,"column":95},"end":{"row":45,"column":96},"action":"insert","lines":["e"],"id":369}],[{"start":{"row":45,"column":96},"end":{"row":45,"column":97},"action":"insert","lines":[" "],"id":370}],[{"start":{"row":45,"column":96},"end":{"row":45,"column":97},"action":"remove","lines":[" "],"id":371}],[{"start":{"row":44,"column":34},"end":{"row":44,"column":35},"action":"insert","lines":["i"],"id":372}],[{"start":{"row":44,"column":35},"end":{"row":44,"column":36},"action":"insert","lines":["d"],"id":373}],[{"start":{"row":44,"column":36},"end":{"row":44,"column":37},"action":"insert","lines":[" "],"id":374}],[{"start":{"row":44,"column":36},"end":{"row":44,"column":37},"action":"remove","lines":[" "],"id":375}],[{"start":{"row":44,"column":36},"end":{"row":44,"column":37},"action":"insert","lines":["="],"id":376}],[{"start":{"row":44,"column":37},"end":{"row":44,"column":38},"action":"insert","lines":["\""],"id":377}],[{"start":{"row":44,"column":38},"end":{"row":44,"column":49},"action":"insert","lines":["delete-form"],"id":378}],[{"start":{"row":44,"column":49},"end":{"row":44,"column":50},"action":"insert","lines":[" "],"id":379}],[{"start":{"row":44,"column":49},"end":{"row":44,"column":50},"action":"remove","lines":[" "],"id":380}],[{"start":{"row":44,"column":49},"end":{"row":44,"column":50},"action":"insert","lines":["\""],"id":381}],[{"start":{"row":44,"column":50},"end":{"row":44,"column":51},"action":"insert","lines":[" "],"id":382}],[{"start":{"row":41,"column":32},"end":{"row":42,"column":0},"action":"insert","lines":["",""],"id":383},{"start":{"row":42,"column":0},"end":{"row":42,"column":28},"action":"insert","lines":[" "]}],[{"start":{"row":42,"column":28},"end":{"row":42,"column":99},"action":"insert","lines":[" <% if(currentUser && campground.author.id.equals(currentUser._id)){ %>"],"id":384}],[{"start":{"row":42,"column":28},"end":{"row":42,"column":29},"action":"remove","lines":[" "],"id":385}],[{"start":{"row":42,"column":24},"end":{"row":42,"column":28},"action":"remove","lines":[" "],"id":386}],[{"start":{"row":42,"column":20},"end":{"row":42,"column":24},"action":"remove","lines":[" "],"id":387}],[{"start":{"row":42,"column":20},"end":{"row":42,"column":24},"action":"insert","lines":[" "],"id":388}],[{"start":{"row":42,"column":45},"end":{"row":42,"column":55},"action":"remove","lines":["campground"],"id":389}],[{"start":{"row":42,"column":45},"end":{"row":42,"column":46},"action":"insert","lines":["c"],"id":390}],[{"start":{"row":42,"column":46},"end":{"row":42,"column":47},"action":"insert","lines":["o"],"id":391}],[{"start":{"row":42,"column":47},"end":{"row":42,"column":48},"action":"insert","lines":["m"],"id":392}],[{"start":{"row":42,"column":48},"end":{"row":42,"column":49},"action":"insert","lines":["m"],"id":393}],[{"start":{"row":42,"column":49},"end":{"row":42,"column":50},"action":"insert","lines":["e"],"id":394}],[{"start":{"row":42,"column":50},"end":{"row":42,"column":51},"action":"insert","lines":["n"],"id":395}],[{"start":{"row":42,"column":51},"end":{"row":42,"column":52},"action":"insert","lines":["t"],"id":396}],[{"start":{"row":47,"column":35},"end":{"row":48,"column":0},"action":"insert","lines":["",""],"id":398},{"start":{"row":48,"column":0},"end":{"row":48,"column":28},"action":"insert","lines":[" "]}],[{"start":{"row":48,"column":28},"end":{"row":48,"column":29},"action":"insert","lines":["<"],"id":399}],[{"start":{"row":48,"column":29},"end":{"row":48,"column":30},"action":"insert","lines":["%"],"id":400}],[{"start":{"row":48,"column":30},"end":{"row":48,"column":31},"action":"insert","lines":[" "],"id":401}],[{"start":{"row":48,"column":31},"end":{"row":48,"column":32},"action":"insert","lines":["}"],"id":402}],[{"start":{"row":48,"column":32},"end":{"row":48,"column":33},"action":"insert","lines":[" "],"id":403}],[{"start":{"row":48,"column":33},"end":{"row":48,"column":34},"action":"insert","lines":["5"],"id":404}],[{"start":{"row":48,"column":33},"end":{"row":48,"column":34},"action":"remove","lines":["5"],"id":405}],[{"start":{"row":48,"column":33},"end":{"row":48,"column":34},"action":"insert","lines":["%"],"id":406}],[{"start":{"row":48,"column":34},"end":{"row":48,"column":35},"action":"insert","lines":[","],"id":407}],[{"start":{"row":48,"column":34},"end":{"row":48,"column":35},"action":"remove","lines":[","],"id":408}],[{"start":{"row":48,"column":34},"end":{"row":48,"column":35},"action":"insert","lines":[">"],"id":409}],[{"start":{"row":48,"column":24},"end":{"row":48,"column":28},"action":"remove","lines":[" "],"id":410}]]},"timestamp":1446967691000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/views/comments/edit.ejs b/.c9/metadata/workspace/YelpCamp/v10/views/comments/edit.ejs
deleted file mode 100644
index 0cefd481..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/views/comments/edit.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"edit.ejs","tooltip":"/YelpCamp/v10/views/comments/edit.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":5,"column":79},"end":{"row":5,"column":80},"action":"insert","lines":["n"],"id":23}],[{"start":{"row":5,"column":80},"end":{"row":5,"column":81},"action":"insert","lines":["t"],"id":24}],[{"start":{"row":5,"column":81},"end":{"row":5,"column":82},"action":"insert","lines":[" "],"id":25}],[{"start":{"row":5,"column":81},"end":{"row":5,"column":82},"action":"remove","lines":[" "],"id":26}],[{"start":{"row":5,"column":81},"end":{"row":5,"column":82},"action":"insert","lines":["."],"id":27}],[{"start":{"row":5,"column":82},"end":{"row":5,"column":83},"action":"insert","lines":["_"],"id":28}],[{"start":{"row":5,"column":83},"end":{"row":5,"column":84},"action":"insert","lines":["i"],"id":29}],[{"start":{"row":5,"column":84},"end":{"row":5,"column":85},"action":"insert","lines":["d"],"id":30}],[{"start":{"row":5,"column":85},"end":{"row":5,"column":86},"action":"insert","lines":[" "],"id":31}],[{"start":{"row":5,"column":85},"end":{"row":5,"column":86},"action":"remove","lines":[" "],"id":32}],[{"start":{"row":5,"column":88},"end":{"row":5,"column":89},"action":"insert","lines":["?"],"id":33}],[{"start":{"row":5,"column":89},"end":{"row":5,"column":90},"action":"insert","lines":["_"],"id":34}],[{"start":{"row":5,"column":90},"end":{"row":5,"column":91},"action":"insert","lines":["m"],"id":35}],[{"start":{"row":5,"column":91},"end":{"row":5,"column":92},"action":"insert","lines":["e"],"id":36}],[{"start":{"row":5,"column":92},"end":{"row":5,"column":93},"action":"insert","lines":["t"],"id":37}],[{"start":{"row":5,"column":93},"end":{"row":5,"column":94},"action":"insert","lines":["h"],"id":38}],[{"start":{"row":5,"column":94},"end":{"row":5,"column":95},"action":"insert","lines":["o"],"id":39}],[{"start":{"row":5,"column":95},"end":{"row":5,"column":96},"action":"insert","lines":["d"],"id":40}],[{"start":{"row":5,"column":96},"end":{"row":5,"column":97},"action":"insert","lines":[" "],"id":41}],[{"start":{"row":5,"column":96},"end":{"row":5,"column":97},"action":"remove","lines":[" "],"id":42}],[{"start":{"row":5,"column":96},"end":{"row":5,"column":97},"action":"insert","lines":["-"],"id":43}],[{"start":{"row":5,"column":96},"end":{"row":5,"column":97},"action":"remove","lines":["-"],"id":44}],[{"start":{"row":5,"column":96},"end":{"row":5,"column":97},"action":"insert","lines":["="],"id":45}],[{"start":{"row":5,"column":97},"end":{"row":5,"column":98},"action":"insert","lines":["P"],"id":46}],[{"start":{"row":5,"column":98},"end":{"row":5,"column":99},"action":"insert","lines":["U"],"id":47}],[{"start":{"row":5,"column":99},"end":{"row":5,"column":100},"action":"insert","lines":["T"],"id":48}],[{"start":{"row":5,"column":100},"end":{"row":5,"column":101},"action":"insert","lines":[" "],"id":49}],[{"start":{"row":5,"column":100},"end":{"row":5,"column":101},"action":"remove","lines":[" "],"id":50}],[{"start":{"row":7,"column":81},"end":{"row":7,"column":99},"action":"remove","lines":["placeholder=\"text\""],"id":51},{"start":{"row":7,"column":81},"end":{"row":7,"column":82},"action":"insert","lines":["p"]}],[{"start":{"row":7,"column":82},"end":{"row":7,"column":83},"action":"insert","lines":["l"],"id":52}],[{"start":{"row":7,"column":83},"end":{"row":7,"column":84},"action":"insert","lines":["a"],"id":53}],[{"start":{"row":7,"column":83},"end":{"row":7,"column":84},"action":"remove","lines":["a"],"id":54}],[{"start":{"row":7,"column":82},"end":{"row":7,"column":83},"action":"remove","lines":["l"],"id":55}],[{"start":{"row":7,"column":81},"end":{"row":7,"column":82},"action":"remove","lines":["p"],"id":56}],[{"start":{"row":7,"column":81},"end":{"row":7,"column":82},"action":"insert","lines":["v"],"id":57}],[{"start":{"row":7,"column":82},"end":{"row":7,"column":83},"action":"insert","lines":["a"],"id":58}],[{"start":{"row":7,"column":83},"end":{"row":7,"column":84},"action":"insert","lines":["l"],"id":59}],[{"start":{"row":7,"column":84},"end":{"row":7,"column":85},"action":"insert","lines":["u"],"id":60}],[{"start":{"row":7,"column":85},"end":{"row":7,"column":86},"action":"insert","lines":["e"],"id":61}],[{"start":{"row":7,"column":86},"end":{"row":7,"column":87},"action":"insert","lines":[" "],"id":62}],[{"start":{"row":7,"column":86},"end":{"row":7,"column":87},"action":"remove","lines":[" "],"id":63}],[{"start":{"row":7,"column":86},"end":{"row":7,"column":87},"action":"insert","lines":["="],"id":64}],[{"start":{"row":7,"column":87},"end":{"row":7,"column":89},"action":"insert","lines":["\"\""],"id":65}],[{"start":{"row":7,"column":88},"end":{"row":7,"column":89},"action":"insert","lines":["<"],"id":66}],[{"start":{"row":7,"column":89},"end":{"row":7,"column":90},"action":"insert","lines":["%"],"id":67}],[{"start":{"row":7,"column":90},"end":{"row":7,"column":91},"action":"insert","lines":["="],"id":68}],[{"start":{"row":7,"column":91},"end":{"row":7,"column":92},"action":"insert","lines":[" "],"id":69}],[{"start":{"row":7,"column":92},"end":{"row":7,"column":93},"action":"insert","lines":["%"],"id":70}],[{"start":{"row":7,"column":93},"end":{"row":7,"column":94},"action":"insert","lines":[">"],"id":71}],[{"start":{"row":7,"column":91},"end":{"row":7,"column":92},"action":"insert","lines":["c"],"id":72}],[{"start":{"row":7,"column":92},"end":{"row":7,"column":93},"action":"insert","lines":["a"],"id":73}],[{"start":{"row":7,"column":92},"end":{"row":7,"column":93},"action":"remove","lines":["a"],"id":74}],[{"start":{"row":7,"column":91},"end":{"row":7,"column":92},"action":"remove","lines":["c"],"id":75}],[{"start":{"row":7,"column":91},"end":{"row":7,"column":92},"action":"insert","lines":[" "],"id":76}],[{"start":{"row":7,"column":92},"end":{"row":7,"column":93},"action":"insert","lines":["c"],"id":77}],[{"start":{"row":7,"column":93},"end":{"row":7,"column":94},"action":"insert","lines":["o"],"id":78}],[{"start":{"row":7,"column":94},"end":{"row":7,"column":95},"action":"insert","lines":["m"],"id":79}],[{"start":{"row":7,"column":95},"end":{"row":7,"column":96},"action":"insert","lines":["m"],"id":80}],[{"start":{"row":7,"column":96},"end":{"row":7,"column":97},"action":"insert","lines":["e"],"id":81}],[{"start":{"row":7,"column":97},"end":{"row":7,"column":98},"action":"insert","lines":["n"],"id":82}],[{"start":{"row":7,"column":98},"end":{"row":7,"column":99},"action":"insert","lines":["t"],"id":83}],[{"start":{"row":7,"column":99},"end":{"row":7,"column":100},"action":"insert","lines":[" "],"id":84}],[{"start":{"row":7,"column":99},"end":{"row":7,"column":100},"action":"remove","lines":[" "],"id":85}],[{"start":{"row":7,"column":99},"end":{"row":7,"column":100},"action":"insert","lines":["."],"id":86}],[{"start":{"row":7,"column":100},"end":{"row":7,"column":101},"action":"insert","lines":["t"],"id":87}],[{"start":{"row":7,"column":101},"end":{"row":7,"column":102},"action":"insert","lines":["e"],"id":88}],[{"start":{"row":7,"column":102},"end":{"row":7,"column":103},"action":"insert","lines":["x"],"id":89}],[{"start":{"row":7,"column":103},"end":{"row":7,"column":104},"action":"insert","lines":["t"],"id":90}],[{"start":{"row":7,"column":104},"end":{"row":7,"column":105},"action":"insert","lines":[" "],"id":91}],[{"start":{"row":7,"column":104},"end":{"row":7,"column":105},"action":"remove","lines":[" "],"id":92}],[{"start":{"row":5,"column":44},"end":{"row":5,"column":57},"action":"remove","lines":["ampground._id"],"id":93}],[{"start":{"row":5,"column":44},"end":{"row":5,"column":45},"action":"insert","lines":["a"],"id":94}],[{"start":{"row":5,"column":45},"end":{"row":5,"column":46},"action":"insert","lines":["m"],"id":95}],[{"start":{"row":5,"column":46},"end":{"row":5,"column":47},"action":"insert","lines":["p"],"id":96}],[{"start":{"row":5,"column":47},"end":{"row":5,"column":48},"action":"insert","lines":["g"],"id":97}],[{"start":{"row":5,"column":48},"end":{"row":5,"column":49},"action":"insert","lines":["r"],"id":98}],[{"start":{"row":5,"column":49},"end":{"row":5,"column":50},"action":"insert","lines":["o"],"id":99}],[{"start":{"row":5,"column":50},"end":{"row":5,"column":51},"action":"insert","lines":["u"],"id":100}],[{"start":{"row":5,"column":51},"end":{"row":5,"column":52},"action":"insert","lines":["n"],"id":101}],[{"start":{"row":5,"column":52},"end":{"row":5,"column":53},"action":"insert","lines":["d"],"id":102}],[{"start":{"row":5,"column":53},"end":{"row":5,"column":54},"action":"insert","lines":[" "],"id":103}],[{"start":{"row":5,"column":53},"end":{"row":5,"column":54},"action":"remove","lines":[" "],"id":104}],[{"start":{"row":5,"column":53},"end":{"row":5,"column":54},"action":"insert","lines":["_"],"id":105}],[{"start":{"row":5,"column":54},"end":{"row":5,"column":55},"action":"insert","lines":["i"],"id":106}],[{"start":{"row":5,"column":55},"end":{"row":5,"column":56},"action":"insert","lines":["d"],"id":107}],[{"start":{"row":3,"column":44},"end":{"row":3,"column":66},"action":"remove","lines":["<%= campground.name %>"],"id":108}],[{"start":{"row":3,"column":43},"end":{"row":3,"column":44},"action":"remove","lines":[" "],"id":109}],[{"start":{"row":3,"column":43},"end":{"row":3,"column":44},"action":"insert","lines":[" "],"id":110}],[{"start":{"row":3,"column":44},"end":{"row":3,"column":45},"action":"insert","lines":["C"],"id":111}],[{"start":{"row":3,"column":45},"end":{"row":3,"column":46},"action":"insert","lines":["i"],"id":112}],[{"start":{"row":3,"column":46},"end":{"row":3,"column":47},"action":"insert","lines":["n"],"id":113}],[{"start":{"row":3,"column":46},"end":{"row":3,"column":47},"action":"remove","lines":["n"],"id":114}],[{"start":{"row":3,"column":45},"end":{"row":3,"column":46},"action":"remove","lines":["i"],"id":115}],[{"start":{"row":3,"column":45},"end":{"row":3,"column":46},"action":"insert","lines":["o"],"id":116}],[{"start":{"row":3,"column":46},"end":{"row":3,"column":47},"action":"insert","lines":["m"],"id":117}],[{"start":{"row":3,"column":47},"end":{"row":3,"column":48},"action":"insert","lines":["m"],"id":118}],[{"start":{"row":3,"column":48},"end":{"row":3,"column":49},"action":"insert","lines":["e"],"id":119}],[{"start":{"row":3,"column":49},"end":{"row":3,"column":50},"action":"insert","lines":["n"],"id":120}],[{"start":{"row":3,"column":50},"end":{"row":3,"column":51},"action":"insert","lines":["t"],"id":121}],[{"start":{"row":3,"column":51},"end":{"row":3,"column":52},"action":"insert","lines":[" "],"id":122}],[{"start":{"row":3,"column":51},"end":{"row":3,"column":52},"action":"remove","lines":[" "],"id":123}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":186,"selection":{"start":{"row":7,"column":74},"end":{"row":7,"column":79},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446965570870,"hash":"b58d29784a8a69727dda66e8c1c55d4061934bb6"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v10/views/comments/new.ejs b/.c9/metadata/workspace/YelpCamp/v10/views/comments/new.ejs
deleted file mode 100644
index 86a867e0..00000000
--- a/.c9/metadata/workspace/YelpCamp/v10/views/comments/new.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"new.ejs","tooltip":"/YelpCamp/v10/views/comments/new.ejs","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":6,"column":40},"end":{"row":6,"column":40},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446965244387,"hash":"c55c8775fc213dee946d6fe2d8bed817186a29c7"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/app.js b/.c9/metadata/workspace/YelpCamp/v11/app.js
deleted file mode 100644
index 55e538f6..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v11/app.js","ace":{"folds":[],"scrolltop":965.5,"scrollleft":0,"selection":{"start":{"row":40,"column":0},"end":{"row":41,"column":45},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":21,"state":"start","mode":"ace/mode/javascript"}},"hash":"3f369bf66ef1254131ce019698c4173db4079d7b","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":4,"column":31},"end":{"row":4,"column":32},"action":"insert","lines":["e"],"id":38}],[{"start":{"row":4,"column":32},"end":{"row":4,"column":33},"action":"insert","lines":["c"],"id":39}],[{"start":{"row":4,"column":33},"end":{"row":4,"column":34},"action":"insert","lines":["t"],"id":40}],[{"start":{"row":4,"column":34},"end":{"row":4,"column":35},"action":"insert","lines":[" "],"id":41}],[{"start":{"row":4,"column":34},"end":{"row":4,"column":35},"action":"remove","lines":[" "],"id":42}],[{"start":{"row":4,"column":34},"end":{"row":4,"column":35},"action":"insert","lines":["-"],"id":43}],[{"start":{"row":4,"column":35},"end":{"row":4,"column":36},"action":"insert","lines":["f"],"id":44}],[{"start":{"row":4,"column":36},"end":{"row":4,"column":37},"action":"insert","lines":["l"],"id":45}],[{"start":{"row":4,"column":37},"end":{"row":4,"column":38},"action":"insert","lines":["a"],"id":46}],[{"start":{"row":4,"column":38},"end":{"row":4,"column":39},"action":"insert","lines":["s"],"id":47}],[{"start":{"row":4,"column":39},"end":{"row":4,"column":40},"action":"insert","lines":["h"],"id":48}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"insert","lines":[" "],"id":49}],[{"start":{"row":4,"column":40},"end":{"row":4,"column":41},"action":"remove","lines":[" "],"id":50}],[{"start":{"row":4,"column":42},"end":{"row":4,"column":43},"action":"insert","lines":[","],"id":51}],[{"start":{"row":22,"column":35},"end":{"row":23,"column":0},"action":"insert","lines":["",""],"id":52}],[{"start":{"row":23,"column":0},"end":{"row":23,"column":1},"action":"insert","lines":["a"],"id":53}],[{"start":{"row":23,"column":1},"end":{"row":23,"column":3},"action":"insert","lines":["[]"],"id":54}],[{"start":{"row":23,"column":2},"end":{"row":23,"column":4},"action":"insert","lines":["[]"],"id":55}],[{"start":{"row":23,"column":2},"end":{"row":23,"column":4},"action":"remove","lines":["[]"],"id":56}],[{"start":{"row":23,"column":1},"end":{"row":23,"column":3},"action":"remove","lines":["[]"],"id":57}],[{"start":{"row":23,"column":1},"end":{"row":23,"column":3},"action":"insert","lines":["[]"],"id":58}],[{"start":{"row":23,"column":1},"end":{"row":23,"column":3},"action":"remove","lines":["[]"],"id":59}],[{"start":{"row":23,"column":1},"end":{"row":23,"column":2},"action":"insert","lines":["p"],"id":60}],[{"start":{"row":23,"column":2},"end":{"row":23,"column":3},"action":"insert","lines":["p"],"id":61}],[{"start":{"row":23,"column":3},"end":{"row":23,"column":4},"action":"insert","lines":["."],"id":62}],[{"start":{"row":23,"column":4},"end":{"row":23,"column":5},"action":"insert","lines":["u"],"id":63}],[{"start":{"row":23,"column":5},"end":{"row":23,"column":6},"action":"insert","lines":["s"],"id":64}],[{"start":{"row":23,"column":6},"end":{"row":23,"column":7},"action":"insert","lines":["e"],"id":65}],[{"start":{"row":23,"column":7},"end":{"row":23,"column":8},"action":"insert","lines":[" "],"id":66}],[{"start":{"row":23,"column":7},"end":{"row":23,"column":8},"action":"remove","lines":[" "],"id":67}],[{"start":{"row":23,"column":7},"end":{"row":23,"column":9},"action":"insert","lines":["()"],"id":68}],[{"start":{"row":23,"column":8},"end":{"row":23,"column":9},"action":"insert","lines":["f"],"id":69}],[{"start":{"row":23,"column":9},"end":{"row":23,"column":10},"action":"insert","lines":["l"],"id":70}],[{"start":{"row":23,"column":10},"end":{"row":23,"column":11},"action":"insert","lines":["a"],"id":71}],[{"start":{"row":23,"column":11},"end":{"row":23,"column":12},"action":"insert","lines":["s"],"id":72}],[{"start":{"row":23,"column":12},"end":{"row":23,"column":13},"action":"insert","lines":["h"],"id":73}],[{"start":{"row":23,"column":13},"end":{"row":23,"column":14},"action":"insert","lines":[" "],"id":74}],[{"start":{"row":23,"column":13},"end":{"row":23,"column":14},"action":"remove","lines":[" "],"id":75}],[{"start":{"row":23,"column":13},"end":{"row":23,"column":15},"action":"insert","lines":["()"],"id":76}],[{"start":{"row":23,"column":16},"end":{"row":23,"column":17},"action":"insert","lines":[";"],"id":77}],[{"start":{"row":39,"column":37},"end":{"row":40,"column":0},"action":"insert","lines":["",""],"id":78},{"start":{"row":40,"column":0},"end":{"row":40,"column":3},"action":"insert","lines":[" "]}],[{"start":{"row":40,"column":3},"end":{"row":40,"column":30},"action":"insert","lines":["message: req.flash(\"error\")"],"id":79}],[{"start":{"row":40,"column":3},"end":{"row":40,"column":4},"action":"insert","lines":["r"],"id":80}],[{"start":{"row":40,"column":4},"end":{"row":40,"column":5},"action":"insert","lines":["e"],"id":81}],[{"start":{"row":40,"column":5},"end":{"row":40,"column":6},"action":"insert","lines":["s"],"id":82}],[{"start":{"row":40,"column":6},"end":{"row":40,"column":7},"action":"insert","lines":[" "],"id":83}],[{"start":{"row":40,"column":6},"end":{"row":40,"column":7},"action":"remove","lines":[" "],"id":84}],[{"start":{"row":40,"column":6},"end":{"row":40,"column":7},"action":"insert","lines":["."],"id":85}],[{"start":{"row":40,"column":7},"end":{"row":40,"column":8},"action":"insert","lines":["l"],"id":86}],[{"start":{"row":40,"column":8},"end":{"row":40,"column":9},"action":"insert","lines":["o"],"id":87}],[{"start":{"row":40,"column":9},"end":{"row":40,"column":10},"action":"insert","lines":["c"],"id":88}],[{"start":{"row":40,"column":10},"end":{"row":40,"column":11},"action":"insert","lines":["a"],"id":89}],[{"start":{"row":40,"column":11},"end":{"row":40,"column":12},"action":"insert","lines":["l"],"id":90}],[{"start":{"row":40,"column":12},"end":{"row":40,"column":13},"action":"insert","lines":["s"],"id":91}],[{"start":{"row":40,"column":13},"end":{"row":40,"column":14},"action":"insert","lines":[" "],"id":92}],[{"start":{"row":40,"column":13},"end":{"row":40,"column":14},"action":"remove","lines":[" "],"id":93}],[{"start":{"row":40,"column":13},"end":{"row":40,"column":14},"action":"insert","lines":["."],"id":94}],[{"start":{"row":40,"column":22},"end":{"row":40,"column":23},"action":"remove","lines":[" "],"id":95}],[{"start":{"row":40,"column":21},"end":{"row":40,"column":22},"action":"remove","lines":[":"],"id":96}],[{"start":{"row":40,"column":21},"end":{"row":40,"column":22},"action":"insert","lines":[" "],"id":97}],[{"start":{"row":40,"column":22},"end":{"row":40,"column":23},"action":"insert","lines":["="],"id":98}],[{"start":{"row":40,"column":23},"end":{"row":40,"column":24},"action":"insert","lines":[" "],"id":99}],[{"start":{"row":40,"column":42},"end":{"row":40,"column":43},"action":"insert","lines":[";"],"id":100}],[{"start":{"row":40,"column":15},"end":{"row":40,"column":21},"action":"remove","lines":["essage"],"id":101}],[{"start":{"row":40,"column":14},"end":{"row":40,"column":15},"action":"remove","lines":["m"],"id":102}],[{"start":{"row":40,"column":14},"end":{"row":40,"column":15},"action":"insert","lines":["e"],"id":103}],[{"start":{"row":40,"column":15},"end":{"row":40,"column":16},"action":"insert","lines":["r"],"id":104}],[{"start":{"row":40,"column":15},"end":{"row":40,"column":16},"action":"remove","lines":["r"],"id":105}],[{"start":{"row":40,"column":14},"end":{"row":40,"column":15},"action":"remove","lines":["e"],"id":106}],[{"start":{"row":40,"column":14},"end":{"row":40,"column":15},"action":"insert","lines":["e"],"id":107}],[{"start":{"row":40,"column":15},"end":{"row":40,"column":16},"action":"insert","lines":["r"],"id":108}],[{"start":{"row":40,"column":16},"end":{"row":40,"column":17},"action":"insert","lines":["r"],"id":109}],[{"start":{"row":40,"column":17},"end":{"row":40,"column":18},"action":"insert","lines":["o"],"id":110}],[{"start":{"row":40,"column":18},"end":{"row":40,"column":19},"action":"insert","lines":["r"],"id":111}],[{"start":{"row":40,"column":19},"end":{"row":40,"column":20},"action":"insert","lines":[" "],"id":112}],[{"start":{"row":40,"column":19},"end":{"row":40,"column":20},"action":"remove","lines":[" "],"id":113}],[{"start":{"row":41,"column":0},"end":{"row":42,"column":0},"action":"insert","lines":[" res.locals.error = req.flash(\"error\");",""],"id":114}],[{"start":{"row":41,"column":16},"end":{"row":41,"column":19},"action":"remove","lines":["ror"],"id":115}],[{"start":{"row":41,"column":15},"end":{"row":41,"column":16},"action":"remove","lines":["r"],"id":116}],[{"start":{"row":41,"column":14},"end":{"row":41,"column":15},"action":"remove","lines":["e"],"id":117}],[{"start":{"row":41,"column":14},"end":{"row":41,"column":15},"action":"insert","lines":["s"],"id":118}],[{"start":{"row":41,"column":15},"end":{"row":41,"column":16},"action":"insert","lines":["u"],"id":119}],[{"start":{"row":41,"column":16},"end":{"row":41,"column":17},"action":"insert","lines":["c"],"id":120}],[{"start":{"row":41,"column":17},"end":{"row":41,"column":18},"action":"insert","lines":["c"],"id":121}],[{"start":{"row":41,"column":18},"end":{"row":41,"column":19},"action":"insert","lines":["e"],"id":122}],[{"start":{"row":41,"column":19},"end":{"row":41,"column":20},"action":"insert","lines":["s"],"id":123}],[{"start":{"row":41,"column":20},"end":{"row":41,"column":21},"action":"insert","lines":["s"],"id":124}],[{"start":{"row":41,"column":21},"end":{"row":41,"column":22},"action":"insert","lines":[" "],"id":125}],[{"start":{"row":41,"column":21},"end":{"row":41,"column":22},"action":"remove","lines":[" "],"id":126}],[{"start":{"row":41,"column":39},"end":{"row":41,"column":40},"action":"remove","lines":["r"],"id":127}],[{"start":{"row":41,"column":38},"end":{"row":41,"column":39},"action":"remove","lines":["o"],"id":128}],[{"start":{"row":41,"column":37},"end":{"row":41,"column":38},"action":"remove","lines":["r"],"id":129}],[{"start":{"row":41,"column":36},"end":{"row":41,"column":37},"action":"remove","lines":["r"],"id":130}],[{"start":{"row":41,"column":35},"end":{"row":41,"column":36},"action":"remove","lines":["e"],"id":131}],[{"start":{"row":41,"column":35},"end":{"row":41,"column":36},"action":"insert","lines":["s"],"id":132}],[{"start":{"row":41,"column":36},"end":{"row":41,"column":37},"action":"insert","lines":["u"],"id":133}],[{"start":{"row":41,"column":37},"end":{"row":41,"column":38},"action":"insert","lines":["c"],"id":134}],[{"start":{"row":41,"column":38},"end":{"row":41,"column":39},"action":"insert","lines":["c"],"id":135}],[{"start":{"row":41,"column":39},"end":{"row":41,"column":40},"action":"insert","lines":["e"],"id":136}],[{"start":{"row":41,"column":40},"end":{"row":41,"column":41},"action":"insert","lines":["s"],"id":137}],[{"start":{"row":41,"column":41},"end":{"row":41,"column":42},"action":"insert","lines":["s"],"id":138}]]},"timestamp":1447309749000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/middleware/index.js b/.c9/metadata/workspace/YelpCamp/v11/middleware/index.js
deleted file mode 100644
index c0a426c6..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/middleware/index.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.js","tooltip":"/YelpCamp/v11/middleware/index.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":17,"column":67},"end":{"row":17,"column":68},"action":"insert","lines":["o"],"id":333}],[{"start":{"row":17,"column":68},"end":{"row":17,"column":69},"action":"insert","lines":[" "],"id":334}],[{"start":{"row":17,"column":69},"end":{"row":17,"column":70},"action":"insert","lines":["t"],"id":335}],[{"start":{"row":17,"column":70},"end":{"row":17,"column":71},"action":"insert","lines":["h"],"id":336}],[{"start":{"row":17,"column":71},"end":{"row":17,"column":72},"action":"insert","lines":["a"],"id":337}],[{"start":{"row":17,"column":72},"end":{"row":17,"column":73},"action":"insert","lines":["t"],"id":338}],[{"start":{"row":17,"column":73},"end":{"row":17,"column":74},"action":"insert","lines":[" "],"id":339}],[{"start":{"row":17,"column":73},"end":{"row":17,"column":74},"action":"remove","lines":[" "],"id":340}],[{"start":{"row":17,"column":46},"end":{"row":17,"column":47},"action":"remove","lines":[" "],"id":341}],[{"start":{"row":42,"column":12},"end":{"row":43,"column":0},"action":"insert","lines":["",""],"id":342},{"start":{"row":43,"column":0},"end":{"row":43,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":43,"column":8},"end":{"row":43,"column":51},"action":"insert","lines":["req.flash(\"error\", \"Campground not found\");"],"id":343}],[{"start":{"row":43,"column":29},"end":{"row":43,"column":48},"action":"remove","lines":["ampground not found"],"id":344}],[{"start":{"row":43,"column":28},"end":{"row":43,"column":29},"action":"remove","lines":["C"],"id":345}],[{"start":{"row":43,"column":28},"end":{"row":43,"column":29},"action":"insert","lines":["Y"],"id":346}],[{"start":{"row":43,"column":29},"end":{"row":43,"column":30},"action":"insert","lines":["o"],"id":347}],[{"start":{"row":43,"column":30},"end":{"row":43,"column":31},"action":"insert","lines":["u"],"id":348}],[{"start":{"row":43,"column":31},"end":{"row":43,"column":32},"action":"insert","lines":[" "],"id":349}],[{"start":{"row":43,"column":32},"end":{"row":43,"column":33},"action":"insert","lines":["n"],"id":350}],[{"start":{"row":43,"column":33},"end":{"row":43,"column":34},"action":"insert","lines":["e"],"id":351}],[{"start":{"row":43,"column":34},"end":{"row":43,"column":35},"action":"insert","lines":["e"],"id":352}],[{"start":{"row":43,"column":35},"end":{"row":43,"column":36},"action":"insert","lines":["d"],"id":353}],[{"start":{"row":43,"column":36},"end":{"row":43,"column":37},"action":"insert","lines":[" "],"id":354}],[{"start":{"row":43,"column":37},"end":{"row":43,"column":38},"action":"insert","lines":["t"],"id":355}],[{"start":{"row":43,"column":38},"end":{"row":43,"column":39},"action":"insert","lines":["o"],"id":356}],[{"start":{"row":43,"column":39},"end":{"row":43,"column":40},"action":"insert","lines":[" "],"id":357}],[{"start":{"row":43,"column":40},"end":{"row":43,"column":41},"action":"insert","lines":["b"],"id":358}],[{"start":{"row":43,"column":41},"end":{"row":43,"column":42},"action":"insert","lines":["e"],"id":359}],[{"start":{"row":43,"column":42},"end":{"row":43,"column":43},"action":"insert","lines":[" "],"id":360}],[{"start":{"row":43,"column":43},"end":{"row":43,"column":44},"action":"insert","lines":["l"],"id":361}],[{"start":{"row":43,"column":44},"end":{"row":43,"column":45},"action":"insert","lines":["o"],"id":362}],[{"start":{"row":43,"column":45},"end":{"row":43,"column":46},"action":"insert","lines":["g"],"id":363}],[{"start":{"row":43,"column":46},"end":{"row":43,"column":47},"action":"insert","lines":["g"],"id":364}],[{"start":{"row":43,"column":47},"end":{"row":43,"column":48},"action":"insert","lines":["e"],"id":365}],[{"start":{"row":43,"column":48},"end":{"row":43,"column":49},"action":"insert","lines":["d"],"id":366}],[{"start":{"row":43,"column":49},"end":{"row":43,"column":50},"action":"insert","lines":[" "],"id":367}],[{"start":{"row":43,"column":50},"end":{"row":43,"column":51},"action":"insert","lines":["i"],"id":368}],[{"start":{"row":43,"column":51},"end":{"row":43,"column":52},"action":"insert","lines":["n"],"id":369}],[{"start":{"row":43,"column":52},"end":{"row":43,"column":53},"action":"insert","lines":[" "],"id":370}],[{"start":{"row":43,"column":53},"end":{"row":43,"column":54},"action":"insert","lines":["t"],"id":371}],[{"start":{"row":43,"column":54},"end":{"row":43,"column":55},"action":"insert","lines":["o"],"id":372}],[{"start":{"row":43,"column":55},"end":{"row":43,"column":56},"action":"insert","lines":[" "],"id":373}],[{"start":{"row":43,"column":56},"end":{"row":43,"column":57},"action":"insert","lines":["d"],"id":374}],[{"start":{"row":43,"column":57},"end":{"row":43,"column":58},"action":"insert","lines":["o"],"id":375}],[{"start":{"row":43,"column":58},"end":{"row":43,"column":59},"action":"insert","lines":[" "],"id":376}],[{"start":{"row":43,"column":59},"end":{"row":43,"column":60},"action":"insert","lines":["t"],"id":377}],[{"start":{"row":43,"column":60},"end":{"row":43,"column":61},"action":"insert","lines":["h"],"id":378}],[{"start":{"row":43,"column":61},"end":{"row":43,"column":62},"action":"insert","lines":["a"],"id":379}],[{"start":{"row":43,"column":62},"end":{"row":43,"column":63},"action":"insert","lines":["t"],"id":380}],[{"start":{"row":43,"column":63},"end":{"row":43,"column":64},"action":"insert","lines":[" "],"id":381}],[{"start":{"row":43,"column":63},"end":{"row":43,"column":64},"action":"remove","lines":[" "],"id":382}],[{"start":{"row":37,"column":20},"end":{"row":38,"column":0},"action":"insert","lines":["",""],"id":383},{"start":{"row":38,"column":0},"end":{"row":38,"column":16},"action":"insert","lines":[" "]}],[{"start":{"row":38,"column":16},"end":{"row":38,"column":59},"action":"insert","lines":["req.flash(\"error\", \"Campground not found\");"],"id":384}],[{"start":{"row":38,"column":36},"end":{"row":38,"column":56},"action":"remove","lines":["Campground not found"],"id":385}],[{"start":{"row":38,"column":36},"end":{"row":38,"column":37},"action":"insert","lines":["Y"],"id":386}],[{"start":{"row":38,"column":37},"end":{"row":38,"column":38},"action":"insert","lines":["o"],"id":387}],[{"start":{"row":38,"column":38},"end":{"row":38,"column":39},"action":"insert","lines":["u"],"id":388}],[{"start":{"row":38,"column":39},"end":{"row":38,"column":40},"action":"insert","lines":[" "],"id":389}],[{"start":{"row":38,"column":40},"end":{"row":38,"column":41},"action":"insert","lines":["d"],"id":390}],[{"start":{"row":38,"column":41},"end":{"row":38,"column":42},"action":"insert","lines":["o"],"id":391}],[{"start":{"row":38,"column":42},"end":{"row":38,"column":43},"action":"insert","lines":["n"],"id":392}],[{"start":{"row":38,"column":43},"end":{"row":38,"column":44},"action":"insert","lines":["'"],"id":393}],[{"start":{"row":38,"column":44},"end":{"row":38,"column":45},"action":"insert","lines":["t"],"id":394}],[{"start":{"row":38,"column":45},"end":{"row":38,"column":46},"action":"insert","lines":[" "],"id":395}],[{"start":{"row":38,"column":46},"end":{"row":38,"column":47},"action":"insert","lines":["h"],"id":396}],[{"start":{"row":38,"column":47},"end":{"row":38,"column":48},"action":"insert","lines":["a"],"id":397}],[{"start":{"row":38,"column":48},"end":{"row":38,"column":49},"action":"insert","lines":["v"],"id":398}],[{"start":{"row":38,"column":49},"end":{"row":38,"column":50},"action":"insert","lines":["e"],"id":399}],[{"start":{"row":38,"column":50},"end":{"row":38,"column":51},"action":"insert","lines":[" "],"id":400}],[{"start":{"row":38,"column":51},"end":{"row":38,"column":52},"action":"insert","lines":["p"],"id":401}],[{"start":{"row":38,"column":52},"end":{"row":38,"column":53},"action":"insert","lines":["e"],"id":402}],[{"start":{"row":38,"column":53},"end":{"row":38,"column":54},"action":"insert","lines":["r"],"id":403}],[{"start":{"row":38,"column":54},"end":{"row":38,"column":55},"action":"insert","lines":["s"],"id":404}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"insert","lines":["m"],"id":405}],[{"start":{"row":38,"column":56},"end":{"row":38,"column":57},"action":"insert","lines":["i"],"id":406}],[{"start":{"row":38,"column":56},"end":{"row":38,"column":57},"action":"remove","lines":["i"],"id":407}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"remove","lines":["m"],"id":408}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"insert","lines":["m"],"id":409}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"remove","lines":["m"],"id":410}],[{"start":{"row":38,"column":54},"end":{"row":38,"column":55},"action":"remove","lines":["s"],"id":411}],[{"start":{"row":38,"column":54},"end":{"row":38,"column":55},"action":"insert","lines":["m"],"id":412}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"insert","lines":["s"],"id":413}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"remove","lines":["s"],"id":414}],[{"start":{"row":38,"column":55},"end":{"row":38,"column":56},"action":"insert","lines":["i"],"id":415}],[{"start":{"row":38,"column":56},"end":{"row":38,"column":57},"action":"insert","lines":["s"],"id":416}],[{"start":{"row":38,"column":57},"end":{"row":38,"column":58},"action":"insert","lines":["s"],"id":417}],[{"start":{"row":38,"column":58},"end":{"row":38,"column":59},"action":"insert","lines":["i"],"id":418}],[{"start":{"row":38,"column":59},"end":{"row":38,"column":60},"action":"insert","lines":["o"],"id":419}],[{"start":{"row":38,"column":60},"end":{"row":38,"column":61},"action":"insert","lines":["n"],"id":420}],[{"start":{"row":38,"column":61},"end":{"row":38,"column":62},"action":"insert","lines":[" "],"id":421}],[{"start":{"row":38,"column":62},"end":{"row":38,"column":63},"action":"insert","lines":["t"],"id":422}],[{"start":{"row":38,"column":63},"end":{"row":38,"column":64},"action":"insert","lines":["o"],"id":423}],[{"start":{"row":38,"column":64},"end":{"row":38,"column":65},"action":"insert","lines":[" "],"id":424}],[{"start":{"row":38,"column":65},"end":{"row":38,"column":66},"action":"insert","lines":["d"],"id":425}],[{"start":{"row":38,"column":66},"end":{"row":38,"column":67},"action":"insert","lines":["o"],"id":426}],[{"start":{"row":38,"column":67},"end":{"row":38,"column":68},"action":"insert","lines":[" "],"id":427}],[{"start":{"row":38,"column":68},"end":{"row":38,"column":69},"action":"insert","lines":["t"],"id":428}],[{"start":{"row":38,"column":69},"end":{"row":38,"column":70},"action":"insert","lines":["h"],"id":429}],[{"start":{"row":38,"column":70},"end":{"row":38,"column":71},"action":"insert","lines":["a"],"id":430}],[{"start":{"row":38,"column":71},"end":{"row":38,"column":72},"action":"insert","lines":["t"],"id":431}],[{"start":{"row":38,"column":72},"end":{"row":38,"column":73},"action":"insert","lines":[" "],"id":432}],[{"start":{"row":38,"column":72},"end":{"row":38,"column":73},"action":"remove","lines":[" "],"id":433}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":18,"column":37},"end":{"row":18,"column":37},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1447311178265,"hash":"61d73efcc243c3658ba7ca8dd292cf549cc2afd7"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/readme.md b/.c9/metadata/workspace/YelpCamp/v11/readme.md
deleted file mode 100644
index 08a5e4a9..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v11/readme.md","ace":{"folds":[],"scrolltop":3257,"scrollleft":0,"selection":{"start":{"row":133,"column":0},"end":{"row":134,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":124,"state":"start","mode":"ace/mode/markdown"}},"hash":"8747cf19d7d8ec0ea15ff46b04a40452afe34a86","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":132,"column":27},"end":{"row":132,"column":28},"action":"remove","lines":["s"],"id":133}],[{"start":{"row":132,"column":26},"end":{"row":132,"column":27},"action":"remove","lines":["a"],"id":134}],[{"start":{"row":132,"column":25},"end":{"row":132,"column":26},"action":"remove","lines":["l"],"id":135}],[{"start":{"row":132,"column":24},"end":{"row":132,"column":25},"action":"remove","lines":["f"],"id":136}],[{"start":{"row":132,"column":24},"end":{"row":132,"column":25},"action":"insert","lines":["c"],"id":137}],[{"start":{"row":132,"column":25},"end":{"row":132,"column":26},"action":"insert","lines":["o"],"id":138}],[{"start":{"row":132,"column":26},"end":{"row":132,"column":27},"action":"insert","lines":["n"],"id":139}],[{"start":{"row":132,"column":27},"end":{"row":132,"column":28},"action":"insert","lines":["n"],"id":140}],[{"start":{"row":132,"column":28},"end":{"row":132,"column":29},"action":"insert","lines":["e"],"id":141}],[{"start":{"row":132,"column":29},"end":{"row":132,"column":30},"action":"insert","lines":["c"],"id":142}],[{"start":{"row":132,"column":30},"end":{"row":132,"column":31},"action":"insert","lines":["t"],"id":143}],[{"start":{"row":132,"column":31},"end":{"row":132,"column":32},"action":"insert","lines":["-"],"id":144}],[{"start":{"row":132,"column":32},"end":{"row":132,"column":33},"action":"insert","lines":["f"],"id":145}],[{"start":{"row":132,"column":33},"end":{"row":132,"column":34},"action":"insert","lines":["l"],"id":146}],[{"start":{"row":132,"column":34},"end":{"row":132,"column":35},"action":"insert","lines":["a"],"id":147}],[{"start":{"row":132,"column":35},"end":{"row":132,"column":36},"action":"insert","lines":["s"],"id":148}],[{"start":{"row":132,"column":36},"end":{"row":132,"column":37},"action":"insert","lines":["h"],"id":149}],[{"start":{"row":132,"column":37},"end":{"row":132,"column":38},"action":"insert","lines":[" "],"id":150}],[{"start":{"row":132,"column":37},"end":{"row":132,"column":38},"action":"remove","lines":[" "],"id":151}],[{"start":{"row":132,"column":37},"end":{"row":133,"column":0},"action":"insert","lines":["",""],"id":152},{"start":{"row":133,"column":0},"end":{"row":133,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":133,"column":2},"end":{"row":133,"column":3},"action":"insert","lines":["A"],"id":153}],[{"start":{"row":133,"column":3},"end":{"row":133,"column":4},"action":"insert","lines":["d"],"id":154}],[{"start":{"row":133,"column":4},"end":{"row":133,"column":5},"action":"insert","lines":["d"],"id":155}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"insert","lines":[" "],"id":156}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"remove","lines":[" "],"id":157}],[{"start":{"row":133,"column":4},"end":{"row":133,"column":5},"action":"remove","lines":["d"],"id":158}],[{"start":{"row":133,"column":3},"end":{"row":133,"column":4},"action":"remove","lines":["d"],"id":159}],[{"start":{"row":133,"column":2},"end":{"row":133,"column":3},"action":"remove","lines":["A"],"id":160}],[{"start":{"row":133,"column":2},"end":{"row":133,"column":3},"action":"insert","lines":["A"],"id":161}],[{"start":{"row":133,"column":3},"end":{"row":133,"column":4},"action":"insert","lines":["d"],"id":162}],[{"start":{"row":133,"column":4},"end":{"row":133,"column":5},"action":"insert","lines":["d"],"id":163}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"insert","lines":[" "],"id":164}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"remove","lines":[" "],"id":165}],[{"start":{"row":133,"column":5},"end":{"row":134,"column":0},"action":"insert","lines":["",""],"id":166},{"start":{"row":134,"column":0},"end":{"row":134,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":134,"column":2},"end":{"row":135,"column":0},"action":"insert","lines":["",""],"id":167}],[{"start":{"row":134,"column":2},"end":{"row":135,"column":0},"action":"remove","lines":["",""],"id":168}],[{"start":{"row":134,"column":1},"end":{"row":134,"column":2},"action":"remove","lines":[" "],"id":169}],[{"start":{"row":134,"column":0},"end":{"row":134,"column":1},"action":"remove","lines":["*"],"id":170}],[{"start":{"row":134,"column":0},"end":{"row":135,"column":0},"action":"insert","lines":["",""],"id":171}],[{"start":{"row":133,"column":4},"end":{"row":133,"column":5},"action":"remove","lines":["d"],"id":172}],[{"start":{"row":133,"column":3},"end":{"row":133,"column":4},"action":"remove","lines":["d"],"id":173}],[{"start":{"row":133,"column":2},"end":{"row":133,"column":3},"action":"remove","lines":["A"],"id":174}],[{"start":{"row":133,"column":2},"end":{"row":133,"column":3},"action":"insert","lines":["A"],"id":175}],[{"start":{"row":133,"column":3},"end":{"row":133,"column":4},"action":"insert","lines":["d"],"id":176}],[{"start":{"row":133,"column":4},"end":{"row":133,"column":5},"action":"insert","lines":["d"],"id":177}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"insert","lines":[" "],"id":178}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"remove","lines":[" "],"id":179}],[{"start":{"row":133,"column":5},"end":{"row":133,"column":6},"action":"insert","lines":[" "],"id":180}],[{"start":{"row":133,"column":6},"end":{"row":133,"column":7},"action":"insert","lines":["b"],"id":181}],[{"start":{"row":133,"column":7},"end":{"row":133,"column":8},"action":"insert","lines":["o"],"id":182}],[{"start":{"row":133,"column":8},"end":{"row":133,"column":9},"action":"insert","lines":["o"],"id":183}],[{"start":{"row":133,"column":9},"end":{"row":133,"column":10},"action":"insert","lines":["t"],"id":184}],[{"start":{"row":133,"column":10},"end":{"row":133,"column":11},"action":"insert","lines":["s"],"id":185}],[{"start":{"row":133,"column":11},"end":{"row":133,"column":12},"action":"insert","lines":["t"],"id":186}],[{"start":{"row":133,"column":12},"end":{"row":133,"column":13},"action":"insert","lines":["r"],"id":187}],[{"start":{"row":133,"column":13},"end":{"row":133,"column":14},"action":"insert","lines":["a"],"id":188}],[{"start":{"row":133,"column":14},"end":{"row":133,"column":15},"action":"insert","lines":["p"],"id":189}],[{"start":{"row":133,"column":15},"end":{"row":133,"column":16},"action":"insert","lines":[" "],"id":190}],[{"start":{"row":133,"column":15},"end":{"row":133,"column":16},"action":"remove","lines":[" "],"id":191}],[{"start":{"row":133,"column":15},"end":{"row":133,"column":16},"action":"insert","lines":[" "],"id":192}],[{"start":{"row":133,"column":16},"end":{"row":133,"column":17},"action":"insert","lines":["m"],"id":193}],[{"start":{"row":133,"column":17},"end":{"row":133,"column":18},"action":"insert","lines":["e"],"id":194}],[{"start":{"row":133,"column":18},"end":{"row":133,"column":19},"action":"insert","lines":["a"],"id":195}],[{"start":{"row":133,"column":19},"end":{"row":133,"column":20},"action":"insert","lines":["s"],"id":196}],[{"start":{"row":133,"column":19},"end":{"row":133,"column":20},"action":"remove","lines":["s"],"id":197}],[{"start":{"row":133,"column":18},"end":{"row":133,"column":19},"action":"remove","lines":["a"],"id":198}],[{"start":{"row":133,"column":18},"end":{"row":133,"column":19},"action":"insert","lines":["s"],"id":199}],[{"start":{"row":133,"column":19},"end":{"row":133,"column":20},"action":"insert","lines":["s"],"id":200}],[{"start":{"row":133,"column":20},"end":{"row":133,"column":21},"action":"insert","lines":["a"],"id":201}],[{"start":{"row":133,"column":20},"end":{"row":133,"column":21},"action":"remove","lines":["a"],"id":202}],[{"start":{"row":133,"column":19},"end":{"row":133,"column":20},"action":"remove","lines":["s"],"id":203}],[{"start":{"row":133,"column":18},"end":{"row":133,"column":19},"action":"remove","lines":["s"],"id":204}],[{"start":{"row":133,"column":17},"end":{"row":133,"column":18},"action":"remove","lines":["e"],"id":205}],[{"start":{"row":133,"column":16},"end":{"row":133,"column":17},"action":"remove","lines":["m"],"id":206}],[{"start":{"row":133,"column":16},"end":{"row":133,"column":17},"action":"insert","lines":["a"],"id":207}],[{"start":{"row":133,"column":17},"end":{"row":133,"column":18},"action":"insert","lines":["l"],"id":208}],[{"start":{"row":133,"column":18},"end":{"row":133,"column":19},"action":"insert","lines":["e"],"id":209}],[{"start":{"row":133,"column":19},"end":{"row":133,"column":20},"action":"insert","lines":["r"],"id":210}],[{"start":{"row":133,"column":20},"end":{"row":133,"column":21},"action":"insert","lines":["t"],"id":211}],[{"start":{"row":133,"column":21},"end":{"row":133,"column":22},"action":"insert","lines":["s"],"id":212}],[{"start":{"row":133,"column":22},"end":{"row":133,"column":23},"action":"insert","lines":[" "],"id":213}],[{"start":{"row":133,"column":23},"end":{"row":133,"column":24},"action":"insert","lines":["t"],"id":214}],[{"start":{"row":133,"column":24},"end":{"row":133,"column":25},"action":"insert","lines":["o"],"id":215}],[{"start":{"row":133,"column":25},"end":{"row":133,"column":26},"action":"insert","lines":[" "],"id":216}],[{"start":{"row":133,"column":26},"end":{"row":133,"column":27},"action":"insert","lines":["h"],"id":217}],[{"start":{"row":133,"column":27},"end":{"row":133,"column":28},"action":"insert","lines":["e"],"id":218}],[{"start":{"row":133,"column":28},"end":{"row":133,"column":29},"action":"insert","lines":["a"],"id":219}],[{"start":{"row":133,"column":29},"end":{"row":133,"column":30},"action":"insert","lines":["d"],"id":220}],[{"start":{"row":133,"column":30},"end":{"row":133,"column":31},"action":"insert","lines":["e"],"id":221}],[{"start":{"row":133,"column":31},"end":{"row":133,"column":32},"action":"insert","lines":["r"],"id":222}],[{"start":{"row":133,"column":32},"end":{"row":133,"column":33},"action":"insert","lines":[" "],"id":223}],[{"start":{"row":133,"column":32},"end":{"row":133,"column":33},"action":"remove","lines":[" "],"id":224}],[{"start":{"row":135,"column":0},"end":{"row":136,"column":0},"action":"insert","lines":["",""],"id":225}],[{"start":{"row":136,"column":0},"end":{"row":137,"column":0},"action":"insert","lines":["",""],"id":226}],[{"start":{"row":137,"column":0},"end":{"row":138,"column":0},"action":"insert","lines":["",""],"id":227}],[{"start":{"row":139,"column":0},"end":{"row":148,"column":0},"action":"remove","lines":["* BOOTSTRAP NAV COLLPASE JS","* Flash Messages","* Refactor container div to header","* Show/hide delete and update buttons","* style login/register forms","* Random Background Landing Page","* Refactor middleware","* change styling in show template - comment delete/update","* UPDATE/DELETE CAMPGROUND",""],"id":228}],[{"start":{"row":139,"column":0},"end":{"row":140,"column":0},"action":"remove","lines":["",""],"id":229}],[{"start":{"row":138,"column":0},"end":{"row":139,"column":0},"action":"remove","lines":["",""],"id":230}],[{"start":{"row":137,"column":0},"end":{"row":138,"column":0},"action":"remove","lines":["",""],"id":231}],[{"start":{"row":136,"column":0},"end":{"row":137,"column":0},"action":"remove","lines":["",""],"id":232}],[{"start":{"row":135,"column":0},"end":{"row":136,"column":0},"action":"remove","lines":["",""],"id":233}]]},"timestamp":1447306946000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/routes/campgrounds.js b/.c9/metadata/workspace/YelpCamp/v11/routes/campgrounds.js
deleted file mode 100644
index d53598b2..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/routes/campgrounds.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campgrounds.js","tooltip":"/YelpCamp/v11/routes/campgrounds.js","undoManager":{"mark":14,"position":14,"stack":[[{"start":{"row":62,"column":70},"end":{"row":63,"column":0},"action":"insert","lines":["",""],"id":2},{"start":{"row":63,"column":0},"end":{"row":63,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":63,"column":8},"end":{"row":63,"column":9},"action":"insert","lines":["i"],"id":4}],[{"start":{"row":63,"column":9},"end":{"row":63,"column":10},"action":"insert","lines":["f"],"id":5}],[{"start":{"row":63,"column":10},"end":{"row":63,"column":11},"action":"insert","lines":[" "],"id":6}],[{"start":{"row":63,"column":10},"end":{"row":63,"column":11},"action":"remove","lines":[" "],"id":7}],[{"start":{"row":63,"column":10},"end":{"row":63,"column":12},"action":"insert","lines":["()"],"id":8}],[{"start":{"row":63,"column":11},"end":{"row":63,"column":12},"action":"insert","lines":["e"],"id":9}],[{"start":{"row":63,"column":12},"end":{"row":63,"column":13},"action":"insert","lines":["r"],"id":10}],[{"start":{"row":63,"column":13},"end":{"row":63,"column":14},"action":"insert","lines":["r"],"id":11}],[{"start":{"row":63,"column":14},"end":{"row":63,"column":15},"action":"insert","lines":[" "],"id":12}],[{"start":{"row":63,"column":14},"end":{"row":63,"column":15},"action":"remove","lines":[" "],"id":13}],[{"start":{"row":63,"column":15},"end":{"row":63,"column":16},"action":"insert","lines":["{"],"id":14}],[{"start":{"row":63,"column":16},"end":{"row":65,"column":9},"action":"insert","lines":[""," "," }"],"id":15}],[{"start":{"row":63,"column":0},"end":{"row":65,"column":9},"action":"remove","lines":[" if(err){"," "," }"],"id":16}],[{"start":{"row":62,"column":70},"end":{"row":63,"column":0},"action":"remove","lines":["",""],"id":17}]]},"ace":{"folds":[],"scrolltop":1490.5,"scrollleft":0,"selection":{"start":{"row":88,"column":6},"end":{"row":88,"column":6},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":56,"state":"no_regex","mode":"ace/mode/javascript"}},"timestamp":1447310657126,"hash":"0c16c488539fc138237d6a7636ed78eadd1a1a19"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/routes/comments.js b/.c9/metadata/workspace/YelpCamp/v11/routes/comments.js
deleted file mode 100644
index e4390e04..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/routes/comments.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"comments.js","tooltip":"/YelpCamp/v11/routes/comments.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":29,"column":43},"end":{"row":29,"column":44},"action":"insert","lines":["g"],"id":15}],[{"start":{"row":29,"column":44},"end":{"row":29,"column":45},"action":"insert","lines":[" "],"id":16}],[{"start":{"row":29,"column":45},"end":{"row":29,"column":46},"action":"insert","lines":["w"],"id":17}],[{"start":{"row":29,"column":46},"end":{"row":29,"column":47},"action":"insert","lines":["n"],"id":18}],[{"start":{"row":29,"column":46},"end":{"row":29,"column":47},"action":"remove","lines":["n"],"id":19}],[{"start":{"row":29,"column":46},"end":{"row":29,"column":47},"action":"insert","lines":["e"],"id":20}],[{"start":{"row":29,"column":47},"end":{"row":29,"column":48},"action":"insert","lines":["n"],"id":21}],[{"start":{"row":29,"column":48},"end":{"row":29,"column":49},"action":"insert","lines":["t"],"id":22}],[{"start":{"row":29,"column":49},"end":{"row":29,"column":50},"action":"insert","lines":[" "],"id":23}],[{"start":{"row":29,"column":50},"end":{"row":29,"column":51},"action":"insert","lines":["w"],"id":24}],[{"start":{"row":29,"column":51},"end":{"row":29,"column":52},"action":"insert","lines":["r"],"id":25}],[{"start":{"row":29,"column":52},"end":{"row":29,"column":53},"action":"insert","lines":["o"],"id":26}],[{"start":{"row":29,"column":53},"end":{"row":29,"column":54},"action":"insert","lines":["g"],"id":27}],[{"start":{"row":29,"column":54},"end":{"row":29,"column":55},"action":"insert","lines":[" "],"id":28}],[{"start":{"row":29,"column":54},"end":{"row":29,"column":55},"action":"remove","lines":[" "],"id":29}],[{"start":{"row":29,"column":53},"end":{"row":29,"column":54},"action":"remove","lines":["g"],"id":30}],[{"start":{"row":29,"column":53},"end":{"row":29,"column":54},"action":"insert","lines":["n"],"id":31}],[{"start":{"row":29,"column":54},"end":{"row":29,"column":55},"action":"insert","lines":["g"],"id":32}],[{"start":{"row":39,"column":36},"end":{"row":40,"column":0},"action":"insert","lines":["",""],"id":33},{"start":{"row":40,"column":0},"end":{"row":40,"column":15},"action":"insert","lines":[" "]}],[{"start":{"row":40,"column":15},"end":{"row":40,"column":58},"action":"insert","lines":["req.flash(\"error\", \"Campground not found\");"],"id":34}],[{"start":{"row":40,"column":30},"end":{"row":40,"column":31},"action":"remove","lines":["r"],"id":35}],[{"start":{"row":40,"column":29},"end":{"row":40,"column":30},"action":"remove","lines":["o"],"id":36}],[{"start":{"row":40,"column":28},"end":{"row":40,"column":29},"action":"remove","lines":["r"],"id":37}],[{"start":{"row":40,"column":27},"end":{"row":40,"column":28},"action":"remove","lines":["r"],"id":38}],[{"start":{"row":40,"column":26},"end":{"row":40,"column":27},"action":"remove","lines":["e"],"id":39}],[{"start":{"row":40,"column":26},"end":{"row":40,"column":27},"action":"insert","lines":["s"],"id":40}],[{"start":{"row":40,"column":27},"end":{"row":40,"column":28},"action":"insert","lines":["u"],"id":41}],[{"start":{"row":40,"column":28},"end":{"row":40,"column":29},"action":"insert","lines":["c"],"id":42}],[{"start":{"row":40,"column":29},"end":{"row":40,"column":30},"action":"insert","lines":["c"],"id":43}],[{"start":{"row":40,"column":30},"end":{"row":40,"column":31},"action":"insert","lines":["e"],"id":44}],[{"start":{"row":40,"column":31},"end":{"row":40,"column":32},"action":"insert","lines":["s"],"id":45}],[{"start":{"row":40,"column":32},"end":{"row":40,"column":33},"action":"insert","lines":["s"],"id":46}],[{"start":{"row":40,"column":37},"end":{"row":40,"column":57},"action":"remove","lines":["Campground not found"],"id":47}],[{"start":{"row":40,"column":37},"end":{"row":40,"column":38},"action":"insert","lines":["U"],"id":48}],[{"start":{"row":40,"column":37},"end":{"row":40,"column":38},"action":"remove","lines":["U"],"id":49}],[{"start":{"row":40,"column":37},"end":{"row":40,"column":38},"action":"insert","lines":["U"],"id":50}],[{"start":{"row":40,"column":38},"end":{"row":40,"column":39},"action":"insert","lines":["S"],"id":51}],[{"start":{"row":40,"column":39},"end":{"row":40,"column":40},"action":"insert","lines":["s"],"id":52}],[{"start":{"row":40,"column":39},"end":{"row":40,"column":40},"action":"remove","lines":["s"],"id":53}],[{"start":{"row":40,"column":38},"end":{"row":40,"column":39},"action":"remove","lines":["S"],"id":54}],[{"start":{"row":40,"column":37},"end":{"row":40,"column":38},"action":"remove","lines":["U"],"id":55}],[{"start":{"row":40,"column":37},"end":{"row":40,"column":38},"action":"insert","lines":["S"],"id":56}],[{"start":{"row":40,"column":38},"end":{"row":40,"column":39},"action":"insert","lines":["u"],"id":57}],[{"start":{"row":40,"column":39},"end":{"row":40,"column":40},"action":"insert","lines":["c"],"id":58}],[{"start":{"row":40,"column":40},"end":{"row":40,"column":41},"action":"insert","lines":["c"],"id":59}],[{"start":{"row":40,"column":41},"end":{"row":40,"column":42},"action":"insert","lines":["e"],"id":60}],[{"start":{"row":40,"column":42},"end":{"row":40,"column":43},"action":"insert","lines":["s"],"id":61}],[{"start":{"row":40,"column":43},"end":{"row":40,"column":44},"action":"insert","lines":["s"],"id":62}],[{"start":{"row":40,"column":44},"end":{"row":40,"column":45},"action":"insert","lines":["f"],"id":63}],[{"start":{"row":40,"column":45},"end":{"row":40,"column":46},"action":"insert","lines":["u"],"id":64}],[{"start":{"row":40,"column":46},"end":{"row":40,"column":47},"action":"insert","lines":["l"],"id":65}],[{"start":{"row":40,"column":47},"end":{"row":40,"column":48},"action":"insert","lines":["l"],"id":66}],[{"start":{"row":40,"column":48},"end":{"row":40,"column":49},"action":"insert","lines":["y"],"id":67}],[{"start":{"row":40,"column":49},"end":{"row":40,"column":50},"action":"insert","lines":[" "],"id":68}],[{"start":{"row":40,"column":49},"end":{"row":40,"column":50},"action":"remove","lines":[" "],"id":69}],[{"start":{"row":40,"column":49},"end":{"row":40,"column":50},"action":"insert","lines":[" "],"id":70}],[{"start":{"row":40,"column":50},"end":{"row":40,"column":51},"action":"insert","lines":["a"],"id":71}],[{"start":{"row":40,"column":51},"end":{"row":40,"column":52},"action":"insert","lines":["d"],"id":72}],[{"start":{"row":40,"column":52},"end":{"row":40,"column":53},"action":"insert","lines":["d"],"id":73}],[{"start":{"row":40,"column":53},"end":{"row":40,"column":54},"action":"insert","lines":["e"],"id":74}],[{"start":{"row":40,"column":54},"end":{"row":40,"column":55},"action":"insert","lines":["d"],"id":75}],[{"start":{"row":40,"column":55},"end":{"row":40,"column":56},"action":"insert","lines":[" "],"id":76}],[{"start":{"row":40,"column":56},"end":{"row":40,"column":57},"action":"insert","lines":["c"],"id":77}],[{"start":{"row":40,"column":57},"end":{"row":40,"column":58},"action":"insert","lines":["o"],"id":78}],[{"start":{"row":40,"column":58},"end":{"row":40,"column":59},"action":"insert","lines":["m"],"id":79}],[{"start":{"row":40,"column":59},"end":{"row":40,"column":60},"action":"insert","lines":["m"],"id":80}],[{"start":{"row":40,"column":60},"end":{"row":40,"column":61},"action":"insert","lines":["e"],"id":81}],[{"start":{"row":40,"column":61},"end":{"row":40,"column":62},"action":"insert","lines":["n"],"id":82}],[{"start":{"row":40,"column":62},"end":{"row":40,"column":63},"action":"insert","lines":["t"],"id":83}],[{"start":{"row":40,"column":63},"end":{"row":40,"column":64},"action":"insert","lines":[" "],"id":84}],[{"start":{"row":40,"column":63},"end":{"row":40,"column":64},"action":"remove","lines":[" "],"id":85}],[{"start":{"row":76,"column":15},"end":{"row":77,"column":0},"action":"insert","lines":["",""],"id":86},{"start":{"row":77,"column":0},"end":{"row":77,"column":11},"action":"insert","lines":[" "]}],[{"start":{"row":77,"column":11},"end":{"row":77,"column":54},"action":"insert","lines":["req.flash(\"error\", \"Campground not found\");"],"id":87}],[{"start":{"row":77,"column":26},"end":{"row":77,"column":27},"action":"remove","lines":["r"],"id":88}],[{"start":{"row":77,"column":25},"end":{"row":77,"column":26},"action":"remove","lines":["o"],"id":89}],[{"start":{"row":77,"column":24},"end":{"row":77,"column":25},"action":"remove","lines":["r"],"id":90}],[{"start":{"row":77,"column":23},"end":{"row":77,"column":24},"action":"remove","lines":["r"],"id":91}],[{"start":{"row":77,"column":22},"end":{"row":77,"column":23},"action":"remove","lines":["e"],"id":92}],[{"start":{"row":77,"column":22},"end":{"row":77,"column":23},"action":"insert","lines":["s"],"id":93}],[{"start":{"row":77,"column":23},"end":{"row":77,"column":24},"action":"insert","lines":["u"],"id":94}],[{"start":{"row":77,"column":24},"end":{"row":77,"column":25},"action":"insert","lines":["c"],"id":95}],[{"start":{"row":77,"column":25},"end":{"row":77,"column":26},"action":"insert","lines":["c"],"id":96}],[{"start":{"row":77,"column":26},"end":{"row":77,"column":27},"action":"insert","lines":["e"],"id":97}],[{"start":{"row":77,"column":27},"end":{"row":77,"column":28},"action":"insert","lines":["s"],"id":98}],[{"start":{"row":77,"column":28},"end":{"row":77,"column":29},"action":"insert","lines":["s"],"id":99}],[{"start":{"row":77,"column":34},"end":{"row":77,"column":53},"action":"remove","lines":["ampground not found"],"id":100},{"start":{"row":77,"column":34},"end":{"row":77,"column":35},"action":"insert","lines":["o"]}],[{"start":{"row":77,"column":35},"end":{"row":77,"column":36},"action":"insert","lines":["m"],"id":101}],[{"start":{"row":77,"column":36},"end":{"row":77,"column":37},"action":"insert","lines":["m"],"id":102}],[{"start":{"row":77,"column":37},"end":{"row":77,"column":38},"action":"insert","lines":["e"],"id":103}],[{"start":{"row":77,"column":38},"end":{"row":77,"column":39},"action":"insert","lines":["n"],"id":104}],[{"start":{"row":77,"column":39},"end":{"row":77,"column":40},"action":"insert","lines":["t"],"id":105}],[{"start":{"row":77,"column":40},"end":{"row":77,"column":41},"action":"insert","lines":[" "],"id":106}],[{"start":{"row":77,"column":41},"end":{"row":77,"column":42},"action":"insert","lines":["d"],"id":107}],[{"start":{"row":77,"column":42},"end":{"row":77,"column":43},"action":"insert","lines":["e"],"id":108}],[{"start":{"row":77,"column":43},"end":{"row":77,"column":44},"action":"insert","lines":["l"],"id":109}],[{"start":{"row":77,"column":44},"end":{"row":77,"column":45},"action":"insert","lines":["e"],"id":110}],[{"start":{"row":77,"column":45},"end":{"row":77,"column":46},"action":"insert","lines":["t"],"id":111}],[{"start":{"row":77,"column":46},"end":{"row":77,"column":47},"action":"insert","lines":["e"],"id":112}],[{"start":{"row":77,"column":47},"end":{"row":77,"column":48},"action":"insert","lines":["d"],"id":113}],[{"start":{"row":77,"column":48},"end":{"row":77,"column":49},"action":"insert","lines":[" "],"id":114}],[{"start":{"row":77,"column":48},"end":{"row":77,"column":49},"action":"remove","lines":[" "],"id":115}]]},"ace":{"folds":[],"scrolltop":1980,"scrollleft":0,"selection":{"start":{"row":80,"column":7},"end":{"row":80,"column":7},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":75,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1447310837268,"hash":"cc02e16e7a9dcf11792ff36aa4943b85ffdd0615"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/routes/index.js b/.c9/metadata/workspace/YelpCamp/v11/routes/index.js
deleted file mode 100644
index 20a34cf4..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/routes/index.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.js","tooltip":"/YelpCamp/v11/routes/index.js","ace":{"folds":[],"scrolltop":352,"scrollleft":0,"selection":{"start":{"row":22,"column":9},"end":{"row":22,"column":9},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":12,"state":"start","mode":"ace/mode/javascript"}},"hash":"2259bfd8251f18aec14193306bed59b4009295f6","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":24,"column":27},"end":{"row":24,"column":28},"action":"insert","lines":["s"],"id":369}],[{"start":{"row":24,"column":28},"end":{"row":24,"column":29},"action":"insert","lines":["s"],"id":370}],[{"start":{"row":24,"column":29},"end":{"row":24,"column":30},"action":"insert","lines":[" "],"id":371}],[{"start":{"row":24,"column":29},"end":{"row":24,"column":30},"action":"remove","lines":[" "],"id":372}],[{"start":{"row":24,"column":30},"end":{"row":24,"column":31},"action":"insert","lines":[","],"id":373}],[{"start":{"row":24,"column":31},"end":{"row":24,"column":32},"action":"insert","lines":[" "],"id":374}],[{"start":{"row":24,"column":32},"end":{"row":24,"column":34},"action":"insert","lines":["\"\""],"id":375}],[{"start":{"row":24,"column":33},"end":{"row":24,"column":34},"action":"insert","lines":["S"],"id":376}],[{"start":{"row":24,"column":33},"end":{"row":24,"column":34},"action":"remove","lines":["S"],"id":377}],[{"start":{"row":24,"column":33},"end":{"row":24,"column":34},"action":"insert","lines":["S"],"id":378}],[{"start":{"row":24,"column":34},"end":{"row":24,"column":35},"action":"insert","lines":["u"],"id":379}],[{"start":{"row":24,"column":34},"end":{"row":24,"column":35},"action":"remove","lines":["u"],"id":380}],[{"start":{"row":24,"column":33},"end":{"row":24,"column":34},"action":"remove","lines":["S"],"id":381}],[{"start":{"row":24,"column":33},"end":{"row":24,"column":34},"action":"insert","lines":["W"],"id":382}],[{"start":{"row":24,"column":34},"end":{"row":24,"column":35},"action":"insert","lines":["e"],"id":383}],[{"start":{"row":24,"column":35},"end":{"row":24,"column":36},"action":"insert","lines":["l"],"id":384}],[{"start":{"row":24,"column":36},"end":{"row":24,"column":37},"action":"insert","lines":["c"],"id":385}],[{"start":{"row":24,"column":37},"end":{"row":24,"column":38},"action":"insert","lines":["o"],"id":386}],[{"start":{"row":24,"column":38},"end":{"row":24,"column":39},"action":"insert","lines":["m"],"id":387}],[{"start":{"row":24,"column":39},"end":{"row":24,"column":40},"action":"insert","lines":["e"],"id":388}],[{"start":{"row":24,"column":40},"end":{"row":24,"column":41},"action":"insert","lines":[" "],"id":389}],[{"start":{"row":24,"column":41},"end":{"row":24,"column":42},"action":"insert","lines":["t"],"id":390}],[{"start":{"row":24,"column":42},"end":{"row":24,"column":43},"action":"insert","lines":["o"],"id":391}],[{"start":{"row":24,"column":43},"end":{"row":24,"column":44},"action":"insert","lines":[" "],"id":392}],[{"start":{"row":24,"column":43},"end":{"row":24,"column":44},"action":"remove","lines":[" "],"id":393}],[{"start":{"row":24,"column":43},"end":{"row":24,"column":44},"action":"insert","lines":[" "],"id":394}],[{"start":{"row":24,"column":44},"end":{"row":24,"column":45},"action":"insert","lines":["Y"],"id":395}],[{"start":{"row":24,"column":45},"end":{"row":24,"column":46},"action":"insert","lines":["e"],"id":396}],[{"start":{"row":24,"column":46},"end":{"row":24,"column":47},"action":"insert","lines":["l"],"id":397}],[{"start":{"row":24,"column":47},"end":{"row":24,"column":48},"action":"insert","lines":["p"],"id":398}],[{"start":{"row":24,"column":48},"end":{"row":24,"column":49},"action":"insert","lines":["C"],"id":399}],[{"start":{"row":24,"column":49},"end":{"row":24,"column":50},"action":"insert","lines":["a"],"id":400}],[{"start":{"row":24,"column":50},"end":{"row":24,"column":51},"action":"insert","lines":["m"],"id":401}],[{"start":{"row":24,"column":51},"end":{"row":24,"column":52},"action":"insert","lines":["p"],"id":402}],[{"start":{"row":24,"column":52},"end":{"row":24,"column":53},"action":"insert","lines":[" "],"id":403}],[{"start":{"row":24,"column":52},"end":{"row":24,"column":53},"action":"remove","lines":[" "],"id":404}],[{"start":{"row":24,"column":53},"end":{"row":24,"column":54},"action":"insert","lines":[","],"id":405}],[{"start":{"row":24,"column":53},"end":{"row":24,"column":54},"action":"remove","lines":[","],"id":406}],[{"start":{"row":24,"column":53},"end":{"row":24,"column":54},"action":"insert","lines":[" "],"id":407}],[{"start":{"row":24,"column":54},"end":{"row":24,"column":55},"action":"insert","lines":["+"],"id":408}],[{"start":{"row":24,"column":52},"end":{"row":24,"column":53},"action":"insert","lines":[" "],"id":409}],[{"start":{"row":24,"column":56},"end":{"row":24,"column":57},"action":"insert","lines":[" "],"id":410}],[{"start":{"row":24,"column":57},"end":{"row":24,"column":58},"action":"insert","lines":["u"],"id":411}],[{"start":{"row":24,"column":58},"end":{"row":24,"column":59},"action":"insert","lines":["s"],"id":412}],[{"start":{"row":24,"column":59},"end":{"row":24,"column":60},"action":"insert","lines":["e"],"id":413}],[{"start":{"row":24,"column":60},"end":{"row":24,"column":61},"action":"insert","lines":["r"],"id":414}],[{"start":{"row":24,"column":61},"end":{"row":24,"column":62},"action":"insert","lines":[" "],"id":415}],[{"start":{"row":24,"column":61},"end":{"row":24,"column":62},"action":"remove","lines":[" "],"id":416}],[{"start":{"row":24,"column":61},"end":{"row":24,"column":62},"action":"insert","lines":["."],"id":417}],[{"start":{"row":24,"column":62},"end":{"row":24,"column":63},"action":"insert","lines":["u"],"id":418}],[{"start":{"row":24,"column":63},"end":{"row":24,"column":64},"action":"insert","lines":["s"],"id":419}],[{"start":{"row":24,"column":64},"end":{"row":24,"column":65},"action":"insert","lines":["e"],"id":420}],[{"start":{"row":24,"column":65},"end":{"row":24,"column":66},"action":"insert","lines":["r"],"id":421}],[{"start":{"row":24,"column":66},"end":{"row":24,"column":67},"action":"insert","lines":["n"],"id":422}],[{"start":{"row":24,"column":67},"end":{"row":24,"column":68},"action":"insert","lines":["a"],"id":423}],[{"start":{"row":24,"column":68},"end":{"row":24,"column":69},"action":"insert","lines":["m"],"id":424}],[{"start":{"row":24,"column":69},"end":{"row":24,"column":70},"action":"insert","lines":["e"],"id":425}],[{"start":{"row":24,"column":70},"end":{"row":24,"column":71},"action":"insert","lines":[" "],"id":426}],[{"start":{"row":24,"column":70},"end":{"row":24,"column":71},"action":"remove","lines":[" "],"id":427}],[{"start":{"row":50,"column":0},"end":{"row":56,"column":1},"action":"remove","lines":["//middleware","function isLoggedIn(req, res, next){"," if(req.isAuthenticated()){"," return next();"," }"," res.redirect(\"/login\");","}"],"id":433}],[{"start":{"row":19,"column":16},"end":{"row":20,"column":0},"action":"insert","lines":["",""],"id":434},{"start":{"row":20,"column":0},"end":{"row":20,"column":12},"action":"insert","lines":[" "]}],[{"start":{"row":20,"column":12},"end":{"row":20,"column":13},"action":"insert","lines":["c"],"id":435}],[{"start":{"row":20,"column":13},"end":{"row":20,"column":14},"action":"insert","lines":["o"],"id":436}],[{"start":{"row":20,"column":14},"end":{"row":20,"column":15},"action":"insert","lines":["n"],"id":437}],[{"start":{"row":20,"column":15},"end":{"row":20,"column":16},"action":"insert","lines":["s"],"id":438}],[{"start":{"row":20,"column":16},"end":{"row":20,"column":17},"action":"insert","lines":["p"],"id":439}],[{"start":{"row":20,"column":17},"end":{"row":20,"column":18},"action":"insert","lines":["o"],"id":440}],[{"start":{"row":20,"column":18},"end":{"row":20,"column":19},"action":"insert","lines":["l"],"id":441}],[{"start":{"row":20,"column":19},"end":{"row":20,"column":20},"action":"insert","lines":["e"],"id":442}],[{"start":{"row":20,"column":20},"end":{"row":20,"column":21},"action":"insert","lines":[" "],"id":443}],[{"start":{"row":20,"column":20},"end":{"row":20,"column":21},"action":"remove","lines":[" "],"id":444}],[{"start":{"row":20,"column":19},"end":{"row":20,"column":20},"action":"remove","lines":["e"],"id":445}],[{"start":{"row":20,"column":18},"end":{"row":20,"column":19},"action":"remove","lines":["l"],"id":446}],[{"start":{"row":20,"column":17},"end":{"row":20,"column":18},"action":"remove","lines":["o"],"id":447}],[{"start":{"row":20,"column":16},"end":{"row":20,"column":17},"action":"remove","lines":["p"],"id":448}],[{"start":{"row":20,"column":16},"end":{"row":20,"column":17},"action":"insert","lines":["o"],"id":449}],[{"start":{"row":20,"column":17},"end":{"row":20,"column":18},"action":"insert","lines":["l"],"id":450}],[{"start":{"row":20,"column":18},"end":{"row":20,"column":19},"action":"insert","lines":["e"],"id":451}],[{"start":{"row":20,"column":19},"end":{"row":20,"column":20},"action":"insert","lines":[" "],"id":452}],[{"start":{"row":20,"column":19},"end":{"row":20,"column":20},"action":"remove","lines":[" "],"id":453}],[{"start":{"row":20,"column":19},"end":{"row":20,"column":20},"action":"insert","lines":["."],"id":454}],[{"start":{"row":20,"column":20},"end":{"row":20,"column":21},"action":"insert","lines":["l"],"id":455}],[{"start":{"row":20,"column":21},"end":{"row":20,"column":22},"action":"insert","lines":["o"],"id":456}],[{"start":{"row":20,"column":22},"end":{"row":20,"column":23},"action":"insert","lines":["g"],"id":457}],[{"start":{"row":20,"column":23},"end":{"row":20,"column":24},"action":"insert","lines":[" "],"id":458}],[{"start":{"row":20,"column":23},"end":{"row":20,"column":24},"action":"remove","lines":[" "],"id":459}],[{"start":{"row":20,"column":23},"end":{"row":20,"column":25},"action":"insert","lines":["()"],"id":460}],[{"start":{"row":20,"column":24},"end":{"row":20,"column":25},"action":"insert","lines":["e"],"id":461}],[{"start":{"row":20,"column":25},"end":{"row":20,"column":26},"action":"insert","lines":["r"],"id":462}],[{"start":{"row":20,"column":26},"end":{"row":20,"column":27},"action":"insert","lines":["r"],"id":463}],[{"start":{"row":20,"column":28},"end":{"row":20,"column":29},"action":"insert","lines":[";"],"id":464}],[{"start":{"row":21,"column":34},"end":{"row":21,"column":35},"action":"insert","lines":["."],"id":465}],[{"start":{"row":21,"column":35},"end":{"row":21,"column":36},"action":"insert","lines":["m"],"id":466}],[{"start":{"row":21,"column":36},"end":{"row":21,"column":37},"action":"insert","lines":["e"],"id":467}],[{"start":{"row":21,"column":37},"end":{"row":21,"column":38},"action":"insert","lines":["s"],"id":468}],[{"start":{"row":21,"column":38},"end":{"row":21,"column":39},"action":"insert","lines":["s"],"id":469}],[{"start":{"row":21,"column":39},"end":{"row":21,"column":40},"action":"insert","lines":["a"],"id":470}],[{"start":{"row":21,"column":40},"end":{"row":21,"column":41},"action":"insert","lines":["g"],"id":471}],[{"start":{"row":21,"column":41},"end":{"row":21,"column":42},"action":"insert","lines":["e"],"id":472}],[{"start":{"row":20,"column":0},"end":{"row":21,"column":0},"action":"remove","lines":[" console.log(err);",""],"id":473},{"start":{"row":20,"column":0},"end":{"row":20,"column":1},"action":"insert","lines":["\\"]}],[{"start":{"row":20,"column":0},"end":{"row":20,"column":1},"action":"remove","lines":["\\"],"id":475}]]},"timestamp":1447311323000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/views/login.ejs b/.c9/metadata/workspace/YelpCamp/v11/views/login.ejs
deleted file mode 100644
index 703a4248..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/views/login.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"login.ejs","tooltip":"/YelpCamp/v11/views/login.ejs","undoManager":{"mark":24,"position":24,"stack":[[{"start":{"row":0,"column":32},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":2}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"insert","lines":["",""],"id":3}],[{"start":{"row":2,"column":0},"end":{"row":2,"column":1},"action":"insert","lines":["<"],"id":4}],[{"start":{"row":2,"column":1},"end":{"row":2,"column":2},"action":"insert","lines":["h"],"id":5}],[{"start":{"row":2,"column":2},"end":{"row":2,"column":3},"action":"insert","lines":["1"],"id":6}],[{"start":{"row":2,"column":3},"end":{"row":2,"column":9},"action":"insert","lines":[">"],"id":7}],[{"start":{"row":2,"column":4},"end":{"row":2,"column":5},"action":"insert","lines":["<"],"id":8}],[{"start":{"row":2,"column":5},"end":{"row":2,"column":6},"action":"insert","lines":["%"],"id":9}],[{"start":{"row":2,"column":6},"end":{"row":2,"column":7},"action":"insert","lines":["="],"id":10}],[{"start":{"row":2,"column":7},"end":{"row":2,"column":8},"action":"insert","lines":[" "],"id":11}],[{"start":{"row":2,"column":8},"end":{"row":2,"column":9},"action":"insert","lines":["m"],"id":12}],[{"start":{"row":2,"column":9},"end":{"row":2,"column":10},"action":"insert","lines":["e"],"id":13}],[{"start":{"row":2,"column":10},"end":{"row":2,"column":11},"action":"insert","lines":["s"],"id":14}],[{"start":{"row":2,"column":11},"end":{"row":2,"column":12},"action":"insert","lines":["s"],"id":15}],[{"start":{"row":2,"column":12},"end":{"row":2,"column":13},"action":"insert","lines":["a"],"id":16}],[{"start":{"row":2,"column":13},"end":{"row":2,"column":14},"action":"insert","lines":["g"],"id":17}],[{"start":{"row":2,"column":14},"end":{"row":2,"column":15},"action":"insert","lines":["e"],"id":18}],[{"start":{"row":2,"column":15},"end":{"row":2,"column":16},"action":"insert","lines":[" "],"id":19}],[{"start":{"row":2,"column":15},"end":{"row":2,"column":16},"action":"remove","lines":[" "],"id":20}],[{"start":{"row":2,"column":15},"end":{"row":2,"column":16},"action":"insert","lines":[" "],"id":21}],[{"start":{"row":2,"column":16},"end":{"row":2,"column":17},"action":"insert","lines":["%"],"id":22}],[{"start":{"row":2,"column":17},"end":{"row":2,"column":18},"action":"insert","lines":[">"],"id":23}],[{"start":{"row":2,"column":0},"end":{"row":2,"column":23},"action":"remove","lines":["
<%= message %>
"],"id":27}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"remove","lines":["",""],"id":28}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"remove","lines":["",""],"id":29}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":2,"column":15},"end":{"row":2,"column":15},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":36,"mode":"ace/mode/ejs"}},"timestamp":1447309295483,"hash":"8ef1eca0273f08a3b4634afd27b2537b347efd4c"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11/views/partials/header.ejs b/.c9/metadata/workspace/YelpCamp/v11/views/partials/header.ejs
deleted file mode 100644
index 4f2b3bfc..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11/views/partials/header.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"header.ejs","tooltip":"/YelpCamp/v11/views/partials/header.ejs","ace":{"folds":[],"scrolltop":788,"scrollleft":0,"selection":{"start":{"row":37,"column":18},"end":{"row":37,"column":18},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":42,"mode":"ace/mode/ejs"}},"hash":"1f161b120e0e5f4acf2fe91989bda7e0c23167a6","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":29,"column":21},"end":{"row":29,"column":22},"action":"insert","lines":[" "],"id":95}],[{"start":{"row":29,"column":21},"end":{"row":29,"column":22},"action":"remove","lines":[" "],"id":96}],[{"start":{"row":32,"column":16},"end":{"row":32,"column":23},"action":"remove","lines":["message"],"id":97}],[{"start":{"row":32,"column":16},"end":{"row":32,"column":17},"action":"insert","lines":["s"],"id":98}],[{"start":{"row":32,"column":17},"end":{"row":32,"column":18},"action":"insert","lines":["u"],"id":99}],[{"start":{"row":32,"column":18},"end":{"row":32,"column":19},"action":"insert","lines":["c"],"id":100}],[{"start":{"row":32,"column":19},"end":{"row":32,"column":20},"action":"insert","lines":["c"],"id":101}],[{"start":{"row":32,"column":20},"end":{"row":32,"column":21},"action":"insert","lines":["e"],"id":102}],[{"start":{"row":32,"column":21},"end":{"row":32,"column":22},"action":"insert","lines":["s"],"id":103}],[{"start":{"row":32,"column":22},"end":{"row":32,"column":23},"action":"insert","lines":["s"],"id":104}],[{"start":{"row":27,"column":27},"end":{"row":28,"column":8},"action":"insert","lines":[""," "],"id":105}],[{"start":{"row":28,"column":8},"end":{"row":28,"column":9},"action":"insert","lines":["<"],"id":106}],[{"start":{"row":28,"column":9},"end":{"row":28,"column":10},"action":"insert","lines":["$"],"id":107}],[{"start":{"row":28,"column":9},"end":{"row":28,"column":10},"action":"remove","lines":["$"],"id":108}],[{"start":{"row":28,"column":9},"end":{"row":28,"column":10},"action":"insert","lines":["%"],"id":109}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"insert","lines":[" "],"id":110}],[{"start":{"row":28,"column":11},"end":{"row":28,"column":12},"action":"insert","lines":["%"],"id":111}],[{"start":{"row":28,"column":12},"end":{"row":28,"column":13},"action":"insert","lines":[">"],"id":112}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"insert","lines":[" "],"id":113}],[{"start":{"row":28,"column":11},"end":{"row":28,"column":12},"action":"insert","lines":["i"],"id":114}],[{"start":{"row":28,"column":12},"end":{"row":28,"column":13},"action":"insert","lines":["f"],"id":115}],[{"start":{"row":28,"column":13},"end":{"row":28,"column":14},"action":"insert","lines":[" "],"id":116}],[{"start":{"row":28,"column":13},"end":{"row":28,"column":14},"action":"remove","lines":[" "],"id":117}],[{"start":{"row":28,"column":13},"end":{"row":28,"column":14},"action":"insert","lines":["("],"id":118}],[{"start":{"row":28,"column":14},"end":{"row":28,"column":15},"action":"insert","lines":[")"],"id":119}],[{"start":{"row":28,"column":15},"end":{"row":28,"column":16},"action":"insert","lines":["{"],"id":120}],[{"start":{"row":31,"column":14},"end":{"row":32,"column":0},"action":"insert","lines":["",""],"id":121},{"start":{"row":32,"column":0},"end":{"row":32,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":32,"column":8},"end":{"row":32,"column":9},"action":"insert","lines":["<"],"id":122}],[{"start":{"row":32,"column":9},"end":{"row":32,"column":10},"action":"insert","lines":["%"],"id":123}],[{"start":{"row":32,"column":10},"end":{"row":32,"column":11},"action":"insert","lines":[" "],"id":124}],[{"start":{"row":32,"column":11},"end":{"row":32,"column":12},"action":"insert","lines":["%"],"id":125}],[{"start":{"row":32,"column":12},"end":{"row":32,"column":13},"action":"insert","lines":[">"],"id":126}],[{"start":{"row":32,"column":10},"end":{"row":32,"column":11},"action":"insert","lines":[" "],"id":127}],[{"start":{"row":32,"column":11},"end":{"row":32,"column":12},"action":"insert","lines":["}"],"id":128}],[{"start":{"row":29,"column":0},"end":{"row":29,"column":4},"action":"insert","lines":[" "],"id":129},{"start":{"row":30,"column":0},"end":{"row":30,"column":4},"action":"insert","lines":[" "]},{"start":{"row":31,"column":0},"end":{"row":31,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":28,"column":14},"end":{"row":28,"column":15},"action":"insert","lines":["e"],"id":130}],[{"start":{"row":28,"column":15},"end":{"row":28,"column":16},"action":"insert","lines":["r"],"id":131}],[{"start":{"row":28,"column":16},"end":{"row":28,"column":17},"action":"insert","lines":["r"],"id":132}],[{"start":{"row":28,"column":17},"end":{"row":28,"column":18},"action":"insert","lines":["o"],"id":133}],[{"start":{"row":28,"column":18},"end":{"row":28,"column":19},"action":"insert","lines":["r"],"id":134}],[{"start":{"row":28,"column":19},"end":{"row":28,"column":20},"action":"insert","lines":[" "],"id":135}],[{"start":{"row":28,"column":19},"end":{"row":28,"column":20},"action":"remove","lines":[" "],"id":136}],[{"start":{"row":28,"column":19},"end":{"row":28,"column":20},"action":"insert","lines":[" "],"id":137}],[{"start":{"row":28,"column":20},"end":{"row":28,"column":21},"action":"insert","lines":["&"],"id":138}],[{"start":{"row":28,"column":21},"end":{"row":28,"column":22},"action":"insert","lines":["&"],"id":139}],[{"start":{"row":28,"column":22},"end":{"row":28,"column":23},"action":"insert","lines":[" "],"id":140}],[{"start":{"row":28,"column":23},"end":{"row":28,"column":24},"action":"insert","lines":["e"],"id":141}],[{"start":{"row":28,"column":24},"end":{"row":28,"column":25},"action":"insert","lines":["r"],"id":142}],[{"start":{"row":28,"column":25},"end":{"row":28,"column":26},"action":"insert","lines":["r"],"id":143}],[{"start":{"row":28,"column":26},"end":{"row":28,"column":27},"action":"insert","lines":["o"],"id":144}],[{"start":{"row":28,"column":27},"end":{"row":28,"column":28},"action":"insert","lines":["r"],"id":145}],[{"start":{"row":28,"column":28},"end":{"row":28,"column":29},"action":"insert","lines":[" "],"id":146}],[{"start":{"row":28,"column":28},"end":{"row":28,"column":29},"action":"remove","lines":[" "],"id":147}],[{"start":{"row":28,"column":28},"end":{"row":28,"column":29},"action":"insert","lines":["."],"id":148}],[{"start":{"row":28,"column":29},"end":{"row":28,"column":30},"action":"insert","lines":["l"],"id":149}],[{"start":{"row":28,"column":30},"end":{"row":28,"column":31},"action":"insert","lines":["e"],"id":150}],[{"start":{"row":28,"column":31},"end":{"row":28,"column":32},"action":"insert","lines":["n"],"id":151}],[{"start":{"row":28,"column":32},"end":{"row":28,"column":33},"action":"insert","lines":["g"],"id":152}],[{"start":{"row":28,"column":33},"end":{"row":28,"column":34},"action":"insert","lines":["t"],"id":153}],[{"start":{"row":28,"column":34},"end":{"row":28,"column":35},"action":"insert","lines":["h"],"id":154}],[{"start":{"row":28,"column":35},"end":{"row":28,"column":36},"action":"insert","lines":[" "],"id":155}],[{"start":{"row":28,"column":35},"end":{"row":28,"column":36},"action":"remove","lines":[" "],"id":156}],[{"start":{"row":28,"column":35},"end":{"row":28,"column":36},"action":"insert","lines":[" "],"id":157}],[{"start":{"row":28,"column":36},"end":{"row":28,"column":37},"action":"insert","lines":[">"],"id":158}],[{"start":{"row":28,"column":37},"end":{"row":28,"column":38},"action":"insert","lines":[" "],"id":159}],[{"start":{"row":28,"column":38},"end":{"row":28,"column":39},"action":"insert","lines":["9"],"id":160}],[{"start":{"row":28,"column":38},"end":{"row":28,"column":39},"action":"remove","lines":["9"],"id":161}],[{"start":{"row":28,"column":38},"end":{"row":28,"column":39},"action":"insert","lines":["0"],"id":162}],[{"start":{"row":27,"column":27},"end":{"row":28,"column":8},"action":"insert","lines":[""," "],"id":163}],[{"start":{"row":28,"column":8},"end":{"row":28,"column":9},"action":"insert","lines":["i"],"id":164}],[{"start":{"row":28,"column":9},"end":{"row":28,"column":10},"action":"insert","lines":["f"],"id":165}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"insert","lines":[" "],"id":166}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"remove","lines":[" "],"id":167}],[{"start":{"row":28,"column":10},"end":{"row":28,"column":11},"action":"insert","lines":["("],"id":168}],[{"start":{"row":28,"column":11},"end":{"row":28,"column":12},"action":"insert","lines":["["],"id":169}],[{"start":{"row":28,"column":12},"end":{"row":28,"column":13},"action":"insert","lines":["]"],"id":170}],[{"start":{"row":28,"column":13},"end":{"row":28,"column":14},"action":"insert","lines":[")"],"id":171}],[{"start":{"row":28,"column":9},"end":{"row":28,"column":14},"action":"remove","lines":["f([])"],"id":172}],[{"start":{"row":28,"column":8},"end":{"row":28,"column":9},"action":"remove","lines":["i"],"id":173}],[{"start":{"row":33,"column":15},"end":{"row":34,"column":0},"action":"insert","lines":["",""],"id":174},{"start":{"row":34,"column":0},"end":{"row":34,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":34,"column":8},"end":{"row":34,"column":44},"action":"insert","lines":["<% if(error && error.length > 0){ %>"],"id":175}],[{"start":{"row":35,"column":0},"end":{"row":35,"column":4},"action":"insert","lines":[" "],"id":176},{"start":{"row":36,"column":0},"end":{"row":36,"column":4},"action":"insert","lines":[" "]},{"start":{"row":37,"column":0},"end":{"row":37,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":34,"column":14},"end":{"row":34,"column":19},"action":"remove","lines":["error"],"id":177}],[{"start":{"row":34,"column":14},"end":{"row":34,"column":15},"action":"insert","lines":["s"],"id":178}],[{"start":{"row":34,"column":15},"end":{"row":34,"column":16},"action":"insert","lines":["u"],"id":179}],[{"start":{"row":34,"column":16},"end":{"row":34,"column":17},"action":"insert","lines":["c"],"id":180}],[{"start":{"row":34,"column":17},"end":{"row":34,"column":18},"action":"insert","lines":["c"],"id":181}],[{"start":{"row":34,"column":18},"end":{"row":34,"column":19},"action":"insert","lines":["e"],"id":182}],[{"start":{"row":34,"column":19},"end":{"row":34,"column":20},"action":"insert","lines":["s"],"id":183}],[{"start":{"row":34,"column":20},"end":{"row":34,"column":21},"action":"insert","lines":["s"],"id":184}],[{"start":{"row":34,"column":25},"end":{"row":34,"column":30},"action":"remove","lines":["error"],"id":185}],[{"start":{"row":34,"column":25},"end":{"row":34,"column":26},"action":"insert","lines":["s"],"id":186}],[{"start":{"row":34,"column":26},"end":{"row":34,"column":27},"action":"insert","lines":["u"],"id":187}],[{"start":{"row":34,"column":27},"end":{"row":34,"column":28},"action":"insert","lines":["c"],"id":188}],[{"start":{"row":34,"column":28},"end":{"row":34,"column":29},"action":"insert","lines":["c"],"id":189}],[{"start":{"row":34,"column":29},"end":{"row":34,"column":30},"action":"insert","lines":["e"],"id":190}],[{"start":{"row":34,"column":30},"end":{"row":34,"column":31},"action":"insert","lines":["s"],"id":191}],[{"start":{"row":34,"column":31},"end":{"row":34,"column":32},"action":"insert","lines":["s"],"id":192}],[{"start":{"row":37,"column":18},"end":{"row":38,"column":0},"action":"insert","lines":["",""],"id":193},{"start":{"row":38,"column":0},"end":{"row":38,"column":12},"action":"insert","lines":[" "]}],[{"start":{"row":38,"column":8},"end":{"row":38,"column":12},"action":"remove","lines":[" "],"id":194}],[{"start":{"row":38,"column":8},"end":{"row":38,"column":15},"action":"insert","lines":["<% } %>"],"id":195}]]},"timestamp":1447310063000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11Deployed/app.js b/.c9/metadata/workspace/YelpCamp/v11Deployed/app.js
deleted file mode 100644
index ba0c9cd0..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11Deployed/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v11Deployed/app.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":1264.7857885360718,"scrollleft":0,"selection":{"start":{"row":20,"column":0},"end":{"row":20,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":49,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1454476997000,"hash":"d5150cfd82fabe7d3ddcccb7211d2d111366ed3c"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v11Deployed/package.json b/.c9/metadata/workspace/YelpCamp/v11Deployed/package.json
deleted file mode 100644
index 8d66e710..00000000
--- a/.c9/metadata/workspace/YelpCamp/v11Deployed/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"package.json","tooltip":"/YelpCamp/v11Deployed/package.json","undoManager":{"mark":27,"position":27,"stack":[[{"start":{"row":6,"column":57},"end":{"row":6,"column":58},"action":"insert","lines":[","],"id":2}],[{"start":{"row":6,"column":58},"end":{"row":7,"column":0},"action":"insert","lines":["",""],"id":3},{"start":{"row":7,"column":0},"end":{"row":7,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":7,"column":4},"end":{"row":7,"column":6},"action":"insert","lines":["\"\""],"id":4}],[{"start":{"row":7,"column":5},"end":{"row":7,"column":6},"action":"insert","lines":["s"],"id":5}],[{"start":{"row":7,"column":6},"end":{"row":7,"column":7},"action":"insert","lines":["t"],"id":6}],[{"start":{"row":7,"column":7},"end":{"row":7,"column":8},"action":"insert","lines":["a"],"id":7}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"insert","lines":["t"],"id":8}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"remove","lines":["t"],"id":9}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"insert","lines":["r"],"id":10}],[{"start":{"row":7,"column":9},"end":{"row":7,"column":10},"action":"insert","lines":["t"],"id":11}],[{"start":{"row":7,"column":11},"end":{"row":7,"column":12},"action":"insert","lines":[":"],"id":12}],[{"start":{"row":7,"column":12},"end":{"row":7,"column":13},"action":"insert","lines":[" "],"id":13}],[{"start":{"row":7,"column":13},"end":{"row":7,"column":15},"action":"insert","lines":["\"\""],"id":14}],[{"start":{"row":7,"column":14},"end":{"row":7,"column":15},"action":"insert","lines":["n"],"id":15}],[{"start":{"row":7,"column":15},"end":{"row":7,"column":16},"action":"insert","lines":["o"],"id":16}],[{"start":{"row":7,"column":16},"end":{"row":7,"column":17},"action":"insert","lines":["d"],"id":17}],[{"start":{"row":7,"column":17},"end":{"row":7,"column":18},"action":"insert","lines":["e"],"id":18}],[{"start":{"row":7,"column":18},"end":{"row":7,"column":19},"action":"insert","lines":[" "],"id":19}],[{"start":{"row":7,"column":18},"end":{"row":7,"column":19},"action":"remove","lines":[" "],"id":20}],[{"start":{"row":7,"column":18},"end":{"row":7,"column":19},"action":"insert","lines":[" "],"id":21}],[{"start":{"row":7,"column":19},"end":{"row":7,"column":20},"action":"insert","lines":["a"],"id":22}],[{"start":{"row":7,"column":20},"end":{"row":7,"column":21},"action":"insert","lines":["p"],"id":23}],[{"start":{"row":7,"column":21},"end":{"row":7,"column":22},"action":"insert","lines":["p"],"id":24}],[{"start":{"row":7,"column":22},"end":{"row":7,"column":23},"action":"insert","lines":["."],"id":25}],[{"start":{"row":7,"column":23},"end":{"row":7,"column":24},"action":"insert","lines":["j"],"id":26}],[{"start":{"row":7,"column":24},"end":{"row":7,"column":25},"action":"insert","lines":["s"],"id":27}],[{"start":{"row":7,"column":25},"end":{"row":7,"column":26},"action":"insert","lines":[" "],"id":28}],[{"start":{"row":7,"column":25},"end":{"row":7,"column":26},"action":"remove","lines":[" "],"id":29}]]},"ace":{"folds":[],"scrolltop":265.5,"scrollleft":0,"selection":{"start":{"row":15,"column":10},"end":{"row":15,"column":10},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":9,"state":"start","mode":"ace/mode/json"}},"timestamp":1454397624000,"hash":"463c8b3632d113c2c25e536bfc3f9d76e44edf55"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/app.js b/.c9/metadata/workspace/YelpCamp/v2/app.js
deleted file mode 100644
index d236bf31..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v2/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":57,"column":57},"end":{"row":57,"column":58},"action":"insert","lines":["p"],"id":1909}],[{"start":{"row":57,"column":58},"end":{"row":57,"column":59},"action":"insert","lines":["t"],"id":1910}],[{"start":{"row":57,"column":59},"end":{"row":57,"column":60},"action":"insert","lines":["i"],"id":1911}],[{"start":{"row":57,"column":60},"end":{"row":57,"column":61},"action":"insert","lines":["o"],"id":1912}],[{"start":{"row":57,"column":61},"end":{"row":57,"column":62},"action":"insert","lines":["n"],"id":1913}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[" "],"id":1914}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"remove","lines":[" "],"id":1915}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[":"],"id":1916}],[{"start":{"row":57,"column":63},"end":{"row":57,"column":64},"action":"insert","lines":[" "],"id":1917}],[{"start":{"row":57,"column":64},"end":{"row":57,"column":65},"action":"insert","lines":["d"],"id":1918}],[{"start":{"row":57,"column":65},"end":{"row":57,"column":66},"action":"insert","lines":["e"],"id":1919}],[{"start":{"row":57,"column":66},"end":{"row":57,"column":67},"action":"insert","lines":["s"],"id":1920}],[{"start":{"row":57,"column":67},"end":{"row":57,"column":68},"action":"insert","lines":["c"],"id":1921}],[{"start":{"row":57,"column":68},"end":{"row":57,"column":69},"action":"insert","lines":["r"],"id":1922}],[{"start":{"row":57,"column":69},"end":{"row":57,"column":70},"action":"insert","lines":["i"],"id":1923}],[{"start":{"row":57,"column":70},"end":{"row":57,"column":71},"action":"insert","lines":["p"],"id":1924}],[{"start":{"row":57,"column":71},"end":{"row":57,"column":72},"action":"insert","lines":["t"],"id":1925}],[{"start":{"row":57,"column":72},"end":{"row":57,"column":73},"action":"insert","lines":["i"],"id":1926}],[{"start":{"row":57,"column":73},"end":{"row":57,"column":74},"action":"insert","lines":["o"],"id":1927}],[{"start":{"row":57,"column":74},"end":{"row":57,"column":75},"action":"insert","lines":["n"],"id":1928}],[{"start":{"row":57,"column":75},"end":{"row":57,"column":76},"action":"insert","lines":[" "],"id":1929}],[{"start":{"row":57,"column":75},"end":{"row":57,"column":76},"action":"remove","lines":[" "],"id":1930}],[{"start":{"row":57,"column":52},"end":{"row":57,"column":75},"action":"remove","lines":["escription: description"],"id":1931}],[{"start":{"row":57,"column":51},"end":{"row":57,"column":52},"action":"remove","lines":["d"],"id":1932}],[{"start":{"row":57,"column":50},"end":{"row":57,"column":51},"action":"remove","lines":[" "],"id":1933}],[{"start":{"row":57,"column":49},"end":{"row":57,"column":50},"action":"remove","lines":[","],"id":1934}],[{"start":{"row":57,"column":49},"end":{"row":57,"column":50},"action":"insert","lines":[","],"id":1935}],[{"start":{"row":57,"column":50},"end":{"row":57,"column":51},"action":"insert","lines":[" "],"id":1936}],[{"start":{"row":57,"column":51},"end":{"row":57,"column":52},"action":"insert","lines":["d"],"id":1937}],[{"start":{"row":57,"column":52},"end":{"row":57,"column":53},"action":"insert","lines":["e"],"id":1938}],[{"start":{"row":57,"column":53},"end":{"row":57,"column":54},"action":"insert","lines":["s"],"id":1939}],[{"start":{"row":57,"column":54},"end":{"row":57,"column":55},"action":"insert","lines":["c"],"id":1940}],[{"start":{"row":57,"column":55},"end":{"row":57,"column":56},"action":"insert","lines":["r"],"id":1941}],[{"start":{"row":57,"column":56},"end":{"row":57,"column":57},"action":"insert","lines":["i"],"id":1942}],[{"start":{"row":57,"column":57},"end":{"row":57,"column":58},"action":"insert","lines":["p"],"id":1943}],[{"start":{"row":57,"column":58},"end":{"row":57,"column":59},"action":"insert","lines":["t"],"id":1944}],[{"start":{"row":57,"column":59},"end":{"row":57,"column":60},"action":"insert","lines":["i"],"id":1945}],[{"start":{"row":57,"column":60},"end":{"row":57,"column":61},"action":"insert","lines":["o"],"id":1946}],[{"start":{"row":57,"column":61},"end":{"row":57,"column":62},"action":"insert","lines":["n"],"id":1947}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[" "],"id":1948}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"remove","lines":[" "],"id":1949}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[":"],"id":1950}],[{"start":{"row":57,"column":63},"end":{"row":57,"column":64},"action":"insert","lines":[" "],"id":1951}],[{"start":{"row":57,"column":64},"end":{"row":57,"column":65},"action":"insert","lines":["d"],"id":1952}],[{"start":{"row":57,"column":65},"end":{"row":57,"column":66},"action":"insert","lines":["e"],"id":1953}],[{"start":{"row":57,"column":66},"end":{"row":57,"column":67},"action":"insert","lines":["s"],"id":1954}],[{"start":{"row":57,"column":66},"end":{"row":57,"column":67},"action":"remove","lines":["s"],"id":1956}],[{"start":{"row":57,"column":65},"end":{"row":57,"column":66},"action":"remove","lines":["e"],"id":1957}],[{"start":{"row":57,"column":64},"end":{"row":57,"column":65},"action":"remove","lines":["d"],"id":1958}],[{"start":{"row":57,"column":63},"end":{"row":57,"column":64},"action":"remove","lines":[" "],"id":1959}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"remove","lines":[":"],"id":1960}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[":"],"id":1961}],[{"start":{"row":57,"column":63},"end":{"row":57,"column":64},"action":"insert","lines":["L"],"id":1962}],[{"start":{"row":57,"column":63},"end":{"row":57,"column":64},"action":"remove","lines":["L"],"id":1963}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"remove","lines":[":"],"id":1964}],[{"start":{"row":57,"column":61},"end":{"row":57,"column":62},"action":"remove","lines":["n"],"id":1965}],[{"start":{"row":57,"column":60},"end":{"row":57,"column":61},"action":"remove","lines":["o"],"id":1966}],[{"start":{"row":57,"column":59},"end":{"row":57,"column":60},"action":"remove","lines":["i"],"id":1967}],[{"start":{"row":57,"column":58},"end":{"row":57,"column":59},"action":"remove","lines":["t"],"id":1968}],[{"start":{"row":57,"column":57},"end":{"row":57,"column":58},"action":"remove","lines":["p"],"id":1969}],[{"start":{"row":57,"column":56},"end":{"row":57,"column":57},"action":"remove","lines":["i"],"id":1970}],[{"start":{"row":57,"column":55},"end":{"row":57,"column":56},"action":"remove","lines":["r"],"id":1971}],[{"start":{"row":57,"column":54},"end":{"row":57,"column":55},"action":"remove","lines":["c"],"id":1972}],[{"start":{"row":57,"column":53},"end":{"row":57,"column":54},"action":"remove","lines":["s"],"id":1973}],[{"start":{"row":57,"column":52},"end":{"row":57,"column":53},"action":"remove","lines":["e"],"id":1974}],[{"start":{"row":57,"column":51},"end":{"row":57,"column":52},"action":"remove","lines":["d"],"id":1975}],[{"start":{"row":57,"column":50},"end":{"row":57,"column":51},"action":"remove","lines":[" "],"id":1976}],[{"start":{"row":57,"column":49},"end":{"row":57,"column":50},"action":"remove","lines":[","],"id":1977}],[{"start":{"row":57,"column":49},"end":{"row":57,"column":50},"action":"insert","lines":[","],"id":1981}],[{"start":{"row":57,"column":50},"end":{"row":57,"column":51},"action":"insert","lines":[" "],"id":1982}],[{"start":{"row":57,"column":51},"end":{"row":57,"column":52},"action":"insert","lines":["e"],"id":1983}],[{"start":{"row":57,"column":52},"end":{"row":57,"column":53},"action":"insert","lines":["s"],"id":1984}],[{"start":{"row":57,"column":53},"end":{"row":57,"column":54},"action":"insert","lines":["c"],"id":1985}],[{"start":{"row":57,"column":54},"end":{"row":57,"column":55},"action":"insert","lines":["r"],"id":1986}],[{"start":{"row":57,"column":55},"end":{"row":57,"column":56},"action":"insert","lines":["i"],"id":1987}],[{"start":{"row":57,"column":55},"end":{"row":57,"column":56},"action":"remove","lines":["i"],"id":1988}],[{"start":{"row":57,"column":54},"end":{"row":57,"column":55},"action":"remove","lines":["r"],"id":1989}],[{"start":{"row":57,"column":53},"end":{"row":57,"column":54},"action":"remove","lines":["c"],"id":1990}],[{"start":{"row":57,"column":52},"end":{"row":57,"column":53},"action":"remove","lines":["s"],"id":1991}],[{"start":{"row":57,"column":51},"end":{"row":57,"column":52},"action":"remove","lines":["e"],"id":1992}],[{"start":{"row":57,"column":51},"end":{"row":57,"column":52},"action":"insert","lines":["d"],"id":1993}],[{"start":{"row":57,"column":52},"end":{"row":57,"column":53},"action":"insert","lines":["e"],"id":1994}],[{"start":{"row":57,"column":53},"end":{"row":57,"column":54},"action":"insert","lines":["s"],"id":1995}],[{"start":{"row":57,"column":54},"end":{"row":57,"column":55},"action":"insert","lines":["c"],"id":1996}],[{"start":{"row":57,"column":55},"end":{"row":57,"column":56},"action":"insert","lines":["r"],"id":1997}],[{"start":{"row":57,"column":56},"end":{"row":57,"column":57},"action":"insert","lines":["i"],"id":1998}],[{"start":{"row":57,"column":57},"end":{"row":57,"column":58},"action":"insert","lines":["p"],"id":1999}],[{"start":{"row":57,"column":58},"end":{"row":57,"column":59},"action":"insert","lines":["t"],"id":2000}],[{"start":{"row":57,"column":59},"end":{"row":57,"column":60},"action":"insert","lines":["i"],"id":2001}],[{"start":{"row":57,"column":60},"end":{"row":57,"column":61},"action":"insert","lines":["o"],"id":2002}],[{"start":{"row":57,"column":61},"end":{"row":57,"column":62},"action":"insert","lines":["n"],"id":2003}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[" "],"id":2004}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"remove","lines":[" "],"id":2005}],[{"start":{"row":57,"column":62},"end":{"row":57,"column":63},"action":"insert","lines":[":"],"id":2006}],[{"start":{"row":57,"column":63},"end":{"row":57,"column":64},"action":"insert","lines":[" "],"id":2007}],[{"start":{"row":57,"column":64},"end":{"row":57,"column":65},"action":"insert","lines":["d"],"id":2008}],[{"start":{"row":57,"column":65},"end":{"row":57,"column":66},"action":"insert","lines":["e"],"id":2009}],[{"start":{"row":57,"column":66},"end":{"row":57,"column":67},"action":"insert","lines":["s"],"id":2010}],[{"start":{"row":57,"column":67},"end":{"row":57,"column":68},"action":"insert","lines":["c"],"id":2011}],[{"start":{"row":57,"column":68},"end":{"row":57,"column":69},"action":"insert","lines":[" "],"id":2012}],[{"start":{"row":57,"column":68},"end":{"row":57,"column":69},"action":"remove","lines":[" "],"id":2013}]]},"ace":{"folds":[],"scrolltop":1886,"scrollleft":0,"selection":{"start":{"row":85,"column":2},"end":{"row":85,"column":2},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":71,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1446252181987,"hash":"1d39a46c55cb312f4c790860acbff449c94b7336"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/package.json b/.c9/metadata/workspace/YelpCamp/v2/package.json
deleted file mode 100644
index c939f620..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"package.json","tooltip":"/YelpCamp/v2/package.json","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":216,"scrollleft":0,"selection":{"start":{"row":14,"column":0},"end":{"row":15,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":7,"state":"start","mode":"ace/mode/json"}},"timestamp":1445279333278,"hash":"a11a80d25ce880c11e6067f75e84d0604a641b7b"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/readme.md b/.c9/metadata/workspace/YelpCamp/v2/readme.md
deleted file mode 100644
index 23b44596..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v2/readme.md","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":45,"column":42},"end":{"row":46,"column":0},"action":"insert","lines":["",""],"id":707}],[{"start":{"row":46,"column":0},"end":{"row":47,"column":0},"action":"insert","lines":["",""],"id":708}],[{"start":{"row":47,"column":0},"end":{"row":48,"column":0},"action":"insert","lines":["",""],"id":709}],[{"start":{"row":48,"column":0},"end":{"row":48,"column":1},"action":"insert","lines":["a"],"id":710}],[{"start":{"row":48,"column":1},"end":{"row":48,"column":2},"action":"insert","lines":["p"],"id":711}],[{"start":{"row":48,"column":2},"end":{"row":48,"column":3},"action":"insert","lines":["i"],"id":712}],[{"start":{"row":48,"column":3},"end":{"row":48,"column":4},"action":"insert","lines":[" "],"id":713}],[{"start":{"row":48,"column":3},"end":{"row":48,"column":4},"action":"remove","lines":[" "],"id":714}],[{"start":{"row":48,"column":3},"end":{"row":48,"column":4},"action":"insert","lines":["."],"id":715}],[{"start":{"row":48,"column":4},"end":{"row":48,"column":5},"action":"insert","lines":["g"],"id":716}],[{"start":{"row":48,"column":5},"end":{"row":48,"column":6},"action":"insert","lines":["i"],"id":717}],[{"start":{"row":48,"column":6},"end":{"row":48,"column":7},"action":"insert","lines":["t"],"id":718}],[{"start":{"row":48,"column":7},"end":{"row":48,"column":8},"action":"insert","lines":["h"],"id":719}],[{"start":{"row":48,"column":8},"end":{"row":48,"column":9},"action":"insert","lines":["u"],"id":720}],[{"start":{"row":48,"column":9},"end":{"row":48,"column":10},"action":"insert","lines":["b"],"id":721}],[{"start":{"row":48,"column":10},"end":{"row":48,"column":11},"action":"insert","lines":[" "],"id":722}],[{"start":{"row":48,"column":10},"end":{"row":48,"column":11},"action":"remove","lines":[" "],"id":723}],[{"start":{"row":48,"column":10},"end":{"row":48,"column":11},"action":"insert","lines":["."],"id":724}],[{"start":{"row":48,"column":11},"end":{"row":48,"column":12},"action":"insert","lines":["c"],"id":725}],[{"start":{"row":48,"column":12},"end":{"row":48,"column":13},"action":"insert","lines":["o"],"id":726}],[{"start":{"row":48,"column":13},"end":{"row":48,"column":14},"action":"insert","lines":["m"],"id":727}],[{"start":{"row":48,"column":14},"end":{"row":48,"column":15},"action":"insert","lines":[" "],"id":728}],[{"start":{"row":48,"column":14},"end":{"row":48,"column":15},"action":"remove","lines":[" "],"id":729}],[{"start":{"row":48,"column":14},"end":{"row":48,"column":15},"action":"insert","lines":["/"],"id":730}],[{"start":{"row":48,"column":15},"end":{"row":48,"column":16},"action":"insert","lines":["u"],"id":731}],[{"start":{"row":48,"column":16},"end":{"row":48,"column":17},"action":"insert","lines":["s"],"id":732}],[{"start":{"row":48,"column":17},"end":{"row":48,"column":18},"action":"insert","lines":["e"],"id":733}],[{"start":{"row":48,"column":18},"end":{"row":48,"column":19},"action":"insert","lines":["r"],"id":734}],[{"start":{"row":48,"column":19},"end":{"row":48,"column":20},"action":"insert","lines":["s"],"id":735}],[{"start":{"row":48,"column":20},"end":{"row":48,"column":21},"action":"insert","lines":[" "],"id":736}],[{"start":{"row":48,"column":20},"end":{"row":48,"column":21},"action":"remove","lines":[" "],"id":737}],[{"start":{"row":48,"column":0},"end":{"row":48,"column":20},"action":"remove","lines":["api.github.com/users"],"id":738}],[{"start":{"row":47,"column":0},"end":{"row":48,"column":0},"action":"remove","lines":["",""],"id":739}],[{"start":{"row":46,"column":0},"end":{"row":47,"column":0},"action":"remove","lines":["",""],"id":740}],[{"start":{"row":45,"column":42},"end":{"row":46,"column":0},"action":"remove","lines":["",""],"id":741}],[{"start":{"row":45,"column":42},"end":{"row":46,"column":0},"action":"insert","lines":["",""],"id":742}],[{"start":{"row":46,"column":0},"end":{"row":46,"column":1},"action":"insert","lines":["S"],"id":743}],[{"start":{"row":46,"column":1},"end":{"row":46,"column":2},"action":"insert","lines":["H"],"id":744}],[{"start":{"row":46,"column":2},"end":{"row":46,"column":3},"action":"insert","lines":["O"],"id":745}],[{"start":{"row":46,"column":3},"end":{"row":46,"column":4},"action":"insert","lines":["W"],"id":746}],[{"start":{"row":46,"column":4},"end":{"row":46,"column":5},"action":"insert","lines":[" "],"id":747}],[{"start":{"row":46,"column":4},"end":{"row":46,"column":5},"action":"remove","lines":[" "],"id":748}],[{"start":{"row":46,"column":4},"end":{"row":46,"column":5},"action":"insert","lines":[" "],"id":749}],[{"start":{"row":46,"column":5},"end":{"row":46,"column":6},"action":"insert","lines":[" "],"id":750}],[{"start":{"row":46,"column":6},"end":{"row":46,"column":7},"action":"insert","lines":[" "],"id":751}],[{"start":{"row":46,"column":7},"end":{"row":46,"column":8},"action":"insert","lines":[" "],"id":752}],[{"start":{"row":46,"column":8},"end":{"row":46,"column":9},"action":"insert","lines":["/"],"id":753}],[{"start":{"row":46,"column":9},"end":{"row":46,"column":10},"action":"insert","lines":["d"],"id":754}],[{"start":{"row":46,"column":10},"end":{"row":46,"column":11},"action":"insert","lines":["o"],"id":755}],[{"start":{"row":46,"column":11},"end":{"row":46,"column":12},"action":"insert","lines":["g"],"id":756}],[{"start":{"row":46,"column":12},"end":{"row":46,"column":13},"action":"insert","lines":["s"],"id":757}],[{"start":{"row":46,"column":13},"end":{"row":46,"column":14},"action":"insert","lines":[" "],"id":758}],[{"start":{"row":46,"column":13},"end":{"row":46,"column":14},"action":"remove","lines":[" "],"id":759}],[{"start":{"row":46,"column":13},"end":{"row":46,"column":14},"action":"insert","lines":["/"],"id":760}],[{"start":{"row":46,"column":14},"end":{"row":46,"column":15},"action":"insert","lines":[":"],"id":761}],[{"start":{"row":46,"column":15},"end":{"row":46,"column":16},"action":"insert","lines":["i"],"id":762}],[{"start":{"row":46,"column":16},"end":{"row":46,"column":17},"action":"insert","lines":["d"],"id":763}],[{"start":{"row":46,"column":17},"end":{"row":46,"column":18},"action":"insert","lines":[" "],"id":764}],[{"start":{"row":46,"column":17},"end":{"row":46,"column":18},"action":"remove","lines":[" "],"id":765}],[{"start":{"row":46,"column":17},"end":{"row":46,"column":18},"action":"insert","lines":[" "],"id":766}],[{"start":{"row":46,"column":18},"end":{"row":46,"column":19},"action":"insert","lines":[" "],"id":767}],[{"start":{"row":46,"column":19},"end":{"row":46,"column":20},"action":"insert","lines":["G"],"id":768}],[{"start":{"row":46,"column":20},"end":{"row":46,"column":21},"action":"insert","lines":["E"],"id":769}],[{"start":{"row":46,"column":21},"end":{"row":46,"column":22},"action":"insert","lines":["T"],"id":770}],[{"start":{"row":46,"column":22},"end":{"row":46,"column":23},"action":"insert","lines":[" "],"id":771}],[{"start":{"row":46,"column":23},"end":{"row":46,"column":24},"action":"insert","lines":[" "],"id":772}],[{"start":{"row":46,"column":24},"end":{"row":46,"column":25},"action":"insert","lines":[" "],"id":773}],[{"start":{"row":46,"column":25},"end":{"row":46,"column":26},"action":"insert","lines":["S"],"id":774}],[{"start":{"row":46,"column":26},"end":{"row":46,"column":27},"action":"insert","lines":["h"],"id":775}],[{"start":{"row":46,"column":27},"end":{"row":46,"column":28},"action":"insert","lines":["i"],"id":776}],[{"start":{"row":46,"column":28},"end":{"row":46,"column":29},"action":"insert","lines":["o"],"id":777}],[{"start":{"row":46,"column":29},"end":{"row":46,"column":30},"action":"insert","lines":["w"],"id":778}],[{"start":{"row":46,"column":29},"end":{"row":46,"column":30},"action":"remove","lines":["w"],"id":779}],[{"start":{"row":46,"column":28},"end":{"row":46,"column":29},"action":"remove","lines":["o"],"id":780}],[{"start":{"row":46,"column":27},"end":{"row":46,"column":28},"action":"remove","lines":["i"],"id":781}],[{"start":{"row":46,"column":27},"end":{"row":46,"column":28},"action":"insert","lines":["o"],"id":782}],[{"start":{"row":46,"column":28},"end":{"row":46,"column":29},"action":"insert","lines":["w"],"id":783}],[{"start":{"row":46,"column":29},"end":{"row":46,"column":30},"action":"insert","lines":["s"],"id":784}],[{"start":{"row":46,"column":30},"end":{"row":46,"column":31},"action":"insert","lines":[" "],"id":785}],[{"start":{"row":46,"column":31},"end":{"row":46,"column":32},"action":"insert","lines":["i"],"id":786}],[{"start":{"row":46,"column":32},"end":{"row":46,"column":33},"action":"insert","lines":["n"],"id":787}],[{"start":{"row":46,"column":33},"end":{"row":46,"column":34},"action":"insert","lines":["f"],"id":788}],[{"start":{"row":46,"column":34},"end":{"row":46,"column":35},"action":"insert","lines":["o"],"id":789}],[{"start":{"row":46,"column":35},"end":{"row":46,"column":36},"action":"insert","lines":[" "],"id":790}],[{"start":{"row":46,"column":36},"end":{"row":46,"column":37},"action":"insert","lines":["a"],"id":791}],[{"start":{"row":46,"column":37},"end":{"row":46,"column":38},"action":"insert","lines":["b"],"id":792}],[{"start":{"row":46,"column":38},"end":{"row":46,"column":39},"action":"insert","lines":["o"],"id":793}],[{"start":{"row":46,"column":39},"end":{"row":46,"column":40},"action":"insert","lines":["u"],"id":794}],[{"start":{"row":46,"column":40},"end":{"row":46,"column":41},"action":"insert","lines":["t"],"id":795}],[{"start":{"row":46,"column":41},"end":{"row":46,"column":42},"action":"insert","lines":[" "],"id":796}],[{"start":{"row":46,"column":42},"end":{"row":46,"column":43},"action":"insert","lines":["o"],"id":797}],[{"start":{"row":46,"column":43},"end":{"row":46,"column":44},"action":"insert","lines":["n"],"id":798}],[{"start":{"row":46,"column":44},"end":{"row":46,"column":45},"action":"insert","lines":["e"],"id":799}],[{"start":{"row":46,"column":45},"end":{"row":46,"column":46},"action":"insert","lines":[" "],"id":800}],[{"start":{"row":46,"column":45},"end":{"row":46,"column":46},"action":"remove","lines":[" "],"id":801}],[{"start":{"row":46,"column":45},"end":{"row":46,"column":46},"action":"insert","lines":[" "],"id":802}],[{"start":{"row":46,"column":46},"end":{"row":46,"column":47},"action":"insert","lines":["d"],"id":803}],[{"start":{"row":46,"column":47},"end":{"row":46,"column":48},"action":"insert","lines":["o"],"id":804}],[{"start":{"row":46,"column":48},"end":{"row":46,"column":49},"action":"insert","lines":["g"],"id":805}],[{"start":{"row":46,"column":49},"end":{"row":46,"column":50},"action":"insert","lines":[" "],"id":806}],[{"start":{"row":46,"column":49},"end":{"row":46,"column":50},"action":"remove","lines":[" "],"id":807}]]},"ace":{"folds":[],"scrolltop":707,"scrollleft":0,"selection":{"start":{"row":33,"column":10},"end":{"row":33,"column":10},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":26,"state":"listblock","mode":"ace/mode/markdown"}},"timestamp":1445283151544,"hash":"dfd678f6dd57e91de4b7f20f53185cafb896d2a8"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/views/campgrounds.ejs b/.c9/metadata/workspace/YelpCamp/v2/views/campgrounds.ejs
deleted file mode 100644
index 6d961c99..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/views/campgrounds.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campgrounds.ejs","tooltip":"/YelpCamp/v2/views/campgrounds.ejs","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445283829701,"hash":"1483181d798605b09ea8a53b254622beadabc554"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/views/index.ejs b/.c9/metadata/workspace/YelpCamp/v2/views/index.ejs
deleted file mode 100644
index 943c4849..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/views/index.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.ejs","tooltip":"/YelpCamp/v2/views/index.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":21,"column":44},"end":{"row":21,"column":45},"action":"insert","lines":[" "],"id":61}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"insert","lines":[" "],"id":62}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"insert","lines":["b"],"id":63}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"remove","lines":["b"],"id":64}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"remove","lines":[" "],"id":65}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"insert","lines":["r"],"id":66}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"remove","lines":["r"],"id":67}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"insert","lines":["b"],"id":68}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"insert","lines":["r"],"id":69}],[{"start":{"row":21,"column":47},"end":{"row":21,"column":48},"action":"insert","lines":["n"],"id":70}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"insert","lines":[" "],"id":71}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"remove","lines":[" "],"id":72}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"insert","lines":["-"],"id":73}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"remove","lines":["-"],"id":74}],[{"start":{"row":21,"column":47},"end":{"row":21,"column":48},"action":"remove","lines":["n"],"id":75}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"remove","lines":["r"],"id":76}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"insert","lines":["t"],"id":77}],[{"start":{"row":21,"column":47},"end":{"row":21,"column":48},"action":"insert","lines":["n"],"id":78}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"insert","lines":["-"],"id":79}],[{"start":{"row":21,"column":49},"end":{"row":21,"column":50},"action":"insert","lines":["p"],"id":80}],[{"start":{"row":21,"column":50},"end":{"row":21,"column":51},"action":"insert","lines":["r"],"id":81}],[{"start":{"row":21,"column":51},"end":{"row":21,"column":52},"action":"insert","lines":["i"],"id":82}],[{"start":{"row":21,"column":52},"end":{"row":21,"column":53},"action":"insert","lines":["m"],"id":83}],[{"start":{"row":21,"column":53},"end":{"row":21,"column":54},"action":"insert","lines":["a"],"id":84}],[{"start":{"row":21,"column":54},"end":{"row":21,"column":55},"action":"insert","lines":["r"],"id":85}],[{"start":{"row":21,"column":55},"end":{"row":21,"column":56},"action":"insert","lines":["y"],"id":86}],[{"start":{"row":21,"column":56},"end":{"row":21,"column":57},"action":"insert","lines":[" "],"id":87}],[{"start":{"row":21,"column":56},"end":{"row":21,"column":57},"action":"remove","lines":[" "],"id":88}],[{"start":{"row":21,"column":32},"end":{"row":21,"column":33},"action":"insert","lines":["/"],"id":89}],[{"start":{"row":21,"column":33},"end":{"row":21,"column":34},"action":"insert","lines":["c"],"id":90}],[{"start":{"row":21,"column":34},"end":{"row":21,"column":35},"action":"insert","lines":["a"],"id":91}],[{"start":{"row":21,"column":35},"end":{"row":21,"column":36},"action":"insert","lines":["m"],"id":92}],[{"start":{"row":21,"column":36},"end":{"row":21,"column":37},"action":"insert","lines":["p"],"id":93}],[{"start":{"row":21,"column":37},"end":{"row":21,"column":38},"action":"insert","lines":["g"],"id":94}],[{"start":{"row":21,"column":38},"end":{"row":21,"column":39},"action":"insert","lines":["r"],"id":95}],[{"start":{"row":21,"column":39},"end":{"row":21,"column":40},"action":"insert","lines":["u"],"id":96}],[{"start":{"row":21,"column":40},"end":{"row":21,"column":41},"action":"insert","lines":["n"],"id":97}],[{"start":{"row":21,"column":41},"end":{"row":21,"column":42},"action":"insert","lines":["d"],"id":98}],[{"start":{"row":21,"column":42},"end":{"row":21,"column":43},"action":"insert","lines":["s"],"id":99},{"start":{"row":21,"column":43},"end":{"row":21,"column":44},"action":"insert","lines":[" "]}],[{"start":{"row":21,"column":43},"end":{"row":21,"column":44},"action":"remove","lines":[" "],"id":100}],[{"start":{"row":21,"column":42},"end":{"row":21,"column":43},"action":"remove","lines":["s"],"id":101}],[{"start":{"row":21,"column":41},"end":{"row":21,"column":42},"action":"remove","lines":["d"],"id":102}],[{"start":{"row":21,"column":40},"end":{"row":21,"column":41},"action":"remove","lines":["n"],"id":103}],[{"start":{"row":21,"column":39},"end":{"row":21,"column":40},"action":"remove","lines":["u"],"id":104}],[{"start":{"row":21,"column":39},"end":{"row":21,"column":40},"action":"insert","lines":["o"],"id":105}],[{"start":{"row":21,"column":40},"end":{"row":21,"column":41},"action":"insert","lines":["u"],"id":106}],[{"start":{"row":21,"column":41},"end":{"row":21,"column":42},"action":"insert","lines":["n"],"id":107}],[{"start":{"row":21,"column":42},"end":{"row":21,"column":43},"action":"insert","lines":["d"],"id":108}],[{"start":{"row":21,"column":43},"end":{"row":21,"column":44},"action":"insert","lines":["s"],"id":109}],[{"start":{"row":21,"column":44},"end":{"row":21,"column":45},"action":"insert","lines":[" "],"id":110}],[{"start":{"row":21,"column":44},"end":{"row":21,"column":45},"action":"remove","lines":[" "],"id":111}],[{"start":{"row":21,"column":44},"end":{"row":21,"column":45},"action":"insert","lines":["/"],"id":112}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"insert","lines":["2"],"id":113}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"insert","lines":["1"],"id":114}],[{"start":{"row":21,"column":47},"end":{"row":21,"column":48},"action":"insert","lines":["8"],"id":115}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"insert","lines":["7"],"id":116}],[{"start":{"row":21,"column":49},"end":{"row":21,"column":50},"action":"insert","lines":["3"],"id":117}],[{"start":{"row":21,"column":50},"end":{"row":21,"column":51},"action":"insert","lines":["8"],"id":118}],[{"start":{"row":21,"column":51},"end":{"row":21,"column":52},"action":"insert","lines":["9"],"id":119}],[{"start":{"row":21,"column":52},"end":{"row":21,"column":53},"action":"insert","lines":["1"],"id":120}],[{"start":{"row":21,"column":53},"end":{"row":21,"column":54},"action":"insert","lines":["2"],"id":121}],[{"start":{"row":21,"column":54},"end":{"row":21,"column":55},"action":"insert","lines":["3"],"id":122}],[{"start":{"row":21,"column":55},"end":{"row":21,"column":56},"action":"insert","lines":["6"],"id":123}],[{"start":{"row":21,"column":55},"end":{"row":21,"column":56},"action":"remove","lines":["6"],"id":124}],[{"start":{"row":21,"column":54},"end":{"row":21,"column":55},"action":"remove","lines":["3"],"id":125}],[{"start":{"row":21,"column":53},"end":{"row":21,"column":54},"action":"remove","lines":["2"],"id":126}],[{"start":{"row":21,"column":52},"end":{"row":21,"column":53},"action":"remove","lines":["1"],"id":127}],[{"start":{"row":21,"column":51},"end":{"row":21,"column":52},"action":"remove","lines":["9"],"id":128}],[{"start":{"row":21,"column":50},"end":{"row":21,"column":51},"action":"remove","lines":["8"],"id":129}],[{"start":{"row":21,"column":49},"end":{"row":21,"column":50},"action":"remove","lines":["3"],"id":130}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"remove","lines":["7"],"id":131}],[{"start":{"row":21,"column":47},"end":{"row":21,"column":48},"action":"remove","lines":["8"],"id":132}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"remove","lines":["1"],"id":133}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"remove","lines":["2"],"id":134}],[{"start":{"row":21,"column":45},"end":{"row":21,"column":46},"action":"insert","lines":["<"],"id":135}],[{"start":{"row":21,"column":46},"end":{"row":21,"column":47},"action":"insert","lines":["%"],"id":136}],[{"start":{"row":21,"column":47},"end":{"row":21,"column":48},"action":"insert","lines":["="],"id":137}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"insert","lines":[" "],"id":138}],[{"start":{"row":21,"column":49},"end":{"row":21,"column":50},"action":"insert","lines":["%"],"id":139}],[{"start":{"row":21,"column":50},"end":{"row":21,"column":51},"action":"insert","lines":[">"],"id":140}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"remove","lines":[" "],"id":141}],[{"start":{"row":21,"column":48},"end":{"row":21,"column":49},"action":"insert","lines":[" "],"id":142}],[{"start":{"row":21,"column":49},"end":{"row":21,"column":50},"action":"insert","lines":["c"],"id":143}],[{"start":{"row":21,"column":50},"end":{"row":21,"column":51},"action":"insert","lines":["a"],"id":144}],[{"start":{"row":21,"column":51},"end":{"row":21,"column":52},"action":"insert","lines":["m"],"id":145}],[{"start":{"row":21,"column":52},"end":{"row":21,"column":53},"action":"insert","lines":["p"],"id":146}],[{"start":{"row":21,"column":53},"end":{"row":21,"column":54},"action":"insert","lines":["g"],"id":147}],[{"start":{"row":21,"column":54},"end":{"row":21,"column":55},"action":"insert","lines":["r"],"id":148}],[{"start":{"row":21,"column":55},"end":{"row":21,"column":56},"action":"insert","lines":["o"],"id":149}],[{"start":{"row":21,"column":56},"end":{"row":21,"column":57},"action":"insert","lines":["u"],"id":150}],[{"start":{"row":21,"column":57},"end":{"row":21,"column":58},"action":"insert","lines":["n"],"id":151}],[{"start":{"row":21,"column":58},"end":{"row":21,"column":59},"action":"insert","lines":["d"],"id":152}],[{"start":{"row":21,"column":59},"end":{"row":21,"column":60},"action":"insert","lines":[" "],"id":153}],[{"start":{"row":21,"column":59},"end":{"row":21,"column":60},"action":"remove","lines":[" "],"id":154}],[{"start":{"row":21,"column":59},"end":{"row":21,"column":60},"action":"insert","lines":["."],"id":155}],[{"start":{"row":21,"column":60},"end":{"row":21,"column":61},"action":"insert","lines":["_"],"id":156}],[{"start":{"row":21,"column":61},"end":{"row":21,"column":62},"action":"insert","lines":["i"],"id":157}],[{"start":{"row":21,"column":62},"end":{"row":21,"column":63},"action":"insert","lines":["d"],"id":158}],[{"start":{"row":21,"column":63},"end":{"row":21,"column":64},"action":"insert","lines":[" "],"id":159}],[{"start":{"row":21,"column":63},"end":{"row":21,"column":64},"action":"remove","lines":[" "],"id":160}],[{"start":{"row":21,"column":63},"end":{"row":21,"column":64},"action":"insert","lines":[" "],"id":161}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":29},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":50,"mode":"ace/mode/ejs"}},"timestamp":1445283961509,"hash":"7ba9658e91cc9438c5cd03973aedc35bd7f05584"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/views/new.ejs b/.c9/metadata/workspace/YelpCamp/v2/views/new.ejs
deleted file mode 100644
index 7c6b2beb..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/views/new.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"new.ejs","tooltip":"/YelpCamp/v2/views/new.ejs","undoManager":{"mark":31,"position":31,"stack":[[{"start":{"row":11,"column":22},"end":{"row":12,"column":0},"action":"insert","lines":["",""],"id":2},{"start":{"row":12,"column":0},"end":{"row":12,"column":16},"action":"insert","lines":[" "]}],[{"start":{"row":12,"column":16},"end":{"row":14,"column":22},"action":"insert","lines":["
"," ","
"],"id":3}],[{"start":{"row":13,"column":88},"end":{"row":13,"column":95},"action":"remove","lines":["age url"],"id":4}],[{"start":{"row":13,"column":87},"end":{"row":13,"column":88},"action":"remove","lines":["m"],"id":5}],[{"start":{"row":13,"column":86},"end":{"row":13,"column":87},"action":"remove","lines":["i"],"id":6}],[{"start":{"row":13,"column":86},"end":{"row":13,"column":87},"action":"insert","lines":["d"],"id":7}],[{"start":{"row":13,"column":87},"end":{"row":13,"column":88},"action":"insert","lines":["e"],"id":8}],[{"start":{"row":13,"column":88},"end":{"row":13,"column":89},"action":"insert","lines":["s"],"id":9}],[{"start":{"row":13,"column":89},"end":{"row":13,"column":90},"action":"insert","lines":["c"],"id":10}],[{"start":{"row":13,"column":90},"end":{"row":13,"column":91},"action":"insert","lines":["r"],"id":11}],[{"start":{"row":13,"column":91},"end":{"row":13,"column":92},"action":"insert","lines":["i"],"id":12}],[{"start":{"row":13,"column":92},"end":{"row":13,"column":93},"action":"insert","lines":["p"],"id":13}],[{"start":{"row":13,"column":93},"end":{"row":13,"column":94},"action":"insert","lines":["t"],"id":14}],[{"start":{"row":13,"column":94},"end":{"row":13,"column":95},"action":"insert","lines":["i"],"id":15}],[{"start":{"row":13,"column":95},"end":{"row":13,"column":96},"action":"insert","lines":["o"],"id":16}],[{"start":{"row":13,"column":96},"end":{"row":13,"column":97},"action":"insert","lines":["n"],"id":17}],[{"start":{"row":13,"column":70},"end":{"row":13,"column":71},"action":"remove","lines":["e"],"id":18}],[{"start":{"row":13,"column":69},"end":{"row":13,"column":70},"action":"remove","lines":["g"],"id":19}],[{"start":{"row":13,"column":68},"end":{"row":13,"column":69},"action":"remove","lines":["a"],"id":20}],[{"start":{"row":13,"column":67},"end":{"row":13,"column":68},"action":"remove","lines":["m"],"id":21}],[{"start":{"row":13,"column":66},"end":{"row":13,"column":67},"action":"remove","lines":["i"],"id":22}],[{"start":{"row":13,"column":66},"end":{"row":13,"column":67},"action":"insert","lines":["d"],"id":23}],[{"start":{"row":13,"column":67},"end":{"row":13,"column":68},"action":"insert","lines":["e"],"id":24}],[{"start":{"row":13,"column":68},"end":{"row":13,"column":69},"action":"insert","lines":["s"],"id":25}],[{"start":{"row":13,"column":69},"end":{"row":13,"column":70},"action":"insert","lines":["c"],"id":26}],[{"start":{"row":13,"column":70},"end":{"row":13,"column":71},"action":"insert","lines":["r"],"id":27}],[{"start":{"row":13,"column":71},"end":{"row":13,"column":72},"action":"insert","lines":["i"],"id":28}],[{"start":{"row":13,"column":72},"end":{"row":13,"column":73},"action":"insert","lines":["p"],"id":29}],[{"start":{"row":13,"column":73},"end":{"row":13,"column":74},"action":"insert","lines":["t"],"id":30}],[{"start":{"row":13,"column":74},"end":{"row":13,"column":75},"action":"insert","lines":["i"],"id":31}],[{"start":{"row":13,"column":75},"end":{"row":13,"column":76},"action":"insert","lines":["o"],"id":32}],[{"start":{"row":13,"column":76},"end":{"row":13,"column":77},"action":"insert","lines":["n"],"id":33}]]},"ace":{"folds":[],"scrolltop":90,"scrollleft":2,"selection":{"start":{"row":13,"column":62},"end":{"row":13,"column":78},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":50,"mode":"ace/mode/ejs"}},"timestamp":1445284403015,"hash":"b05649aaee23ed6d0302ad1ce63da0680e363b57"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v2/views/show.ejs b/.c9/metadata/workspace/YelpCamp/v2/views/show.ejs
deleted file mode 100644
index 4aa95011..00000000
--- a/.c9/metadata/workspace/YelpCamp/v2/views/show.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"show.ejs","tooltip":"/YelpCamp/v2/views/show.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":4,"column":19},"end":{"row":4,"column":20},"action":"insert","lines":["r"],"id":94}],[{"start":{"row":4,"column":20},"end":{"row":4,"column":21},"action":"insert","lines":["o"],"id":95}],[{"start":{"row":4,"column":21},"end":{"row":4,"column":22},"action":"insert","lines":["u"],"id":96}],[{"start":{"row":4,"column":22},"end":{"row":4,"column":23},"action":"insert","lines":["n"],"id":97}],[{"start":{"row":4,"column":23},"end":{"row":4,"column":24},"action":"insert","lines":["d"],"id":98}],[{"start":{"row":4,"column":24},"end":{"row":4,"column":25},"action":"insert","lines":[" "],"id":99}],[{"start":{"row":4,"column":24},"end":{"row":4,"column":25},"action":"remove","lines":[" "],"id":100}],[{"start":{"row":4,"column":24},"end":{"row":4,"column":25},"action":"insert","lines":["."],"id":101}],[{"start":{"row":4,"column":25},"end":{"row":4,"column":26},"action":"insert","lines":["i"],"id":102}],[{"start":{"row":4,"column":26},"end":{"row":4,"column":27},"action":"insert","lines":["m"],"id":103}],[{"start":{"row":4,"column":27},"end":{"row":4,"column":28},"action":"insert","lines":["a"],"id":104}],[{"start":{"row":4,"column":28},"end":{"row":4,"column":29},"action":"insert","lines":["g"],"id":105}],[{"start":{"row":4,"column":29},"end":{"row":4,"column":30},"action":"insert","lines":[" "],"id":106}],[{"start":{"row":4,"column":30},"end":{"row":4,"column":31},"action":"insert","lines":["e"],"id":107}],[{"start":{"row":4,"column":30},"end":{"row":4,"column":31},"action":"remove","lines":["e"],"id":108}],[{"start":{"row":4,"column":29},"end":{"row":4,"column":30},"action":"remove","lines":[" "],"id":109}],[{"start":{"row":4,"column":29},"end":{"row":4,"column":30},"action":"insert","lines":["e"],"id":110}],[{"start":{"row":4,"column":30},"end":{"row":4,"column":31},"action":"insert","lines":[" "],"id":111}],[{"start":{"row":4,"column":31},"end":{"row":4,"column":32},"action":"insert","lines":["%"],"id":112}],[{"start":{"row":4,"column":32},"end":{"row":4,"column":33},"action":"insert","lines":[">"],"id":113}],[{"start":{"row":4,"column":35},"end":{"row":5,"column":0},"action":"insert","lines":["",""],"id":114}],[{"start":{"row":5,"column":0},"end":{"row":6,"column":0},"action":"insert","lines":["",""],"id":115}],[{"start":{"row":6,"column":0},"end":{"row":6,"column":1},"action":"insert","lines":["p"],"id":116}],[{"start":{"row":6,"column":0},"end":{"row":6,"column":1},"action":"remove","lines":["p"],"id":117}],[{"start":{"row":6,"column":0},"end":{"row":6,"column":1},"action":"insert","lines":["<"],"id":118}],[{"start":{"row":6,"column":1},"end":{"row":6,"column":2},"action":"insert","lines":["p"],"id":119}],[{"start":{"row":6,"column":2},"end":{"row":6,"column":7},"action":"insert","lines":[">"],"id":120}],[{"start":{"row":6,"column":3},"end":{"row":6,"column":4},"action":"insert","lines":["<"],"id":121}],[{"start":{"row":6,"column":4},"end":{"row":6,"column":5},"action":"insert","lines":["%"],"id":122}],[{"start":{"row":6,"column":5},"end":{"row":6,"column":6},"action":"insert","lines":["="],"id":123}],[{"start":{"row":6,"column":6},"end":{"row":6,"column":7},"action":"insert","lines":[" "],"id":124}],[{"start":{"row":6,"column":7},"end":{"row":6,"column":8},"action":"insert","lines":["c"],"id":125}],[{"start":{"row":6,"column":8},"end":{"row":6,"column":9},"action":"insert","lines":["a"],"id":126}],[{"start":{"row":6,"column":9},"end":{"row":6,"column":10},"action":"insert","lines":["m"],"id":127}],[{"start":{"row":6,"column":10},"end":{"row":6,"column":11},"action":"insert","lines":["p"],"id":128}],[{"start":{"row":6,"column":11},"end":{"row":6,"column":12},"action":"insert","lines":["g"],"id":129}],[{"start":{"row":6,"column":12},"end":{"row":6,"column":13},"action":"insert","lines":["o"],"id":130}],[{"start":{"row":6,"column":13},"end":{"row":6,"column":14},"action":"insert","lines":["u"],"id":131}],[{"start":{"row":6,"column":13},"end":{"row":6,"column":14},"action":"remove","lines":["u"],"id":132}],[{"start":{"row":6,"column":12},"end":{"row":6,"column":13},"action":"remove","lines":["o"],"id":133}],[{"start":{"row":6,"column":12},"end":{"row":6,"column":13},"action":"insert","lines":["r"],"id":134}],[{"start":{"row":6,"column":13},"end":{"row":6,"column":14},"action":"insert","lines":["o"],"id":135}],[{"start":{"row":6,"column":14},"end":{"row":6,"column":15},"action":"insert","lines":["u"],"id":136}],[{"start":{"row":6,"column":15},"end":{"row":6,"column":16},"action":"insert","lines":["n"],"id":137}],[{"start":{"row":6,"column":16},"end":{"row":6,"column":17},"action":"insert","lines":["d"],"id":138}],[{"start":{"row":6,"column":17},"end":{"row":6,"column":18},"action":"insert","lines":[" "],"id":139}],[{"start":{"row":6,"column":17},"end":{"row":6,"column":18},"action":"remove","lines":[" "],"id":140}],[{"start":{"row":6,"column":17},"end":{"row":6,"column":18},"action":"insert","lines":["."],"id":141}],[{"start":{"row":6,"column":18},"end":{"row":6,"column":19},"action":"insert","lines":["d"],"id":142}],[{"start":{"row":6,"column":19},"end":{"row":6,"column":20},"action":"insert","lines":["e"],"id":143}],[{"start":{"row":6,"column":20},"end":{"row":6,"column":21},"action":"insert","lines":["s"],"id":144}],[{"start":{"row":6,"column":21},"end":{"row":6,"column":22},"action":"insert","lines":["c"],"id":145}],[{"start":{"row":6,"column":22},"end":{"row":6,"column":23},"action":"insert","lines":["r"],"id":146}],[{"start":{"row":6,"column":23},"end":{"row":6,"column":24},"action":"insert","lines":["i"],"id":147}],[{"start":{"row":6,"column":24},"end":{"row":6,"column":25},"action":"insert","lines":["p"],"id":148}],[{"start":{"row":6,"column":25},"end":{"row":6,"column":26},"action":"insert","lines":["t"],"id":149}],[{"start":{"row":6,"column":26},"end":{"row":6,"column":27},"action":"insert","lines":["i"],"id":150}],[{"start":{"row":6,"column":27},"end":{"row":6,"column":28},"action":"insert","lines":["o"],"id":151}],[{"start":{"row":6,"column":28},"end":{"row":6,"column":29},"action":"insert","lines":["n"],"id":152}],[{"start":{"row":6,"column":29},"end":{"row":6,"column":30},"action":"insert","lines":[" "],"id":153}],[{"start":{"row":6,"column":29},"end":{"row":6,"column":30},"action":"remove","lines":[" "],"id":154}],[{"start":{"row":6,"column":29},"end":{"row":6,"column":30},"action":"insert","lines":[" "],"id":155}],[{"start":{"row":6,"column":30},"end":{"row":6,"column":31},"action":"insert","lines":["%"],"id":156}],[{"start":{"row":6,"column":31},"end":{"row":6,"column":32},"action":"insert","lines":[">"],"id":157}],[{"start":{"row":2,"column":3},"end":{"row":2,"column":23},"action":"remove","lines":["<%=campground.name%>"],"id":162}],[{"start":{"row":2,"column":0},"end":{"row":2,"column":7},"action":"remove","lines":[""],"id":163}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"remove","lines":["",""],"id":164}],[{"start":{"row":0,"column":35},"end":{"row":1,"column":0},"action":"remove","lines":["",""],"id":165}],[{"start":{"row":0,"column":5},"end":{"row":0,"column":30},"action":"remove","lines":["his is the show template!"],"id":166}],[{"start":{"row":0,"column":4},"end":{"row":0,"column":5},"action":"remove","lines":["T"],"id":167}],[{"start":{"row":0,"column":4},"end":{"row":0,"column":24},"action":"insert","lines":["<%=campground.name%>"],"id":168}],[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":169}],[{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"insert","lines":["<"],"id":170}],[{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"insert","lines":["%"],"id":171}],[{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"insert","lines":[" "],"id":172}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":["i"],"id":173}],[{"start":{"row":0,"column":4},"end":{"row":0,"column":5},"action":"insert","lines":["n"],"id":174}],[{"start":{"row":0,"column":5},"end":{"row":0,"column":6},"action":"insert","lines":["c"],"id":175}],[{"start":{"row":0,"column":6},"end":{"row":0,"column":7},"action":"insert","lines":["l"],"id":176}],[{"start":{"row":0,"column":7},"end":{"row":0,"column":8},"action":"insert","lines":["u"],"id":177}],[{"start":{"row":0,"column":8},"end":{"row":0,"column":9},"action":"insert","lines":["d"],"id":178}],[{"start":{"row":0,"column":9},"end":{"row":0,"column":10},"action":"insert","lines":["e"],"id":179}],[{"start":{"row":0,"column":10},"end":{"row":0,"column":11},"action":"insert","lines":[" "],"id":180}],[{"start":{"row":0,"column":10},"end":{"row":0,"column":11},"action":"remove","lines":[" "],"id":181}],[{"start":{"row":0,"column":0},"end":{"row":0,"column":10},"action":"remove","lines":["<% include"],"id":182},{"start":{"row":0,"column":0},"end":{"row":0,"column":29},"action":"insert","lines":["<% include partials/header %>"]}],[{"start":{"row":5,"column":36},"end":{"row":6,"column":0},"action":"insert","lines":["",""],"id":183}],[{"start":{"row":6,"column":0},"end":{"row":6,"column":29},"action":"insert","lines":["<% include partials/header %>"],"id":184}],[{"start":{"row":6,"column":25},"end":{"row":6,"column":26},"action":"remove","lines":["r"],"id":185}],[{"start":{"row":6,"column":24},"end":{"row":6,"column":25},"action":"remove","lines":["e"],"id":186}],[{"start":{"row":6,"column":23},"end":{"row":6,"column":24},"action":"remove","lines":["d"],"id":187}],[{"start":{"row":6,"column":23},"end":{"row":6,"column":24},"action":"insert","lines":["o"],"id":188}],[{"start":{"row":6,"column":23},"end":{"row":6,"column":24},"action":"remove","lines":["o"],"id":189}],[{"start":{"row":6,"column":22},"end":{"row":6,"column":23},"action":"remove","lines":["a"],"id":190}],[{"start":{"row":6,"column":21},"end":{"row":6,"column":22},"action":"remove","lines":["e"],"id":191}],[{"start":{"row":6,"column":20},"end":{"row":6,"column":21},"action":"remove","lines":["h"],"id":192}],[{"start":{"row":6,"column":20},"end":{"row":6,"column":21},"action":"insert","lines":["f"],"id":193}],[{"start":{"row":6,"column":21},"end":{"row":6,"column":22},"action":"insert","lines":["o"],"id":194}],[{"start":{"row":6,"column":22},"end":{"row":6,"column":23},"action":"insert","lines":["o"],"id":195}],[{"start":{"row":6,"column":23},"end":{"row":6,"column":24},"action":"insert","lines":["t"],"id":196}],[{"start":{"row":6,"column":24},"end":{"row":6,"column":25},"action":"insert","lines":["e"],"id":197}],[{"start":{"row":6,"column":25},"end":{"row":6,"column":26},"action":"insert","lines":["r"],"id":198}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":6,"column":26},"end":{"row":6,"column":26},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":50,"mode":"ace/mode/ejs"}},"timestamp":1445284301276,"hash":"6cf438fcae9f73c518192380bd2353fe54c11e8f"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v3/app.js b/.c9/metadata/workspace/YelpCamp/v3/app.js
deleted file mode 100644
index 5d2c3dc2..00000000
--- a/.c9/metadata/workspace/YelpCamp/v3/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v3/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":70,"column":46},"end":{"row":70,"column":47},"action":"insert","lines":["i"],"id":471}],[{"start":{"row":70,"column":47},"end":{"row":70,"column":48},"action":"insert","lines":["o"],"id":472}],[{"start":{"row":70,"column":48},"end":{"row":70,"column":49},"action":"insert","lines":["n"],"id":473}],[{"start":{"row":70,"column":49},"end":{"row":70,"column":50},"action":"insert","lines":[" "],"id":474}],[{"start":{"row":70,"column":49},"end":{"row":70,"column":50},"action":"remove","lines":[" "],"id":475}],[{"start":{"row":70,"column":49},"end":{"row":70,"column":51},"action":"insert","lines":["()"],"id":476}],[{"start":{"row":70,"column":50},"end":{"row":70,"column":51},"action":"insert","lines":["r"],"id":477}],[{"start":{"row":70,"column":51},"end":{"row":70,"column":52},"action":"insert","lines":["e"],"id":478}],[{"start":{"row":70,"column":52},"end":{"row":70,"column":53},"action":"insert","lines":["q"],"id":479}],[{"start":{"row":70,"column":53},"end":{"row":70,"column":54},"action":"insert","lines":[" "],"id":480}],[{"start":{"row":70,"column":53},"end":{"row":70,"column":54},"action":"remove","lines":[" "],"id":481}],[{"start":{"row":70,"column":53},"end":{"row":70,"column":54},"action":"insert","lines":[","],"id":482}],[{"start":{"row":70,"column":54},"end":{"row":70,"column":55},"action":"insert","lines":[" "],"id":483}],[{"start":{"row":70,"column":55},"end":{"row":70,"column":56},"action":"insert","lines":["r"],"id":484}],[{"start":{"row":70,"column":56},"end":{"row":70,"column":57},"action":"insert","lines":["e"],"id":485}],[{"start":{"row":70,"column":57},"end":{"row":70,"column":58},"action":"insert","lines":["s"],"id":486}],[{"start":{"row":70,"column":58},"end":{"row":70,"column":59},"action":"insert","lines":[" "],"id":487}],[{"start":{"row":70,"column":58},"end":{"row":70,"column":59},"action":"remove","lines":[" "],"id":488}],[{"start":{"row":70,"column":59},"end":{"row":70,"column":61},"action":"insert","lines":["{}"],"id":489}],[{"start":{"row":70,"column":60},"end":{"row":72,"column":0},"action":"insert","lines":[""," ",""],"id":490}],[{"start":{"row":72,"column":2},"end":{"row":72,"column":3},"action":"insert","lines":[";"],"id":491}],[{"start":{"row":71,"column":3},"end":{"row":71,"column":4},"action":"insert","lines":["r"],"id":492}],[{"start":{"row":71,"column":4},"end":{"row":71,"column":5},"action":"insert","lines":["e"],"id":493}],[{"start":{"row":71,"column":5},"end":{"row":71,"column":6},"action":"insert","lines":["s"],"id":494}],[{"start":{"row":71,"column":6},"end":{"row":71,"column":7},"action":"insert","lines":[" "],"id":495}],[{"start":{"row":71,"column":6},"end":{"row":71,"column":7},"action":"remove","lines":[" "],"id":496}],[{"start":{"row":71,"column":6},"end":{"row":71,"column":7},"action":"insert","lines":["."],"id":497}],[{"start":{"row":71,"column":7},"end":{"row":71,"column":8},"action":"insert","lines":["s"],"id":498}],[{"start":{"row":71,"column":8},"end":{"row":71,"column":9},"action":"insert","lines":["e"],"id":499}],[{"start":{"row":71,"column":9},"end":{"row":71,"column":10},"action":"insert","lines":["n"],"id":500}],[{"start":{"row":71,"column":10},"end":{"row":71,"column":11},"action":"insert","lines":["d"],"id":501}],[{"start":{"row":71,"column":11},"end":{"row":71,"column":12},"action":"insert","lines":[" "],"id":502}],[{"start":{"row":71,"column":11},"end":{"row":71,"column":12},"action":"remove","lines":[" "],"id":503}],[{"start":{"row":71,"column":11},"end":{"row":71,"column":13},"action":"insert","lines":["()"],"id":504}],[{"start":{"row":71,"column":12},"end":{"row":71,"column":14},"action":"insert","lines":["\"\""],"id":505}],[{"start":{"row":71,"column":13},"end":{"row":71,"column":14},"action":"insert","lines":["T"],"id":506}],[{"start":{"row":71,"column":14},"end":{"row":71,"column":15},"action":"insert","lines":["H"],"id":507}],[{"start":{"row":71,"column":15},"end":{"row":71,"column":16},"action":"insert","lines":["I"],"id":508}],[{"start":{"row":71,"column":16},"end":{"row":71,"column":17},"action":"insert","lines":["S"],"id":509}],[{"start":{"row":71,"column":17},"end":{"row":71,"column":18},"action":"insert","lines":[" "],"id":510}],[{"start":{"row":71,"column":18},"end":{"row":71,"column":19},"action":"insert","lines":["W"],"id":511}],[{"start":{"row":71,"column":19},"end":{"row":71,"column":20},"action":"insert","lines":["I"],"id":512}],[{"start":{"row":71,"column":20},"end":{"row":71,"column":21},"action":"insert","lines":["L"],"id":513}],[{"start":{"row":71,"column":21},"end":{"row":71,"column":22},"action":"insert","lines":["L"],"id":514}],[{"start":{"row":71,"column":22},"end":{"row":71,"column":23},"action":"insert","lines":[" "],"id":515}],[{"start":{"row":71,"column":23},"end":{"row":71,"column":24},"action":"insert","lines":["B"],"id":516}],[{"start":{"row":71,"column":24},"end":{"row":71,"column":25},"action":"insert","lines":["E"],"id":517}],[{"start":{"row":71,"column":25},"end":{"row":71,"column":26},"action":"insert","lines":[" "],"id":518}],[{"start":{"row":71,"column":26},"end":{"row":71,"column":27},"action":"insert","lines":["T"],"id":519}],[{"start":{"row":71,"column":27},"end":{"row":71,"column":28},"action":"insert","lines":["H"],"id":520}],[{"start":{"row":71,"column":28},"end":{"row":71,"column":29},"action":"insert","lines":["E"],"id":521}],[{"start":{"row":71,"column":29},"end":{"row":71,"column":30},"action":"insert","lines":[" "],"id":522}],[{"start":{"row":71,"column":30},"end":{"row":71,"column":31},"action":"insert","lines":["C"],"id":523}],[{"start":{"row":71,"column":31},"end":{"row":71,"column":32},"action":"insert","lines":["O"],"id":524}],[{"start":{"row":71,"column":32},"end":{"row":71,"column":33},"action":"insert","lines":["M"],"id":525}],[{"start":{"row":71,"column":33},"end":{"row":71,"column":34},"action":"insert","lines":["M"],"id":526}],[{"start":{"row":71,"column":34},"end":{"row":71,"column":35},"action":"insert","lines":["E"],"id":527}],[{"start":{"row":71,"column":35},"end":{"row":71,"column":36},"action":"insert","lines":["N"],"id":528}],[{"start":{"row":71,"column":36},"end":{"row":71,"column":37},"action":"insert","lines":["T"],"id":529}],[{"start":{"row":71,"column":37},"end":{"row":71,"column":38},"action":"insert","lines":[" "],"id":530}],[{"start":{"row":71,"column":38},"end":{"row":71,"column":39},"action":"insert","lines":["F"],"id":531}],[{"start":{"row":71,"column":39},"end":{"row":71,"column":40},"action":"insert","lines":["O"],"id":532}],[{"start":{"row":71,"column":40},"end":{"row":71,"column":41},"action":"insert","lines":["R"],"id":533}],[{"start":{"row":71,"column":41},"end":{"row":71,"column":42},"action":"insert","lines":["M"],"id":534}],[{"start":{"row":71,"column":42},"end":{"row":71,"column":43},"action":"insert","lines":[" "],"id":535}],[{"start":{"row":71,"column":42},"end":{"row":71,"column":43},"action":"remove","lines":[" "],"id":536}],[{"start":{"row":71,"column":42},"end":{"row":71,"column":43},"action":"insert","lines":["!"],"id":537}],[{"start":{"row":71,"column":45},"end":{"row":71,"column":46},"action":"insert","lines":[";"],"id":538}],[{"start":{"row":71,"column":3},"end":{"row":71,"column":47},"action":"remove","lines":["res.send(\"THIS WILL BE THE COMMENT FORM!\"); "],"id":539}],[{"start":{"row":71,"column":3},"end":{"row":71,"column":4},"action":"insert","lines":["r"],"id":540}],[{"start":{"row":71,"column":4},"end":{"row":71,"column":5},"action":"insert","lines":["e"],"id":541}],[{"start":{"row":71,"column":5},"end":{"row":71,"column":6},"action":"insert","lines":["s"],"id":542}],[{"start":{"row":71,"column":6},"end":{"row":71,"column":7},"action":"insert","lines":[" "],"id":543}],[{"start":{"row":71,"column":6},"end":{"row":71,"column":7},"action":"remove","lines":[" "],"id":544}],[{"start":{"row":71,"column":6},"end":{"row":71,"column":7},"action":"insert","lines":["."],"id":545}],[{"start":{"row":71,"column":7},"end":{"row":71,"column":8},"action":"insert","lines":["r"],"id":546}],[{"start":{"row":71,"column":8},"end":{"row":71,"column":9},"action":"insert","lines":["e"],"id":547}],[{"start":{"row":71,"column":9},"end":{"row":71,"column":10},"action":"insert","lines":["n"],"id":548}],[{"start":{"row":71,"column":10},"end":{"row":71,"column":11},"action":"insert","lines":["d"],"id":549}],[{"start":{"row":71,"column":11},"end":{"row":71,"column":12},"action":"insert","lines":["e"],"id":550}],[{"start":{"row":71,"column":12},"end":{"row":71,"column":13},"action":"insert","lines":["r"],"id":551}],[{"start":{"row":71,"column":13},"end":{"row":71,"column":14},"action":"insert","lines":[" "],"id":552}],[{"start":{"row":71,"column":13},"end":{"row":71,"column":14},"action":"remove","lines":[" "],"id":553}],[{"start":{"row":71,"column":13},"end":{"row":71,"column":15},"action":"insert","lines":["()"],"id":554}],[{"start":{"row":71,"column":14},"end":{"row":71,"column":16},"action":"insert","lines":["\"\""],"id":555}],[{"start":{"row":71,"column":15},"end":{"row":71,"column":16},"action":"insert","lines":["n"],"id":556}],[{"start":{"row":71,"column":16},"end":{"row":71,"column":17},"action":"insert","lines":["e"],"id":557}],[{"start":{"row":71,"column":17},"end":{"row":71,"column":18},"action":"insert","lines":["w"],"id":558}],[{"start":{"row":71,"column":18},"end":{"row":71,"column":19},"action":"insert","lines":[" "],"id":559}],[{"start":{"row":71,"column":18},"end":{"row":71,"column":19},"action":"remove","lines":[" "],"id":560}],[{"start":{"row":71,"column":18},"end":{"row":71,"column":19},"action":"insert","lines":["."],"id":561}],[{"start":{"row":71,"column":19},"end":{"row":71,"column":20},"action":"insert","lines":["e"],"id":562}],[{"start":{"row":71,"column":20},"end":{"row":71,"column":21},"action":"insert","lines":["j"],"id":563}],[{"start":{"row":71,"column":20},"end":{"row":71,"column":21},"action":"remove","lines":["j"],"id":564}],[{"start":{"row":71,"column":19},"end":{"row":71,"column":20},"action":"remove","lines":["e"],"id":565}],[{"start":{"row":71,"column":18},"end":{"row":71,"column":19},"action":"remove","lines":["."],"id":566}],[{"start":{"row":71,"column":20},"end":{"row":71,"column":21},"action":"insert","lines":[";"],"id":567}],[{"start":{"row":66,"column":0},"end":{"row":72,"column":3},"action":"remove","lines":["// ===================","// COMMENT ROUTES","// ===================","","app.get(\"/campgrounds/:id/comments/new\", function(req, res){"," res.render(\"new\");","});"],"id":568}],[{"start":{"row":66,"column":0},"end":{"row":67,"column":0},"action":"remove","lines":["",""],"id":569}],[{"start":{"row":65,"column":0},"end":{"row":66,"column":0},"action":"remove","lines":["",""],"id":570}],[{"start":{"row":64,"column":0},"end":{"row":65,"column":0},"action":"remove","lines":["",""],"id":571}]]},"ace":{"folds":[],"scrolltop":29,"scrollleft":0,"selection":{"start":{"row":64,"column":0},"end":{"row":64,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":0,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1445319506303,"hash":"f205cb0806e333d590dba258744f50b9a2f30517"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v3/models/campground.js b/.c9/metadata/workspace/YelpCamp/v3/models/campground.js
deleted file mode 100644
index cd9c8f19..00000000
--- a/.c9/metadata/workspace/YelpCamp/v3/models/campground.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campground.js","tooltip":"/YelpCamp/v3/models/campground.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":30,"scrollleft":0,"selection":{"start":{"row":6,"column":4},"end":{"row":6,"column":12},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445314897974,"hash":"196c2df19513dfb487c8eaac4d94294558634649"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v3/models/comment.js b/.c9/metadata/workspace/YelpCamp/v3/models/comment.js
deleted file mode 100644
index 20534b8f..00000000
--- a/.c9/metadata/workspace/YelpCamp/v3/models/comment.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"comment.js","tooltip":"/YelpCamp/v3/models/comment.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":2,"column":19},"end":{"row":2,"column":20},"action":"insert","lines":[" "],"id":94}],[{"start":{"row":2,"column":20},"end":{"row":2,"column":21},"action":"insert","lines":["m"],"id":95}],[{"start":{"row":2,"column":21},"end":{"row":2,"column":22},"action":"insert","lines":["o"],"id":96}],[{"start":{"row":2,"column":22},"end":{"row":2,"column":23},"action":"insert","lines":["n"],"id":97}],[{"start":{"row":2,"column":23},"end":{"row":2,"column":24},"action":"insert","lines":["g"],"id":98}],[{"start":{"row":2,"column":24},"end":{"row":2,"column":25},"action":"insert","lines":["o"],"id":99}],[{"start":{"row":2,"column":25},"end":{"row":2,"column":26},"action":"insert","lines":["o"],"id":100}],[{"start":{"row":2,"column":26},"end":{"row":2,"column":27},"action":"insert","lines":["s"],"id":101}],[{"start":{"row":2,"column":27},"end":{"row":2,"column":28},"action":"insert","lines":["e"],"id":102}],[{"start":{"row":2,"column":28},"end":{"row":2,"column":29},"action":"insert","lines":[" "],"id":103}],[{"start":{"row":2,"column":28},"end":{"row":2,"column":29},"action":"remove","lines":[" "],"id":104}],[{"start":{"row":2,"column":28},"end":{"row":2,"column":29},"action":"insert","lines":["."],"id":105}],[{"start":{"row":2,"column":29},"end":{"row":2,"column":30},"action":"insert","lines":["S"],"id":106}],[{"start":{"row":2,"column":30},"end":{"row":2,"column":31},"action":"insert","lines":["c"],"id":107}],[{"start":{"row":2,"column":31},"end":{"row":2,"column":32},"action":"insert","lines":["h"],"id":108}],[{"start":{"row":2,"column":32},"end":{"row":2,"column":33},"action":"insert","lines":["e"],"id":109}],[{"start":{"row":2,"column":33},"end":{"row":2,"column":34},"action":"insert","lines":["m"],"id":110}],[{"start":{"row":2,"column":34},"end":{"row":2,"column":35},"action":"insert","lines":["a"],"id":111}],[{"start":{"row":2,"column":35},"end":{"row":2,"column":36},"action":"insert","lines":[" "],"id":112}],[{"start":{"row":2,"column":35},"end":{"row":2,"column":36},"action":"remove","lines":[" "],"id":113}],[{"start":{"row":2,"column":35},"end":{"row":2,"column":37},"action":"insert","lines":["()"],"id":114}],[{"start":{"row":2,"column":36},"end":{"row":2,"column":38},"action":"insert","lines":["{}"],"id":115}],[{"start":{"row":2,"column":37},"end":{"row":4,"column":0},"action":"insert","lines":[""," ",""],"id":116}],[{"start":{"row":3,"column":4},"end":{"row":3,"column":5},"action":"insert","lines":["t"],"id":117}],[{"start":{"row":3,"column":5},"end":{"row":3,"column":6},"action":"insert","lines":["e"],"id":118}],[{"start":{"row":3,"column":6},"end":{"row":3,"column":7},"action":"insert","lines":["x"],"id":119}],[{"start":{"row":3,"column":7},"end":{"row":3,"column":8},"action":"insert","lines":["t"],"id":120}],[{"start":{"row":3,"column":8},"end":{"row":3,"column":9},"action":"insert","lines":[" "],"id":121}],[{"start":{"row":3,"column":8},"end":{"row":3,"column":9},"action":"remove","lines":[" "],"id":122}],[{"start":{"row":3,"column":8},"end":{"row":3,"column":9},"action":"insert","lines":[":"],"id":123}],[{"start":{"row":3,"column":9},"end":{"row":3,"column":10},"action":"insert","lines":[" "],"id":124}],[{"start":{"row":3,"column":10},"end":{"row":3,"column":11},"action":"insert","lines":["S"],"id":125}],[{"start":{"row":3,"column":11},"end":{"row":3,"column":12},"action":"insert","lines":["t"],"id":126}],[{"start":{"row":3,"column":12},"end":{"row":3,"column":13},"action":"insert","lines":["r"],"id":127}],[{"start":{"row":3,"column":13},"end":{"row":3,"column":14},"action":"insert","lines":["i"],"id":128}],[{"start":{"row":3,"column":14},"end":{"row":3,"column":15},"action":"insert","lines":["n"],"id":129}],[{"start":{"row":3,"column":15},"end":{"row":3,"column":16},"action":"insert","lines":["g"],"id":130}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"insert","lines":[" "],"id":131}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"remove","lines":[" "],"id":132}],[{"start":{"row":3,"column":16},"end":{"row":3,"column":17},"action":"insert","lines":[","],"id":133}],[{"start":{"row":3,"column":17},"end":{"row":4,"column":0},"action":"insert","lines":["",""],"id":134},{"start":{"row":4,"column":0},"end":{"row":4,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":4,"column":4},"end":{"row":4,"column":5},"action":"insert","lines":["a"],"id":135}],[{"start":{"row":4,"column":5},"end":{"row":4,"column":6},"action":"insert","lines":["u"],"id":136}],[{"start":{"row":4,"column":6},"end":{"row":4,"column":7},"action":"insert","lines":["t"],"id":137}],[{"start":{"row":4,"column":7},"end":{"row":4,"column":8},"action":"insert","lines":["h"],"id":138}],[{"start":{"row":4,"column":8},"end":{"row":4,"column":9},"action":"insert","lines":["o"],"id":139}],[{"start":{"row":4,"column":9},"end":{"row":4,"column":10},"action":"insert","lines":["r"],"id":140}],[{"start":{"row":4,"column":10},"end":{"row":4,"column":11},"action":"insert","lines":[" "],"id":141}],[{"start":{"row":4,"column":10},"end":{"row":4,"column":11},"action":"remove","lines":[" "],"id":142}],[{"start":{"row":4,"column":10},"end":{"row":4,"column":11},"action":"insert","lines":[":"],"id":143}],[{"start":{"row":4,"column":11},"end":{"row":4,"column":12},"action":"insert","lines":[" "],"id":144}],[{"start":{"row":4,"column":12},"end":{"row":4,"column":13},"action":"insert","lines":["S"],"id":145}],[{"start":{"row":4,"column":13},"end":{"row":4,"column":14},"action":"insert","lines":["t"],"id":146}],[{"start":{"row":4,"column":14},"end":{"row":4,"column":15},"action":"insert","lines":["r"],"id":147}],[{"start":{"row":4,"column":15},"end":{"row":4,"column":16},"action":"insert","lines":["i"],"id":148}],[{"start":{"row":4,"column":16},"end":{"row":4,"column":17},"action":"insert","lines":["n"],"id":149}],[{"start":{"row":4,"column":17},"end":{"row":4,"column":18},"action":"insert","lines":["g"],"id":150}],[{"start":{"row":4,"column":18},"end":{"row":4,"column":19},"action":"insert","lines":[" "],"id":151}],[{"start":{"row":4,"column":18},"end":{"row":4,"column":19},"action":"remove","lines":[" "],"id":152}],[{"start":{"row":5,"column":2},"end":{"row":5,"column":3},"action":"insert","lines":[";"],"id":153}],[{"start":{"row":7,"column":17},"end":{"row":7,"column":18},"action":"insert","lines":["m"],"id":154}],[{"start":{"row":7,"column":18},"end":{"row":7,"column":19},"action":"insert","lines":["o"],"id":155}],[{"start":{"row":7,"column":19},"end":{"row":7,"column":20},"action":"insert","lines":["n"],"id":156}],[{"start":{"row":7,"column":20},"end":{"row":7,"column":21},"action":"insert","lines":["g"],"id":157}],[{"start":{"row":7,"column":21},"end":{"row":7,"column":22},"action":"insert","lines":["o"],"id":158}],[{"start":{"row":7,"column":22},"end":{"row":7,"column":23},"action":"insert","lines":["o"],"id":159}],[{"start":{"row":7,"column":23},"end":{"row":7,"column":24},"action":"insert","lines":["s"],"id":160}],[{"start":{"row":7,"column":24},"end":{"row":7,"column":25},"action":"insert","lines":["e"],"id":161}],[{"start":{"row":7,"column":25},"end":{"row":7,"column":26},"action":"insert","lines":[" "],"id":162}],[{"start":{"row":7,"column":25},"end":{"row":7,"column":26},"action":"remove","lines":[" "],"id":163}],[{"start":{"row":7,"column":25},"end":{"row":7,"column":26},"action":"insert","lines":["."],"id":164}],[{"start":{"row":7,"column":26},"end":{"row":7,"column":27},"action":"insert","lines":["m"],"id":165}],[{"start":{"row":7,"column":27},"end":{"row":7,"column":28},"action":"insert","lines":["o"],"id":166}],[{"start":{"row":7,"column":28},"end":{"row":7,"column":29},"action":"insert","lines":["d"],"id":167}],[{"start":{"row":7,"column":29},"end":{"row":7,"column":30},"action":"insert","lines":["e"],"id":168}],[{"start":{"row":7,"column":30},"end":{"row":7,"column":31},"action":"insert","lines":["l"],"id":169}],[{"start":{"row":7,"column":31},"end":{"row":7,"column":32},"action":"insert","lines":[" "],"id":170}],[{"start":{"row":7,"column":31},"end":{"row":7,"column":32},"action":"remove","lines":[" "],"id":171}],[{"start":{"row":7,"column":31},"end":{"row":7,"column":33},"action":"insert","lines":["()"],"id":172}],[{"start":{"row":7,"column":32},"end":{"row":7,"column":34},"action":"insert","lines":["\"\""],"id":173}],[{"start":{"row":7,"column":33},"end":{"row":7,"column":34},"action":"insert","lines":["C"],"id":174}],[{"start":{"row":7,"column":34},"end":{"row":7,"column":35},"action":"insert","lines":["o"],"id":175}],[{"start":{"row":7,"column":35},"end":{"row":7,"column":36},"action":"insert","lines":["m"],"id":176}],[{"start":{"row":7,"column":36},"end":{"row":7,"column":37},"action":"insert","lines":["m"],"id":177}],[{"start":{"row":7,"column":37},"end":{"row":7,"column":38},"action":"insert","lines":["e"],"id":178}],[{"start":{"row":7,"column":38},"end":{"row":7,"column":39},"action":"insert","lines":["n"],"id":179}],[{"start":{"row":7,"column":39},"end":{"row":7,"column":40},"action":"insert","lines":["t"],"id":180}],[{"start":{"row":7,"column":40},"end":{"row":7,"column":41},"action":"insert","lines":[" "],"id":181}],[{"start":{"row":7,"column":40},"end":{"row":7,"column":41},"action":"remove","lines":[" "],"id":182}],[{"start":{"row":7,"column":41},"end":{"row":7,"column":42},"action":"insert","lines":[","],"id":183}],[{"start":{"row":7,"column":42},"end":{"row":7,"column":43},"action":"insert","lines":[" "],"id":184}],[{"start":{"row":7,"column":43},"end":{"row":7,"column":44},"action":"insert","lines":["c"],"id":185}],[{"start":{"row":7,"column":44},"end":{"row":7,"column":45},"action":"insert","lines":["o"],"id":186}],[{"start":{"row":7,"column":45},"end":{"row":7,"column":46},"action":"insert","lines":["m"],"id":187}],[{"start":{"row":7,"column":46},"end":{"row":7,"column":47},"action":"insert","lines":["m"],"id":188}],[{"start":{"row":7,"column":47},"end":{"row":7,"column":48},"action":"insert","lines":["e"],"id":189}],[{"start":{"row":7,"column":48},"end":{"row":7,"column":49},"action":"insert","lines":["n"],"id":190}],[{"start":{"row":7,"column":43},"end":{"row":7,"column":49},"action":"remove","lines":["commen"],"id":191},{"start":{"row":7,"column":43},"end":{"row":7,"column":56},"action":"insert","lines":["commentSchema"]}],[{"start":{"row":7,"column":57},"end":{"row":7,"column":59},"action":"insert","lines":["''"],"id":192}],[{"start":{"row":7,"column":57},"end":{"row":7,"column":59},"action":"remove","lines":["''"],"id":193}],[{"start":{"row":7,"column":57},"end":{"row":7,"column":58},"action":"insert","lines":[";"],"id":194}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":7,"column":33},"end":{"row":7,"column":40},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445314674633,"hash":"faa46e5fbde1e5bf48fc7180b5f2c3bc83114a9c"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v3/readme.md b/.c9/metadata/workspace/YelpCamp/v3/readme.md
deleted file mode 100644
index 580468c4..00000000
--- a/.c9/metadata/workspace/YelpCamp/v3/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v3/readme.md","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":53,"column":28},"end":{"row":53,"column":29},"action":"insert","lines":["e"],"id":613}],[{"start":{"row":53,"column":29},"end":{"row":53,"column":30},"action":"insert","lines":["a"],"id":614}],[{"start":{"row":53,"column":30},"end":{"row":53,"column":31},"action":"insert","lines":["t"],"id":615}],[{"start":{"row":53,"column":31},"end":{"row":53,"column":32},"action":"insert","lines":["e"],"id":616}],[{"start":{"row":53,"column":32},"end":{"row":53,"column":33},"action":"insert","lines":[" "],"id":617}],[{"start":{"row":53,"column":33},"end":{"row":53,"column":34},"action":"insert","lines":["r"],"id":618}],[{"start":{"row":53,"column":34},"end":{"row":53,"column":35},"action":"insert","lines":["o"],"id":619}],[{"start":{"row":53,"column":35},"end":{"row":53,"column":36},"action":"insert","lines":["u"],"id":620}],[{"start":{"row":53,"column":36},"end":{"row":53,"column":37},"action":"insert","lines":["t"],"id":621}],[{"start":{"row":53,"column":37},"end":{"row":53,"column":38},"action":"insert","lines":["e"],"id":622}],[{"start":{"row":53,"column":38},"end":{"row":53,"column":39},"action":"insert","lines":["s"],"id":623}],[{"start":{"row":53,"column":39},"end":{"row":53,"column":40},"action":"insert","lines":[" "],"id":624}],[{"start":{"row":53,"column":39},"end":{"row":53,"column":40},"action":"remove","lines":[" "],"id":625}],[{"start":{"row":53,"column":39},"end":{"row":54,"column":0},"action":"insert","lines":["",""],"id":626},{"start":{"row":54,"column":0},"end":{"row":54,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"insert","lines":["A"],"id":627}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"remove","lines":["A"],"id":628}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"insert","lines":["C"],"id":629}],[{"start":{"row":54,"column":3},"end":{"row":54,"column":4},"action":"insert","lines":["r"],"id":630}],[{"start":{"row":54,"column":4},"end":{"row":54,"column":5},"action":"insert","lines":["e"],"id":631}],[{"start":{"row":54,"column":5},"end":{"row":54,"column":6},"action":"insert","lines":["a"],"id":632}],[{"start":{"row":54,"column":6},"end":{"row":54,"column":7},"action":"insert","lines":["t"],"id":633}],[{"start":{"row":54,"column":6},"end":{"row":54,"column":7},"action":"remove","lines":["t"],"id":634}],[{"start":{"row":54,"column":5},"end":{"row":54,"column":6},"action":"remove","lines":["a"],"id":635}],[{"start":{"row":54,"column":4},"end":{"row":54,"column":5},"action":"remove","lines":["e"],"id":636}],[{"start":{"row":54,"column":3},"end":{"row":54,"column":4},"action":"remove","lines":["r"],"id":637}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"remove","lines":["C"],"id":638}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"insert","lines":["A"],"id":639}],[{"start":{"row":54,"column":3},"end":{"row":54,"column":4},"action":"insert","lines":["d"],"id":640}],[{"start":{"row":54,"column":4},"end":{"row":54,"column":5},"action":"insert","lines":["d"],"id":641}],[{"start":{"row":54,"column":5},"end":{"row":54,"column":6},"action":"insert","lines":[" "],"id":642}],[{"start":{"row":54,"column":6},"end":{"row":54,"column":7},"action":"insert","lines":["t"],"id":643}],[{"start":{"row":54,"column":6},"end":{"row":54,"column":7},"action":"remove","lines":["t"],"id":644}],[{"start":{"row":54,"column":5},"end":{"row":54,"column":6},"action":"remove","lines":[" "],"id":645}],[{"start":{"row":54,"column":4},"end":{"row":54,"column":5},"action":"remove","lines":["d"],"id":646}],[{"start":{"row":54,"column":3},"end":{"row":54,"column":4},"action":"remove","lines":["d"],"id":647}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"remove","lines":["A"],"id":648}],[{"start":{"row":54,"column":2},"end":{"row":54,"column":3},"action":"insert","lines":["A"],"id":649}],[{"start":{"row":54,"column":3},"end":{"row":54,"column":4},"action":"insert","lines":["d"],"id":650}],[{"start":{"row":54,"column":4},"end":{"row":54,"column":5},"action":"insert","lines":["d"],"id":651}],[{"start":{"row":54,"column":5},"end":{"row":54,"column":6},"action":"insert","lines":[" "],"id":652}],[{"start":{"row":54,"column":6},"end":{"row":54,"column":7},"action":"insert","lines":["t"],"id":653}],[{"start":{"row":54,"column":7},"end":{"row":54,"column":8},"action":"insert","lines":["h"],"id":654}],[{"start":{"row":54,"column":8},"end":{"row":54,"column":9},"action":"insert","lines":["e"],"id":655}],[{"start":{"row":54,"column":9},"end":{"row":54,"column":10},"action":"insert","lines":[" "],"id":656}],[{"start":{"row":54,"column":9},"end":{"row":54,"column":10},"action":"remove","lines":[" "],"id":657}],[{"start":{"row":54,"column":9},"end":{"row":54,"column":10},"action":"insert","lines":[" "],"id":658}],[{"start":{"row":54,"column":10},"end":{"row":54,"column":11},"action":"insert","lines":["c"],"id":659}],[{"start":{"row":54,"column":10},"end":{"row":54,"column":11},"action":"remove","lines":["c"],"id":660}],[{"start":{"row":54,"column":10},"end":{"row":54,"column":11},"action":"insert","lines":["n"],"id":661}],[{"start":{"row":54,"column":11},"end":{"row":54,"column":12},"action":"insert","lines":["e"],"id":662}],[{"start":{"row":54,"column":12},"end":{"row":54,"column":13},"action":"insert","lines":["w"],"id":663}],[{"start":{"row":54,"column":12},"end":{"row":54,"column":13},"action":"remove","lines":["w"],"id":664}],[{"start":{"row":54,"column":11},"end":{"row":54,"column":12},"action":"remove","lines":["e"],"id":665}],[{"start":{"row":54,"column":11},"end":{"row":54,"column":12},"action":"insert","lines":["e"],"id":666}],[{"start":{"row":54,"column":12},"end":{"row":54,"column":13},"action":"insert","lines":["w"],"id":667}],[{"start":{"row":54,"column":13},"end":{"row":54,"column":14},"action":"insert","lines":[" "],"id":668}],[{"start":{"row":54,"column":14},"end":{"row":54,"column":15},"action":"insert","lines":["c"],"id":669}],[{"start":{"row":54,"column":15},"end":{"row":54,"column":16},"action":"insert","lines":["o"],"id":670}],[{"start":{"row":54,"column":16},"end":{"row":54,"column":17},"action":"insert","lines":["m"],"id":671}],[{"start":{"row":54,"column":17},"end":{"row":54,"column":18},"action":"insert","lines":["m"],"id":672}],[{"start":{"row":54,"column":18},"end":{"row":54,"column":19},"action":"insert","lines":["e"],"id":673}],[{"start":{"row":54,"column":19},"end":{"row":54,"column":20},"action":"insert","lines":["n"],"id":674}],[{"start":{"row":54,"column":20},"end":{"row":54,"column":21},"action":"insert","lines":["t"],"id":675}],[{"start":{"row":54,"column":21},"end":{"row":54,"column":22},"action":"insert","lines":[" "],"id":676}],[{"start":{"row":54,"column":22},"end":{"row":54,"column":23},"action":"insert","lines":["f"],"id":677}],[{"start":{"row":54,"column":23},"end":{"row":54,"column":24},"action":"insert","lines":["o"],"id":678}],[{"start":{"row":54,"column":24},"end":{"row":54,"column":25},"action":"insert","lines":["r"],"id":679}],[{"start":{"row":54,"column":25},"end":{"row":54,"column":26},"action":"insert","lines":["m"],"id":680}],[{"start":{"row":54,"column":26},"end":{"row":54,"column":27},"action":"insert","lines":[" "],"id":681}],[{"start":{"row":54,"column":26},"end":{"row":54,"column":27},"action":"remove","lines":[" "],"id":682}],[{"start":{"row":53,"column":39},"end":{"row":54,"column":0},"action":"insert","lines":["",""],"id":683},{"start":{"row":54,"column":0},"end":{"row":54,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":54,"column":1},"end":{"row":54,"column":2},"action":"remove","lines":[" "],"id":684}],[{"start":{"row":54,"column":0},"end":{"row":54,"column":1},"action":"remove","lines":["*"],"id":685}],[{"start":{"row":53,"column":39},"end":{"row":54,"column":0},"action":"remove","lines":["",""],"id":686}],[{"start":{"row":52,"column":19},"end":{"row":53,"column":0},"action":"insert","lines":["",""],"id":687}],[{"start":{"row":53,"column":0},"end":{"row":53,"column":1},"action":"insert","lines":["*"],"id":688}],[{"start":{"row":53,"column":1},"end":{"row":53,"column":2},"action":"insert","lines":[" "],"id":689}],[{"start":{"row":53,"column":2},"end":{"row":53,"column":3},"action":"insert","lines":["D"],"id":690}],[{"start":{"row":53,"column":3},"end":{"row":53,"column":4},"action":"insert","lines":["i"],"id":691}],[{"start":{"row":53,"column":4},"end":{"row":53,"column":5},"action":"insert","lines":["s"],"id":692}],[{"start":{"row":53,"column":5},"end":{"row":53,"column":6},"action":"insert","lines":["c"],"id":693}],[{"start":{"row":53,"column":6},"end":{"row":53,"column":7},"action":"insert","lines":["u"],"id":694}],[{"start":{"row":53,"column":7},"end":{"row":53,"column":8},"action":"insert","lines":["s"],"id":695}],[{"start":{"row":53,"column":8},"end":{"row":53,"column":9},"action":"insert","lines":["s"],"id":696}],[{"start":{"row":53,"column":9},"end":{"row":53,"column":10},"action":"insert","lines":[" "],"id":697}],[{"start":{"row":53,"column":10},"end":{"row":53,"column":11},"action":"insert","lines":["n"],"id":698}],[{"start":{"row":53,"column":11},"end":{"row":53,"column":12},"action":"insert","lines":["e"],"id":699}],[{"start":{"row":53,"column":12},"end":{"row":53,"column":13},"action":"insert","lines":["s"],"id":700}],[{"start":{"row":53,"column":13},"end":{"row":53,"column":14},"action":"insert","lines":["t"],"id":701}],[{"start":{"row":53,"column":14},"end":{"row":53,"column":15},"action":"insert","lines":["e"],"id":702}],[{"start":{"row":53,"column":15},"end":{"row":53,"column":16},"action":"insert","lines":["d"],"id":703}],[{"start":{"row":53,"column":16},"end":{"row":53,"column":17},"action":"insert","lines":[" "],"id":704}],[{"start":{"row":53,"column":17},"end":{"row":53,"column":18},"action":"insert","lines":["r"],"id":705}],[{"start":{"row":53,"column":18},"end":{"row":53,"column":19},"action":"insert","lines":["o"],"id":706}],[{"start":{"row":53,"column":19},"end":{"row":53,"column":20},"action":"insert","lines":["u"],"id":707}],[{"start":{"row":53,"column":20},"end":{"row":53,"column":21},"action":"insert","lines":["t"],"id":708}],[{"start":{"row":53,"column":21},"end":{"row":53,"column":22},"action":"insert","lines":["e"],"id":709}],[{"start":{"row":53,"column":22},"end":{"row":53,"column":23},"action":"insert","lines":["s"],"id":710}],[{"start":{"row":53,"column":23},"end":{"row":53,"column":24},"action":"insert","lines":[" "],"id":711}],[{"start":{"row":53,"column":23},"end":{"row":53,"column":24},"action":"remove","lines":[" "],"id":712}],[{"start":{"row":51,"column":0},"end":{"row":55,"column":26},"action":"remove","lines":["","#Comment New/Create","* Discuss nested routes","* Add the comment new and create routes","* Add the new comment form"],"id":713}]]},"ace":{"folds":[],"scrolltop":1350.5,"scrollleft":0,"selection":{"start":{"row":51,"column":0},"end":{"row":51,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":50,"state":"listblock","mode":"ace/mode/markdown"}},"timestamp":1445317825189,"hash":"6f41a239e8f07c036f2ee3c998b823f4654ae281"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v3/seeds.js b/.c9/metadata/workspace/YelpCamp/v3/seeds.js
deleted file mode 100644
index 9bdbc3ae..00000000
--- a/.c9/metadata/workspace/YelpCamp/v3/seeds.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"seeds.js","tooltip":"/YelpCamp/v3/seeds.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":207,"scrollleft":0,"selection":{"start":{"row":45,"column":51},"end":{"row":45,"column":51},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":6,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1445314434933,"hash":"a5d54778d0395e716908eedad6d545b6b32c4d8e"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v3/views/show.ejs b/.c9/metadata/workspace/YelpCamp/v3/views/show.ejs
deleted file mode 100644
index 894a8753..00000000
--- a/.c9/metadata/workspace/YelpCamp/v3/views/show.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"show.ejs","tooltip":"/YelpCamp/v3/views/show.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":8,"column":4},"end":{"row":8,"column":5},"action":"remove","lines":["p"],"id":79}],[{"start":{"row":8,"column":4},"end":{"row":8,"column":5},"action":"insert","lines":["<"],"id":80}],[{"start":{"row":8,"column":5},"end":{"row":8,"column":6},"action":"insert","lines":["p"],"id":81}],[{"start":{"row":8,"column":6},"end":{"row":8,"column":11},"action":"insert","lines":[">"],"id":82}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"insert","lines":["<"],"id":83}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":["%"],"id":84}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":["="],"id":85}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":[" "],"id":86}],[{"start":{"row":8,"column":11},"end":{"row":8,"column":12},"action":"insert","lines":["c"],"id":87}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"insert","lines":["o"],"id":88}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"insert","lines":["m"],"id":89}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"insert","lines":["m"],"id":90}],[{"start":{"row":8,"column":15},"end":{"row":8,"column":16},"action":"insert","lines":["e"],"id":91}],[{"start":{"row":8,"column":16},"end":{"row":8,"column":17},"action":"insert","lines":["n"],"id":92}],[{"start":{"row":8,"column":17},"end":{"row":8,"column":18},"action":"insert","lines":["t"],"id":93}],[{"start":{"row":8,"column":18},"end":{"row":8,"column":19},"action":"insert","lines":[" "],"id":94}],[{"start":{"row":8,"column":18},"end":{"row":8,"column":19},"action":"remove","lines":[" "],"id":95}],[{"start":{"row":8,"column":18},"end":{"row":8,"column":19},"action":"insert","lines":["."],"id":96}],[{"start":{"row":8,"column":19},"end":{"row":8,"column":20},"action":"insert","lines":["a"],"id":97}],[{"start":{"row":8,"column":20},"end":{"row":8,"column":21},"action":"insert","lines":["u"],"id":98}],[{"start":{"row":8,"column":21},"end":{"row":8,"column":22},"action":"insert","lines":["t"],"id":99}],[{"start":{"row":8,"column":22},"end":{"row":8,"column":23},"action":"insert","lines":["h"],"id":100}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"insert","lines":["o"],"id":101}],[{"start":{"row":8,"column":24},"end":{"row":8,"column":25},"action":"insert","lines":["r"],"id":102}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":[" "],"id":103}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"remove","lines":[" "],"id":104}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":[" "],"id":105}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["%"],"id":106}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"insert","lines":[">"],"id":107}],[{"start":{"row":8,"column":28},"end":{"row":8,"column":29},"action":"insert","lines":[" "],"id":108}],[{"start":{"row":8,"column":29},"end":{"row":8,"column":30},"action":"insert","lines":["-"],"id":109}],[{"start":{"row":8,"column":30},"end":{"row":8,"column":31},"action":"insert","lines":[" "],"id":110}],[{"start":{"row":8,"column":31},"end":{"row":8,"column":32},"action":"insert","lines":["<"],"id":111}],[{"start":{"row":8,"column":32},"end":{"row":8,"column":33},"action":"insert","lines":["%"],"id":112}],[{"start":{"row":8,"column":33},"end":{"row":8,"column":34},"action":"insert","lines":["="],"id":113}],[{"start":{"row":8,"column":34},"end":{"row":8,"column":35},"action":"insert","lines":["c"],"id":114}],[{"start":{"row":8,"column":35},"end":{"row":8,"column":36},"action":"insert","lines":["o"],"id":115}],[{"start":{"row":8,"column":35},"end":{"row":8,"column":36},"action":"remove","lines":["o"],"id":116}],[{"start":{"row":8,"column":34},"end":{"row":8,"column":35},"action":"remove","lines":["c"],"id":117}],[{"start":{"row":8,"column":34},"end":{"row":8,"column":35},"action":"insert","lines":[" "],"id":118}],[{"start":{"row":8,"column":35},"end":{"row":8,"column":36},"action":"insert","lines":["c"],"id":119}],[{"start":{"row":8,"column":36},"end":{"row":8,"column":37},"action":"insert","lines":["o"],"id":120}],[{"start":{"row":8,"column":37},"end":{"row":8,"column":38},"action":"insert","lines":["m"],"id":121}],[{"start":{"row":8,"column":38},"end":{"row":8,"column":39},"action":"insert","lines":["m"],"id":122}],[{"start":{"row":8,"column":39},"end":{"row":8,"column":40},"action":"insert","lines":["e"],"id":123}],[{"start":{"row":8,"column":40},"end":{"row":8,"column":41},"action":"insert","lines":["n"],"id":124}],[{"start":{"row":8,"column":41},"end":{"row":8,"column":42},"action":"insert","lines":["t"],"id":125}],[{"start":{"row":8,"column":42},"end":{"row":8,"column":43},"action":"insert","lines":[" "],"id":126}],[{"start":{"row":8,"column":42},"end":{"row":8,"column":43},"action":"remove","lines":[" "],"id":127}],[{"start":{"row":8,"column":42},"end":{"row":8,"column":43},"action":"insert","lines":["."],"id":128}],[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"insert","lines":["t"],"id":129}],[{"start":{"row":8,"column":44},"end":{"row":8,"column":45},"action":"insert","lines":["e"],"id":130}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":["x"],"id":131}],[{"start":{"row":8,"column":46},"end":{"row":8,"column":47},"action":"insert","lines":["t"],"id":132}],[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"insert","lines":[" "],"id":133}],[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"remove","lines":[" "],"id":134}],[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"insert","lines":[" "],"id":135}],[{"start":{"row":8,"column":48},"end":{"row":8,"column":49},"action":"insert","lines":["%"],"id":136}],[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"insert","lines":[">"],"id":137}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"insert","lines":["<"],"id":138}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":["s"],"id":139}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":["t"],"id":140}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":["r"],"id":141}],[{"start":{"row":8,"column":11},"end":{"row":8,"column":12},"action":"insert","lines":["o"],"id":142}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"insert","lines":["g"],"id":143}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"insert","lines":["n"],"id":144}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"insert","lines":[" "],"id":145}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"remove","lines":[" "],"id":146}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":24},"action":"insert","lines":[">"],"id":147}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"remove","lines":[">"],"id":159}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"remove","lines":["n"],"id":160}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"remove","lines":["g"],"id":161}],[{"start":{"row":8,"column":11},"end":{"row":8,"column":12},"action":"remove","lines":["o"],"id":162}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"remove","lines":["r"],"id":163}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"remove","lines":["t"],"id":164}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"remove","lines":["s"],"id":165}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":17},"action":"remove","lines":["strogn>"],"id":166}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"remove","lines":["/"],"id":167}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"remove","lines":["<"],"id":168}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"remove","lines":["<"],"id":169}],[{"start":{"row":8,"column":7},"end":{"row":9,"column":8},"action":"insert","lines":[""," "],"id":170}],[{"start":{"row":8,"column":7},"end":{"row":9,"column":8},"action":"insert","lines":[""," "],"id":171}],[{"start":{"row":9,"column":8},"end":{"row":9,"column":9},"action":"insert","lines":["s"],"id":172}],[{"start":{"row":9,"column":9},"end":{"row":9,"column":10},"action":"insert","lines":["t"],"id":173}],[{"start":{"row":9,"column":10},"end":{"row":9,"column":11},"action":"insert","lines":["r"],"id":174}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":12},"action":"insert","lines":["o"],"id":175}],[{"start":{"row":9,"column":12},"end":{"row":9,"column":13},"action":"insert","lines":["n"],"id":176}],[{"start":{"row":9,"column":13},"end":{"row":9,"column":14},"action":"insert","lines":["g"],"id":177}],[{"start":{"row":9,"column":14},"end":{"row":9,"column":15},"action":"insert","lines":[" "],"id":178}],[{"start":{"row":9,"column":14},"end":{"row":9,"column":15},"action":"remove","lines":[" "],"id":179}],[{"start":{"row":9,"column":8},"end":{"row":9,"column":9},"action":"insert","lines":["<"],"id":180}],[{"start":{"row":9,"column":15},"end":{"row":9,"column":25},"action":"insert","lines":[">"],"id":181}],[{"start":{"row":10,"column":8},"end":{"row":10,"column":29},"action":"remove","lines":["<%= comment.author %>"],"id":182}],[{"start":{"row":9,"column":16},"end":{"row":9,"column":37},"action":"insert","lines":["<%= comment.author %>"],"id":183}],[{"start":{"row":10,"column":8},"end":{"row":10,"column":9},"action":"remove","lines":[" "],"id":184}],[{"start":{"row":10,"column":4},"end":{"row":10,"column":8},"action":"remove","lines":[" "],"id":185}],[{"start":{"row":10,"column":0},"end":{"row":10,"column":4},"action":"remove","lines":[" "],"id":186}],[{"start":{"row":9,"column":46},"end":{"row":10,"column":0},"action":"remove","lines":["",""],"id":187}],[{"start":{"row":9,"column":46},"end":{"row":9,"column":47},"action":"insert","lines":[" "],"id":188}],[{"start":{"row":9,"column":68},"end":{"row":10,"column":0},"action":"insert","lines":["",""],"id":189},{"start":{"row":10,"column":0},"end":{"row":10,"column":8},"action":"insert","lines":[" "]}],[{"start":{"row":10,"column":4},"end":{"row":10,"column":8},"action":"remove","lines":[" "],"id":190}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":5,"column":23},"end":{"row":5,"column":23},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445315555343,"hash":"258e0ca293875ae3ef336bff089f8332f32e46b4"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/app.js b/.c9/metadata/workspace/YelpCamp/v4/app.js
deleted file mode 100644
index 7892bfa0..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v4/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":94,"column":32},"end":{"row":94,"column":33},"action":"insert","lines":["m"],"id":1392}],[{"start":{"row":94,"column":33},"end":{"row":94,"column":34},"action":"insert","lines":["p"],"id":1393}],[{"start":{"row":94,"column":33},"end":{"row":94,"column":34},"action":"remove","lines":["p"],"id":1394}],[{"start":{"row":94,"column":32},"end":{"row":94,"column":33},"action":"remove","lines":["m"],"id":1395}],[{"start":{"row":94,"column":31},"end":{"row":94,"column":32},"action":"remove","lines":["a"],"id":1396}],[{"start":{"row":94,"column":30},"end":{"row":94,"column":31},"action":"remove","lines":["c"],"id":1397}],[{"start":{"row":94,"column":29},"end":{"row":94,"column":30},"action":"remove","lines":["?"],"id":1398}],[{"start":{"row":94,"column":29},"end":{"row":94,"column":30},"action":"insert","lines":["/"],"id":1399}],[{"start":{"row":94,"column":30},"end":{"row":94,"column":31},"action":"insert","lines":["c"],"id":1400}],[{"start":{"row":94,"column":31},"end":{"row":94,"column":32},"action":"insert","lines":["a"],"id":1401}],[{"start":{"row":94,"column":32},"end":{"row":94,"column":33},"action":"insert","lines":["m"],"id":1402}],[{"start":{"row":94,"column":33},"end":{"row":94,"column":34},"action":"insert","lines":["p"],"id":1403}],[{"start":{"row":94,"column":34},"end":{"row":94,"column":35},"action":"insert","lines":["g"],"id":1404}],[{"start":{"row":94,"column":35},"end":{"row":94,"column":36},"action":"insert","lines":["r"],"id":1405}],[{"start":{"row":94,"column":36},"end":{"row":94,"column":37},"action":"insert","lines":["o"],"id":1406}],[{"start":{"row":94,"column":37},"end":{"row":94,"column":38},"action":"insert","lines":["u"],"id":1407}],[{"start":{"row":94,"column":38},"end":{"row":94,"column":39},"action":"insert","lines":["n"],"id":1408}],[{"start":{"row":94,"column":39},"end":{"row":94,"column":40},"action":"insert","lines":["d"],"id":1409}],[{"start":{"row":94,"column":40},"end":{"row":94,"column":41},"action":"insert","lines":["s"],"id":1410}],[{"start":{"row":94,"column":41},"end":{"row":94,"column":42},"action":"insert","lines":[" "],"id":1411}],[{"start":{"row":94,"column":41},"end":{"row":94,"column":42},"action":"remove","lines":[" "],"id":1412}],[{"start":{"row":94,"column":41},"end":{"row":94,"column":42},"action":"insert","lines":["/"],"id":1413}],[{"start":{"row":94,"column":43},"end":{"row":94,"column":44},"action":"insert","lines":[" "],"id":1414}],[{"start":{"row":94,"column":44},"end":{"row":94,"column":45},"action":"insert","lines":["+"],"id":1415}],[{"start":{"row":94,"column":45},"end":{"row":94,"column":46},"action":"insert","lines":[" "],"id":1416}],[{"start":{"row":94,"column":46},"end":{"row":94,"column":47},"action":"insert","lines":["c"],"id":1417}],[{"start":{"row":94,"column":47},"end":{"row":94,"column":48},"action":"insert","lines":["a"],"id":1418}],[{"start":{"row":94,"column":48},"end":{"row":94,"column":49},"action":"insert","lines":["m"],"id":1419}],[{"start":{"row":94,"column":49},"end":{"row":94,"column":50},"action":"insert","lines":["p"],"id":1420}],[{"start":{"row":94,"column":50},"end":{"row":94,"column":51},"action":"insert","lines":["g"],"id":1421}],[{"start":{"row":94,"column":51},"end":{"row":94,"column":52},"action":"insert","lines":["r"],"id":1422}],[{"start":{"row":94,"column":52},"end":{"row":94,"column":53},"action":"insert","lines":["o"],"id":1423}],[{"start":{"row":94,"column":53},"end":{"row":94,"column":54},"action":"insert","lines":["u"],"id":1424}],[{"start":{"row":94,"column":54},"end":{"row":94,"column":55},"action":"insert","lines":["n"],"id":1425}],[{"start":{"row":94,"column":55},"end":{"row":94,"column":56},"action":"insert","lines":["d"],"id":1426}],[{"start":{"row":94,"column":56},"end":{"row":94,"column":57},"action":"insert","lines":[" "],"id":1427}],[{"start":{"row":94,"column":56},"end":{"row":94,"column":57},"action":"remove","lines":[" "],"id":1428}],[{"start":{"row":94,"column":56},"end":{"row":94,"column":57},"action":"insert","lines":["."],"id":1429}],[{"start":{"row":94,"column":57},"end":{"row":94,"column":58},"action":"insert","lines":["_"],"id":1430}],[{"start":{"row":94,"column":58},"end":{"row":94,"column":59},"action":"insert","lines":["i"],"id":1431}],[{"start":{"row":94,"column":59},"end":{"row":94,"column":60},"action":"insert","lines":["d"],"id":1432}],[{"start":{"row":94,"column":60},"end":{"row":94,"column":61},"action":"insert","lines":[" "],"id":1433}],[{"start":{"row":94,"column":60},"end":{"row":94,"column":61},"action":"remove","lines":[" "],"id":1434}],[{"start":{"row":94,"column":61},"end":{"row":94,"column":62},"action":"insert","lines":[";"],"id":1435}],[{"start":{"row":4,"column":49},"end":{"row":5,"column":0},"action":"insert","lines":["",""],"id":1436},{"start":{"row":5,"column":0},"end":{"row":5,"column":4},"action":"insert","lines":[" "]}],[{"start":{"row":5,"column":4},"end":{"row":5,"column":5},"action":"insert","lines":["C"],"id":1437}],[{"start":{"row":5,"column":5},"end":{"row":5,"column":6},"action":"insert","lines":["o"],"id":1438}],[{"start":{"row":5,"column":6},"end":{"row":5,"column":7},"action":"insert","lines":["m"],"id":1439}],[{"start":{"row":5,"column":7},"end":{"row":5,"column":8},"action":"insert","lines":["m"],"id":1440}],[{"start":{"row":5,"column":8},"end":{"row":5,"column":9},"action":"insert","lines":["e"],"id":1441}],[{"start":{"row":5,"column":9},"end":{"row":5,"column":10},"action":"insert","lines":["n"],"id":1442}],[{"start":{"row":5,"column":10},"end":{"row":5,"column":11},"action":"insert","lines":["t"],"id":1443}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":12},"action":"insert","lines":[" "],"id":1444}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":12},"action":"remove","lines":[" "],"id":1445}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":12},"action":"insert","lines":[" "],"id":1446}],[{"start":{"row":5,"column":12},"end":{"row":5,"column":13},"action":"insert","lines":[" "],"id":1447}],[{"start":{"row":5,"column":13},"end":{"row":5,"column":14},"action":"insert","lines":[" "],"id":1448}],[{"start":{"row":5,"column":14},"end":{"row":5,"column":15},"action":"insert","lines":[" "],"id":1449}],[{"start":{"row":5,"column":15},"end":{"row":5,"column":16},"action":"insert","lines":[" "],"id":1450}],[{"start":{"row":5,"column":16},"end":{"row":5,"column":17},"action":"insert","lines":["="],"id":1451}],[{"start":{"row":5,"column":17},"end":{"row":5,"column":18},"action":"insert","lines":[" "],"id":1452}],[{"start":{"row":5,"column":18},"end":{"row":5,"column":19},"action":"insert","lines":["r"],"id":1453}],[{"start":{"row":5,"column":19},"end":{"row":5,"column":20},"action":"insert","lines":["e"],"id":1454}],[{"start":{"row":5,"column":20},"end":{"row":5,"column":21},"action":"insert","lines":["q"],"id":1455}],[{"start":{"row":5,"column":21},"end":{"row":5,"column":22},"action":"insert","lines":["u"],"id":1456}],[{"start":{"row":5,"column":22},"end":{"row":5,"column":23},"action":"insert","lines":["i"],"id":1457}],[{"start":{"row":5,"column":23},"end":{"row":5,"column":24},"action":"insert","lines":["r"],"id":1458}],[{"start":{"row":5,"column":24},"end":{"row":5,"column":25},"action":"insert","lines":["e"],"id":1459}],[{"start":{"row":5,"column":25},"end":{"row":5,"column":26},"action":"insert","lines":[" "],"id":1460}],[{"start":{"row":5,"column":25},"end":{"row":5,"column":26},"action":"remove","lines":[" "],"id":1461}],[{"start":{"row":5,"column":25},"end":{"row":5,"column":27},"action":"insert","lines":["()"],"id":1462}],[{"start":{"row":5,"column":26},"end":{"row":5,"column":28},"action":"insert","lines":["\"\""],"id":1463}],[{"start":{"row":5,"column":27},"end":{"row":5,"column":28},"action":"insert","lines":["/"],"id":1464}],[{"start":{"row":5,"column":27},"end":{"row":5,"column":28},"action":"remove","lines":["/"],"id":1465}],[{"start":{"row":5,"column":27},"end":{"row":5,"column":28},"action":"insert","lines":[","],"id":1466}],[{"start":{"row":5,"column":28},"end":{"row":5,"column":29},"action":"insert","lines":["/"],"id":1467}],[{"start":{"row":5,"column":29},"end":{"row":5,"column":30},"action":"insert","lines":["."],"id":1468}],[{"start":{"row":5,"column":29},"end":{"row":5,"column":30},"action":"remove","lines":["."],"id":1469}],[{"start":{"row":5,"column":28},"end":{"row":5,"column":29},"action":"remove","lines":["/"],"id":1470}],[{"start":{"row":5,"column":27},"end":{"row":5,"column":28},"action":"remove","lines":[","],"id":1471}],[{"start":{"row":5,"column":27},"end":{"row":5,"column":28},"action":"insert","lines":["."],"id":1472}],[{"start":{"row":5,"column":28},"end":{"row":5,"column":29},"action":"insert","lines":["/"],"id":1473}],[{"start":{"row":5,"column":29},"end":{"row":5,"column":30},"action":"insert","lines":["m"],"id":1474}],[{"start":{"row":5,"column":30},"end":{"row":5,"column":31},"action":"insert","lines":["o"],"id":1475}],[{"start":{"row":5,"column":31},"end":{"row":5,"column":32},"action":"insert","lines":["d"],"id":1476}],[{"start":{"row":5,"column":32},"end":{"row":5,"column":33},"action":"insert","lines":["e"],"id":1477}],[{"start":{"row":5,"column":33},"end":{"row":5,"column":34},"action":"insert","lines":["l"],"id":1478}],[{"start":{"row":5,"column":34},"end":{"row":5,"column":35},"action":"insert","lines":["s"],"id":1479}],[{"start":{"row":5,"column":35},"end":{"row":5,"column":36},"action":"insert","lines":[" "],"id":1480}],[{"start":{"row":5,"column":35},"end":{"row":5,"column":36},"action":"remove","lines":[" "],"id":1481}],[{"start":{"row":5,"column":35},"end":{"row":5,"column":36},"action":"insert","lines":["/"],"id":1482}],[{"start":{"row":5,"column":36},"end":{"row":5,"column":37},"action":"insert","lines":["c"],"id":1483}],[{"start":{"row":5,"column":37},"end":{"row":5,"column":38},"action":"insert","lines":["o"],"id":1484}],[{"start":{"row":5,"column":38},"end":{"row":5,"column":39},"action":"insert","lines":["m"],"id":1485}],[{"start":{"row":5,"column":39},"end":{"row":5,"column":40},"action":"insert","lines":["m"],"id":1486}],[{"start":{"row":5,"column":40},"end":{"row":5,"column":41},"action":"insert","lines":["e"],"id":1487}],[{"start":{"row":5,"column":41},"end":{"row":5,"column":42},"action":"insert","lines":["n"],"id":1488}],[{"start":{"row":5,"column":42},"end":{"row":5,"column":43},"action":"insert","lines":["t"],"id":1489}],[{"start":{"row":5,"column":43},"end":{"row":5,"column":44},"action":"insert","lines":[" "],"id":1490}],[{"start":{"row":5,"column":43},"end":{"row":5,"column":44},"action":"remove","lines":[" "],"id":1491}],[{"start":{"row":5,"column":45},"end":{"row":5,"column":46},"action":"insert","lines":[","],"id":1492}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":89,"column":21},"end":{"row":89,"column":21},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445321669000,"hash":"8458b286f6b39f8c20a9c77ef792d9ad8f3c27ef"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/readme.md b/.c9/metadata/workspace/YelpCamp/v4/readme.md
deleted file mode 100644
index 2fb4268d..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v4/readme.md","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":73,"column":19},"end":{"row":73,"column":20},"action":"insert","lines":["/"],"id":233}],[{"start":{"row":73,"column":20},"end":{"row":73,"column":21},"action":"insert","lines":[":"],"id":234}],[{"start":{"row":73,"column":21},"end":{"row":73,"column":22},"action":"insert","lines":["i"],"id":235}],[{"start":{"row":73,"column":22},"end":{"row":73,"column":23},"action":"insert","lines":["d"],"id":236}],[{"start":{"row":73,"column":23},"end":{"row":73,"column":24},"action":"insert","lines":[" "],"id":237}],[{"start":{"row":73,"column":23},"end":{"row":73,"column":24},"action":"remove","lines":[" "],"id":238}],[{"start":{"row":55,"column":26},"end":{"row":56,"column":0},"action":"insert","lines":["",""],"id":239},{"start":{"row":56,"column":0},"end":{"row":56,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":56,"column":2},"end":{"row":57,"column":0},"action":"insert","lines":["",""],"id":240}],[{"start":{"row":56,"column":2},"end":{"row":57,"column":0},"action":"remove","lines":["",""],"id":241}],[{"start":{"row":56,"column":1},"end":{"row":56,"column":2},"action":"remove","lines":[" "],"id":242}],[{"start":{"row":56,"column":0},"end":{"row":56,"column":1},"action":"remove","lines":["*"],"id":243}],[{"start":{"row":56,"column":0},"end":{"row":57,"column":0},"action":"insert","lines":["",""],"id":244}],[{"start":{"row":57,"column":0},"end":{"row":57,"column":1},"action":"insert","lines":["$"],"id":245}],[{"start":{"row":57,"column":0},"end":{"row":57,"column":1},"action":"remove","lines":["$"],"id":246}],[{"start":{"row":57,"column":0},"end":{"row":57,"column":1},"action":"insert","lines":["#"],"id":247}],[{"start":{"row":57,"column":1},"end":{"row":57,"column":2},"action":"insert","lines":["S"],"id":248}],[{"start":{"row":57,"column":2},"end":{"row":57,"column":3},"action":"insert","lines":["t"],"id":249}],[{"start":{"row":57,"column":3},"end":{"row":57,"column":4},"action":"insert","lines":["y"],"id":250}],[{"start":{"row":57,"column":4},"end":{"row":57,"column":5},"action":"insert","lines":["l"],"id":251}],[{"start":{"row":57,"column":5},"end":{"row":57,"column":6},"action":"insert","lines":["e"],"id":252}],[{"start":{"row":57,"column":6},"end":{"row":57,"column":7},"action":"insert","lines":[" "],"id":253}],[{"start":{"row":57,"column":7},"end":{"row":57,"column":8},"action":"insert","lines":["S"],"id":254}],[{"start":{"row":57,"column":8},"end":{"row":57,"column":9},"action":"insert","lines":["h"],"id":255}],[{"start":{"row":57,"column":9},"end":{"row":57,"column":10},"action":"insert","lines":["o"],"id":256}],[{"start":{"row":57,"column":10},"end":{"row":57,"column":11},"action":"insert","lines":["w"],"id":257}],[{"start":{"row":57,"column":11},"end":{"row":57,"column":12},"action":"insert","lines":[" "],"id":258}],[{"start":{"row":57,"column":11},"end":{"row":57,"column":12},"action":"remove","lines":[" "],"id":259}],[{"start":{"row":57,"column":11},"end":{"row":57,"column":12},"action":"insert","lines":[" "],"id":260}],[{"start":{"row":57,"column":12},"end":{"row":57,"column":13},"action":"insert","lines":["P"],"id":261}],[{"start":{"row":57,"column":13},"end":{"row":57,"column":14},"action":"insert","lines":["a"],"id":262}],[{"start":{"row":57,"column":14},"end":{"row":57,"column":15},"action":"insert","lines":["g"],"id":263}],[{"start":{"row":57,"column":15},"end":{"row":57,"column":16},"action":"insert","lines":["e"],"id":264}],[{"start":{"row":57,"column":16},"end":{"row":57,"column":17},"action":"insert","lines":[" "],"id":265}],[{"start":{"row":57,"column":16},"end":{"row":57,"column":17},"action":"remove","lines":[" "],"id":266}],[{"start":{"row":57,"column":16},"end":{"row":58,"column":0},"action":"insert","lines":["",""],"id":267}],[{"start":{"row":58,"column":0},"end":{"row":58,"column":1},"action":"insert","lines":["("],"id":268}],[{"start":{"row":58,"column":0},"end":{"row":58,"column":1},"action":"remove","lines":["("],"id":269}],[{"start":{"row":58,"column":0},"end":{"row":58,"column":1},"action":"insert","lines":["*"],"id":270}],[{"start":{"row":58,"column":1},"end":{"row":58,"column":2},"action":"insert","lines":[" "],"id":271}],[{"start":{"row":58,"column":2},"end":{"row":58,"column":3},"action":"insert","lines":["A"],"id":272}],[{"start":{"row":58,"column":3},"end":{"row":58,"column":4},"action":"insert","lines":["d"],"id":273}],[{"start":{"row":58,"column":4},"end":{"row":58,"column":5},"action":"insert","lines":["d"],"id":274}],[{"start":{"row":58,"column":5},"end":{"row":58,"column":6},"action":"insert","lines":[" "],"id":275}],[{"start":{"row":58,"column":5},"end":{"row":58,"column":6},"action":"remove","lines":[" "],"id":276}],[{"start":{"row":58,"column":5},"end":{"row":58,"column":6},"action":"insert","lines":[" "],"id":277}],[{"start":{"row":58,"column":6},"end":{"row":58,"column":7},"action":"insert","lines":["s"],"id":278}],[{"start":{"row":58,"column":7},"end":{"row":58,"column":8},"action":"insert","lines":["i"],"id":279}],[{"start":{"row":58,"column":8},"end":{"row":58,"column":9},"action":"insert","lines":["d"],"id":280}],[{"start":{"row":58,"column":9},"end":{"row":58,"column":10},"action":"insert","lines":["e"],"id":281}],[{"start":{"row":58,"column":10},"end":{"row":58,"column":11},"action":"insert","lines":[" "],"id":282}],[{"start":{"row":58,"column":10},"end":{"row":58,"column":11},"action":"remove","lines":[" "],"id":283}],[{"start":{"row":58,"column":10},"end":{"row":58,"column":11},"action":"insert","lines":["b"],"id":284}],[{"start":{"row":58,"column":11},"end":{"row":58,"column":12},"action":"insert","lines":["a"],"id":285}],[{"start":{"row":58,"column":12},"end":{"row":58,"column":13},"action":"insert","lines":["r"],"id":286}],[{"start":{"row":58,"column":13},"end":{"row":58,"column":14},"action":"insert","lines":[" "],"id":287}],[{"start":{"row":58,"column":14},"end":{"row":58,"column":15},"action":"insert","lines":["t"],"id":288}],[{"start":{"row":58,"column":15},"end":{"row":58,"column":16},"action":"insert","lines":["o"],"id":289}],[{"start":{"row":58,"column":16},"end":{"row":58,"column":17},"action":"insert","lines":[" "],"id":290}],[{"start":{"row":58,"column":17},"end":{"row":58,"column":18},"action":"insert","lines":["s"],"id":291}],[{"start":{"row":58,"column":18},"end":{"row":58,"column":19},"action":"insert","lines":["h"],"id":292}],[{"start":{"row":58,"column":19},"end":{"row":58,"column":20},"action":"insert","lines":["o"],"id":293}],[{"start":{"row":58,"column":20},"end":{"row":58,"column":21},"action":"insert","lines":["w"],"id":294}],[{"start":{"row":58,"column":21},"end":{"row":58,"column":22},"action":"insert","lines":[" "],"id":295}],[{"start":{"row":58,"column":22},"end":{"row":58,"column":23},"action":"insert","lines":["p"],"id":296}],[{"start":{"row":58,"column":23},"end":{"row":58,"column":24},"action":"insert","lines":["a"],"id":297}],[{"start":{"row":58,"column":24},"end":{"row":58,"column":25},"action":"insert","lines":["g"],"id":298}],[{"start":{"row":58,"column":25},"end":{"row":58,"column":26},"action":"insert","lines":["e"],"id":299}],[{"start":{"row":58,"column":26},"end":{"row":58,"column":27},"action":"insert","lines":[" "],"id":300}],[{"start":{"row":58,"column":26},"end":{"row":58,"column":27},"action":"remove","lines":[" "],"id":301}],[{"start":{"row":58,"column":26},"end":{"row":59,"column":0},"action":"insert","lines":["",""],"id":302},{"start":{"row":59,"column":0},"end":{"row":59,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":59,"column":2},"end":{"row":59,"column":3},"action":"insert","lines":["S"],"id":303}],[{"start":{"row":59,"column":2},"end":{"row":59,"column":3},"action":"remove","lines":["S"],"id":304}],[{"start":{"row":59,"column":2},"end":{"row":59,"column":3},"action":"insert","lines":["D"],"id":305}],[{"start":{"row":59,"column":3},"end":{"row":59,"column":4},"action":"insert","lines":["i"],"id":306}],[{"start":{"row":59,"column":4},"end":{"row":59,"column":5},"action":"insert","lines":["s"],"id":307}],[{"start":{"row":59,"column":5},"end":{"row":59,"column":6},"action":"insert","lines":["p"],"id":308}],[{"start":{"row":59,"column":6},"end":{"row":59,"column":7},"action":"insert","lines":["l"],"id":309}],[{"start":{"row":59,"column":7},"end":{"row":59,"column":8},"action":"insert","lines":["a"],"id":310}],[{"start":{"row":59,"column":8},"end":{"row":59,"column":9},"action":"insert","lines":["y"],"id":311}],[{"start":{"row":59,"column":9},"end":{"row":59,"column":10},"action":"insert","lines":[" "],"id":312}],[{"start":{"row":59,"column":10},"end":{"row":59,"column":11},"action":"insert","lines":["c"],"id":313}],[{"start":{"row":59,"column":11},"end":{"row":59,"column":12},"action":"insert","lines":["o"],"id":314}],[{"start":{"row":59,"column":12},"end":{"row":59,"column":13},"action":"insert","lines":["m"],"id":315}],[{"start":{"row":59,"column":13},"end":{"row":59,"column":14},"action":"insert","lines":["m"],"id":316}],[{"start":{"row":59,"column":14},"end":{"row":59,"column":15},"action":"insert","lines":["e"],"id":317}],[{"start":{"row":59,"column":15},"end":{"row":59,"column":16},"action":"insert","lines":["n"],"id":318}],[{"start":{"row":59,"column":16},"end":{"row":59,"column":17},"action":"insert","lines":["t"],"id":319}],[{"start":{"row":59,"column":17},"end":{"row":59,"column":18},"action":"insert","lines":["s"],"id":320}],[{"start":{"row":59,"column":18},"end":{"row":59,"column":19},"action":"insert","lines":[" "],"id":321}],[{"start":{"row":59,"column":18},"end":{"row":59,"column":19},"action":"remove","lines":[" "],"id":322}],[{"start":{"row":59,"column":18},"end":{"row":59,"column":19},"action":"insert","lines":[" "],"id":323}],[{"start":{"row":59,"column":19},"end":{"row":59,"column":20},"action":"insert","lines":["n"],"id":324}],[{"start":{"row":59,"column":20},"end":{"row":59,"column":21},"action":"insert","lines":["i"],"id":325}],[{"start":{"row":59,"column":21},"end":{"row":59,"column":22},"action":"insert","lines":["c"],"id":326}],[{"start":{"row":59,"column":22},"end":{"row":59,"column":23},"action":"insert","lines":["e"],"id":327}],[{"start":{"row":59,"column":23},"end":{"row":59,"column":24},"action":"insert","lines":["l"],"id":328}],[{"start":{"row":59,"column":24},"end":{"row":59,"column":25},"action":"insert","lines":["y"],"id":329}],[{"start":{"row":59,"column":25},"end":{"row":59,"column":26},"action":"insert","lines":[" "],"id":330}],[{"start":{"row":59,"column":25},"end":{"row":59,"column":26},"action":"remove","lines":[" "],"id":331}],[{"start":{"row":59,"column":25},"end":{"row":59,"column":26},"action":"insert","lines":["!"],"id":332}],[{"start":{"row":59,"column":25},"end":{"row":59,"column":26},"action":"remove","lines":["!"],"id":333}]]},"ace":{"folds":[],"scrolltop":887,"scrollleft":0,"selection":{"start":{"row":56,"column":0},"end":{"row":56,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":33,"state":"start","mode":"ace/mode/markdown"}},"timestamp":1445376348222,"hash":"e587863b656b78abbd867c752a2f964bed1bb541"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/seeds.js b/.c9/metadata/workspace/YelpCamp/v4/seeds.js
deleted file mode 100644
index 8be5c77a..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/seeds.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"seeds.js","tooltip":"/YelpCamp/v4/seeds.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":31,"column":21},"end":{"row":31,"column":21},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445317844506,"hash":"a5d54778d0395e716908eedad6d545b6b32c4d8e"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/index.ejs b/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/index.ejs
deleted file mode 100644
index 6aa9946a..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/index.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.ejs","tooltip":"/YelpCamp/v4/views/campgrounds/index.ejs","ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":29,"column":11},"end":{"row":29,"column":11},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"hash":"457a357ae6422ce9d2dc834b70d846b39bb67e92","undoManager":{"mark":26,"position":26,"stack":[[{"start":{"row":0,"column":11},"end":{"row":0,"column":12},"action":"insert","lines":["."],"id":2}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"insert","lines":["."],"id":3}],[{"start":{"row":0,"column":13},"end":{"row":0,"column":14},"action":"insert","lines":["/"],"id":4}],[{"start":{"row":29,"column":11},"end":{"row":29,"column":12},"action":"insert","lines":["."],"id":5}],[{"start":{"row":29,"column":12},"end":{"row":29,"column":13},"action":"insert","lines":["."],"id":6}],[{"start":{"row":29,"column":13},"end":{"row":29,"column":14},"action":"insert","lines":["/"],"id":7}],[{"start":{"row":29,"column":13},"end":{"row":29,"column":14},"action":"remove","lines":["/"],"id":8}],[{"start":{"row":29,"column":12},"end":{"row":29,"column":13},"action":"remove","lines":["."],"id":9}],[{"start":{"row":29,"column":11},"end":{"row":29,"column":12},"action":"remove","lines":["."],"id":10}],[{"start":{"row":0,"column":13},"end":{"row":0,"column":14},"action":"remove","lines":["/"],"id":11}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"remove","lines":["."],"id":12}],[{"start":{"row":0,"column":11},"end":{"row":0,"column":12},"action":"remove","lines":["."],"id":13}],[{"start":{"row":0,"column":11},"end":{"row":0,"column":12},"action":"insert","lines":["."],"id":14}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"insert","lines":["."],"id":15}],[{"start":{"row":0,"column":13},"end":{"row":0,"column":14},"action":"insert","lines":["/"],"id":16}],[{"start":{"row":0,"column":32},"end":{"row":0,"column":33},"action":"insert","lines":[" "],"id":17}],[{"start":{"row":0,"column":33},"end":{"row":0,"column":34},"action":"insert","lines":["c"],"id":18}],[{"start":{"row":0,"column":34},"end":{"row":0,"column":35},"action":"insert","lines":["d"],"id":19}],[{"start":{"row":0,"column":35},"end":{"row":0,"column":36},"action":"insert","lines":["."],"id":20}],[{"start":{"row":0,"column":36},"end":{"row":0,"column":37},"action":"insert","lines":["."],"id":21}],[{"start":{"row":0,"column":36},"end":{"row":0,"column":37},"action":"remove","lines":["."],"id":22}],[{"start":{"row":0,"column":35},"end":{"row":0,"column":36},"action":"remove","lines":["."],"id":23}],[{"start":{"row":0,"column":34},"end":{"row":0,"column":35},"action":"remove","lines":["d"],"id":24}],[{"start":{"row":0,"column":33},"end":{"row":0,"column":34},"action":"remove","lines":["c"],"id":25}],[{"start":{"row":29,"column":11},"end":{"row":29,"column":12},"action":"insert","lines":["."],"id":26}],[{"start":{"row":29,"column":12},"end":{"row":29,"column":13},"action":"insert","lines":["."],"id":27}],[{"start":{"row":29,"column":13},"end":{"row":29,"column":14},"action":"insert","lines":["/"],"id":28}]]},"timestamp":1445320470000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/new.ejs b/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/new.ejs
deleted file mode 100644
index 170ef2e1..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/new.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"new.ejs","tooltip":"/YelpCamp/v4/views/campgrounds/new.ejs","undoManager":{"mark":5,"position":5,"stack":[[{"start":{"row":0,"column":11},"end":{"row":0,"column":12},"action":"insert","lines":["."],"id":2}],[{"start":{"row":0,"column":12},"end":{"row":0,"column":13},"action":"insert","lines":["."],"id":3}],[{"start":{"row":0,"column":13},"end":{"row":0,"column":14},"action":"insert","lines":["/"],"id":4}],[{"start":{"row":23,"column":11},"end":{"row":23,"column":12},"action":"insert","lines":["."],"id":5}],[{"start":{"row":23,"column":12},"end":{"row":23,"column":13},"action":"insert","lines":["."],"id":6}],[{"start":{"row":23,"column":13},"end":{"row":23,"column":14},"action":"insert","lines":["/"],"id":7}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":8,"column":22},"end":{"row":8,"column":22},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445320487313,"hash":"2e55b7c51bbb7b76cc8b6f082aeedef06bb148c6"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/show.ejs b/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/show.ejs
deleted file mode 100644
index 0d1526a4..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/views/campgrounds/show.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"show.ejs","tooltip":"/YelpCamp/v4/views/campgrounds/show.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"insert","lines":["c"],"id":83}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"insert","lines":["o"],"id":84}],[{"start":{"row":8,"column":51},"end":{"row":8,"column":52},"action":"insert","lines":["m"],"id":85}],[{"start":{"row":8,"column":52},"end":{"row":8,"column":53},"action":"insert","lines":["m"],"id":86}],[{"start":{"row":8,"column":53},"end":{"row":8,"column":54},"action":"insert","lines":["e"],"id":87}],[{"start":{"row":8,"column":54},"end":{"row":8,"column":55},"action":"insert","lines":["n"],"id":88}],[{"start":{"row":8,"column":55},"end":{"row":8,"column":56},"action":"insert","lines":["t"],"id":89}],[{"start":{"row":8,"column":55},"end":{"row":8,"column":56},"action":"remove","lines":["t"],"id":90}],[{"start":{"row":8,"column":54},"end":{"row":8,"column":55},"action":"remove","lines":["n"],"id":91}],[{"start":{"row":8,"column":53},"end":{"row":8,"column":54},"action":"remove","lines":["e"],"id":92}],[{"start":{"row":8,"column":52},"end":{"row":8,"column":53},"action":"remove","lines":["m"],"id":93}],[{"start":{"row":8,"column":51},"end":{"row":8,"column":52},"action":"remove","lines":["m"],"id":94}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"remove","lines":["o"],"id":95}],[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"remove","lines":["c"],"id":96}],[{"start":{"row":8,"column":48},"end":{"row":8,"column":49},"action":"remove","lines":["/"],"id":97}],[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"insert","lines":["/"],"id":98}],[{"start":{"row":8,"column":48},"end":{"row":8,"column":49},"action":"insert","lines":["c"],"id":99}],[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"insert","lines":["o"],"id":100}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"insert","lines":["m"],"id":101}],[{"start":{"row":8,"column":51},"end":{"row":8,"column":52},"action":"insert","lines":["m"],"id":102}],[{"start":{"row":8,"column":52},"end":{"row":8,"column":53},"action":"insert","lines":["e"],"id":103}],[{"start":{"row":8,"column":53},"end":{"row":8,"column":54},"action":"insert","lines":["n"],"id":104}],[{"start":{"row":8,"column":54},"end":{"row":8,"column":55},"action":"insert","lines":["t"],"id":105}],[{"start":{"row":8,"column":55},"end":{"row":8,"column":56},"action":"insert","lines":["s"],"id":106}],[{"start":{"row":8,"column":56},"end":{"row":8,"column":57},"action":"insert","lines":[" "],"id":107}],[{"start":{"row":8,"column":56},"end":{"row":8,"column":57},"action":"remove","lines":[" "],"id":108}],[{"start":{"row":8,"column":56},"end":{"row":8,"column":57},"action":"insert","lines":["/"],"id":109}],[{"start":{"row":8,"column":57},"end":{"row":8,"column":58},"action":"insert","lines":["n"],"id":110}],[{"start":{"row":8,"column":58},"end":{"row":8,"column":59},"action":"insert","lines":["e"],"id":111}],[{"start":{"row":8,"column":59},"end":{"row":8,"column":60},"action":"insert","lines":["w"],"id":112}],[{"start":{"row":8,"column":60},"end":{"row":8,"column":61},"action":"insert","lines":[" "],"id":113}],[{"start":{"row":8,"column":60},"end":{"row":8,"column":61},"action":"remove","lines":[" "],"id":114}],[{"start":{"row":8,"column":62},"end":{"row":8,"column":63},"action":"insert","lines":["A"],"id":115}],[{"start":{"row":8,"column":63},"end":{"row":8,"column":64},"action":"insert","lines":["d"],"id":116}],[{"start":{"row":8,"column":64},"end":{"row":8,"column":65},"action":"insert","lines":["d"],"id":117}],[{"start":{"row":8,"column":65},"end":{"row":8,"column":66},"action":"insert","lines":[" "],"id":118}],[{"start":{"row":8,"column":66},"end":{"row":8,"column":67},"action":"insert","lines":["N"],"id":119}],[{"start":{"row":8,"column":67},"end":{"row":8,"column":68},"action":"insert","lines":["e"],"id":120}],[{"start":{"row":8,"column":68},"end":{"row":8,"column":69},"action":"insert","lines":["w"],"id":121}],[{"start":{"row":8,"column":69},"end":{"row":8,"column":70},"action":"insert","lines":[" "],"id":122}],[{"start":{"row":8,"column":70},"end":{"row":8,"column":71},"action":"insert","lines":["C"],"id":123}],[{"start":{"row":8,"column":71},"end":{"row":8,"column":72},"action":"insert","lines":["o"],"id":124}],[{"start":{"row":8,"column":72},"end":{"row":8,"column":73},"action":"insert","lines":["m"],"id":125}],[{"start":{"row":8,"column":73},"end":{"row":8,"column":74},"action":"insert","lines":["m"],"id":126}],[{"start":{"row":8,"column":74},"end":{"row":8,"column":75},"action":"insert","lines":["e"],"id":127}],[{"start":{"row":8,"column":75},"end":{"row":8,"column":76},"action":"insert","lines":["n"],"id":128}],[{"start":{"row":8,"column":76},"end":{"row":8,"column":77},"action":"insert","lines":["t"],"id":129}],[{"start":{"row":8,"column":77},"end":{"row":8,"column":78},"action":"insert","lines":[" "],"id":130}],[{"start":{"row":8,"column":77},"end":{"row":8,"column":78},"action":"remove","lines":[" "],"id":131}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"insert","lines":["c"],"id":132}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":["l"],"id":133}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":["a"],"id":134}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":["s"],"id":135}],[{"start":{"row":8,"column":11},"end":{"row":8,"column":12},"action":"insert","lines":["s"],"id":136}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"insert","lines":[" "],"id":137}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"remove","lines":[" "],"id":138}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"insert","lines":["="],"id":139}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"insert","lines":["\""],"id":140}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"insert","lines":["\""],"id":141}],[{"start":{"row":8,"column":15},"end":{"row":8,"column":16},"action":"insert","lines":[" "],"id":142}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"insert","lines":["b"],"id":143}],[{"start":{"row":8,"column":15},"end":{"row":8,"column":16},"action":"insert","lines":["t"],"id":144}],[{"start":{"row":8,"column":16},"end":{"row":8,"column":17},"action":"insert","lines":["n"],"id":145}],[{"start":{"row":8,"column":17},"end":{"row":8,"column":18},"action":"insert","lines":[" "],"id":146}],[{"start":{"row":8,"column":17},"end":{"row":8,"column":18},"action":"remove","lines":[" "],"id":147}],[{"start":{"row":8,"column":17},"end":{"row":8,"column":18},"action":"insert","lines":[" "],"id":148}],[{"start":{"row":8,"column":18},"end":{"row":8,"column":19},"action":"insert","lines":["b"],"id":149}],[{"start":{"row":8,"column":19},"end":{"row":8,"column":20},"action":"insert","lines":["t"],"id":150}],[{"start":{"row":8,"column":20},"end":{"row":8,"column":21},"action":"insert","lines":["n"],"id":151}],[{"start":{"row":8,"column":21},"end":{"row":8,"column":22},"action":"insert","lines":[" "],"id":152}],[{"start":{"row":8,"column":21},"end":{"row":8,"column":22},"action":"remove","lines":[" "],"id":153}],[{"start":{"row":8,"column":21},"end":{"row":8,"column":22},"action":"insert","lines":["-"],"id":154}],[{"start":{"row":8,"column":22},"end":{"row":8,"column":23},"action":"insert","lines":["s"],"id":155}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"insert","lines":["u"],"id":156}],[{"start":{"row":8,"column":24},"end":{"row":8,"column":25},"action":"insert","lines":["c"],"id":157}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":["c"],"id":158}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["e"],"id":159}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"insert","lines":["s"],"id":160}],[{"start":{"row":8,"column":28},"end":{"row":8,"column":29},"action":"insert","lines":["s"],"id":161}],[{"start":{"row":8,"column":29},"end":{"row":8,"column":30},"action":"insert","lines":[" "],"id":162}],[{"start":{"row":8,"column":29},"end":{"row":8,"column":30},"action":"remove","lines":[" "],"id":163}],[{"start":{"row":0,"column":32},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":164}],[{"start":{"row":1,"column":0},"end":{"row":1,"column":1},"action":"insert","lines":["<"],"id":165}],[{"start":{"row":1,"column":1},"end":{"row":1,"column":2},"action":"insert","lines":["d"],"id":166}],[{"start":{"row":1,"column":2},"end":{"row":1,"column":3},"action":"insert","lines":["i"],"id":167}],[{"start":{"row":1,"column":3},"end":{"row":1,"column":4},"action":"insert","lines":["v"],"id":168}],[{"start":{"row":1,"column":4},"end":{"row":1,"column":5},"action":"insert","lines":[" "],"id":169}],[{"start":{"row":1,"column":4},"end":{"row":1,"column":5},"action":"remove","lines":[" "],"id":170}],[{"start":{"row":1,"column":4},"end":{"row":1,"column":11},"action":"insert","lines":[">
"],"id":171}],[{"start":{"row":1,"column":4},"end":{"row":1,"column":5},"action":"insert","lines":[" "],"id":172}],[{"start":{"row":1,"column":5},"end":{"row":1,"column":6},"action":"insert","lines":["c"],"id":173}],[{"start":{"row":1,"column":6},"end":{"row":1,"column":7},"action":"insert","lines":["l"],"id":174}],[{"start":{"row":1,"column":7},"end":{"row":1,"column":8},"action":"insert","lines":["a"],"id":175}],[{"start":{"row":1,"column":8},"end":{"row":1,"column":9},"action":"insert","lines":["s"],"id":176}],[{"start":{"row":1,"column":9},"end":{"row":1,"column":10},"action":"insert","lines":["s"],"id":177}],[{"start":{"row":1,"column":10},"end":{"row":1,"column":11},"action":"insert","lines":[" "],"id":178}],[{"start":{"row":1,"column":10},"end":{"row":1,"column":11},"action":"remove","lines":[" "],"id":179}],[{"start":{"row":1,"column":10},"end":{"row":1,"column":11},"action":"insert","lines":["="],"id":180}],[{"start":{"row":1,"column":11},"end":{"row":1,"column":13},"action":"insert","lines":["\"\""],"id":181}],[{"start":{"row":1,"column":12},"end":{"row":1,"column":13},"action":"insert","lines":["c"],"id":182}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"remove","lines":["",""],"id":705}],[{"start":{"row":10,"column":0},"end":{"row":10,"column":62},"action":"insert","lines":["https://farm6.staticflickr.com/5487/11519019346_f66401b6c1.jpg"],"id":706}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":5,"column":36},"end":{"row":5,"column":36},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":47,"mode":"ace/mode/ejs"}},"timestamp":1445376269836,"hash":"fc2952938ebf926a271772397735f06276cf5caa"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v4/views/comments/new.ejs b/.c9/metadata/workspace/YelpCamp/v4/views/comments/new.ejs
deleted file mode 100644
index a8954f07..00000000
--- a/.c9/metadata/workspace/YelpCamp/v4/views/comments/new.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"new.ejs","tooltip":"/YelpCamp/v4/views/comments/new.ejs","ace":{"folds":[],"scrolltop":82.5,"scrollleft":0,"selection":{"start":{"row":7,"column":66},"end":{"row":7,"column":73},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":78,"mode":"ace/mode/ejs"}},"hash":"af8ba9fbcf448aaf558203c045d3ee1158b491f2","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":5,"column":51},"end":{"row":5,"column":52},"action":"insert","lines":["n"],"id":104}],[{"start":{"row":5,"column":52},"end":{"row":5,"column":53},"action":"insert","lines":["d"],"id":105}],[{"start":{"row":5,"column":53},"end":{"row":5,"column":54},"action":"insert","lines":[" "],"id":106}],[{"start":{"row":5,"column":53},"end":{"row":5,"column":54},"action":"remove","lines":[" "],"id":107}],[{"start":{"row":5,"column":53},"end":{"row":5,"column":54},"action":"insert","lines":["."],"id":108}],[{"start":{"row":5,"column":54},"end":{"row":5,"column":55},"action":"insert","lines":["i"],"id":109}],[{"start":{"row":5,"column":55},"end":{"row":5,"column":56},"action":"insert","lines":["d"],"id":110}],[{"start":{"row":5,"column":55},"end":{"row":5,"column":56},"action":"remove","lines":["d"],"id":111}],[{"start":{"row":5,"column":54},"end":{"row":5,"column":55},"action":"remove","lines":["i"],"id":112}],[{"start":{"row":5,"column":54},"end":{"row":5,"column":55},"action":"insert","lines":["_"],"id":113}],[{"start":{"row":5,"column":55},"end":{"row":5,"column":56},"action":"insert","lines":["i"],"id":114}],[{"start":{"row":5,"column":56},"end":{"row":5,"column":57},"action":"insert","lines":["d"],"id":115}],[{"start":{"row":5,"column":57},"end":{"row":5,"column":58},"action":"insert","lines":[" "],"id":116}],[{"start":{"row":5,"column":57},"end":{"row":5,"column":58},"action":"remove","lines":[" "],"id":117}],[{"start":{"row":5,"column":60},"end":{"row":5,"column":61},"action":"insert","lines":["/"],"id":118}],[{"start":{"row":5,"column":61},"end":{"row":5,"column":62},"action":"insert","lines":["c"],"id":119}],[{"start":{"row":5,"column":62},"end":{"row":5,"column":63},"action":"insert","lines":["o"],"id":120}],[{"start":{"row":5,"column":63},"end":{"row":5,"column":64},"action":"insert","lines":["m"],"id":121}],[{"start":{"row":5,"column":64},"end":{"row":5,"column":65},"action":"insert","lines":["m"],"id":122}],[{"start":{"row":5,"column":65},"end":{"row":5,"column":66},"action":"insert","lines":["e"],"id":123}],[{"start":{"row":5,"column":66},"end":{"row":5,"column":67},"action":"insert","lines":["n"],"id":124}],[{"start":{"row":5,"column":67},"end":{"row":5,"column":68},"action":"insert","lines":["t"],"id":125}],[{"start":{"row":5,"column":68},"end":{"row":5,"column":69},"action":"insert","lines":["s"],"id":126}],[{"start":{"row":5,"column":69},"end":{"row":5,"column":70},"action":"insert","lines":[" "],"id":127}],[{"start":{"row":5,"column":69},"end":{"row":5,"column":70},"action":"remove","lines":[" "],"id":128}],[{"start":{"row":5,"column":69},"end":{"row":5,"column":70},"action":"insert","lines":["/"],"id":129}],[{"start":{"row":5,"column":70},"end":{"row":5,"column":71},"action":"insert","lines":["n"],"id":130}],[{"start":{"row":5,"column":71},"end":{"row":5,"column":72},"action":"insert","lines":["e"],"id":131}],[{"start":{"row":5,"column":72},"end":{"row":5,"column":73},"action":"insert","lines":["w"],"id":132}],[{"start":{"row":5,"column":73},"end":{"row":5,"column":74},"action":"insert","lines":[" "],"id":133}],[{"start":{"row":5,"column":73},"end":{"row":5,"column":74},"action":"remove","lines":[" "],"id":134}],[{"start":{"row":5,"column":72},"end":{"row":5,"column":73},"action":"remove","lines":["w"],"id":135}],[{"start":{"row":5,"column":71},"end":{"row":5,"column":72},"action":"remove","lines":["e"],"id":136}],[{"start":{"row":5,"column":70},"end":{"row":5,"column":71},"action":"remove","lines":["n"],"id":137}],[{"start":{"row":5,"column":69},"end":{"row":5,"column":70},"action":"remove","lines":["/"],"id":138}],[{"start":{"row":7,"column":88},"end":{"row":7,"column":89},"action":"remove","lines":["e"],"id":139}],[{"start":{"row":7,"column":87},"end":{"row":7,"column":88},"action":"remove","lines":["m"],"id":140}],[{"start":{"row":7,"column":86},"end":{"row":7,"column":87},"action":"remove","lines":["a"],"id":141}],[{"start":{"row":7,"column":85},"end":{"row":7,"column":86},"action":"remove","lines":["n"],"id":142}],[{"start":{"row":7,"column":85},"end":{"row":7,"column":86},"action":"insert","lines":["t"],"id":143}],[{"start":{"row":7,"column":86},"end":{"row":7,"column":87},"action":"insert","lines":["e"],"id":144}],[{"start":{"row":7,"column":87},"end":{"row":7,"column":88},"action":"insert","lines":["x"],"id":145}],[{"start":{"row":7,"column":88},"end":{"row":7,"column":89},"action":"insert","lines":["t"],"id":146}],[{"start":{"row":10,"column":89},"end":{"row":10,"column":95},"action":"remove","lines":["ge url"],"id":147}],[{"start":{"row":10,"column":88},"end":{"row":10,"column":89},"action":"remove","lines":["a"],"id":148}],[{"start":{"row":10,"column":87},"end":{"row":10,"column":88},"action":"remove","lines":["m"],"id":149}],[{"start":{"row":10,"column":86},"end":{"row":10,"column":87},"action":"remove","lines":["i"],"id":150}],[{"start":{"row":10,"column":86},"end":{"row":10,"column":87},"action":"insert","lines":["a"],"id":151}],[{"start":{"row":10,"column":87},"end":{"row":10,"column":88},"action":"insert","lines":["u"],"id":152}],[{"start":{"row":10,"column":88},"end":{"row":10,"column":89},"action":"insert","lines":["t"],"id":153}],[{"start":{"row":10,"column":89},"end":{"row":10,"column":90},"action":"insert","lines":["h"],"id":154}],[{"start":{"row":10,"column":90},"end":{"row":10,"column":91},"action":"insert","lines":["o"],"id":155}],[{"start":{"row":10,"column":91},"end":{"row":10,"column":92},"action":"insert","lines":["r"],"id":156}],[{"start":{"row":12,"column":15},"end":{"row":14,"column":22},"action":"remove","lines":["
"," ","
"],"id":157}],[{"start":{"row":12,"column":14},"end":{"row":12,"column":15},"action":"remove","lines":[" "],"id":158}],[{"start":{"row":12,"column":13},"end":{"row":12,"column":14},"action":"remove","lines":[" "],"id":159}],[{"start":{"row":12,"column":12},"end":{"row":12,"column":13},"action":"remove","lines":[" "],"id":160}],[{"start":{"row":12,"column":8},"end":{"row":12,"column":12},"action":"remove","lines":[" "],"id":161}],[{"start":{"row":12,"column":4},"end":{"row":12,"column":8},"action":"remove","lines":[" "],"id":162}],[{"start":{"row":12,"column":0},"end":{"row":12,"column":4},"action":"remove","lines":[" "],"id":163}],[{"start":{"row":11,"column":22},"end":{"row":12,"column":0},"action":"remove","lines":["",""],"id":164}],[{"start":{"row":10,"column":67},"end":{"row":10,"column":71},"action":"remove","lines":["mage"],"id":201}],[{"start":{"row":10,"column":66},"end":{"row":10,"column":67},"action":"remove","lines":["i"],"id":202}],[{"start":{"row":10,"column":66},"end":{"row":10,"column":67},"action":"insert","lines":["a"],"id":203}],[{"start":{"row":10,"column":67},"end":{"row":10,"column":68},"action":"insert","lines":["u"],"id":204}],[{"start":{"row":10,"column":68},"end":{"row":10,"column":69},"action":"insert","lines":["t"],"id":205}],[{"start":{"row":10,"column":69},"end":{"row":10,"column":70},"action":"insert","lines":["h"],"id":206}],[{"start":{"row":10,"column":70},"end":{"row":10,"column":71},"action":"insert","lines":["o"],"id":207}],[{"start":{"row":10,"column":71},"end":{"row":10,"column":72},"action":"insert","lines":["r"],"id":208}],[{"start":{"row":10,"column":72},"end":{"row":10,"column":73},"action":"insert","lines":[" "],"id":209}],[{"start":{"row":10,"column":72},"end":{"row":10,"column":73},"action":"remove","lines":[" "],"id":210}],[{"start":{"row":7,"column":69},"end":{"row":7,"column":70},"action":"remove","lines":["e"],"id":211}],[{"start":{"row":7,"column":68},"end":{"row":7,"column":69},"action":"remove","lines":["m"],"id":212}],[{"start":{"row":7,"column":67},"end":{"row":7,"column":68},"action":"remove","lines":["a"],"id":213}],[{"start":{"row":7,"column":66},"end":{"row":7,"column":67},"action":"remove","lines":["n"],"id":214}],[{"start":{"row":7,"column":66},"end":{"row":7,"column":67},"action":"insert","lines":["t"],"id":215}],[{"start":{"row":7,"column":67},"end":{"row":7,"column":68},"action":"insert","lines":["e"],"id":216}],[{"start":{"row":7,"column":68},"end":{"row":7,"column":69},"action":"insert","lines":["x"],"id":217}],[{"start":{"row":7,"column":69},"end":{"row":7,"column":70},"action":"insert","lines":["t"],"id":218}],[{"start":{"row":10,"column":66},"end":{"row":10,"column":67},"action":"insert","lines":["c"],"id":219}],[{"start":{"row":10,"column":67},"end":{"row":10,"column":68},"action":"insert","lines":["o"],"id":220}],[{"start":{"row":10,"column":68},"end":{"row":10,"column":69},"action":"insert","lines":["m"],"id":221}],[{"start":{"row":10,"column":69},"end":{"row":10,"column":70},"action":"insert","lines":["m"],"id":222}],[{"start":{"row":10,"column":70},"end":{"row":10,"column":71},"action":"insert","lines":["e"],"id":223}],[{"start":{"row":10,"column":71},"end":{"row":10,"column":72},"action":"insert","lines":["n"],"id":224}],[{"start":{"row":10,"column":72},"end":{"row":10,"column":73},"action":"insert","lines":["t"],"id":225}],[{"start":{"row":10,"column":73},"end":{"row":10,"column":74},"action":"insert","lines":[" "],"id":226}],[{"start":{"row":10,"column":73},"end":{"row":10,"column":74},"action":"remove","lines":[" "],"id":227}],[{"start":{"row":10,"column":73},"end":{"row":10,"column":74},"action":"insert","lines":["["],"id":228}],[{"start":{"row":10,"column":80},"end":{"row":10,"column":81},"action":"insert","lines":["]"],"id":229}],[{"start":{"row":7,"column":66},"end":{"row":7,"column":67},"action":"insert","lines":["c"],"id":230}],[{"start":{"row":7,"column":67},"end":{"row":7,"column":68},"action":"insert","lines":["o"],"id":231}],[{"start":{"row":7,"column":68},"end":{"row":7,"column":69},"action":"insert","lines":["m"],"id":232}],[{"start":{"row":7,"column":69},"end":{"row":7,"column":70},"action":"insert","lines":["m"],"id":233}],[{"start":{"row":7,"column":70},"end":{"row":7,"column":71},"action":"insert","lines":["e"],"id":234}],[{"start":{"row":7,"column":71},"end":{"row":7,"column":72},"action":"insert","lines":["n"],"id":235}],[{"start":{"row":7,"column":72},"end":{"row":7,"column":73},"action":"insert","lines":["t"],"id":236}],[{"start":{"row":7,"column":73},"end":{"row":7,"column":74},"action":"insert","lines":[" "],"id":237}],[{"start":{"row":7,"column":73},"end":{"row":7,"column":74},"action":"remove","lines":[" "],"id":238}],[{"start":{"row":7,"column":73},"end":{"row":7,"column":74},"action":"insert","lines":["["],"id":239}],[{"start":{"row":7,"column":78},"end":{"row":7,"column":79},"action":"insert","lines":["]"],"id":240}]]},"timestamp":1445320931000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v5/app.js b/.c9/metadata/workspace/YelpCamp/v5/app.js
deleted file mode 100644
index e1bd574d..00000000
--- a/.c9/metadata/workspace/YelpCamp/v5/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v5/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":11,"column":10},"end":{"row":11,"column":11},"action":"insert","lines":["p"],"id":17}],[{"start":{"row":11,"column":11},"end":{"row":11,"column":12},"action":"insert","lines":["r"],"id":18}],[{"start":{"row":11,"column":12},"end":{"row":11,"column":13},"action":"insert","lines":["e"],"id":19}],[{"start":{"row":11,"column":13},"end":{"row":11,"column":14},"action":"insert","lines":["s"],"id":20}],[{"start":{"row":11,"column":14},"end":{"row":11,"column":15},"action":"insert","lines":["s"],"id":21}],[{"start":{"row":11,"column":15},"end":{"row":11,"column":16},"action":"insert","lines":[" "],"id":22}],[{"start":{"row":11,"column":15},"end":{"row":11,"column":16},"action":"remove","lines":[" "],"id":23}],[{"start":{"row":11,"column":15},"end":{"row":11,"column":16},"action":"insert","lines":["."],"id":24}],[{"start":{"row":11,"column":16},"end":{"row":11,"column":17},"action":"insert","lines":["s"],"id":25}],[{"start":{"row":11,"column":17},"end":{"row":11,"column":18},"action":"insert","lines":["t"],"id":26}],[{"start":{"row":11,"column":18},"end":{"row":11,"column":19},"action":"insert","lines":["a"],"id":27}],[{"start":{"row":11,"column":19},"end":{"row":11,"column":20},"action":"insert","lines":["t"],"id":28}],[{"start":{"row":11,"column":20},"end":{"row":11,"column":21},"action":"insert","lines":["i"],"id":29}],[{"start":{"row":11,"column":21},"end":{"row":11,"column":22},"action":"insert","lines":["c"],"id":30}],[{"start":{"row":11,"column":22},"end":{"row":11,"column":23},"action":"insert","lines":[" "],"id":31}],[{"start":{"row":11,"column":22},"end":{"row":11,"column":23},"action":"remove","lines":[" "],"id":32}],[{"start":{"row":11,"column":22},"end":{"row":11,"column":24},"action":"insert","lines":["()"],"id":33}],[{"start":{"row":11,"column":23},"end":{"row":11,"column":25},"action":"insert","lines":["\"\""],"id":34}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":25},"action":"insert","lines":["p"],"id":35}],[{"start":{"row":11,"column":25},"end":{"row":11,"column":26},"action":"insert","lines":["a"],"id":36}],[{"start":{"row":11,"column":25},"end":{"row":11,"column":26},"action":"remove","lines":["a"],"id":37}],[{"start":{"row":11,"column":25},"end":{"row":11,"column":26},"action":"insert","lines":["u"],"id":38}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"insert","lines":["b"],"id":39}],[{"start":{"row":11,"column":27},"end":{"row":11,"column":28},"action":"insert","lines":["l"],"id":40}],[{"start":{"row":11,"column":28},"end":{"row":11,"column":29},"action":"insert","lines":["i"],"id":41}],[{"start":{"row":11,"column":29},"end":{"row":11,"column":30},"action":"insert","lines":["c"],"id":42}],[{"start":{"row":11,"column":30},"end":{"row":11,"column":31},"action":"insert","lines":[" "],"id":43}],[{"start":{"row":11,"column":30},"end":{"row":11,"column":31},"action":"remove","lines":[" "],"id":44}],[{"start":{"row":11,"column":23},"end":{"row":11,"column":24},"action":"insert","lines":["_"],"id":45}],[{"start":{"row":11,"column":24},"end":{"row":11,"column":25},"action":"insert","lines":["_"],"id":46}],[{"start":{"row":11,"column":25},"end":{"row":11,"column":26},"action":"insert","lines":["d"],"id":47}],[{"start":{"row":11,"column":26},"end":{"row":11,"column":27},"action":"insert","lines":["i"],"id":48}],[{"start":{"row":11,"column":27},"end":{"row":11,"column":28},"action":"insert","lines":["r"],"id":49}],[{"start":{"row":11,"column":28},"end":{"row":11,"column":29},"action":"insert","lines":["n"],"id":50}],[{"start":{"row":11,"column":29},"end":{"row":11,"column":30},"action":"insert","lines":["a"],"id":51}],[{"start":{"row":11,"column":30},"end":{"row":11,"column":31},"action":"insert","lines":["m"],"id":52}],[{"start":{"row":11,"column":31},"end":{"row":11,"column":32},"action":"insert","lines":["e"],"id":53}],[{"start":{"row":11,"column":32},"end":{"row":11,"column":33},"action":"insert","lines":[" "],"id":54}],[{"start":{"row":11,"column":32},"end":{"row":11,"column":33},"action":"remove","lines":[" "],"id":55}],[{"start":{"row":11,"column":32},"end":{"row":11,"column":33},"action":"insert","lines":[" "],"id":56}],[{"start":{"row":11,"column":33},"end":{"row":11,"column":34},"action":"insert","lines":["+"],"id":57}],[{"start":{"row":11,"column":34},"end":{"row":11,"column":35},"action":"insert","lines":[" "],"id":58}],[{"start":{"row":11,"column":36},"end":{"row":11,"column":37},"action":"insert","lines":["/"],"id":59}],[{"start":{"row":11,"column":46},"end":{"row":12,"column":0},"action":"insert","lines":["",""],"id":61}],[{"start":{"row":12,"column":0},"end":{"row":12,"column":1},"action":"insert","lines":["c"],"id":62}],[{"start":{"row":12,"column":1},"end":{"row":12,"column":2},"action":"insert","lines":["o"],"id":63}],[{"start":{"row":12,"column":2},"end":{"row":12,"column":3},"action":"insert","lines":["n"],"id":64}],[{"start":{"row":12,"column":3},"end":{"row":12,"column":4},"action":"insert","lines":["s"],"id":65}],[{"start":{"row":12,"column":4},"end":{"row":12,"column":5},"action":"insert","lines":["o"],"id":66}],[{"start":{"row":12,"column":5},"end":{"row":12,"column":6},"action":"insert","lines":["l"],"id":67}],[{"start":{"row":12,"column":6},"end":{"row":12,"column":7},"action":"insert","lines":["e"],"id":68}],[{"start":{"row":12,"column":7},"end":{"row":12,"column":8},"action":"insert","lines":[" "],"id":69}],[{"start":{"row":12,"column":7},"end":{"row":12,"column":8},"action":"remove","lines":[" "],"id":70}],[{"start":{"row":12,"column":7},"end":{"row":12,"column":8},"action":"insert","lines":["."],"id":71}],[{"start":{"row":12,"column":8},"end":{"row":12,"column":9},"action":"insert","lines":["l"],"id":72}],[{"start":{"row":12,"column":9},"end":{"row":12,"column":10},"action":"insert","lines":["o"],"id":73}],[{"start":{"row":12,"column":10},"end":{"row":12,"column":11},"action":"insert","lines":["g"],"id":74}],[{"start":{"row":12,"column":11},"end":{"row":12,"column":12},"action":"insert","lines":[" "],"id":75}],[{"start":{"row":12,"column":11},"end":{"row":12,"column":12},"action":"remove","lines":[" "],"id":76}],[{"start":{"row":12,"column":11},"end":{"row":12,"column":13},"action":"insert","lines":["()"],"id":77}],[{"start":{"row":12,"column":12},"end":{"row":12,"column":13},"action":"insert","lines":["_"],"id":78}],[{"start":{"row":12,"column":13},"end":{"row":12,"column":14},"action":"insert","lines":["_"],"id":79}],[{"start":{"row":12,"column":14},"end":{"row":12,"column":15},"action":"insert","lines":["d"],"id":80}],[{"start":{"row":12,"column":15},"end":{"row":12,"column":16},"action":"insert","lines":["i"],"id":81}],[{"start":{"row":12,"column":16},"end":{"row":12,"column":17},"action":"insert","lines":["r"],"id":82}],[{"start":{"row":12,"column":17},"end":{"row":12,"column":18},"action":"insert","lines":["n"],"id":83}],[{"start":{"row":12,"column":18},"end":{"row":12,"column":19},"action":"insert","lines":["m"],"id":84}],[{"start":{"row":12,"column":19},"end":{"row":12,"column":20},"action":"insert","lines":["a"],"id":85}],[{"start":{"row":12,"column":20},"end":{"row":12,"column":21},"action":"insert","lines":["e"],"id":86}],[{"start":{"row":12,"column":21},"end":{"row":12,"column":22},"action":"insert","lines":[" "],"id":87}],[{"start":{"row":12,"column":21},"end":{"row":12,"column":22},"action":"remove","lines":[" "],"id":88}],[{"start":{"row":12,"column":20},"end":{"row":12,"column":21},"action":"remove","lines":["e"],"id":89}],[{"start":{"row":12,"column":19},"end":{"row":12,"column":20},"action":"remove","lines":["a"],"id":90}],[{"start":{"row":12,"column":18},"end":{"row":12,"column":19},"action":"remove","lines":["m"],"id":91}],[{"start":{"row":12,"column":18},"end":{"row":12,"column":19},"action":"insert","lines":["a"],"id":92}],[{"start":{"row":12,"column":19},"end":{"row":12,"column":20},"action":"insert","lines":["m"],"id":93}],[{"start":{"row":12,"column":20},"end":{"row":12,"column":21},"action":"insert","lines":["e"],"id":94}],[{"start":{"row":12,"column":21},"end":{"row":12,"column":22},"action":"insert","lines":[" "],"id":95}],[{"start":{"row":12,"column":21},"end":{"row":12,"column":22},"action":"remove","lines":[" "],"id":96}],[{"start":{"row":12,"column":22},"end":{"row":12,"column":23},"action":"insert","lines":[";"],"id":97}],[{"start":{"row":11,"column":46},"end":{"row":12,"column":0},"action":"insert","lines":["",""],"id":98}],[{"start":{"row":12,"column":0},"end":{"row":12,"column":34},"action":"insert","lines":["/home/ubuntu/workspace/YelpCamp/v5"],"id":99}],[{"start":{"row":12,"column":34},"end":{"row":12,"column":35},"action":"insert","lines":["/"],"id":100}],[{"start":{"row":12,"column":35},"end":{"row":12,"column":36},"action":"insert","lines":["u"],"id":101}],[{"start":{"row":12,"column":35},"end":{"row":12,"column":36},"action":"remove","lines":["u"],"id":102}],[{"start":{"row":12,"column":35},"end":{"row":12,"column":36},"action":"insert","lines":["o"],"id":103}],[{"start":{"row":12,"column":36},"end":{"row":12,"column":37},"action":"insert","lines":["u"],"id":104}],[{"start":{"row":12,"column":36},"end":{"row":12,"column":37},"action":"remove","lines":["u"],"id":105}],[{"start":{"row":12,"column":35},"end":{"row":12,"column":36},"action":"remove","lines":["o"],"id":106}],[{"start":{"row":12,"column":35},"end":{"row":12,"column":36},"action":"insert","lines":["p"],"id":107}],[{"start":{"row":12,"column":36},"end":{"row":12,"column":37},"action":"insert","lines":["u"],"id":108}],[{"start":{"row":12,"column":37},"end":{"row":12,"column":38},"action":"insert","lines":["b"],"id":109}],[{"start":{"row":12,"column":38},"end":{"row":12,"column":39},"action":"insert","lines":["l"],"id":110}],[{"start":{"row":12,"column":39},"end":{"row":12,"column":40},"action":"insert","lines":["i"],"id":111}],[{"start":{"row":12,"column":40},"end":{"row":12,"column":41},"action":"insert","lines":["c"],"id":112}],[{"start":{"row":12,"column":41},"end":{"row":12,"column":42},"action":"insert","lines":[" "],"id":113}],[{"start":{"row":12,"column":41},"end":{"row":12,"column":42},"action":"remove","lines":[" "],"id":114}],[{"start":{"row":12,"column":0},"end":{"row":12,"column":41},"action":"remove","lines":["/home/ubuntu/workspace/YelpCamp/v5/public"],"id":115}],[{"start":{"row":11,"column":46},"end":{"row":12,"column":0},"action":"remove","lines":["",""],"id":116}],[{"start":{"row":11,"column":46},"end":{"row":11,"column":47},"action":"insert","lines":[";"],"id":117}],[{"start":{"row":12,"column":0},"end":{"row":13,"column":0},"action":"remove","lines":["console.log(__dirname);",""],"id":118}]]},"ace":{"folds":[],"scrolltop":64.5,"scrollleft":0,"selection":{"start":{"row":11,"column":42},"end":{"row":11,"column":42},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":1,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1445384235115,"hash":"58a473f2f7374b05b74c0aa2413ace841a245732"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v5/public/stylesheets/main.css b/.c9/metadata/workspace/YelpCamp/v5/public/stylesheets/main.css
deleted file mode 100644
index c346fd87..00000000
--- a/.c9/metadata/workspace/YelpCamp/v5/public/stylesheets/main.css
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"main.css","tooltip":"/YelpCamp/v5/public/stylesheets/main.css","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":4,"column":12},"end":{"row":6,"column":1},"action":"insert","lines":[""," ","}"],"id":160}],[{"start":{"row":5,"column":4},"end":{"row":5,"column":5},"action":"insert","lines":["p"],"id":161}],[{"start":{"row":5,"column":5},"end":{"row":5,"column":6},"action":"insert","lines":["a"],"id":162}],[{"start":{"row":5,"column":6},"end":{"row":5,"column":7},"action":"insert","lines":["d"],"id":163}],[{"start":{"row":5,"column":7},"end":{"row":5,"column":8},"action":"insert","lines":["d"],"id":164}],[{"start":{"row":5,"column":8},"end":{"row":5,"column":9},"action":"insert","lines":["i"],"id":165}],[{"start":{"row":5,"column":9},"end":{"row":5,"column":10},"action":"insert","lines":["n"],"id":166}],[{"start":{"row":5,"column":10},"end":{"row":5,"column":11},"action":"insert","lines":["g"],"id":167}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":12},"action":"insert","lines":[" "],"id":168}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":12},"action":"remove","lines":[" "],"id":169}],[{"start":{"row":5,"column":11},"end":{"row":5,"column":13},"action":"insert","lines":[":;"],"id":170}],[{"start":{"row":5,"column":12},"end":{"row":5,"column":13},"action":"insert","lines":[" "],"id":171}],[{"start":{"row":5,"column":13},"end":{"row":5,"column":14},"action":"insert","lines":["0"],"id":172}],[{"start":{"row":5,"column":14},"end":{"row":5,"column":15},"action":"insert","lines":[" "],"id":173}],[{"start":{"row":5,"column":14},"end":{"row":5,"column":15},"action":"remove","lines":[" "],"id":174}],[{"start":{"row":6,"column":1},"end":{"row":7,"column":0},"action":"insert","lines":["",""],"id":175}],[{"start":{"row":7,"column":0},"end":{"row":8,"column":0},"action":"insert","lines":["",""],"id":176}],[{"start":{"row":8,"column":0},"end":{"row":8,"column":1},"action":"insert","lines":["."],"id":177}],[{"start":{"row":8,"column":1},"end":{"row":8,"column":2},"action":"insert","lines":["c"],"id":178}],[{"start":{"row":8,"column":2},"end":{"row":8,"column":3},"action":"insert","lines":["a"],"id":179}],[{"start":{"row":8,"column":3},"end":{"row":8,"column":4},"action":"insert","lines":["p"],"id":180}],[{"start":{"row":8,"column":4},"end":{"row":8,"column":5},"action":"insert","lines":["t"],"id":181}],[{"start":{"row":8,"column":5},"end":{"row":8,"column":6},"action":"insert","lines":["i"],"id":182}],[{"start":{"row":8,"column":6},"end":{"row":8,"column":7},"action":"insert","lines":["o"],"id":183}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"insert","lines":["n"],"id":184}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":[" "],"id":185}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"remove","lines":[" "],"id":186}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":["-"],"id":187}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":["f"],"id":188}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":["u"],"id":189}],[{"start":{"row":8,"column":11},"end":{"row":8,"column":12},"action":"insert","lines":["l"],"id":190}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"insert","lines":["l"],"id":191}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"insert","lines":[" "],"id":192}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"remove","lines":[" "],"id":193}],[{"start":{"row":8,"column":0},"end":{"row":8,"column":1},"action":"insert","lines":["."],"id":194}],[{"start":{"row":8,"column":1},"end":{"row":8,"column":2},"action":"insert","lines":["t"],"id":195}],[{"start":{"row":8,"column":2},"end":{"row":8,"column":3},"action":"insert","lines":["h"],"id":196}],[{"start":{"row":8,"column":3},"end":{"row":8,"column":4},"action":"insert","lines":["u"],"id":197}],[{"start":{"row":8,"column":4},"end":{"row":8,"column":5},"action":"insert","lines":["m"],"id":198}],[{"start":{"row":8,"column":5},"end":{"row":8,"column":6},"action":"insert","lines":["b"],"id":199}],[{"start":{"row":8,"column":6},"end":{"row":8,"column":7},"action":"insert","lines":["a"],"id":200}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"insert","lines":["i"],"id":201}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":["l"],"id":202}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":[" "],"id":203}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"remove","lines":[" "],"id":204}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":[" "],"id":205}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"insert","lines":[" "],"id":206}],[{"start":{"row":8,"column":24},"end":{"row":8,"column":25},"action":"insert","lines":["{"],"id":207}],[{"start":{"row":8,"column":25},"end":{"row":10,"column":1},"action":"insert","lines":[""," ","}"],"id":208}],[{"start":{"row":9,"column":4},"end":{"row":9,"column":5},"action":"insert","lines":["p"],"id":209}],[{"start":{"row":9,"column":5},"end":{"row":9,"column":6},"action":"insert","lines":["a"],"id":210}],[{"start":{"row":9,"column":6},"end":{"row":9,"column":7},"action":"insert","lines":["d"],"id":211}],[{"start":{"row":9,"column":7},"end":{"row":9,"column":8},"action":"insert","lines":["d"],"id":212}],[{"start":{"row":9,"column":8},"end":{"row":9,"column":9},"action":"insert","lines":["i"],"id":213}],[{"start":{"row":9,"column":9},"end":{"row":9,"column":10},"action":"insert","lines":["n"],"id":214}],[{"start":{"row":9,"column":10},"end":{"row":9,"column":11},"action":"insert","lines":["g"],"id":215}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":12},"action":"insert","lines":[" "],"id":216}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":12},"action":"remove","lines":[" "],"id":217}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":13},"action":"insert","lines":[":;"],"id":218}],[{"start":{"row":9,"column":12},"end":{"row":9,"column":13},"action":"insert","lines":[" "],"id":219}],[{"start":{"row":9,"column":13},"end":{"row":9,"column":14},"action":"insert","lines":["9"],"id":220}],[{"start":{"row":9,"column":14},"end":{"row":9,"column":15},"action":"insert","lines":["p"],"id":221}],[{"start":{"row":9,"column":15},"end":{"row":9,"column":16},"action":"insert","lines":["x"],"id":222}],[{"start":{"row":9,"column":16},"end":{"row":9,"column":17},"action":"insert","lines":[" "],"id":223}],[{"start":{"row":9,"column":16},"end":{"row":9,"column":17},"action":"remove","lines":[" "],"id":224}],[{"start":{"row":7,"column":0},"end":{"row":8,"column":10},"action":"remove","lines":["",".thumbail "],"id":226}],[{"start":{"row":7,"column":0},"end":{"row":8,"column":0},"action":"insert","lines":["",""],"id":227}],[{"start":{"row":8,"column":13},"end":{"row":10,"column":1},"action":"remove","lines":[" {"," padding: 9px;","}"],"id":228}],[{"start":{"row":8,"column":0},"end":{"row":8,"column":1},"action":"insert","lines":["."],"id":229}],[{"start":{"row":8,"column":1},"end":{"row":8,"column":2},"action":"insert","lines":["t"],"id":230}],[{"start":{"row":8,"column":2},"end":{"row":8,"column":3},"action":"insert","lines":["h"],"id":231}],[{"start":{"row":8,"column":3},"end":{"row":8,"column":4},"action":"insert","lines":["u"],"id":232}],[{"start":{"row":8,"column":4},"end":{"row":8,"column":5},"action":"insert","lines":["m"],"id":233}],[{"start":{"row":8,"column":5},"end":{"row":8,"column":6},"action":"insert","lines":["b"],"id":234}],[{"start":{"row":8,"column":6},"end":{"row":8,"column":7},"action":"insert","lines":["n"],"id":235}],[{"start":{"row":8,"column":7},"end":{"row":8,"column":8},"action":"insert","lines":["a"],"id":236}],[{"start":{"row":8,"column":8},"end":{"row":8,"column":9},"action":"insert","lines":["i"],"id":237}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":["l"],"id":238}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":[" "],"id":239}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"remove","lines":[" "],"id":240}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":[" "],"id":241}],[{"start":{"row":8,"column":24},"end":{"row":8,"column":25},"action":"insert","lines":[" "],"id":242}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":["P"],"id":243},{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["{"]}],[{"start":{"row":8,"column":27},"end":{"row":10,"column":1},"action":"insert","lines":[""," ","}"],"id":244}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"remove","lines":["P"],"id":245}],[{"start":{"row":9,"column":4},"end":{"row":9,"column":5},"action":"insert","lines":["p"],"id":246}],[{"start":{"row":9,"column":5},"end":{"row":9,"column":6},"action":"insert","lines":["a"],"id":247}],[{"start":{"row":9,"column":6},"end":{"row":9,"column":7},"action":"insert","lines":["d"],"id":248}],[{"start":{"row":9,"column":7},"end":{"row":9,"column":8},"action":"insert","lines":["d"],"id":249}],[{"start":{"row":9,"column":8},"end":{"row":9,"column":9},"action":"insert","lines":["i"],"id":250}],[{"start":{"row":9,"column":9},"end":{"row":9,"column":10},"action":"insert","lines":["n"],"id":251}],[{"start":{"row":9,"column":10},"end":{"row":9,"column":11},"action":"insert","lines":["g"],"id":252}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":12},"action":"insert","lines":[" "],"id":253}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":12},"action":"remove","lines":[" "],"id":254}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":13},"action":"insert","lines":[":;"],"id":255}],[{"start":{"row":9,"column":12},"end":{"row":9,"column":13},"action":"insert","lines":[" "],"id":256}],[{"start":{"row":9,"column":13},"end":{"row":9,"column":14},"action":"insert","lines":["9"],"id":257}],[{"start":{"row":9,"column":14},"end":{"row":9,"column":15},"action":"insert","lines":["p"],"id":258}],[{"start":{"row":9,"column":15},"end":{"row":9,"column":16},"action":"insert","lines":["x"],"id":259}],[{"start":{"row":9,"column":16},"end":{"row":9,"column":17},"action":"insert","lines":[" "],"id":260}],[{"start":{"row":9,"column":16},"end":{"row":9,"column":17},"action":"remove","lines":[" "],"id":261}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":12},"end":{"row":4,"column":12},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445384807077,"hash":"4ed8405a9f532b155710bec877ed91ee60909c53"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v5/readme.md b/.c9/metadata/workspace/YelpCamp/v5/readme.md
deleted file mode 100644
index b9f93a96..00000000
--- a/.c9/metadata/workspace/YelpCamp/v5/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v5/readme.md","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":61,"column":6},"end":{"row":61,"column":7},"action":"insert","lines":["h"],"id":55}],[{"start":{"row":61,"column":7},"end":{"row":61,"column":8},"action":"insert","lines":[" "],"id":56}],[{"start":{"row":61,"column":8},"end":{"row":61,"column":9},"action":"insert","lines":["S"],"id":57}],[{"start":{"row":61,"column":9},"end":{"row":61,"column":10},"action":"insert","lines":["t"],"id":58}],[{"start":{"row":61,"column":10},"end":{"row":61,"column":11},"action":"insert","lines":["l"],"id":59}],[{"start":{"row":61,"column":11},"end":{"row":61,"column":12},"action":"insert","lines":["y"],"id":60}],[{"start":{"row":61,"column":12},"end":{"row":61,"column":13},"action":"insert","lines":["i"],"id":61}],[{"start":{"row":61,"column":13},"end":{"row":61,"column":14},"action":"insert","lines":["n"],"id":62}],[{"start":{"row":61,"column":14},"end":{"row":61,"column":15},"action":"insert","lines":["g"],"id":63}],[{"start":{"row":61,"column":14},"end":{"row":61,"column":15},"action":"remove","lines":["g"],"id":64}],[{"start":{"row":61,"column":13},"end":{"row":61,"column":14},"action":"remove","lines":["n"],"id":65}],[{"start":{"row":61,"column":12},"end":{"row":61,"column":13},"action":"remove","lines":["i"],"id":66}],[{"start":{"row":61,"column":11},"end":{"row":61,"column":12},"action":"remove","lines":["y"],"id":67}],[{"start":{"row":61,"column":10},"end":{"row":61,"column":11},"action":"remove","lines":["l"],"id":68}],[{"start":{"row":61,"column":10},"end":{"row":61,"column":11},"action":"insert","lines":["y"],"id":69}],[{"start":{"row":61,"column":11},"end":{"row":61,"column":12},"action":"insert","lines":["l"],"id":70}],[{"start":{"row":61,"column":12},"end":{"row":61,"column":13},"action":"insert","lines":["i"],"id":71}],[{"start":{"row":61,"column":13},"end":{"row":61,"column":14},"action":"insert","lines":["n"],"id":72}],[{"start":{"row":61,"column":14},"end":{"row":61,"column":15},"action":"insert","lines":["g"],"id":73}],[{"start":{"row":61,"column":15},"end":{"row":61,"column":16},"action":"insert","lines":[" "],"id":74}],[{"start":{"row":61,"column":16},"end":{"row":61,"column":17},"action":"insert","lines":["S"],"id":75}],[{"start":{"row":61,"column":17},"end":{"row":61,"column":18},"action":"insert","lines":["h"],"id":76}],[{"start":{"row":61,"column":18},"end":{"row":61,"column":19},"action":"insert","lines":["o"],"id":77}],[{"start":{"row":61,"column":19},"end":{"row":61,"column":20},"action":"insert","lines":["w"],"id":78}],[{"start":{"row":61,"column":20},"end":{"row":61,"column":21},"action":"insert","lines":[" "],"id":79}],[{"start":{"row":61,"column":21},"end":{"row":61,"column":22},"action":"insert","lines":["P"],"id":80}],[{"start":{"row":61,"column":22},"end":{"row":61,"column":23},"action":"insert","lines":["a"],"id":81}],[{"start":{"row":61,"column":23},"end":{"row":61,"column":24},"action":"insert","lines":["g"],"id":82}],[{"start":{"row":61,"column":24},"end":{"row":61,"column":25},"action":"insert","lines":["e"],"id":83},{"start":{"row":61,"column":25},"end":{"row":61,"column":26},"action":"insert","lines":[" "]}],[{"start":{"row":61,"column":25},"end":{"row":61,"column":26},"action":"remove","lines":[" "],"id":84}],[{"start":{"row":61,"column":25},"end":{"row":62,"column":0},"action":"insert","lines":["",""],"id":85}],[{"start":{"row":62,"column":0},"end":{"row":62,"column":1},"action":"insert","lines":["("],"id":86}],[{"start":{"row":62,"column":0},"end":{"row":62,"column":1},"action":"remove","lines":["("],"id":87}],[{"start":{"row":62,"column":0},"end":{"row":62,"column":1},"action":"insert","lines":["("],"id":88}],[{"start":{"row":62,"column":0},"end":{"row":62,"column":1},"action":"remove","lines":["("],"id":89}],[{"start":{"row":62,"column":0},"end":{"row":62,"column":1},"action":"insert","lines":["*"],"id":90}],[{"start":{"row":62,"column":1},"end":{"row":62,"column":2},"action":"insert","lines":[" "],"id":91}],[{"start":{"row":62,"column":2},"end":{"row":62,"column":3},"action":"insert","lines":["a"],"id":92}],[{"start":{"row":62,"column":3},"end":{"row":62,"column":4},"action":"insert","lines":["d"],"id":93}],[{"start":{"row":62,"column":3},"end":{"row":62,"column":4},"action":"remove","lines":["d"],"id":94}],[{"start":{"row":62,"column":2},"end":{"row":62,"column":3},"action":"remove","lines":["a"],"id":95}],[{"start":{"row":62,"column":2},"end":{"row":62,"column":3},"action":"insert","lines":["A"],"id":96}],[{"start":{"row":62,"column":3},"end":{"row":62,"column":4},"action":"insert","lines":["d"],"id":97}],[{"start":{"row":62,"column":4},"end":{"row":62,"column":5},"action":"insert","lines":["d"],"id":98}],[{"start":{"row":62,"column":5},"end":{"row":62,"column":6},"action":"insert","lines":[" "],"id":99}],[{"start":{"row":62,"column":5},"end":{"row":62,"column":6},"action":"remove","lines":[" "],"id":100}],[{"start":{"row":62,"column":5},"end":{"row":62,"column":6},"action":"insert","lines":[" "],"id":101}],[{"start":{"row":62,"column":6},"end":{"row":62,"column":7},"action":"insert","lines":["p"],"id":102}],[{"start":{"row":62,"column":7},"end":{"row":62,"column":8},"action":"insert","lines":["u"],"id":103}],[{"start":{"row":62,"column":8},"end":{"row":62,"column":9},"action":"insert","lines":["b"],"id":104}],[{"start":{"row":62,"column":9},"end":{"row":62,"column":10},"action":"insert","lines":["l"],"id":105}],[{"start":{"row":62,"column":10},"end":{"row":62,"column":11},"action":"insert","lines":["i"],"id":106}],[{"start":{"row":62,"column":11},"end":{"row":62,"column":12},"action":"insert","lines":["c"],"id":107}],[{"start":{"row":62,"column":12},"end":{"row":62,"column":13},"action":"insert","lines":[" "],"id":108}],[{"start":{"row":62,"column":13},"end":{"row":62,"column":14},"action":"insert","lines":["d"],"id":109}],[{"start":{"row":62,"column":14},"end":{"row":62,"column":15},"action":"insert","lines":["i"],"id":110}],[{"start":{"row":62,"column":15},"end":{"row":62,"column":16},"action":"insert","lines":["r"],"id":111}],[{"start":{"row":62,"column":16},"end":{"row":62,"column":17},"action":"insert","lines":["e"],"id":112}],[{"start":{"row":62,"column":17},"end":{"row":62,"column":18},"action":"insert","lines":["c"],"id":113}],[{"start":{"row":62,"column":18},"end":{"row":62,"column":19},"action":"insert","lines":["t"],"id":114}],[{"start":{"row":62,"column":19},"end":{"row":62,"column":20},"action":"insert","lines":["o"],"id":115}],[{"start":{"row":62,"column":20},"end":{"row":62,"column":21},"action":"insert","lines":["u"],"id":116}],[{"start":{"row":62,"column":21},"end":{"row":62,"column":22},"action":"insert","lines":[" "],"id":117}],[{"start":{"row":62,"column":21},"end":{"row":62,"column":22},"action":"remove","lines":[" "],"id":118}],[{"start":{"row":62,"column":21},"end":{"row":62,"column":22},"action":"insert","lines":["r"],"id":119}],[{"start":{"row":62,"column":22},"end":{"row":62,"column":23},"action":"insert","lines":["y"],"id":120}],[{"start":{"row":62,"column":22},"end":{"row":62,"column":23},"action":"remove","lines":["y"],"id":121}],[{"start":{"row":62,"column":21},"end":{"row":62,"column":22},"action":"remove","lines":["r"],"id":122}],[{"start":{"row":62,"column":20},"end":{"row":62,"column":21},"action":"remove","lines":["u"],"id":123}],[{"start":{"row":62,"column":20},"end":{"row":62,"column":21},"action":"insert","lines":["r"],"id":124}],[{"start":{"row":62,"column":21},"end":{"row":62,"column":22},"action":"insert","lines":["y"],"id":125}],[{"start":{"row":62,"column":22},"end":{"row":62,"column":23},"action":"insert","lines":[" "],"id":126}],[{"start":{"row":62,"column":22},"end":{"row":62,"column":23},"action":"remove","lines":[" "],"id":127}],[{"start":{"row":62,"column":22},"end":{"row":63,"column":0},"action":"insert","lines":["",""],"id":128},{"start":{"row":63,"column":0},"end":{"row":63,"column":2},"action":"insert","lines":["* "]}],[{"start":{"row":63,"column":2},"end":{"row":63,"column":3},"action":"insert","lines":["A"],"id":129}],[{"start":{"row":63,"column":3},"end":{"row":63,"column":4},"action":"insert","lines":["d"],"id":130}],[{"start":{"row":63,"column":4},"end":{"row":63,"column":5},"action":"insert","lines":["d"],"id":131}],[{"start":{"row":63,"column":5},"end":{"row":63,"column":6},"action":"insert","lines":[" "],"id":132}],[{"start":{"row":63,"column":6},"end":{"row":63,"column":7},"action":"insert","lines":["c"],"id":133}],[{"start":{"row":63,"column":7},"end":{"row":63,"column":8},"action":"insert","lines":["u"],"id":134}],[{"start":{"row":63,"column":8},"end":{"row":63,"column":9},"action":"insert","lines":["t"],"id":135}],[{"start":{"row":63,"column":8},"end":{"row":63,"column":9},"action":"remove","lines":["t"],"id":136}],[{"start":{"row":63,"column":8},"end":{"row":63,"column":9},"action":"insert","lines":["s"],"id":137}],[{"start":{"row":63,"column":9},"end":{"row":63,"column":10},"action":"insert","lines":["t"],"id":138}],[{"start":{"row":63,"column":10},"end":{"row":63,"column":11},"action":"insert","lines":["o"],"id":139}],[{"start":{"row":63,"column":11},"end":{"row":63,"column":12},"action":"insert","lines":["m"],"id":140}],[{"start":{"row":63,"column":12},"end":{"row":63,"column":13},"action":"insert","lines":[" "],"id":141}],[{"start":{"row":63,"column":13},"end":{"row":63,"column":14},"action":"insert","lines":["s"],"id":142}],[{"start":{"row":63,"column":14},"end":{"row":63,"column":15},"action":"insert","lines":["t"],"id":143}],[{"start":{"row":63,"column":15},"end":{"row":63,"column":16},"action":"insert","lines":["y"],"id":144}],[{"start":{"row":63,"column":16},"end":{"row":63,"column":17},"action":"insert","lines":["l"],"id":145}],[{"start":{"row":63,"column":17},"end":{"row":63,"column":18},"action":"insert","lines":["e"],"id":146}],[{"start":{"row":63,"column":18},"end":{"row":63,"column":19},"action":"insert","lines":["h"],"id":147}],[{"start":{"row":63,"column":18},"end":{"row":63,"column":19},"action":"remove","lines":["h"],"id":148}],[{"start":{"row":63,"column":18},"end":{"row":63,"column":19},"action":"insert","lines":["s"],"id":149}],[{"start":{"row":63,"column":19},"end":{"row":63,"column":20},"action":"insert","lines":["h"],"id":150}],[{"start":{"row":63,"column":20},"end":{"row":63,"column":21},"action":"insert","lines":["e"],"id":151}],[{"start":{"row":63,"column":21},"end":{"row":63,"column":22},"action":"insert","lines":["e"],"id":152}],[{"start":{"row":63,"column":22},"end":{"row":63,"column":23},"action":"insert","lines":["t"],"id":153}],[{"start":{"row":63,"column":23},"end":{"row":63,"column":24},"action":"insert","lines":[" "],"id":154}],[{"start":{"row":63,"column":23},"end":{"row":63,"column":24},"action":"remove","lines":[" "],"id":155}]]},"ace":{"folds":[],"scrolltop":1322.5,"scrollleft":0,"selection":{"start":{"row":61,"column":25},"end":{"row":61,"column":25},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":49,"state":"listblock","mode":"ace/mode/markdown"}},"timestamp":1445383703311,"hash":"1ade993167950d598c28dd6c85be3d87a3ee6a09"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v5/seeds.js b/.c9/metadata/workspace/YelpCamp/v5/seeds.js
deleted file mode 100644
index 6cf543a5..00000000
--- a/.c9/metadata/workspace/YelpCamp/v5/seeds.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"seeds.js","tooltip":"/YelpCamp/v5/seeds.js","undoManager":{"mark":12,"position":12,"stack":[[{"start":{"row":12,"column":18},"end":{"row":12,"column":78},"action":"remove","lines":["tps://farm4.staticflickr.com/3859/15123592300_6eecab209b.jpg"],"id":56}],[{"start":{"row":12,"column":17},"end":{"row":12,"column":18},"action":"remove","lines":["t"],"id":57}],[{"start":{"row":12,"column":16},"end":{"row":12,"column":17},"action":"remove","lines":["h"],"id":58}],[{"start":{"row":12,"column":16},"end":{"row":12,"column":78},"action":"insert","lines":["https://farm6.staticflickr.com/5487/11519019346_f66401b6c1.jpg"],"id":59}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":36},"action":"remove","lines":["lah blah blah"],"id":68}],[{"start":{"row":8,"column":22},"end":{"row":8,"column":23},"action":"remove","lines":["b"],"id":69}],[{"start":{"row":8,"column":22},"end":{"row":8,"column":467},"action":"insert","lines":["Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"],"id":70}],[{"start":{"row":13,"column":24},"end":{"row":13,"column":36},"action":"remove","lines":["ah blah blah"],"id":71}],[{"start":{"row":13,"column":23},"end":{"row":13,"column":24},"action":"remove","lines":["l"],"id":72}],[{"start":{"row":13,"column":22},"end":{"row":13,"column":23},"action":"remove","lines":["b"],"id":73}],[{"start":{"row":13,"column":22},"end":{"row":13,"column":467},"action":"insert","lines":["Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"],"id":74}],[{"start":{"row":18,"column":22},"end":{"row":18,"column":36},"action":"remove","lines":["blah blah blah"],"id":75}],[{"start":{"row":18,"column":22},"end":{"row":18,"column":467},"action":"insert","lines":["Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"],"id":76}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":18,"column":467},"end":{"row":18,"column":467},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445377738907,"hash":"bb328fd4d11e1843d92999cedc979e3c2878c462"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v5/views/campgrounds/show.ejs b/.c9/metadata/workspace/YelpCamp/v5/views/campgrounds/show.ejs
deleted file mode 100644
index 7fa211c7..00000000
--- a/.c9/metadata/workspace/YelpCamp/v5/views/campgrounds/show.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"show.ejs","tooltip":"/YelpCamp/v5/views/campgrounds/show.ejs","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":28,"column":33},"end":{"row":28,"column":34},"action":"insert","lines":[" "],"id":681}],[{"start":{"row":28,"column":33},"end":{"row":28,"column":34},"action":"remove","lines":[" "],"id":682}],[{"start":{"row":28,"column":33},"end":{"row":28,"column":41},"action":"insert","lines":[">"],"id":683}],[{"start":{"row":28,"column":33},"end":{"row":28,"column":34},"action":"insert","lines":[" "],"id":684}],[{"start":{"row":28,"column":34},"end":{"row":28,"column":35},"action":"insert","lines":["c"],"id":685}],[{"start":{"row":28,"column":35},"end":{"row":28,"column":36},"action":"insert","lines":["l"],"id":686}],[{"start":{"row":28,"column":36},"end":{"row":28,"column":37},"action":"insert","lines":["a"],"id":687}],[{"start":{"row":28,"column":37},"end":{"row":28,"column":38},"action":"insert","lines":["s"],"id":688}],[{"start":{"row":28,"column":38},"end":{"row":28,"column":39},"action":"insert","lines":["s"],"id":689}],[{"start":{"row":28,"column":39},"end":{"row":28,"column":40},"action":"insert","lines":[" "],"id":690}],[{"start":{"row":28,"column":39},"end":{"row":28,"column":40},"action":"remove","lines":[" "],"id":691}],[{"start":{"row":28,"column":39},"end":{"row":28,"column":40},"action":"insert","lines":["="],"id":692}],[{"start":{"row":28,"column":40},"end":{"row":28,"column":42},"action":"insert","lines":["\"\""],"id":694}],[{"start":{"row":28,"column":41},"end":{"row":28,"column":42},"action":"insert","lines":["p"],"id":695}],[{"start":{"row":28,"column":42},"end":{"row":28,"column":43},"action":"insert","lines":["u"],"id":696}],[{"start":{"row":28,"column":43},"end":{"row":28,"column":44},"action":"insert","lines":["l"],"id":697}],[{"start":{"row":28,"column":44},"end":{"row":28,"column":45},"action":"insert","lines":["l"],"id":698}],[{"start":{"row":28,"column":45},"end":{"row":28,"column":46},"action":"insert","lines":["-"],"id":699}],[{"start":{"row":28,"column":46},"end":{"row":28,"column":47},"action":"insert","lines":["r"],"id":700}],[{"start":{"row":28,"column":47},"end":{"row":28,"column":48},"action":"insert","lines":["i"],"id":701}],[{"start":{"row":28,"column":48},"end":{"row":28,"column":49},"action":"insert","lines":["g"],"id":702}],[{"start":{"row":28,"column":49},"end":{"row":28,"column":50},"action":"insert","lines":["h"],"id":703}],[{"start":{"row":28,"column":50},"end":{"row":28,"column":51},"action":"insert","lines":["t"],"id":704}],[{"start":{"row":28,"column":51},"end":{"row":28,"column":52},"action":"insert","lines":[" "],"id":705}],[{"start":{"row":28,"column":51},"end":{"row":28,"column":52},"action":"remove","lines":[" "],"id":706}],[{"start":{"row":28,"column":53},"end":{"row":28,"column":54},"action":"insert","lines":["1"],"id":707}],[{"start":{"row":28,"column":54},"end":{"row":28,"column":55},"action":"insert","lines":["0"],"id":708}],[{"start":{"row":28,"column":55},"end":{"row":28,"column":56},"action":"insert","lines":[" "],"id":709}],[{"start":{"row":28,"column":55},"end":{"row":28,"column":56},"action":"remove","lines":[" "],"id":710}],[{"start":{"row":28,"column":55},"end":{"row":28,"column":56},"action":"insert","lines":[" "],"id":711}],[{"start":{"row":28,"column":56},"end":{"row":28,"column":57},"action":"insert","lines":["d"],"id":712}],[{"start":{"row":28,"column":57},"end":{"row":28,"column":58},"action":"insert","lines":["a"],"id":713}],[{"start":{"row":28,"column":58},"end":{"row":28,"column":59},"action":"insert","lines":["y"],"id":714}],[{"start":{"row":28,"column":59},"end":{"row":28,"column":60},"action":"insert","lines":["s"],"id":715}],[{"start":{"row":28,"column":60},"end":{"row":28,"column":61},"action":"insert","lines":[" "],"id":716}],[{"start":{"row":28,"column":61},"end":{"row":28,"column":62},"action":"insert","lines":["a"],"id":717}],[{"start":{"row":28,"column":62},"end":{"row":28,"column":63},"action":"insert","lines":["g"],"id":718}],[{"start":{"row":28,"column":63},"end":{"row":28,"column":64},"action":"insert","lines":["o"],"id":719}],[{"start":{"row":28,"column":64},"end":{"row":28,"column":65},"action":"insert","lines":[" "],"id":720}],[{"start":{"row":28,"column":64},"end":{"row":28,"column":65},"action":"remove","lines":[" "],"id":721}],[{"start":{"row":32,"column":44},"end":{"row":32,"column":63},"action":"remove","lines":["<%= comment.text %>"],"id":722}],[{"start":{"row":32,"column":25},"end":{"row":32,"column":43},"action":"remove","lines":["strong> -"],"id":723}],[{"start":{"row":32,"column":24},"end":{"row":32,"column":25},"action":"remove","lines":["<"],"id":724}],[{"start":{"row":32,"column":24},"end":{"row":32,"column":43},"action":"insert","lines":["<%= comment.text %>"],"id":725}],[{"start":{"row":31,"column":20},"end":{"row":33,"column":24},"action":"remove","lines":["
"],"id":91}],[{"start":{"row":18,"column":22},"end":{"row":19,"column":0},"action":"remove","lines":["",""],"id":92}],[{"start":{"row":16,"column":56},"end":{"row":17,"column":0},"action":"insert","lines":["",""],"id":118},{"start":{"row":17,"column":0},"end":{"row":17,"column":20},"action":"insert","lines":[" "]}],[{"start":{"row":17,"column":20},"end":{"row":17,"column":21},"action":"insert","lines":["<"],"id":119}],[{"start":{"row":17,"column":21},"end":{"row":17,"column":22},"action":"insert","lines":["p"],"id":120}],[{"start":{"row":17,"column":22},"end":{"row":17,"column":27},"action":"insert","lines":[">"],"id":121}],[{"start":{"row":17,"column":23},"end":{"row":17,"column":24},"action":"insert","lines":["S"],"id":122}],[{"start":{"row":17,"column":24},"end":{"row":17,"column":25},"action":"insert","lines":["u"],"id":123}],[{"start":{"row":17,"column":25},"end":{"row":17,"column":26},"action":"insert","lines":["b"],"id":124}],[{"start":{"row":17,"column":26},"end":{"row":17,"column":27},"action":"insert","lines":["m"],"id":125}],[{"start":{"row":17,"column":27},"end":{"row":17,"column":28},"action":"insert","lines":["i"],"id":126}],[{"start":{"row":17,"column":28},"end":{"row":17,"column":29},"action":"insert","lines":["t"],"id":127}],[{"start":{"row":17,"column":29},"end":{"row":17,"column":30},"action":"insert","lines":["t"],"id":128}],[{"start":{"row":17,"column":30},"end":{"row":17,"column":31},"action":"insert","lines":["e"],"id":129}],[{"start":{"row":17,"column":31},"end":{"row":17,"column":32},"action":"insert","lines":["d"],"id":130}],[{"start":{"row":17,"column":32},"end":{"row":17,"column":33},"action":"insert","lines":[" "],"id":131}],[{"start":{"row":17,"column":33},"end":{"row":17,"column":34},"action":"insert","lines":["B"],"id":132}],[{"start":{"row":17,"column":34},"end":{"row":17,"column":35},"action":"insert","lines":["y"],"id":133}],[{"start":{"row":17,"column":35},"end":{"row":17,"column":36},"action":"insert","lines":[" "],"id":134}],[{"start":{"row":17,"column":36},"end":{"row":17,"column":37},"action":"insert","lines":["T"],"id":135}],[{"start":{"row":17,"column":37},"end":{"row":17,"column":38},"action":"insert","lines":["o"],"id":136}],[{"start":{"row":17,"column":38},"end":{"row":17,"column":39},"action":"insert","lines":["d"],"id":137}],[{"start":{"row":17,"column":39},"end":{"row":17,"column":40},"action":"insert","lines":["d"],"id":138}],[{"start":{"row":17,"column":40},"end":{"row":17,"column":41},"action":"insert","lines":[" "],"id":139}],[{"start":{"row":17,"column":41},"end":{"row":17,"column":42},"action":"insert","lines":["P"],"id":140}],[{"start":{"row":17,"column":42},"end":{"row":17,"column":43},"action":"insert","lines":["a"],"id":141}],[{"start":{"row":17,"column":43},"end":{"row":17,"column":44},"action":"insert","lines":["r"],"id":142}],[{"start":{"row":17,"column":44},"end":{"row":17,"column":45},"action":"insert","lines":["k"],"id":143}],[{"start":{"row":17,"column":45},"end":{"row":17,"column":46},"action":"insert","lines":["e"],"id":144}],[{"start":{"row":17,"column":46},"end":{"row":17,"column":47},"action":"insert","lines":["r"],"id":145}],[{"start":{"row":17,"column":21},"end":{"row":17,"column":22},"action":"remove","lines":["p"],"id":146}],[{"start":{"row":17,"column":21},"end":{"row":17,"column":22},"action":"insert","lines":["e"],"id":147}],[{"start":{"row":17,"column":22},"end":{"row":17,"column":23},"action":"insert","lines":["m"],"id":148}],[{"start":{"row":17,"column":50},"end":{"row":17,"column":51},"action":"remove","lines":["p"],"id":149}],[{"start":{"row":17,"column":50},"end":{"row":17,"column":51},"action":"insert","lines":["e"],"id":150}],[{"start":{"row":17,"column":51},"end":{"row":17,"column":52},"action":"insert","lines":["m"],"id":151}],[{"start":{"row":16,"column":56},"end":{"row":17,"column":0},"action":"insert","lines":["",""],"id":152},{"start":{"row":17,"column":0},"end":{"row":17,"column":20},"action":"insert","lines":[" "]}],[{"start":{"row":17,"column":20},"end":{"row":17,"column":21},"action":"insert","lines":["p"],"id":153}],[{"start":{"row":17,"column":20},"end":{"row":17,"column":21},"action":"remove","lines":["p"],"id":154},{"start":{"row":17,"column":20},"end":{"row":17,"column":21},"action":"insert","lines":["p"]}],[{"start":{"row":17,"column":20},"end":{"row":17,"column":21},"action":"remove","lines":["p"],"id":155}],[{"start":{"row":17,"column":20},"end":{"row":17,"column":21},"action":"insert","lines":["<"],"id":156}],[{"start":{"row":17,"column":21},"end":{"row":17,"column":22},"action":"insert","lines":["p"],"id":157}],[{"start":{"row":17,"column":22},"end":{"row":17,"column":27},"action":"insert","lines":[">"],"id":158}],[{"start":{"row":18,"column":20},"end":{"row":18,"column":53},"action":"remove","lines":["Submitted By Todd Parker"],"id":159}],[{"start":{"row":17,"column":23},"end":{"row":17,"column":56},"action":"insert","lines":["Submitted By Todd Parker"],"id":160}],[{"start":{"row":18,"column":16},"end":{"row":18,"column":20},"action":"remove","lines":[" "],"id":161}],[{"start":{"row":18,"column":12},"end":{"row":18,"column":16},"action":"remove","lines":[" "],"id":162}],[{"start":{"row":18,"column":8},"end":{"row":18,"column":12},"action":"remove","lines":[" "],"id":163}],[{"start":{"row":18,"column":4},"end":{"row":18,"column":8},"action":"remove","lines":[" "],"id":164}],[{"start":{"row":18,"column":0},"end":{"row":18,"column":4},"action":"remove","lines":[" "],"id":165}],[{"start":{"row":17,"column":60},"end":{"row":18,"column":0},"action":"remove","lines":["",""],"id":166}],[{"start":{"row":17,"column":0},"end":{"row":17,"column":60},"action":"remove","lines":["
Submitted By Todd Parker
"],"id":167}],[{"start":{"row":16,"column":56},"end":{"row":17,"column":0},"action":"remove","lines":["",""],"id":168}]]},"ace":{"folds":[],"scrolltop":287,"scrollleft":0,"selection":{"start":{"row":18,"column":22},"end":{"row":18,"column":22},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":10,"state":"start","mode":"ace/mode/ejs"}},"timestamp":1445493368149,"hash":"a2aefced21978174c84efe3609f2a76f89debfc1"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v8/views/comments/new.ejs b/.c9/metadata/workspace/YelpCamp/v8/views/comments/new.ejs
deleted file mode 100644
index c6e2eb62..00000000
--- a/.c9/metadata/workspace/YelpCamp/v8/views/comments/new.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"new.ejs","tooltip":"/YelpCamp/v8/views/comments/new.ejs","undoManager":{"mark":1,"position":1,"stack":[[{"start":{"row":9,"column":0},"end":{"row":11,"column":22},"action":"remove","lines":["
"," ","
"],"id":2}],[{"start":{"row":8,"column":22},"end":{"row":9,"column":0},"action":"remove","lines":["",""],"id":3}]]},"ace":{"folds":[],"scrolltop":112.5,"scrollleft":0,"selection":{"start":{"row":8,"column":22},"end":{"row":8,"column":22},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":82,"mode":"ace/mode/ejs"}},"timestamp":1445492567816,"hash":"c55c8775fc213dee946d6fe2d8bed817186a29c7"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v8/views/landing.ejs b/.c9/metadata/workspace/YelpCamp/v8/views/landing.ejs
deleted file mode 100644
index 16ef4732..00000000
--- a/.c9/metadata/workspace/YelpCamp/v8/views/landing.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"landing.ejs","tooltip":"/YelpCamp/v8/views/landing.ejs","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":8,"column":29},"end":{"row":8,"column":29},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446332132033,"hash":"9892c547daaba2e3b2004bfb00c648761d1d340d"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/app.js b/.c9/metadata/workspace/YelpCamp/v9/app.js
deleted file mode 100644
index 78894e1c..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/app.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"app.js","tooltip":"/YelpCamp/v9/app.js","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":43,"column":7},"end":{"row":43,"column":9},"action":"insert","lines":["()"],"id":20}],[{"start":{"row":43,"column":8},"end":{"row":43,"column":10},"action":"insert","lines":["\"\""],"id":21}],[{"start":{"row":43,"column":9},"end":{"row":43,"column":10},"action":"insert","lines":["/"],"id":22}],[{"start":{"row":43,"column":10},"end":{"row":43,"column":11},"action":"insert","lines":["d"],"id":23}],[{"start":{"row":43,"column":11},"end":{"row":43,"column":12},"action":"insert","lines":["e"],"id":24}],[{"start":{"row":43,"column":12},"end":{"row":43,"column":13},"action":"insert","lines":["m"],"id":25}],[{"start":{"row":43,"column":12},"end":{"row":43,"column":13},"action":"remove","lines":["m"],"id":26}],[{"start":{"row":43,"column":12},"end":{"row":43,"column":13},"action":"insert","lines":["m"],"id":27}],[{"start":{"row":43,"column":13},"end":{"row":43,"column":14},"action":"insert","lines":["o"],"id":28}],[{"start":{"row":43,"column":0},"end":{"row":44,"column":0},"action":"remove","lines":["app.get(\"/demo\")",""],"id":31}],[{"start":{"row":42,"column":0},"end":{"row":43,"column":0},"action":"insert","lines":["",""],"id":32}],[{"start":{"row":43,"column":0},"end":{"row":43,"column":1},"action":"insert","lines":["a"],"id":33}],[{"start":{"row":43,"column":1},"end":{"row":43,"column":2},"action":"insert","lines":["p"],"id":34}],[{"start":{"row":43,"column":2},"end":{"row":43,"column":3},"action":"insert","lines":["p"],"id":35}],[{"start":{"row":43,"column":3},"end":{"row":43,"column":4},"action":"insert","lines":[" "],"id":36}],[{"start":{"row":43,"column":3},"end":{"row":43,"column":4},"action":"remove","lines":[" "],"id":37}],[{"start":{"row":43,"column":3},"end":{"row":43,"column":4},"action":"insert","lines":["."],"id":38}],[{"start":{"row":43,"column":4},"end":{"row":43,"column":5},"action":"insert","lines":["g"],"id":39}],[{"start":{"row":43,"column":5},"end":{"row":43,"column":6},"action":"insert","lines":["e"],"id":40}],[{"start":{"row":43,"column":6},"end":{"row":43,"column":7},"action":"insert","lines":["t"],"id":41}],[{"start":{"row":43,"column":7},"end":{"row":43,"column":8},"action":"insert","lines":[" "],"id":42}],[{"start":{"row":43,"column":7},"end":{"row":43,"column":8},"action":"remove","lines":[" "],"id":43}],[{"start":{"row":43,"column":7},"end":{"row":43,"column":9},"action":"insert","lines":["()"],"id":44}],[{"start":{"row":43,"column":8},"end":{"row":43,"column":10},"action":"insert","lines":["\"\""],"id":45}],[{"start":{"row":43,"column":9},"end":{"row":43,"column":10},"action":"insert","lines":["/"],"id":46}],[{"start":{"row":43,"column":10},"end":{"row":43,"column":11},"action":"insert","lines":["l"],"id":47}],[{"start":{"row":43,"column":11},"end":{"row":43,"column":12},"action":"insert","lines":["o"],"id":48}],[{"start":{"row":43,"column":12},"end":{"row":43,"column":13},"action":"insert","lines":["g"],"id":49}],[{"start":{"row":43,"column":13},"end":{"row":43,"column":14},"action":"insert","lines":["i"],"id":50}],[{"start":{"row":43,"column":14},"end":{"row":43,"column":15},"action":"insert","lines":["n"],"id":51}],[{"start":{"row":43,"column":15},"end":{"row":43,"column":16},"action":"insert","lines":[" "],"id":52}],[{"start":{"row":43,"column":15},"end":{"row":43,"column":16},"action":"remove","lines":[" "],"id":53}],[{"start":{"row":43,"column":16},"end":{"row":43,"column":17},"action":"insert","lines":[","],"id":54}],[{"start":{"row":43,"column":17},"end":{"row":43,"column":18},"action":"insert","lines":[" "],"id":55}],[{"start":{"row":43,"column":18},"end":{"row":43,"column":19},"action":"insert","lines":["f"],"id":56}],[{"start":{"row":43,"column":19},"end":{"row":43,"column":20},"action":"insert","lines":["u"],"id":57}],[{"start":{"row":43,"column":20},"end":{"row":43,"column":21},"action":"insert","lines":["n"],"id":58}],[{"start":{"row":43,"column":21},"end":{"row":43,"column":22},"action":"insert","lines":["c"],"id":59}],[{"start":{"row":43,"column":22},"end":{"row":43,"column":23},"action":"insert","lines":["t"],"id":60}],[{"start":{"row":43,"column":23},"end":{"row":43,"column":24},"action":"insert","lines":["i"],"id":61}],[{"start":{"row":43,"column":24},"end":{"row":43,"column":25},"action":"insert","lines":["o"],"id":62}],[{"start":{"row":43,"column":25},"end":{"row":43,"column":26},"action":"insert","lines":["n"],"id":63}],[{"start":{"row":43,"column":26},"end":{"row":43,"column":27},"action":"insert","lines":[" "],"id":64}],[{"start":{"row":43,"column":26},"end":{"row":43,"column":27},"action":"remove","lines":[" "],"id":65}],[{"start":{"row":43,"column":26},"end":{"row":43,"column":28},"action":"insert","lines":["()"],"id":66}],[{"start":{"row":43,"column":27},"end":{"row":43,"column":28},"action":"insert","lines":["r"],"id":67}],[{"start":{"row":43,"column":28},"end":{"row":43,"column":29},"action":"insert","lines":["e"],"id":68}],[{"start":{"row":43,"column":29},"end":{"row":43,"column":30},"action":"insert","lines":["q"],"id":69}],[{"start":{"row":43,"column":30},"end":{"row":43,"column":31},"action":"insert","lines":[" "],"id":70}],[{"start":{"row":43,"column":30},"end":{"row":43,"column":31},"action":"remove","lines":[" "],"id":71}],[{"start":{"row":43,"column":30},"end":{"row":43,"column":31},"action":"insert","lines":[","],"id":72}],[{"start":{"row":43,"column":31},"end":{"row":43,"column":32},"action":"insert","lines":[" "],"id":73}],[{"start":{"row":43,"column":32},"end":{"row":43,"column":33},"action":"insert","lines":["e"],"id":74}],[{"start":{"row":43,"column":33},"end":{"row":43,"column":34},"action":"insert","lines":["s"],"id":75}],[{"start":{"row":43,"column":34},"end":{"row":43,"column":35},"action":"insert","lines":[" "],"id":76}],[{"start":{"row":43,"column":34},"end":{"row":43,"column":35},"action":"remove","lines":[" "],"id":77}],[{"start":{"row":43,"column":33},"end":{"row":43,"column":34},"action":"remove","lines":["s"],"id":78}],[{"start":{"row":43,"column":32},"end":{"row":43,"column":33},"action":"remove","lines":["e"],"id":79}],[{"start":{"row":43,"column":32},"end":{"row":43,"column":33},"action":"insert","lines":["r"],"id":80}],[{"start":{"row":43,"column":33},"end":{"row":43,"column":34},"action":"insert","lines":["e"],"id":81}],[{"start":{"row":43,"column":34},"end":{"row":43,"column":35},"action":"insert","lines":["s"],"id":82}],[{"start":{"row":43,"column":36},"end":{"row":43,"column":38},"action":"insert","lines":["{}"],"id":83}],[{"start":{"row":43,"column":37},"end":{"row":45,"column":0},"action":"insert","lines":[""," ",""],"id":84}],[{"start":{"row":45,"column":2},"end":{"row":45,"column":3},"action":"insert","lines":[";"],"id":85}],[{"start":{"row":44,"column":3},"end":{"row":44,"column":4},"action":"insert","lines":["r"],"id":86}],[{"start":{"row":44,"column":4},"end":{"row":44,"column":5},"action":"insert","lines":["e"],"id":87}],[{"start":{"row":44,"column":5},"end":{"row":44,"column":6},"action":"insert","lines":["s"],"id":88}],[{"start":{"row":44,"column":6},"end":{"row":44,"column":7},"action":"insert","lines":[" "],"id":89}],[{"start":{"row":44,"column":6},"end":{"row":44,"column":7},"action":"remove","lines":[" "],"id":90}],[{"start":{"row":44,"column":6},"end":{"row":44,"column":7},"action":"insert","lines":["."],"id":91}],[{"start":{"row":44,"column":7},"end":{"row":44,"column":8},"action":"insert","lines":["s"],"id":92}],[{"start":{"row":44,"column":8},"end":{"row":44,"column":9},"action":"insert","lines":["e"],"id":93}],[{"start":{"row":44,"column":9},"end":{"row":44,"column":10},"action":"insert","lines":["n"],"id":94}],[{"start":{"row":44,"column":10},"end":{"row":44,"column":11},"action":"insert","lines":["d"],"id":95}],[{"start":{"row":44,"column":11},"end":{"row":44,"column":12},"action":"insert","lines":[" "],"id":96}],[{"start":{"row":44,"column":11},"end":{"row":44,"column":12},"action":"remove","lines":[" "],"id":97}],[{"start":{"row":44,"column":11},"end":{"row":44,"column":13},"action":"insert","lines":["()"],"id":98}],[{"start":{"row":44,"column":12},"end":{"row":44,"column":14},"action":"insert","lines":["\"\""],"id":99}],[{"start":{"row":44,"column":13},"end":{"row":44,"column":14},"action":"insert","lines":["S"],"id":100}],[{"start":{"row":44,"column":14},"end":{"row":44,"column":15},"action":"insert","lines":["u"],"id":101}],[{"start":{"row":44,"column":15},"end":{"row":44,"column":16},"action":"insert","lines":["c"],"id":102}],[{"start":{"row":44,"column":15},"end":{"row":44,"column":16},"action":"remove","lines":["c"],"id":103}],[{"start":{"row":44,"column":14},"end":{"row":44,"column":15},"action":"remove","lines":["u"],"id":104}],[{"start":{"row":44,"column":13},"end":{"row":44,"column":14},"action":"remove","lines":["S"],"id":105}],[{"start":{"row":44,"column":13},"end":{"row":44,"column":14},"action":"insert","lines":["Y"],"id":106}],[{"start":{"row":44,"column":14},"end":{"row":44,"column":15},"action":"insert","lines":["o"],"id":107}],[{"start":{"row":44,"column":15},"end":{"row":44,"column":16},"action":"insert","lines":["u"],"id":108}],[{"start":{"row":44,"column":16},"end":{"row":44,"column":17},"action":"insert","lines":[" "],"id":109}],[{"start":{"row":44,"column":17},"end":{"row":44,"column":18},"action":"insert","lines":["l"],"id":110}],[{"start":{"row":44,"column":18},"end":{"row":44,"column":19},"action":"insert","lines":["o"],"id":111}],[{"start":{"row":44,"column":19},"end":{"row":44,"column":20},"action":"insert","lines":["g"],"id":112}],[{"start":{"row":44,"column":20},"end":{"row":44,"column":21},"action":"insert","lines":["g"],"id":113}],[{"start":{"row":44,"column":21},"end":{"row":44,"column":22},"action":"insert","lines":["e"],"id":114}],[{"start":{"row":44,"column":22},"end":{"row":44,"column":23},"action":"insert","lines":["d"],"id":115}],[{"start":{"row":44,"column":23},"end":{"row":44,"column":24},"action":"insert","lines":[" "],"id":116}],[{"start":{"row":44,"column":24},"end":{"row":44,"column":25},"action":"insert","lines":["i"],"id":117}],[{"start":{"row":44,"column":25},"end":{"row":44,"column":26},"action":"insert","lines":["n"],"id":118}],[{"start":{"row":44,"column":26},"end":{"row":44,"column":27},"action":"insert","lines":["!"],"id":119}],[{"start":{"row":44,"column":29},"end":{"row":44,"column":30},"action":"insert","lines":[";"],"id":120}],[{"start":{"row":43,"column":0},"end":{"row":45,"column":3},"action":"remove","lines":["app.get(\"/login\", function(req, res){"," res.send(\"You logged in!\"); ","});"],"id":121}],[{"start":{"row":42,"column":0},"end":{"row":43,"column":0},"action":"remove","lines":["",""],"id":122}]]},"ace":{"folds":[],"scrolltop":428.5,"scrollleft":0,"selection":{"start":{"row":42,"column":0},"end":{"row":42,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":15,"state":"no_regex","mode":"ace/mode/javascript"}},"timestamp":1446238309745,"hash":"0a4c3e67174db4e9dbf70e7810c54ac027a5971f"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/models/campground.js b/.c9/metadata/workspace/YelpCamp/v9/models/campground.js
deleted file mode 100644
index 8e963588..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/models/campground.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campground.js","tooltip":"/YelpCamp/v9/models/campground.js","ace":{"folds":[],"scrolltop":85.5,"scrollleft":0,"selection":{"start":{"row":12,"column":5},"end":{"row":12,"column":5},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":50,"mode":"ace/mode/javascript"}},"hash":"6a47307c1260b8ae223431925a4d312d0e9ff1df","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":6,"column":9},"end":{"row":6,"column":10},"action":"insert","lines":[":"],"id":11}],[{"start":{"row":6,"column":10},"end":{"row":6,"column":11},"action":"insert","lines":[" "],"id":12}],[{"start":{"row":6,"column":11},"end":{"row":6,"column":12},"action":"insert","lines":["{"],"id":13}],[{"start":{"row":6,"column":12},"end":{"row":8,"column":4},"action":"insert","lines":[""," "," }"],"id":14}],[{"start":{"row":7,"column":6},"end":{"row":7,"column":7},"action":"insert","lines":["i"],"id":15}],[{"start":{"row":7,"column":7},"end":{"row":7,"column":8},"action":"insert","lines":["d"],"id":16}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"insert","lines":[" "],"id":17}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"remove","lines":[" "],"id":18}],[{"start":{"row":7,"column":8},"end":{"row":7,"column":9},"action":"insert","lines":[":"],"id":19}],[{"start":{"row":7,"column":9},"end":{"row":7,"column":10},"action":"insert","lines":[" "],"id":20}],[{"start":{"row":7,"column":10},"end":{"row":7,"column":11},"action":"insert","lines":["{"],"id":21}],[{"start":{"row":7,"column":11},"end":{"row":9,"column":7},"action":"insert","lines":[""," "," }"],"id":22}],[{"start":{"row":9,"column":7},"end":{"row":9,"column":8},"action":"insert","lines":[","],"id":23}],[{"start":{"row":9,"column":8},"end":{"row":10,"column":0},"action":"insert","lines":["",""],"id":24},{"start":{"row":10,"column":0},"end":{"row":10,"column":6},"action":"insert","lines":[" "]}],[{"start":{"row":10,"column":6},"end":{"row":10,"column":7},"action":"insert","lines":["u"],"id":25}],[{"start":{"row":10,"column":7},"end":{"row":10,"column":8},"action":"insert","lines":["s"],"id":26}],[{"start":{"row":10,"column":8},"end":{"row":10,"column":9},"action":"insert","lines":["e"],"id":27}],[{"start":{"row":10,"column":9},"end":{"row":10,"column":10},"action":"insert","lines":["r"],"id":28}],[{"start":{"row":10,"column":10},"end":{"row":10,"column":11},"action":"insert","lines":["n"],"id":29}],[{"start":{"row":10,"column":11},"end":{"row":10,"column":12},"action":"insert","lines":["a"],"id":30}],[{"start":{"row":10,"column":12},"end":{"row":10,"column":13},"action":"insert","lines":["m"],"id":31}],[{"start":{"row":10,"column":13},"end":{"row":10,"column":14},"action":"insert","lines":["e"],"id":32}],[{"start":{"row":10,"column":14},"end":{"row":10,"column":15},"action":"insert","lines":[" "],"id":33}],[{"start":{"row":10,"column":14},"end":{"row":10,"column":15},"action":"remove","lines":[" "],"id":34}],[{"start":{"row":10,"column":14},"end":{"row":10,"column":15},"action":"insert","lines":[":"],"id":35}],[{"start":{"row":10,"column":15},"end":{"row":10,"column":16},"action":"insert","lines":[" "],"id":36}],[{"start":{"row":10,"column":16},"end":{"row":10,"column":17},"action":"insert","lines":["S"],"id":37}],[{"start":{"row":10,"column":17},"end":{"row":10,"column":18},"action":"insert","lines":["t"],"id":38}],[{"start":{"row":10,"column":18},"end":{"row":10,"column":19},"action":"insert","lines":["r"],"id":39}],[{"start":{"row":10,"column":19},"end":{"row":10,"column":20},"action":"insert","lines":["i"],"id":40}],[{"start":{"row":10,"column":20},"end":{"row":10,"column":21},"action":"insert","lines":["n"],"id":41}],[{"start":{"row":10,"column":21},"end":{"row":10,"column":22},"action":"insert","lines":["g"],"id":42}],[{"start":{"row":10,"column":22},"end":{"row":10,"column":23},"action":"insert","lines":[" "],"id":43}],[{"start":{"row":10,"column":22},"end":{"row":10,"column":23},"action":"remove","lines":[" "],"id":44}],[{"start":{"row":8,"column":9},"end":{"row":8,"column":10},"action":"insert","lines":["t"],"id":45}],[{"start":{"row":8,"column":10},"end":{"row":8,"column":11},"action":"insert","lines":["y"],"id":46}],[{"start":{"row":8,"column":11},"end":{"row":8,"column":12},"action":"insert","lines":["p"],"id":47}],[{"start":{"row":8,"column":12},"end":{"row":8,"column":13},"action":"insert","lines":["e"],"id":48}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"insert","lines":[" "],"id":49}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"remove","lines":[" "],"id":50}],[{"start":{"row":8,"column":13},"end":{"row":8,"column":14},"action":"insert","lines":[":"],"id":51}],[{"start":{"row":8,"column":14},"end":{"row":8,"column":15},"action":"insert","lines":[" "],"id":52}],[{"start":{"row":8,"column":15},"end":{"row":8,"column":16},"action":"insert","lines":["m"],"id":53}],[{"start":{"row":8,"column":16},"end":{"row":8,"column":17},"action":"insert","lines":["o"],"id":54}],[{"start":{"row":8,"column":17},"end":{"row":8,"column":18},"action":"insert","lines":["n"],"id":55}],[{"start":{"row":8,"column":18},"end":{"row":8,"column":19},"action":"insert","lines":["g"],"id":56}],[{"start":{"row":8,"column":19},"end":{"row":8,"column":20},"action":"insert","lines":["o"],"id":57}],[{"start":{"row":8,"column":20},"end":{"row":8,"column":21},"action":"insert","lines":["o"],"id":58}],[{"start":{"row":8,"column":21},"end":{"row":8,"column":22},"action":"insert","lines":["s"],"id":59}],[{"start":{"row":8,"column":22},"end":{"row":8,"column":23},"action":"insert","lines":["e"],"id":60}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"insert","lines":[" "],"id":61}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"remove","lines":[" "],"id":62}],[{"start":{"row":8,"column":23},"end":{"row":8,"column":24},"action":"insert","lines":["."],"id":63}],[{"start":{"row":8,"column":24},"end":{"row":8,"column":25},"action":"insert","lines":["S"],"id":64}],[{"start":{"row":8,"column":25},"end":{"row":8,"column":26},"action":"insert","lines":["c"],"id":65}],[{"start":{"row":8,"column":26},"end":{"row":8,"column":27},"action":"insert","lines":["h"],"id":66}],[{"start":{"row":8,"column":27},"end":{"row":8,"column":28},"action":"insert","lines":["e"],"id":67}],[{"start":{"row":8,"column":28},"end":{"row":8,"column":29},"action":"insert","lines":["m"],"id":68}],[{"start":{"row":8,"column":29},"end":{"row":8,"column":30},"action":"insert","lines":["a"],"id":69}],[{"start":{"row":8,"column":30},"end":{"row":8,"column":31},"action":"insert","lines":[" "],"id":70}],[{"start":{"row":8,"column":30},"end":{"row":8,"column":31},"action":"remove","lines":[" "],"id":71}],[{"start":{"row":8,"column":30},"end":{"row":8,"column":31},"action":"insert","lines":["."],"id":72}],[{"start":{"row":8,"column":31},"end":{"row":8,"column":32},"action":"insert","lines":["T"],"id":73}],[{"start":{"row":8,"column":32},"end":{"row":8,"column":33},"action":"insert","lines":["y"],"id":74}],[{"start":{"row":8,"column":33},"end":{"row":8,"column":34},"action":"insert","lines":["p"],"id":75}],[{"start":{"row":8,"column":34},"end":{"row":8,"column":35},"action":"insert","lines":["e"],"id":76}],[{"start":{"row":8,"column":35},"end":{"row":8,"column":36},"action":"insert","lines":["s"],"id":77}],[{"start":{"row":8,"column":36},"end":{"row":8,"column":37},"action":"insert","lines":[" "],"id":78}],[{"start":{"row":8,"column":36},"end":{"row":8,"column":37},"action":"remove","lines":[" "],"id":79}],[{"start":{"row":8,"column":36},"end":{"row":8,"column":37},"action":"insert","lines":["."],"id":80}],[{"start":{"row":8,"column":37},"end":{"row":8,"column":38},"action":"insert","lines":["O"],"id":81}],[{"start":{"row":8,"column":38},"end":{"row":8,"column":39},"action":"insert","lines":["b"],"id":82}],[{"start":{"row":8,"column":39},"end":{"row":8,"column":40},"action":"insert","lines":["j"],"id":83}],[{"start":{"row":8,"column":40},"end":{"row":8,"column":41},"action":"insert","lines":["e"],"id":84}],[{"start":{"row":8,"column":41},"end":{"row":8,"column":42},"action":"insert","lines":["c"],"id":85}],[{"start":{"row":8,"column":42},"end":{"row":8,"column":43},"action":"insert","lines":["t"],"id":86}],[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"insert","lines":[" "],"id":87}],[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"remove","lines":[" "],"id":88}],[{"start":{"row":8,"column":43},"end":{"row":8,"column":44},"action":"insert","lines":["I"],"id":89}],[{"start":{"row":8,"column":44},"end":{"row":8,"column":45},"action":"insert","lines":["d"],"id":90}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":[" "],"id":91}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"remove","lines":[" "],"id":92}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":[";"],"id":93}],[{"start":{"row":8,"column":46},"end":{"row":9,"column":0},"action":"insert","lines":["",""],"id":94},{"start":{"row":9,"column":0},"end":{"row":9,"column":9},"action":"insert","lines":[" "]}],[{"start":{"row":9,"column":9},"end":{"row":9,"column":10},"action":"insert","lines":["r"],"id":95}],[{"start":{"row":9,"column":10},"end":{"row":9,"column":11},"action":"insert","lines":["e"],"id":96}],[{"start":{"row":9,"column":11},"end":{"row":9,"column":12},"action":"insert","lines":["f"],"id":97}],[{"start":{"row":9,"column":12},"end":{"row":9,"column":13},"action":"insert","lines":[" "],"id":98}],[{"start":{"row":9,"column":12},"end":{"row":9,"column":13},"action":"remove","lines":[" "],"id":99}],[{"start":{"row":9,"column":12},"end":{"row":9,"column":13},"action":"insert","lines":[":"],"id":100}],[{"start":{"row":9,"column":13},"end":{"row":9,"column":14},"action":"insert","lines":[" "],"id":101}],[{"start":{"row":9,"column":14},"end":{"row":9,"column":16},"action":"insert","lines":["\"\""],"id":102}],[{"start":{"row":9,"column":15},"end":{"row":9,"column":16},"action":"insert","lines":["U"],"id":103}],[{"start":{"row":9,"column":16},"end":{"row":9,"column":17},"action":"insert","lines":["s"],"id":104}],[{"start":{"row":9,"column":17},"end":{"row":9,"column":18},"action":"insert","lines":["e"],"id":105}],[{"start":{"row":9,"column":18},"end":{"row":9,"column":19},"action":"insert","lines":["r"],"id":106}],[{"start":{"row":9,"column":19},"end":{"row":9,"column":20},"action":"insert","lines":[" "],"id":107}],[{"start":{"row":9,"column":19},"end":{"row":9,"column":20},"action":"remove","lines":[" "],"id":108}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"remove","lines":[";"],"id":109}],[{"start":{"row":8,"column":45},"end":{"row":8,"column":46},"action":"insert","lines":[","],"id":110}],[{"start":{"row":12,"column":4},"end":{"row":12,"column":5},"action":"insert","lines":[","],"id":111}]]},"timestamp":1445494211000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/readme.md b/.c9/metadata/workspace/YelpCamp/v9/readme.md
deleted file mode 100644
index 226d9a60..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"readme.md","tooltip":"/YelpCamp/v9/readme.md","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"insert","lines":[" "],"id":4}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"insert","lines":["c"],"id":5}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"remove","lines":["c"],"id":6}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"insert","lines":["c"],"id":7}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"remove","lines":["c"],"id":8}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"remove","lines":[" "],"id":9}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"insert","lines":[" "],"id":10}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"remove","lines":[" "],"id":11}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"insert","lines":[" "],"id":12}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"insert","lines":["c"],"id":13}],[{"start":{"row":95,"column":23},"end":{"row":95,"column":24},"action":"insert","lines":["a"],"id":14}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"insert","lines":["m"],"id":15}],[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"insert","lines":["p"],"id":16}],[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"remove","lines":["p"],"id":17}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"remove","lines":["m"],"id":18}],[{"start":{"row":95,"column":23},"end":{"row":95,"column":24},"action":"remove","lines":["a"],"id":19}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"remove","lines":["c"],"id":20}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"remove","lines":[" "],"id":21}],[{"start":{"row":95,"column":20},"end":{"row":95,"column":21},"action":"remove","lines":["h"],"id":22}],[{"start":{"row":95,"column":19},"end":{"row":95,"column":20},"action":"remove","lines":["t"],"id":23}],[{"start":{"row":95,"column":18},"end":{"row":95,"column":19},"action":"remove","lines":["i"],"id":24}],[{"start":{"row":95,"column":17},"end":{"row":95,"column":18},"action":"remove","lines":["w"],"id":25}],[{"start":{"row":95,"column":16},"end":{"row":95,"column":17},"action":"remove","lines":[" "],"id":26}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"remove","lines":["r"],"id":27}],[{"start":{"row":95,"column":14},"end":{"row":95,"column":15},"action":"remove","lines":["e"],"id":28}],[{"start":{"row":95,"column":13},"end":{"row":95,"column":14},"action":"remove","lines":["s"],"id":29}],[{"start":{"row":95,"column":12},"end":{"row":95,"column":13},"action":"remove","lines":["u"],"id":30}],[{"start":{"row":95,"column":11},"end":{"row":95,"column":12},"action":"remove","lines":[" "],"id":31}],[{"start":{"row":95,"column":10},"end":{"row":95,"column":11},"action":"remove","lines":["e"],"id":32}],[{"start":{"row":95,"column":9},"end":{"row":95,"column":10},"action":"remove","lines":["t"],"id":33}],[{"start":{"row":95,"column":8},"end":{"row":95,"column":9},"action":"remove","lines":["a"],"id":34}],[{"start":{"row":95,"column":7},"end":{"row":95,"column":8},"action":"remove","lines":["i"],"id":35}],[{"start":{"row":95,"column":6},"end":{"row":95,"column":7},"action":"remove","lines":["c"],"id":36}],[{"start":{"row":95,"column":5},"end":{"row":95,"column":6},"action":"remove","lines":["o"],"id":37}],[{"start":{"row":95,"column":4},"end":{"row":95,"column":5},"action":"remove","lines":["s"],"id":38}],[{"start":{"row":95,"column":3},"end":{"row":95,"column":4},"action":"remove","lines":["s"],"id":39}],[{"start":{"row":95,"column":2},"end":{"row":95,"column":3},"action":"remove","lines":["A"],"id":40}],[{"start":{"row":95,"column":2},"end":{"row":95,"column":3},"action":"insert","lines":["S"],"id":41}],[{"start":{"row":95,"column":3},"end":{"row":95,"column":4},"action":"insert","lines":["a"],"id":42}],[{"start":{"row":95,"column":4},"end":{"row":95,"column":5},"action":"insert","lines":["v"],"id":43}],[{"start":{"row":95,"column":5},"end":{"row":95,"column":6},"action":"insert","lines":["e"],"id":44}],[{"start":{"row":95,"column":6},"end":{"row":95,"column":7},"action":"insert","lines":[" "],"id":45}],[{"start":{"row":95,"column":7},"end":{"row":95,"column":8},"action":"insert","lines":["u"],"id":46}],[{"start":{"row":95,"column":8},"end":{"row":95,"column":9},"action":"insert","lines":["s"],"id":47}],[{"start":{"row":95,"column":9},"end":{"row":95,"column":10},"action":"insert","lines":["e"],"id":48}],[{"start":{"row":95,"column":10},"end":{"row":95,"column":11},"action":"insert","lines":["r"],"id":49}],[{"start":{"row":95,"column":11},"end":{"row":95,"column":12},"action":"insert","lines":["n"],"id":50}],[{"start":{"row":95,"column":12},"end":{"row":95,"column":13},"action":"insert","lines":["a"],"id":51}],[{"start":{"row":95,"column":13},"end":{"row":95,"column":14},"action":"insert","lines":["m"],"id":52}],[{"start":{"row":95,"column":14},"end":{"row":95,"column":15},"action":"insert","lines":["e"],"id":53}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"insert","lines":[" "],"id":54}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"remove","lines":[" "],"id":55}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"insert","lines":["+"],"id":56}],[{"start":{"row":95,"column":16},"end":{"row":95,"column":17},"action":"insert","lines":["i"],"id":57}],[{"start":{"row":95,"column":17},"end":{"row":95,"column":18},"action":"insert","lines":["d"],"id":58}],[{"start":{"row":95,"column":17},"end":{"row":95,"column":18},"action":"remove","lines":["d"],"id":59}],[{"start":{"row":95,"column":16},"end":{"row":95,"column":17},"action":"remove","lines":["i"],"id":60}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"remove","lines":["+"],"id":61}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"insert","lines":[" "],"id":62}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"remove","lines":[" "],"id":63}],[{"start":{"row":95,"column":15},"end":{"row":95,"column":16},"action":"insert","lines":["+"],"id":64}],[{"start":{"row":95,"column":16},"end":{"row":95,"column":17},"action":"insert","lines":["o"],"id":65}],[{"start":{"row":95,"column":17},"end":{"row":95,"column":18},"action":"insert","lines":["d"],"id":66}],[{"start":{"row":95,"column":17},"end":{"row":95,"column":18},"action":"remove","lines":["d"],"id":67}],[{"start":{"row":95,"column":16},"end":{"row":95,"column":17},"action":"remove","lines":["o"],"id":68}],[{"start":{"row":95,"column":16},"end":{"row":95,"column":17},"action":"insert","lines":["i"],"id":69}],[{"start":{"row":95,"column":17},"end":{"row":95,"column":18},"action":"insert","lines":["d"],"id":70}],[{"start":{"row":95,"column":18},"end":{"row":95,"column":19},"action":"insert","lines":[" "],"id":71}],[{"start":{"row":95,"column":18},"end":{"row":95,"column":19},"action":"remove","lines":[" "],"id":72}],[{"start":{"row":95,"column":18},"end":{"row":95,"column":19},"action":"insert","lines":[" "],"id":73}],[{"start":{"row":95,"column":19},"end":{"row":95,"column":20},"action":"insert","lines":["t"],"id":74}],[{"start":{"row":95,"column":20},"end":{"row":95,"column":21},"action":"insert","lines":["o"],"id":75}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"insert","lines":[" "],"id":76}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"remove","lines":[" "],"id":77}],[{"start":{"row":95,"column":21},"end":{"row":95,"column":22},"action":"insert","lines":[" "],"id":78}],[{"start":{"row":95,"column":22},"end":{"row":95,"column":23},"action":"insert","lines":["n"],"id":79}],[{"start":{"row":95,"column":23},"end":{"row":95,"column":24},"action":"insert","lines":["e"],"id":80}],[{"start":{"row":95,"column":24},"end":{"row":95,"column":25},"action":"insert","lines":["w"],"id":81}],[{"start":{"row":95,"column":25},"end":{"row":95,"column":26},"action":"insert","lines":["l"],"id":82}],[{"start":{"row":95,"column":26},"end":{"row":95,"column":27},"action":"insert","lines":["y"],"id":83}],[{"start":{"row":95,"column":27},"end":{"row":95,"column":28},"action":"insert","lines":[" "],"id":84}],[{"start":{"row":95,"column":28},"end":{"row":95,"column":29},"action":"insert","lines":["c"],"id":85}],[{"start":{"row":95,"column":29},"end":{"row":95,"column":30},"action":"insert","lines":["r"],"id":86}],[{"start":{"row":95,"column":30},"end":{"row":95,"column":31},"action":"insert","lines":["e"],"id":87}],[{"start":{"row":95,"column":31},"end":{"row":95,"column":32},"action":"insert","lines":["a"],"id":88}],[{"start":{"row":95,"column":32},"end":{"row":95,"column":33},"action":"insert","lines":["t"],"id":89}],[{"start":{"row":95,"column":33},"end":{"row":95,"column":34},"action":"insert","lines":["e"],"id":90}],[{"start":{"row":95,"column":34},"end":{"row":95,"column":35},"action":"insert","lines":["d"],"id":91}],[{"start":{"row":95,"column":35},"end":{"row":95,"column":36},"action":"insert","lines":[" "],"id":92}],[{"start":{"row":95,"column":36},"end":{"row":95,"column":37},"action":"insert","lines":["c"],"id":93}],[{"start":{"row":95,"column":37},"end":{"row":95,"column":38},"action":"insert","lines":["a"],"id":94}],[{"start":{"row":95,"column":38},"end":{"row":95,"column":39},"action":"insert","lines":["m"],"id":95}],[{"start":{"row":95,"column":39},"end":{"row":95,"column":40},"action":"insert","lines":["p"],"id":96}],[{"start":{"row":95,"column":40},"end":{"row":95,"column":41},"action":"insert","lines":["g"],"id":97}],[{"start":{"row":95,"column":41},"end":{"row":95,"column":42},"action":"insert","lines":["r"],"id":98}],[{"start":{"row":95,"column":42},"end":{"row":95,"column":43},"action":"insert","lines":["o"],"id":99}],[{"start":{"row":95,"column":43},"end":{"row":95,"column":44},"action":"insert","lines":["u"],"id":100}],[{"start":{"row":95,"column":44},"end":{"row":95,"column":45},"action":"insert","lines":["n"],"id":101}],[{"start":{"row":95,"column":45},"end":{"row":95,"column":46},"action":"insert","lines":["d"],"id":102}],[{"start":{"row":95,"column":46},"end":{"row":95,"column":47},"action":"insert","lines":[" "],"id":103}],[{"start":{"row":95,"column":46},"end":{"row":95,"column":47},"action":"remove","lines":[" "],"id":104}]]},"ace":{"folds":[],"scrolltop":423.5,"scrollleft":0,"selection":{"start":{"row":22,"column":36},"end":{"row":22,"column":36},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":15,"state":"listblock","mode":"ace/mode/markdown"}},"timestamp":1445493617000,"hash":"7a977e817c9c5fb7e7e7744c821d1e50caf05391"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/routes/campgrounds.js b/.c9/metadata/workspace/YelpCamp/v9/routes/campgrounds.js
deleted file mode 100644
index 45247b91..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/routes/campgrounds.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"campgrounds.js","tooltip":"/YelpCamp/v9/routes/campgrounds.js","ace":{"folds":[],"scrolltop":484.5,"scrollleft":0,"selection":{"start":{"row":24,"column":35},"end":{"row":24,"column":35},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":9,"state":"start","mode":"ace/mode/javascript"}},"hash":"728f2c4d1124e9d21e7c0cf8b5e44e8766f2acf5","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":24,"column":20},"end":{"row":24,"column":21},"action":"insert","lines":["q"],"id":211}],[{"start":{"row":24,"column":21},"end":{"row":24,"column":22},"action":"insert","lines":[" "],"id":212}],[{"start":{"row":24,"column":21},"end":{"row":24,"column":22},"action":"remove","lines":[" "],"id":213}],[{"start":{"row":24,"column":21},"end":{"row":24,"column":22},"action":"insert","lines":["."],"id":214}],[{"start":{"row":24,"column":22},"end":{"row":24,"column":23},"action":"insert","lines":["u"],"id":215}],[{"start":{"row":24,"column":23},"end":{"row":24,"column":24},"action":"insert","lines":["s"],"id":216}],[{"start":{"row":24,"column":24},"end":{"row":24,"column":25},"action":"insert","lines":["e"],"id":217}],[{"start":{"row":24,"column":25},"end":{"row":24,"column":26},"action":"insert","lines":["r"],"id":218}],[{"start":{"row":24,"column":26},"end":{"row":24,"column":27},"action":"insert","lines":[" "],"id":219}],[{"start":{"row":24,"column":26},"end":{"row":24,"column":27},"action":"remove","lines":[" "],"id":220}],[{"start":{"row":24,"column":26},"end":{"row":24,"column":27},"action":"insert","lines":["."],"id":221}],[{"start":{"row":24,"column":27},"end":{"row":24,"column":28},"action":"insert","lines":["u"],"id":222}],[{"start":{"row":24,"column":28},"end":{"row":24,"column":29},"action":"insert","lines":["s"],"id":223}],[{"start":{"row":24,"column":29},"end":{"row":24,"column":30},"action":"insert","lines":["e"],"id":224}],[{"start":{"row":24,"column":30},"end":{"row":24,"column":31},"action":"insert","lines":["r"],"id":225}],[{"start":{"row":24,"column":31},"end":{"row":24,"column":32},"action":"insert","lines":["n"],"id":226}],[{"start":{"row":24,"column":32},"end":{"row":24,"column":33},"action":"insert","lines":["m"],"id":227}],[{"start":{"row":24,"column":32},"end":{"row":24,"column":33},"action":"remove","lines":["m"],"id":228}],[{"start":{"row":24,"column":32},"end":{"row":24,"column":33},"action":"insert","lines":["a"],"id":229}],[{"start":{"row":24,"column":33},"end":{"row":24,"column":34},"action":"insert","lines":["m"],"id":230}],[{"start":{"row":24,"column":34},"end":{"row":24,"column":35},"action":"insert","lines":["e"],"id":231}],[{"start":{"row":24,"column":35},"end":{"row":24,"column":36},"action":"insert","lines":[" "],"id":232}],[{"start":{"row":24,"column":35},"end":{"row":24,"column":36},"action":"remove","lines":[" "],"id":233}],[{"start":{"row":23,"column":24},"end":{"row":23,"column":25},"action":"insert","lines":[","],"id":234}],[{"start":{"row":26,"column":68},"end":{"row":26,"column":69},"action":"insert","lines":[","],"id":235}],[{"start":{"row":26,"column":69},"end":{"row":26,"column":70},"action":"insert","lines":[" "],"id":236}],[{"start":{"row":26,"column":70},"end":{"row":26,"column":71},"action":"insert","lines":["a"],"id":237}],[{"start":{"row":26,"column":71},"end":{"row":26,"column":72},"action":"insert","lines":["u"],"id":238}],[{"start":{"row":26,"column":72},"end":{"row":26,"column":73},"action":"insert","lines":["t"],"id":239}],[{"start":{"row":26,"column":73},"end":{"row":26,"column":74},"action":"insert","lines":["h"],"id":240}],[{"start":{"row":26,"column":74},"end":{"row":26,"column":75},"action":"insert","lines":["o"],"id":241}],[{"start":{"row":26,"column":75},"end":{"row":26,"column":76},"action":"insert","lines":["r"],"id":242}],[{"start":{"row":26,"column":76},"end":{"row":26,"column":77},"action":"insert","lines":[" "],"id":243}],[{"start":{"row":26,"column":76},"end":{"row":26,"column":77},"action":"remove","lines":[" "],"id":244}],[{"start":{"row":26,"column":76},"end":{"row":26,"column":77},"action":"insert","lines":[":"],"id":245}],[{"start":{"row":26,"column":77},"end":{"row":26,"column":78},"action":"insert","lines":["a"],"id":246}],[{"start":{"row":26,"column":78},"end":{"row":26,"column":79},"action":"insert","lines":["u"],"id":247}],[{"start":{"row":26,"column":79},"end":{"row":26,"column":80},"action":"insert","lines":["t"],"id":248}],[{"start":{"row":26,"column":80},"end":{"row":26,"column":81},"action":"insert","lines":["j"],"id":249}],[{"start":{"row":26,"column":81},"end":{"row":26,"column":82},"action":"insert","lines":["o"],"id":250}],[{"start":{"row":26,"column":82},"end":{"row":26,"column":83},"action":"insert","lines":["r"],"id":251}],[{"start":{"row":26,"column":83},"end":{"row":26,"column":84},"action":"insert","lines":[" "],"id":252}],[{"start":{"row":26,"column":83},"end":{"row":26,"column":84},"action":"remove","lines":[" "],"id":253}],[{"start":{"row":26,"column":82},"end":{"row":26,"column":83},"action":"remove","lines":["r"],"id":254}],[{"start":{"row":26,"column":81},"end":{"row":26,"column":82},"action":"remove","lines":["o"],"id":255}],[{"start":{"row":26,"column":80},"end":{"row":26,"column":81},"action":"remove","lines":["j"],"id":256}],[{"start":{"row":26,"column":80},"end":{"row":26,"column":81},"action":"insert","lines":["h"],"id":257}],[{"start":{"row":26,"column":81},"end":{"row":26,"column":82},"action":"insert","lines":["o"],"id":258}],[{"start":{"row":26,"column":82},"end":{"row":26,"column":83},"action":"insert","lines":["r"],"id":259}],[{"start":{"row":27,"column":0},"end":{"row":28,"column":0},"action":"remove","lines":[" console.log(req.user);",""],"id":260}],[{"start":{"row":32,"column":47},"end":{"row":33,"column":0},"action":"insert","lines":["",""],"id":261},{"start":{"row":33,"column":0},"end":{"row":33,"column":12},"action":"insert","lines":[" "]}],[{"start":{"row":33,"column":12},"end":{"row":33,"column":13},"action":"insert","lines":["c"],"id":262}],[{"start":{"row":33,"column":13},"end":{"row":33,"column":14},"action":"insert","lines":["o"],"id":263}],[{"start":{"row":33,"column":14},"end":{"row":33,"column":15},"action":"insert","lines":["n"],"id":264}],[{"start":{"row":33,"column":15},"end":{"row":33,"column":16},"action":"insert","lines":["s"],"id":265}],[{"start":{"row":33,"column":16},"end":{"row":33,"column":17},"action":"insert","lines":["o"],"id":266}],[{"start":{"row":33,"column":17},"end":{"row":33,"column":18},"action":"insert","lines":["l"],"id":267}],[{"start":{"row":33,"column":18},"end":{"row":33,"column":19},"action":"insert","lines":["e"],"id":268}],[{"start":{"row":33,"column":19},"end":{"row":33,"column":20},"action":"insert","lines":[" "],"id":269}],[{"start":{"row":33,"column":19},"end":{"row":33,"column":20},"action":"remove","lines":[" "],"id":270}],[{"start":{"row":33,"column":19},"end":{"row":33,"column":20},"action":"insert","lines":["."],"id":271}],[{"start":{"row":33,"column":20},"end":{"row":33,"column":21},"action":"insert","lines":["l"],"id":272}],[{"start":{"row":33,"column":21},"end":{"row":33,"column":22},"action":"insert","lines":["o"],"id":273}],[{"start":{"row":33,"column":22},"end":{"row":33,"column":23},"action":"insert","lines":["g"],"id":274}],[{"start":{"row":33,"column":23},"end":{"row":33,"column":24},"action":"insert","lines":[" "],"id":275}],[{"start":{"row":33,"column":23},"end":{"row":33,"column":24},"action":"remove","lines":[" "],"id":276}],[{"start":{"row":33,"column":23},"end":{"row":33,"column":25},"action":"insert","lines":["()"],"id":277}],[{"start":{"row":33,"column":24},"end":{"row":33,"column":25},"action":"insert","lines":["c"],"id":278}],[{"start":{"row":33,"column":25},"end":{"row":33,"column":26},"action":"insert","lines":["a"],"id":279}],[{"start":{"row":33,"column":26},"end":{"row":33,"column":27},"action":"insert","lines":["m"],"id":280}],[{"start":{"row":33,"column":27},"end":{"row":33,"column":28},"action":"insert","lines":["p"],"id":281}],[{"start":{"row":33,"column":28},"end":{"row":33,"column":29},"action":"insert","lines":["g"],"id":282}],[{"start":{"row":33,"column":29},"end":{"row":33,"column":30},"action":"insert","lines":["r"],"id":283}],[{"start":{"row":33,"column":30},"end":{"row":33,"column":31},"action":"insert","lines":["o"],"id":284}],[{"start":{"row":33,"column":31},"end":{"row":33,"column":32},"action":"insert","lines":["u"],"id":285}],[{"start":{"row":33,"column":32},"end":{"row":33,"column":33},"action":"insert","lines":["n"],"id":286}],[{"start":{"row":33,"column":33},"end":{"row":33,"column":34},"action":"insert","lines":["d"],"id":287}],[{"start":{"row":33,"column":34},"end":{"row":33,"column":35},"action":"insert","lines":["d"],"id":288}],[{"start":{"row":33,"column":35},"end":{"row":33,"column":36},"action":"insert","lines":["s"],"id":289}],[{"start":{"row":33,"column":36},"end":{"row":33,"column":37},"action":"insert","lines":[" "],"id":290}],[{"start":{"row":33,"column":36},"end":{"row":33,"column":37},"action":"remove","lines":[" "],"id":291}],[{"start":{"row":33,"column":35},"end":{"row":33,"column":36},"action":"remove","lines":["s"],"id":292}],[{"start":{"row":33,"column":34},"end":{"row":33,"column":35},"action":"remove","lines":["d"],"id":293}],[{"start":{"row":33,"column":33},"end":{"row":33,"column":34},"action":"remove","lines":["d"],"id":294}],[{"start":{"row":33,"column":32},"end":{"row":33,"column":33},"action":"remove","lines":["n"],"id":295}],[{"start":{"row":33,"column":31},"end":{"row":33,"column":32},"action":"remove","lines":["u"],"id":296}],[{"start":{"row":33,"column":30},"end":{"row":33,"column":31},"action":"remove","lines":["o"],"id":297}],[{"start":{"row":33,"column":29},"end":{"row":33,"column":30},"action":"remove","lines":["r"],"id":298}],[{"start":{"row":33,"column":28},"end":{"row":33,"column":29},"action":"remove","lines":["g"],"id":299}],[{"start":{"row":33,"column":27},"end":{"row":33,"column":28},"action":"remove","lines":["p"],"id":300}],[{"start":{"row":33,"column":26},"end":{"row":33,"column":27},"action":"remove","lines":["m"],"id":301}],[{"start":{"row":33,"column":25},"end":{"row":33,"column":26},"action":"remove","lines":["a"],"id":302}],[{"start":{"row":33,"column":24},"end":{"row":33,"column":25},"action":"remove","lines":["c"],"id":303}],[{"start":{"row":33,"column":24},"end":{"row":33,"column":25},"action":"insert","lines":["n"],"id":304}],[{"start":{"row":33,"column":25},"end":{"row":33,"column":26},"action":"insert","lines":["e"],"id":305}],[{"start":{"row":33,"column":26},"end":{"row":33,"column":27},"action":"insert","lines":["w"],"id":306}],[{"start":{"row":33,"column":27},"end":{"row":33,"column":28},"action":"insert","lines":["s"],"id":307}],[{"start":{"row":33,"column":27},"end":{"row":33,"column":28},"action":"remove","lines":["s"],"id":308}],[{"start":{"row":33,"column":27},"end":{"row":33,"column":28},"action":"insert","lines":["l"],"id":309}],[{"start":{"row":33,"column":24},"end":{"row":33,"column":28},"action":"remove","lines":["newl"],"id":310},{"start":{"row":33,"column":24},"end":{"row":33,"column":36},"action":"insert","lines":["newlyCreated"]}],[{"start":{"row":33,"column":37},"end":{"row":33,"column":38},"action":"insert","lines":[";"],"id":311}]]},"timestamp":1445494519000}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/routes/comments.js b/.c9/metadata/workspace/YelpCamp/v9/routes/comments.js
deleted file mode 100644
index 1c302576..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/routes/comments.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"comments.js","tooltip":"/YelpCamp/v9/routes/comments.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":1047.5,"scrollleft":0,"selection":{"start":{"row":47,"column":29},"end":{"row":47,"column":29},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":24,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1445493813510,"hash":"1d84b716f4a867b6543f62fe0b09d273c06cffd3"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/routes/index.js b/.c9/metadata/workspace/YelpCamp/v9/routes/index.js
deleted file mode 100644
index 3166b53b..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/routes/index.js
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.js","tooltip":"/YelpCamp/v9/routes/index.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":1128,"scrollleft":0,"selection":{"start":{"row":52,"column":5},"end":{"row":52,"column":5},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":42,"state":"start","mode":"ace/mode/javascript"}},"timestamp":1445493820968,"hash":"22fb40e7a58175afbaa4062a39b7034914125ed7"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/views/campgrounds/index.ejs b/.c9/metadata/workspace/YelpCamp/v9/views/campgrounds/index.ejs
deleted file mode 100644
index a5e11c0c..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/views/campgrounds/index.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"index.ejs","tooltip":"/YelpCamp/v9/views/campgrounds/index.ejs","undoManager":{"mark":-1,"position":-1,"stack":[[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"insert","lines":["g"],"id":22}],[{"start":{"row":8,"column":47},"end":{"row":8,"column":48},"action":"remove","lines":["a"],"id":21}],[{"start":{"row":8,"column":48},"end":{"row":8,"column":49},"action":"remove","lines":["r"],"id":20}],[{"start":{"row":8,"column":49},"end":{"row":8,"column":50},"action":"remove","lines":["g"],"id":19}],[{"start":{"row":8,"column":50},"end":{"row":8,"column":51},"action":"remove","lines":["e"],"id":18}],[{"start":{"row":5,"column":63},"end":{"row":5,"column":64},"action":"insert","lines":[" "],"id":17}],[{"start":{"row":5,"column":30},"end":{"row":5,"column":54},"action":"insert","lines":["glyphicon glyphicon-tent"],"id":16}],[{"start":{"row":5,"column":29},"end":{"row":5,"column":31},"action":"insert","lines":["\"\""],"id":15}],[{"start":{"row":5,"column":28},"end":{"row":5,"column":29},"action":"insert","lines":["="],"id":14}],[{"start":{"row":5,"column":27},"end":{"row":5,"column":28},"action":"insert","lines":["s"],"id":13}],[{"start":{"row":5,"column":26},"end":{"row":5,"column":27},"action":"insert","lines":["s"],"id":12}],[{"start":{"row":5,"column":25},"end":{"row":5,"column":26},"action":"insert","lines":["a"],"id":11}],[{"start":{"row":5,"column":24},"end":{"row":5,"column":25},"action":"insert","lines":["l"],"id":10}],[{"start":{"row":5,"column":23},"end":{"row":5,"column":24},"action":"insert","lines":["c"],"id":9}],[{"start":{"row":5,"column":22},"end":{"row":5,"column":23},"action":"insert","lines":[" "],"id":8}],[{"start":{"row":5,"column":22},"end":{"row":5,"column":30},"action":"insert","lines":[">"],"id":7}],[{"start":{"row":5,"column":21},"end":{"row":5,"column":22},"action":"insert","lines":["n"],"id":6}],[{"start":{"row":5,"column":20},"end":{"row":5,"column":21},"action":"insert","lines":["a"],"id":5}],[{"start":{"row":5,"column":19},"end":{"row":5,"column":20},"action":"insert","lines":["p"],"id":4}],[{"start":{"row":5,"column":18},"end":{"row":5,"column":19},"action":"insert","lines":["s"],"id":3}],[{"start":{"row":5,"column":17},"end":{"row":5,"column":18},"action":"insert","lines":["<"],"id":2}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":10,"column":15},"end":{"row":10,"column":15},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445675317110,"hash":"76ba7580736aa826dc375ba2fc146bc6a2c9043c"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/views/campgrounds/show.ejs b/.c9/metadata/workspace/YelpCamp/v9/views/campgrounds/show.ejs
deleted file mode 100644
index 40881a8a..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/views/campgrounds/show.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"show.ejs","tooltip":"/YelpCamp/v9/views/campgrounds/show.ejs","undoManager":{"mark":80,"position":80,"stack":[[{"start":{"row":17,"column":56},"end":{"row":18,"column":0},"action":"insert","lines":["",""],"id":2},{"start":{"row":18,"column":0},"end":{"row":18,"column":20},"action":"insert","lines":[" "]}],[{"start":{"row":18,"column":20},"end":{"row":18,"column":21},"action":"insert","lines":["<"],"id":3}],[{"start":{"row":18,"column":21},"end":{"row":18,"column":22},"action":"insert","lines":["p"],"id":4}],[{"start":{"row":18,"column":22},"end":{"row":18,"column":27},"action":"insert","lines":[">"],"id":5}],[{"start":{"row":18,"column":23},"end":{"row":18,"column":24},"action":"insert","lines":["<"],"id":6}],[{"start":{"row":18,"column":24},"end":{"row":18,"column":25},"action":"insert","lines":["%"],"id":7}],[{"start":{"row":18,"column":25},"end":{"row":18,"column":26},"action":"insert","lines":["="],"id":8}],[{"start":{"row":18,"column":25},"end":{"row":18,"column":26},"action":"remove","lines":["="],"id":9}],[{"start":{"row":18,"column":24},"end":{"row":18,"column":25},"action":"remove","lines":["%"],"id":10}],[{"start":{"row":18,"column":23},"end":{"row":18,"column":24},"action":"remove","lines":["<"],"id":11}],[{"start":{"row":18,"column":23},"end":{"row":18,"column":24},"action":"insert","lines":["<"],"id":12}],[{"start":{"row":18,"column":24},"end":{"row":18,"column":25},"action":"insert","lines":["%"],"id":13}],[{"start":{"row":18,"column":25},"end":{"row":18,"column":26},"action":"insert","lines":["="],"id":14}],[{"start":{"row":18,"column":26},"end":{"row":18,"column":27},"action":"insert","lines":[" "],"id":15}],[{"start":{"row":18,"column":27},"end":{"row":18,"column":28},"action":"insert","lines":["%"],"id":16}],[{"start":{"row":18,"column":28},"end":{"row":18,"column":29},"action":"insert","lines":[">"],"id":17}],[{"start":{"row":18,"column":27},"end":{"row":18,"column":28},"action":"insert","lines":["c"],"id":18}],[{"start":{"row":18,"column":28},"end":{"row":18,"column":29},"action":"insert","lines":["a"],"id":19}],[{"start":{"row":18,"column":29},"end":{"row":18,"column":30},"action":"insert","lines":["m"],"id":20}],[{"start":{"row":18,"column":30},"end":{"row":18,"column":31},"action":"insert","lines":["p"],"id":21}],[{"start":{"row":18,"column":31},"end":{"row":18,"column":32},"action":"insert","lines":["g"],"id":22}],[{"start":{"row":18,"column":32},"end":{"row":18,"column":33},"action":"insert","lines":["r"],"id":23}],[{"start":{"row":18,"column":33},"end":{"row":18,"column":34},"action":"insert","lines":["o"],"id":24}],[{"start":{"row":18,"column":34},"end":{"row":18,"column":35},"action":"insert","lines":["u"],"id":25}],[{"start":{"row":18,"column":35},"end":{"row":18,"column":36},"action":"insert","lines":["n"],"id":26}],[{"start":{"row":18,"column":36},"end":{"row":18,"column":37},"action":"insert","lines":["d"],"id":27}],[{"start":{"row":18,"column":37},"end":{"row":18,"column":38},"action":"insert","lines":[" "],"id":28}],[{"start":{"row":18,"column":37},"end":{"row":18,"column":38},"action":"remove","lines":[" "],"id":29}],[{"start":{"row":18,"column":37},"end":{"row":18,"column":38},"action":"insert","lines":["."],"id":30}],[{"start":{"row":18,"column":38},"end":{"row":18,"column":39},"action":"insert","lines":["a"],"id":31}],[{"start":{"row":18,"column":39},"end":{"row":18,"column":40},"action":"insert","lines":["u"],"id":32}],[{"start":{"row":18,"column":40},"end":{"row":18,"column":41},"action":"insert","lines":["t"],"id":33}],[{"start":{"row":18,"column":41},"end":{"row":18,"column":42},"action":"insert","lines":["h"],"id":34}],[{"start":{"row":18,"column":42},"end":{"row":18,"column":43},"action":"insert","lines":["o"],"id":35}],[{"start":{"row":18,"column":43},"end":{"row":18,"column":44},"action":"insert","lines":["r"],"id":36}],[{"start":{"row":18,"column":44},"end":{"row":18,"column":45},"action":"insert","lines":[" "],"id":37}],[{"start":{"row":18,"column":44},"end":{"row":18,"column":45},"action":"remove","lines":[" "],"id":38}],[{"start":{"row":18,"column":44},"end":{"row":18,"column":45},"action":"insert","lines":["."],"id":39}],[{"start":{"row":18,"column":45},"end":{"row":18,"column":46},"action":"insert","lines":["u"],"id":40}],[{"start":{"row":18,"column":46},"end":{"row":18,"column":47},"action":"insert","lines":["s"],"id":41}],[{"start":{"row":18,"column":47},"end":{"row":18,"column":48},"action":"insert","lines":["e"],"id":42}],[{"start":{"row":18,"column":48},"end":{"row":18,"column":49},"action":"insert","lines":["r"],"id":43}],[{"start":{"row":18,"column":49},"end":{"row":18,"column":50},"action":"insert","lines":["n"],"id":44}],[{"start":{"row":18,"column":50},"end":{"row":18,"column":51},"action":"insert","lines":["a"],"id":45}],[{"start":{"row":18,"column":51},"end":{"row":18,"column":52},"action":"insert","lines":["m"],"id":46}],[{"start":{"row":18,"column":52},"end":{"row":18,"column":53},"action":"insert","lines":["e"],"id":47}],[{"start":{"row":18,"column":53},"end":{"row":18,"column":54},"action":"insert","lines":[" "],"id":48}],[{"start":{"row":18,"column":53},"end":{"row":18,"column":54},"action":"remove","lines":[" "],"id":49}],[{"start":{"row":18,"column":53},"end":{"row":18,"column":54},"action":"insert","lines":[" "],"id":50}],[{"start":{"row":18,"column":23},"end":{"row":18,"column":24},"action":"insert","lines":["S"],"id":51}],[{"start":{"row":18,"column":24},"end":{"row":18,"column":25},"action":"insert","lines":["u"],"id":52}],[{"start":{"row":18,"column":25},"end":{"row":18,"column":26},"action":"insert","lines":["b"],"id":53}],[{"start":{"row":18,"column":26},"end":{"row":18,"column":27},"action":"insert","lines":["m"],"id":54}],[{"start":{"row":18,"column":27},"end":{"row":18,"column":28},"action":"insert","lines":["i"],"id":55}],[{"start":{"row":18,"column":28},"end":{"row":18,"column":29},"action":"insert","lines":["t"],"id":56}],[{"start":{"row":18,"column":29},"end":{"row":18,"column":30},"action":"insert","lines":["t"],"id":57}],[{"start":{"row":18,"column":30},"end":{"row":18,"column":31},"action":"insert","lines":["e"],"id":58}],[{"start":{"row":18,"column":31},"end":{"row":18,"column":32},"action":"insert","lines":["d"],"id":59}],[{"start":{"row":18,"column":32},"end":{"row":18,"column":33},"action":"insert","lines":[" "],"id":60}],[{"start":{"row":18,"column":32},"end":{"row":18,"column":33},"action":"remove","lines":[" "],"id":61}],[{"start":{"row":18,"column":32},"end":{"row":18,"column":33},"action":"insert","lines":[" "],"id":62}],[{"start":{"row":18,"column":33},"end":{"row":18,"column":34},"action":"insert","lines":["b"],"id":63}],[{"start":{"row":18,"column":33},"end":{"row":18,"column":34},"action":"remove","lines":["b"],"id":64}],[{"start":{"row":18,"column":33},"end":{"row":18,"column":34},"action":"insert","lines":["B"],"id":65}],[{"start":{"row":18,"column":34},"end":{"row":18,"column":35},"action":"insert","lines":["y"],"id":66}],[{"start":{"row":18,"column":35},"end":{"row":18,"column":36},"action":"insert","lines":[" "],"id":67}],[{"start":{"row":18,"column":35},"end":{"row":18,"column":36},"action":"remove","lines":[" "],"id":68}],[{"start":{"row":18,"column":35},"end":{"row":18,"column":36},"action":"insert","lines":[" "],"id":69}],[{"start":{"row":18,"column":23},"end":{"row":18,"column":24},"action":"insert","lines":["<"],"id":70}],[{"start":{"row":18,"column":23},"end":{"row":18,"column":24},"action":"remove","lines":["<"],"id":71}],[{"start":{"row":18,"column":23},"end":{"row":19,"column":24},"action":"insert","lines":[""," "],"id":72}],[{"start":{"row":19,"column":70},"end":{"row":20,"column":0},"action":"insert","lines":["",""],"id":73},{"start":{"row":20,"column":0},"end":{"row":20,"column":24},"action":"insert","lines":[" "]}],[{"start":{"row":20,"column":20},"end":{"row":20,"column":24},"action":"remove","lines":[" "],"id":74}],[{"start":{"row":19,"column":24},"end":{"row":19,"column":25},"action":"insert","lines":["<"],"id":75}],[{"start":{"row":19,"column":25},"end":{"row":19,"column":26},"action":"insert","lines":["e"],"id":76}],[{"start":{"row":19,"column":26},"end":{"row":19,"column":27},"action":"insert","lines":["m"],"id":77}],[{"start":{"row":19,"column":27},"end":{"row":19,"column":28},"action":"insert","lines":["p"],"id":78}],[{"start":{"row":19,"column":27},"end":{"row":19,"column":28},"action":"remove","lines":["p"],"id":79}],[{"start":{"row":19,"column":27},"end":{"row":19,"column":33},"action":"insert","lines":[">"],"id":80}],[{"start":{"row":19,"column":28},"end":{"row":19,"column":33},"action":"remove","lines":[""],"id":81}],[{"start":{"row":19,"column":74},"end":{"row":19,"column":79},"action":"insert","lines":[""],"id":82}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":17,"column":25},"end":{"row":17,"column":25},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1445494691000,"hash":"e6057d83da0f86a3526bba068f419cba5737e7e5"}
\ No newline at end of file
diff --git a/.c9/metadata/workspace/YelpCamp/v9/views/landing.ejs b/.c9/metadata/workspace/YelpCamp/v9/views/landing.ejs
deleted file mode 100644
index a0d6fd8c..00000000
--- a/.c9/metadata/workspace/YelpCamp/v9/views/landing.ejs
+++ /dev/null
@@ -1 +0,0 @@
-{"filter":false,"title":"landing.ejs","tooltip":"/YelpCamp/v9/views/landing.ejs","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1446332140074,"hash":"9892c547daaba2e3b2004bfb00c648761d1d340d"}
\ No newline at end of file
diff --git a/.c9/project.settings b/.c9/project.settings
deleted file mode 100644
index 76e3bb6a..00000000
--- a/.c9/project.settings
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "ace": {
- "@guessTabSize": "true",
- "@newLineMode": "unix",
- "@tabSize": "4",
- "@useSoftTabs": "true"
- },
- "build": {
- "@builder": "auto",
- "@path": "/.c9/builders",
- "@saveall": true
- },
- "find.nak": {
- "@searchLimit": 100
- },
- "general": {
- "@stripws": false
- },
- "language": {
- "@eslintrc": "true",
- "@instanceHighlight": "true",
- "@semi": "true",
- "@undeclaredVars": "true",
- "@unusedFunctionArgs": "false",
- "@warnLevel": "info",
- "tern_defs": {
- "json()": {
- "browser": {
- "enabled": true
- },
- "ecma5": {
- "enabled": true
- },
- "jQuery": {
- "enabled": true
- }
- }
- }
- },
- "php": {
- "@completion": true,
- "@path": ".:./vendor"
- },
- "python": {
- "@completion": true,
- "@path": "/usr/local/lib/python2.7/dist-packages:/usr/local/lib/python3.4/dist-packages:/usr/local/lib/python3.5/dist-packages",
- "@version": "python2"
- },
- "run": {
- "@path": "/.c9/runners",
- "configs": {
- "@inited": "true",
- "json()": {}
- }
- },
- "share": {
- "@app": false,
- "@preview": false,
- "@useOwnerSettings": false
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..dbb46f68
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+# Node modules (ignore in all subdirectories)
+**/node_modules/
+
+# Cloud9 config folder
+.c9/
+
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# OS-specific
+.DS_Store
+Thumbs.db
+
+# Environment files
+.env
+.env.*
+
+# Editor folders/files
+.vscode/
+.idea/
+
+# npm package lock files
+package-lock.json
+yarn.lock
+
+# Build folders (if any)
+dist/
+build/
+
+# Optional: ignore all coverage reports
+coverage/
diff --git a/APIs/node_modules/request/.eslintrc b/APIs/node_modules/request/.eslintrc
deleted file mode 100644
index 5a594815..00000000
--- a/APIs/node_modules/request/.eslintrc
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "env": {
- "node": true
- },
- "rules": {
- // 2-space indentation
- "indent": [2, 2, {"SwitchCase": 1}],
- // Disallow semi-colons, unless needed to disambiguate statement
- "semi": [2, "never"],
- // Require strings to use single quotes
- "quotes": [2, "single"],
- // Require curly braces for all control statements
- "curly": 2,
- // Disallow using variables and functions before they've been defined
- "no-use-before-define": 2,
- // Allow any case for variable naming
- "camelcase": 0,
- // Disallow unused variables, except as function arguments
- "no-unused-vars": [2, {"args":"none"}],
- // Allow leading underscores for method names
- // REASON: we use underscores to denote private methods
- "no-underscore-dangle": 0,
- // Allow multi spaces around operators since they are
- // used for alignment. This is not consistent in the
- // code.
- "no-multi-spaces": 0,
- // Style rule is: most objects use { beforeColon: false, afterColon: true }, unless aligning which uses:
- //
- // {
- // beforeColon : true,
- // afterColon : true
- // }
- //
- // eslint can't handle this, so the check is disabled.
- "key-spacing": 0,
- // Allow shadowing vars in outer scope (needs discussion)
- "no-shadow": 0,
- // Use if () { }
- // ^ space
- "keyword-spacing": [2, {"after": true}],
- // Use if () { }
- // ^ space
- "space-before-blocks": [2, "always"]
- }
-}
diff --git a/APIs/node_modules/request/.npmignore b/APIs/node_modules/request/.npmignore
deleted file mode 100644
index 67fe11cc..00000000
--- a/APIs/node_modules/request/.npmignore
+++ /dev/null
@@ -1,6 +0,0 @@
-coverage
-tests
-node_modules
-examples
-release.sh
-disabled.appveyor.yml
diff --git a/APIs/node_modules/request/.travis.yml b/APIs/node_modules/request/.travis.yml
deleted file mode 100644
index e5d9bde2..00000000
--- a/APIs/node_modules/request/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: node_js
-
-node_js:
- - node
- - 0.12
- - 0.10
-
-after_script:
- - npm run test-cov
- - cat ./coverage/lcov.info | codecov
- - cat ./coverage/lcov.info | coveralls
-
-webhooks:
- urls: https://webhooks.gitter.im/e/237280ed4796c19cc626
- on_success: change # options: [always|never|change] default: always
- on_failure: always # options: [always|never|change] default: always
- on_start: false # default: false
-
-sudo: false
diff --git a/APIs/node_modules/request/CHANGELOG.md b/APIs/node_modules/request/CHANGELOG.md
deleted file mode 100644
index ce6826f2..00000000
--- a/APIs/node_modules/request/CHANGELOG.md
+++ /dev/null
@@ -1,623 +0,0 @@
-## Change Log
-
-### v2.72.0 (2016/04/17)
-- [#2176](https://github.com/request/request/pull/2176) Do not try to pipe Gzip responses with no body (@simov)
-- [#2175](https://github.com/request/request/pull/2175) Add 'delete' alias for the 'del' API method (@simov, @MuhanZou)
-- [#2172](https://github.com/request/request/pull/2172) Add support for deflate content encoding (@czardoz)
-- [#2169](https://github.com/request/request/pull/2169) Add callback option (@simov)
-- [#2165](https://github.com/request/request/pull/2165) Check for self.req existence inside the write method (@simov)
-- [#2167](https://github.com/request/request/pull/2167) Fix TravisCI badge reference master branch (@a0viedo)
-
-### v2.71.0 (2016/04/12)
-- [#2164](https://github.com/request/request/pull/2164) Catch errors from the underlying http module (@simov)
-
-### v2.70.0 (2016/04/05)
-- [#2147](https://github.com/request/request/pull/2147) Update eslint to version 2.5.3 🚀 (@simov, @greenkeeperio-bot)
-- [#2009](https://github.com/request/request/pull/2009) Support JSON stringify replacer argument. (@elyobo)
-- [#2142](https://github.com/request/request/pull/2142) Update eslint to version 2.5.1 🚀 (@greenkeeperio-bot)
-- [#2128](https://github.com/request/request/pull/2128) Update browserify-istanbul to version 2.0.0 🚀 (@greenkeeperio-bot)
-- [#2115](https://github.com/request/request/pull/2115) Update eslint to version 2.3.0 🚀 (@simov, @greenkeeperio-bot)
-- [#2089](https://github.com/request/request/pull/2089) Fix badges (@simov)
-- [#2092](https://github.com/request/request/pull/2092) Update browserify-istanbul to version 1.0.0 🚀 (@greenkeeperio-bot)
-- [#2079](https://github.com/request/request/pull/2079) Accept read stream as body option (@simov)
-- [#2070](https://github.com/request/request/pull/2070) Update bl to version 1.1.2 🚀 (@greenkeeperio-bot)
-- [#2063](https://github.com/request/request/pull/2063) Up bluebird and oauth-sign (@simov)
-- [#2058](https://github.com/request/request/pull/2058) Karma fixes for latest versions (@eiriksm)
-- [#2057](https://github.com/request/request/pull/2057) Update contributing guidelines (@simov)
-- [#2054](https://github.com/request/request/pull/2054) Update qs to version 6.1.0 🚀 (@greenkeeperio-bot)
-
-### v2.69.0 (2016/01/27)
-- [#2041](https://github.com/request/request/pull/2041) restore aws4 as regular dependency (@rmg)
-
-### v2.68.0 (2016/01/27)
-- [#2036](https://github.com/request/request/pull/2036) Add AWS Signature Version 4 (@simov, @mirkods)
-- [#2022](https://github.com/request/request/pull/2022) Convert numeric multipart bodies to string (@simov, @feross)
-- [#2024](https://github.com/request/request/pull/2024) Update har-validator dependency for nsp advisory #76 (@TylerDixon)
-- [#2016](https://github.com/request/request/pull/2016) Update qs to version 6.0.2 🚀 (@greenkeeperio-bot)
-- [#2007](https://github.com/request/request/pull/2007) Use the `extend` module instead of util._extend (@simov)
-- [#2003](https://github.com/request/request/pull/2003) Update browserify to version 13.0.0 🚀 (@greenkeeperio-bot)
-- [#1989](https://github.com/request/request/pull/1989) Update buffer-equal to version 1.0.0 🚀 (@greenkeeperio-bot)
-- [#1956](https://github.com/request/request/pull/1956) Check form-data content-length value before setting up the header (@jongyoonlee)
-- [#1958](https://github.com/request/request/pull/1958) Use IncomingMessage.destroy method (@simov)
-- [#1952](https://github.com/request/request/pull/1952) Adds example for Tor proxy (@prometheansacrifice)
-- [#1943](https://github.com/request/request/pull/1943) Update eslint to version 1.10.3 🚀 (@simov, @greenkeeperio-bot)
-- [#1924](https://github.com/request/request/pull/1924) Update eslint to version 1.10.1 🚀 (@greenkeeperio-bot)
-- [#1915](https://github.com/request/request/pull/1915) Remove content-length and transfer-encoding headers from defaultProxyHeaderWhiteList (@yaxia)
-
-### v2.67.0 (2015/11/19)
-- [#1913](https://github.com/request/request/pull/1913) Update http-signature to version 1.1.0 🚀 (@greenkeeperio-bot)
-
-### v2.66.0 (2015/11/18)
-- [#1906](https://github.com/request/request/pull/1906) Update README URLs based on HTTP redirects (@ReadmeCritic)
-- [#1905](https://github.com/request/request/pull/1905) Convert typed arrays into regular buffers (@simov)
-- [#1902](https://github.com/request/request/pull/1902) node-uuid@1.4.7 breaks build 🚨 (@greenkeeperio-bot)
-- [#1894](https://github.com/request/request/pull/1894) Fix tunneling after redirection from https (Original: #1881) (@simov, @falms)
-- [#1893](https://github.com/request/request/pull/1893) Update eslint to version 1.9.0 🚀 (@greenkeeperio-bot)
-- [#1852](https://github.com/request/request/pull/1852) Update eslint to version 1.7.3 🚀 (@simov, @greenkeeperio-bot, @paulomcnally, @michelsalib, @arbaaz, @vladimirich, @LoicMahieu, @JoshWillik, @jzaefferer, @ryanwholey, @djchie, @thisconnect, @mgenereu, @acroca, @Sebmaster, @Bloutiouf)
-- [#1876](https://github.com/request/request/pull/1876) Implement loose matching for har mime types (@simov)
-- [#1875](https://github.com/request/request/pull/1875) Update bluebird to version 3.0.2 🚀 (@simov, @greenkeeperio-bot)
-- [#1871](https://github.com/request/request/pull/1871) Update browserify to version 12.0.1 🚀 (@greenkeeperio-bot)
-- [#1866](https://github.com/request/request/pull/1866) Add missing quotes on x-token property in README (@miguelmota)
-- [#1874](https://github.com/request/request/pull/1874) Fix typo in README.md (@gswalden)
-- [#1860](https://github.com/request/request/pull/1860) Improve referer header tests and docs (@simov)
-- [#1861](https://github.com/request/request/pull/1861) Remove redundant call to Stream constructor (@watson)
-- [#1857](https://github.com/request/request/pull/1857) Fix Referer header to point to the original host name (@simov)
-- [#1850](https://github.com/request/request/pull/1850) Update karma-coverage to version 0.5.3 🚀 (@greenkeeperio-bot)
-- [#1847](https://github.com/request/request/pull/1847) Use node's latest version when building (@simov)
-- [#1836](https://github.com/request/request/pull/1836) Tunnel: fix wrong property name (@Bloutiouf)
-- [#1820](https://github.com/request/request/pull/1820) Set href as request.js uses it (@mgenereu)
-- [#1840](https://github.com/request/request/pull/1840) Update http-signature to version 1.0.2 🚀 (@greenkeeperio-bot)
-- [#1845](https://github.com/request/request/pull/1845) Update istanbul to version 0.4.0 🚀 (@greenkeeperio-bot)
-
-### v2.65.0 (2015/10/11)
-- [#1833](https://github.com/request/request/pull/1833) Update aws-sign2 to version 0.6.0 🚀 (@greenkeeperio-bot)
-- [#1811](https://github.com/request/request/pull/1811) Enable loose cookie parsing in tough-cookie (@Sebmaster)
-- [#1830](https://github.com/request/request/pull/1830) Bring back tilde ranges for all dependencies (@simov)
-- [#1821](https://github.com/request/request/pull/1821) Implement support for RFC 2617 MD5-sess algorithm. (@BigDSK)
-- [#1828](https://github.com/request/request/pull/1828) Updated qs dependency to 5.2.0 (@acroca)
-- [#1818](https://github.com/request/request/pull/1818) Extract `readResponseBody` method out of `onRequestResponse` (@pvoisin)
-- [#1819](https://github.com/request/request/pull/1819) Run stringify once (@mgenereu)
-- [#1814](https://github.com/request/request/pull/1814) Updated har-validator to version 2.0.2 (@greenkeeperio-bot)
-- [#1807](https://github.com/request/request/pull/1807) Updated tough-cookie to version 2.1.0 (@greenkeeperio-bot)
-- [#1800](https://github.com/request/request/pull/1800) Add caret ranges for devDependencies, except eslint (@simov)
-- [#1799](https://github.com/request/request/pull/1799) Updated karma-browserify to version 4.4.0 (@greenkeeperio-bot)
-- [#1797](https://github.com/request/request/pull/1797) Updated tape to version 4.2.0 (@greenkeeperio-bot)
-- [#1788](https://github.com/request/request/pull/1788) Pinned all dependencies (@greenkeeperio-bot)
-
-### v2.64.0 (2015/09/25)
-- [#1787](https://github.com/request/request/pull/1787) npm ignore examples, release.sh and disabled.appveyor.yml (@thisconnect)
-- [#1775](https://github.com/request/request/pull/1775) Fix typo in README.md (@djchie)
-- [#1776](https://github.com/request/request/pull/1776) Changed word 'conjuction' to read 'conjunction' in README.md (@ryanwholey)
-- [#1785](https://github.com/request/request/pull/1785) Revert: Set default application/json content-type when using json option #1772 (@simov)
-
-### v2.63.0 (2015/09/21)
-- [#1772](https://github.com/request/request/pull/1772) Set default application/json content-type when using json option (@jzaefferer)
-
-### v2.62.0 (2015/09/15)
-- [#1768](https://github.com/request/request/pull/1768) Add node 4.0 to the list of build targets (@simov)
-- [#1767](https://github.com/request/request/pull/1767) Query strings now cooperate with unix sockets (@JoshWillik)
-- [#1750](https://github.com/request/request/pull/1750) Revert doc about installation of tough-cookie added in #884 (@LoicMahieu)
-- [#1746](https://github.com/request/request/pull/1746) Missed comma in Readme (@vladimirich)
-- [#1743](https://github.com/request/request/pull/1743) Fix options not being initialized in defaults method (@simov)
-
-### v2.61.0 (2015/08/19)
-- [#1721](https://github.com/request/request/pull/1721) Minor fix in README.md (@arbaaz)
-- [#1733](https://github.com/request/request/pull/1733) Avoid useless Buffer transformation (@michelsalib)
-- [#1726](https://github.com/request/request/pull/1726) Update README.md (@paulomcnally)
-- [#1715](https://github.com/request/request/pull/1715) Fix forever option in node > 0.10 #1709 (@calibr)
-- [#1716](https://github.com/request/request/pull/1716) Do not create Buffer from Object in setContentLength(iojs v3.0 issue) (@calibr)
-- [#1711](https://github.com/request/request/pull/1711) Add ability to detect connect timeouts (@kevinburke)
-- [#1712](https://github.com/request/request/pull/1712) Set certificate expiration to August 2, 2018 (@kevinburke)
-- [#1700](https://github.com/request/request/pull/1700) debug() when JSON.parse() on a response body fails (@phillipj)
-
-### v2.60.0 (2015/07/21)
-- [#1687](https://github.com/request/request/pull/1687) Fix caseless bug - content-type not being set for multipart/form-data (@simov, @garymathews)
-
-### v2.59.0 (2015/07/20)
-- [#1671](https://github.com/request/request/pull/1671) Add tests and docs for using the agent, agentClass, agentOptions and forever options.
- Forever option defaults to using http(s).Agent in node 0.12+ (@simov)
-- [#1679](https://github.com/request/request/pull/1679) Fix - do not remove OAuth param when using OAuth realm (@simov, @jhalickman)
-- [#1668](https://github.com/request/request/pull/1668) updated dependencies (@deamme)
-- [#1656](https://github.com/request/request/pull/1656) Fix form method (@simov)
-- [#1651](https://github.com/request/request/pull/1651) Preserve HEAD method when using followAllRedirects (@simov)
-- [#1652](https://github.com/request/request/pull/1652) Update `encoding` option documentation in README.md (@daniel347x)
-- [#1650](https://github.com/request/request/pull/1650) Allow content-type overriding when using the `form` option (@simov)
-- [#1646](https://github.com/request/request/pull/1646) Clarify the nature of setting `ca` in `agentOptions` (@jeffcharles)
-
-### v2.58.0 (2015/06/16)
-- [#1638](https://github.com/request/request/pull/1638) Use the `extend` module to deep extend in the defaults method (@simov)
-- [#1631](https://github.com/request/request/pull/1631) Move tunnel logic into separate module (@simov)
-- [#1634](https://github.com/request/request/pull/1634) Fix OAuth query transport_method (@simov)
-- [#1603](https://github.com/request/request/pull/1603) Add codecov (@simov)
-
-### v2.57.0 (2015/05/31)
-- [#1615](https://github.com/request/request/pull/1615) Replace '.client' with '.socket' as the former was deprecated in 2.2.0. (@ChALkeR)
-
-### v2.56.0 (2015/05/28)
-- [#1610](https://github.com/request/request/pull/1610) Bump module dependencies (@simov)
-- [#1600](https://github.com/request/request/pull/1600) Extract the querystring logic into separate module (@simov)
-- [#1607](https://github.com/request/request/pull/1607) Re-generate certificates (@simov)
-- [#1599](https://github.com/request/request/pull/1599) Move getProxyFromURI logic below the check for Invaild URI (#1595) (@simov)
-- [#1598](https://github.com/request/request/pull/1598) Fix the way http verbs are defined in order to please intellisense IDEs (@simov, @flannelJesus)
-- [#1591](https://github.com/request/request/pull/1591) A few minor fixes: (@simov)
-- [#1584](https://github.com/request/request/pull/1584) Refactor test-default tests (according to comments in #1430) (@simov)
-- [#1585](https://github.com/request/request/pull/1585) Fixing documentation regarding TLS options (#1583) (@mainakae)
-- [#1574](https://github.com/request/request/pull/1574) Refresh the oauth_nonce on redirect (#1573) (@simov)
-- [#1570](https://github.com/request/request/pull/1570) Discovered tests that weren't properly running (@seanstrom)
-- [#1569](https://github.com/request/request/pull/1569) Fix pause before response arrives (@kevinoid)
-- [#1558](https://github.com/request/request/pull/1558) Emit error instead of throw (@simov)
-- [#1568](https://github.com/request/request/pull/1568) Fix stall when piping gzipped response (@kevinoid)
-- [#1560](https://github.com/request/request/pull/1560) Update combined-stream (@apechimp)
-- [#1543](https://github.com/request/request/pull/1543) Initial support for oauth_body_hash on json payloads (@simov, @aesopwolf)
-- [#1541](https://github.com/request/request/pull/1541) Fix coveralls (@simov)
-- [#1540](https://github.com/request/request/pull/1540) Fix recursive defaults for convenience methods (@simov)
-- [#1536](https://github.com/request/request/pull/1536) More eslint style rules (@froatsnook)
-- [#1533](https://github.com/request/request/pull/1533) Adding dependency status bar to README.md (@YasharF)
-- [#1539](https://github.com/request/request/pull/1539) ensure the latest version of har-validator is included (@ahmadnassri)
-- [#1516](https://github.com/request/request/pull/1516) forever+pool test (@devTristan)
-
-### v2.55.0 (2015/04/05)
-- [#1520](https://github.com/request/request/pull/1520) Refactor defaults (@simov)
-- [#1525](https://github.com/request/request/pull/1525) Delete request headers with undefined value. (@froatsnook)
-- [#1521](https://github.com/request/request/pull/1521) Add promise tests (@simov)
-- [#1518](https://github.com/request/request/pull/1518) Fix defaults (@simov)
-- [#1515](https://github.com/request/request/pull/1515) Allow static invoking of convenience methods (@simov)
-- [#1505](https://github.com/request/request/pull/1505) Fix multipart boundary extraction regexp (@simov)
-- [#1510](https://github.com/request/request/pull/1510) Fix basic auth form data (@simov)
-
-### v2.54.0 (2015/03/24)
-- [#1501](https://github.com/request/request/pull/1501) HTTP Archive 1.2 support (@ahmadnassri)
-- [#1486](https://github.com/request/request/pull/1486) Add a test for the forever agent (@akshayp)
-- [#1500](https://github.com/request/request/pull/1500) Adding handling for no auth method and null bearer (@philberg)
-- [#1498](https://github.com/request/request/pull/1498) Add table of contents in readme (@simov)
-- [#1477](https://github.com/request/request/pull/1477) Add support for qs options via qsOptions key (@simov)
-- [#1496](https://github.com/request/request/pull/1496) Parameters encoded to base 64 should be decoded as UTF-8, not ASCII. (@albanm)
-- [#1494](https://github.com/request/request/pull/1494) Update eslint (@froatsnook)
-- [#1474](https://github.com/request/request/pull/1474) Require Colon in Basic Auth (@erykwalder)
-- [#1481](https://github.com/request/request/pull/1481) Fix baseUrl and redirections. (@burningtree)
-- [#1469](https://github.com/request/request/pull/1469) Feature/base url (@froatsnook)
-- [#1459](https://github.com/request/request/pull/1459) Add option to time request/response cycle (including rollup of redirects) (@aaron-em)
-- [#1468](https://github.com/request/request/pull/1468) Re-enable io.js/node 0.12 build (@simov, @mikeal, @BBB)
-- [#1442](https://github.com/request/request/pull/1442) Fixed the issue with strictSSL tests on 0.12 & io.js by explicitly setting a cipher that matches the cert. (@BBB, @nicolasmccurdy, @demohi, @simov, @0x4139)
-- [#1460](https://github.com/request/request/pull/1460) localAddress or proxy config is lost when redirecting (@simov, @0x4139)
-- [#1453](https://github.com/request/request/pull/1453) Test on Node.js 0.12 and io.js with allowed failures (@nicolasmccurdy, @demohi)
-- [#1426](https://github.com/request/request/pull/1426) Fixing tests to pass on io.js and node 0.12 (only test-https.js stiff failing) (@mikeal)
-- [#1446](https://github.com/request/request/pull/1446) Missing HTTP referer header with redirects Fixes #1038 (@simov, @guimonz)
-- [#1428](https://github.com/request/request/pull/1428) Deprecate Node v0.8.x (@nylen)
-- [#1436](https://github.com/request/request/pull/1436) Add ability to set a requester without setting default options (@tikotzky)
-- [#1435](https://github.com/request/request/pull/1435) dry up verb methods (@sethpollack)
-- [#1423](https://github.com/request/request/pull/1423) Allow fully qualified multipart content-type header (@simov)
-- [#1430](https://github.com/request/request/pull/1430) Fix recursive requester (@tikotzky)
-- [#1429](https://github.com/request/request/pull/1429) Throw error when making HEAD request with a body (@tikotzky)
-- [#1419](https://github.com/request/request/pull/1419) Add note that the project is broken in 0.12.x (@nylen)
-- [#1413](https://github.com/request/request/pull/1413) Fix basic auth (@simov)
-- [#1397](https://github.com/request/request/pull/1397) Improve pipe-from-file tests (@nylen)
-
-### v2.53.0 (2015/02/02)
-- [#1396](https://github.com/request/request/pull/1396) Do not rfc3986 escape JSON bodies (@nylen, @simov)
-- [#1392](https://github.com/request/request/pull/1392) Improve `timeout` option description (@watson)
-
-### v2.52.0 (2015/02/02)
-- [#1383](https://github.com/request/request/pull/1383) Add missing HTTPS options that were not being passed to tunnel (@brichard19) (@nylen)
-- [#1388](https://github.com/request/request/pull/1388) Upgrade mime-types package version (@roderickhsiao)
-- [#1389](https://github.com/request/request/pull/1389) Revise Setup Tunnel Function (@seanstrom)
-- [#1374](https://github.com/request/request/pull/1374) Allow explicitly disabling tunneling for proxied https destinations (@nylen)
-- [#1376](https://github.com/request/request/pull/1376) Use karma-browserify for tests. Add browser test coverage reporter. (@eiriksm)
-- [#1366](https://github.com/request/request/pull/1366) Refactor OAuth into separate module (@simov)
-- [#1373](https://github.com/request/request/pull/1373) Rewrite tunnel test to be pure Node.js (@nylen)
-- [#1371](https://github.com/request/request/pull/1371) Upgrade test reporter (@nylen)
-- [#1360](https://github.com/request/request/pull/1360) Refactor basic, bearer, digest auth logic into separate class (@simov)
-- [#1354](https://github.com/request/request/pull/1354) Remove circular dependency from debugging code (@nylen)
-- [#1351](https://github.com/request/request/pull/1351) Move digest auth into private prototype method (@simov)
-- [#1352](https://github.com/request/request/pull/1352) Update hawk dependency to ~2.3.0 (@mridgway)
-- [#1353](https://github.com/request/request/pull/1353) Correct travis-ci badge (@dogancelik)
-- [#1349](https://github.com/request/request/pull/1349) Make sure we return on errored browser requests. (@eiriksm)
-- [#1346](https://github.com/request/request/pull/1346) getProxyFromURI Extraction Refactor (@seanstrom)
-- [#1337](https://github.com/request/request/pull/1337) Standardize test ports on 6767 (@nylen)
-- [#1341](https://github.com/request/request/pull/1341) Emit FormData error events as Request error events (@nylen, @rwky)
-- [#1343](https://github.com/request/request/pull/1343) Clean up readme badges, and add Travis and Coveralls badges (@nylen)
-- [#1345](https://github.com/request/request/pull/1345) Update README.md (@Aaron-Hartwig)
-- [#1338](https://github.com/request/request/pull/1338) Always wait for server.close() callback in tests (@nylen)
-- [#1342](https://github.com/request/request/pull/1342) Add mock https server and redo start of browser tests for this purpose. (@eiriksm)
-- [#1339](https://github.com/request/request/pull/1339) Improve auth docs (@nylen)
-- [#1335](https://github.com/request/request/pull/1335) Add support for OAuth plaintext signature method (@simov)
-- [#1332](https://github.com/request/request/pull/1332) Add clean script to remove test-browser.js after the tests run (@seanstrom)
-- [#1327](https://github.com/request/request/pull/1327) Fix errors generating coverage reports. (@nylen)
-- [#1330](https://github.com/request/request/pull/1330) Return empty buffer upon empty response body and encoding is set to null (@seanstrom)
-- [#1326](https://github.com/request/request/pull/1326) Use faster container-based infrastructure on Travis (@nylen)
-- [#1315](https://github.com/request/request/pull/1315) Implement rfc3986 option (@simov, @nylen, @apoco, @DullReferenceException, @mmalecki, @oliamb, @cliffcrosland, @LewisJEllis, @eiriksm, @poislagarde)
-- [#1314](https://github.com/request/request/pull/1314) Detect urlencoded form data header via regex (@simov)
-- [#1317](https://github.com/request/request/pull/1317) Improve OAuth1.0 server side flow example (@simov)
-
-### v2.51.0 (2014/12/10)
-- [#1310](https://github.com/request/request/pull/1310) Revert changes introduced in https://github.com/request/request/pull/1282 (@simov)
-
-### v2.50.0 (2014/12/09)
-- [#1308](https://github.com/request/request/pull/1308) Add browser test to keep track of browserify compability. (@eiriksm)
-- [#1299](https://github.com/request/request/pull/1299) Add optional support for jsonReviver (@poislagarde)
-- [#1277](https://github.com/request/request/pull/1277) Add Coveralls configuration (@simov)
-- [#1307](https://github.com/request/request/pull/1307) Upgrade form-data, add back browserify compability. Fixes #455. (@eiriksm)
-- [#1305](https://github.com/request/request/pull/1305) Fix typo in README.md (@LewisJEllis)
-- [#1288](https://github.com/request/request/pull/1288) Update README.md to explain custom file use case (@cliffcrosland)
-
-### v2.49.0 (2014/11/28)
-- [#1295](https://github.com/request/request/pull/1295) fix(proxy): no-proxy false positive (@oliamb)
-- [#1292](https://github.com/request/request/pull/1292) Upgrade `caseless` to 0.8.1 (@mmalecki)
-- [#1276](https://github.com/request/request/pull/1276) Set transfer encoding for multipart/related to chunked by default (@simov)
-- [#1275](https://github.com/request/request/pull/1275) Fix multipart content-type headers detection (@simov)
-- [#1269](https://github.com/request/request/pull/1269) adds streams example for review (@tbuchok)
-- [#1238](https://github.com/request/request/pull/1238) Add examples README.md (@simov)
-
-### v2.48.0 (2014/11/12)
-- [#1263](https://github.com/request/request/pull/1263) Fixed a syntax error / typo in README.md (@xna2)
-- [#1253](https://github.com/request/request/pull/1253) Add multipart chunked flag (@simov, @nylen)
-- [#1251](https://github.com/request/request/pull/1251) Clarify that defaults() does not modify global defaults (@nylen)
-- [#1250](https://github.com/request/request/pull/1250) Improve documentation for pool and maxSockets options (@nylen)
-- [#1237](https://github.com/request/request/pull/1237) Documenting error handling when using streams (@vmattos)
-- [#1244](https://github.com/request/request/pull/1244) Finalize changelog command (@nylen)
-- [#1241](https://github.com/request/request/pull/1241) Fix typo (@alexanderGugel)
-- [#1223](https://github.com/request/request/pull/1223) Show latest version number instead of "upcoming" in changelog (@nylen)
-- [#1236](https://github.com/request/request/pull/1236) Document how to use custom CA in README (#1229) (@hypesystem)
-- [#1228](https://github.com/request/request/pull/1228) Support for oauth with RSA-SHA1 signing (@nylen)
-- [#1216](https://github.com/request/request/pull/1216) Made json and multipart options coexist (@nylen, @simov)
-- [#1225](https://github.com/request/request/pull/1225) Allow header white/exclusive lists in any case. (@RReverser)
-
-### v2.47.0 (2014/10/26)
-- [#1222](https://github.com/request/request/pull/1222) Move from mikeal/request to request/request (@nylen)
-- [#1220](https://github.com/request/request/pull/1220) update qs dependency to 2.3.1 (@FredKSchott)
-- [#1212](https://github.com/request/request/pull/1212) Improve tests/test-timeout.js (@nylen)
-- [#1219](https://github.com/request/request/pull/1219) remove old globalAgent workaround for node 0.4 (@request)
-- [#1214](https://github.com/request/request/pull/1214) Remove cruft left over from optional dependencies (@nylen)
-- [#1215](https://github.com/request/request/pull/1215) Add proxyHeaderExclusiveList option for proxy-only headers. (@RReverser)
-- [#1211](https://github.com/request/request/pull/1211) Allow 'Host' header instead of 'host' and remember case across redirects (@nylen)
-- [#1208](https://github.com/request/request/pull/1208) Improve release script (@nylen)
-- [#1213](https://github.com/request/request/pull/1213) Support for custom cookie store (@nylen, @mitsuru)
-- [#1197](https://github.com/request/request/pull/1197) Clean up some code around setting the agent (@FredKSchott)
-- [#1209](https://github.com/request/request/pull/1209) Improve multipart form append test (@simov)
-- [#1207](https://github.com/request/request/pull/1207) Update changelog (@nylen)
-- [#1185](https://github.com/request/request/pull/1185) Stream multipart/related bodies (@simov)
-
-### v2.46.0 (2014/10/23)
-- [#1198](https://github.com/request/request/pull/1198) doc for TLS/SSL protocol options (@shawnzhu)
-- [#1200](https://github.com/request/request/pull/1200) Add a Gitter chat badge to README.md (@gitter-badger)
-- [#1196](https://github.com/request/request/pull/1196) Upgrade taper test reporter to v0.3.0 (@nylen)
-- [#1199](https://github.com/request/request/pull/1199) Fix lint error: undeclared var i (@nylen)
-- [#1191](https://github.com/request/request/pull/1191) Move self.proxy decision logic out of init and into a helper (@FredKSchott)
-- [#1190](https://github.com/request/request/pull/1190) Move _buildRequest() logic back into init (@FredKSchott)
-- [#1186](https://github.com/request/request/pull/1186) Support Smarter Unix URL Scheme (@FredKSchott)
-- [#1178](https://github.com/request/request/pull/1178) update form documentation for new usage (@FredKSchott)
-- [#1180](https://github.com/request/request/pull/1180) Enable no-mixed-requires linting rule (@nylen)
-- [#1184](https://github.com/request/request/pull/1184) Don't forward authorization header across redirects to different hosts (@nylen)
-- [#1183](https://github.com/request/request/pull/1183) Correct README about pre and postamble CRLF using multipart and not mult... (@netpoetica)
-- [#1179](https://github.com/request/request/pull/1179) Lint tests directory (@nylen)
-- [#1169](https://github.com/request/request/pull/1169) add metadata for form-data file field (@dotcypress)
-- [#1173](https://github.com/request/request/pull/1173) remove optional dependencies (@seanstrom)
-- [#1165](https://github.com/request/request/pull/1165) Cleanup event listeners and remove function creation from init (@FredKSchott)
-- [#1174](https://github.com/request/request/pull/1174) update the request.cookie docs to have a valid cookie example (@seanstrom)
-- [#1168](https://github.com/request/request/pull/1168) create a detach helper and use detach helper in replace of nextTick (@seanstrom)
-- [#1171](https://github.com/request/request/pull/1171) in post can send form data and use callback (@MiroRadenovic)
-- [#1159](https://github.com/request/request/pull/1159) accept charset for x-www-form-urlencoded content-type (@seanstrom)
-- [#1157](https://github.com/request/request/pull/1157) Update README.md: body with json=true (@Rob--W)
-- [#1164](https://github.com/request/request/pull/1164) Disable tests/test-timeout.js on Travis (@nylen)
-- [#1153](https://github.com/request/request/pull/1153) Document how to run a single test (@nylen)
-- [#1144](https://github.com/request/request/pull/1144) adds documentation for the "response" event within the streaming section (@tbuchok)
-- [#1162](https://github.com/request/request/pull/1162) Update eslintrc file to no longer allow past errors (@FredKSchott)
-- [#1155](https://github.com/request/request/pull/1155) Support/use self everywhere (@seanstrom)
-- [#1161](https://github.com/request/request/pull/1161) fix no-use-before-define lint warnings (@emkay)
-- [#1156](https://github.com/request/request/pull/1156) adding curly brackets to get rid of lint errors (@emkay)
-- [#1151](https://github.com/request/request/pull/1151) Fix localAddress test on OS X (@nylen)
-- [#1145](https://github.com/request/request/pull/1145) documentation: fix outdated reference to setCookieSync old name in README (@FredKSchott)
-- [#1131](https://github.com/request/request/pull/1131) Update pool documentation (@FredKSchott)
-- [#1143](https://github.com/request/request/pull/1143) Rewrite all tests to use tape (@nylen)
-- [#1137](https://github.com/request/request/pull/1137) Add ability to specifiy querystring lib in options. (@jgrund)
-- [#1138](https://github.com/request/request/pull/1138) allow hostname and port in place of host on uri (@cappslock)
-- [#1134](https://github.com/request/request/pull/1134) Fix multiple redirects and `self.followRedirect` (@blakeembrey)
-- [#1130](https://github.com/request/request/pull/1130) documentation fix: add note about npm test for contributing (@FredKSchott)
-- [#1120](https://github.com/request/request/pull/1120) Support/refactor request setup tunnel (@seanstrom)
-- [#1129](https://github.com/request/request/pull/1129) linting fix: convert double quote strings to use single quotes (@FredKSchott)
-- [#1124](https://github.com/request/request/pull/1124) linting fix: remove unneccesary semi-colons (@FredKSchott)
-
-### v2.45.0 (2014/10/06)
-- [#1128](https://github.com/request/request/pull/1128) Add test for setCookie regression (@nylen)
-- [#1127](https://github.com/request/request/pull/1127) added tests around using objects as values in a query string (@bcoe)
-- [#1103](https://github.com/request/request/pull/1103) Support/refactor request constructor (@nylen, @seanstrom)
-- [#1119](https://github.com/request/request/pull/1119) add basic linting to request library (@FredKSchott)
-- [#1121](https://github.com/request/request/pull/1121) Revert "Explicitly use sync versions of cookie functions" (@nylen)
-- [#1118](https://github.com/request/request/pull/1118) linting fix: Restructure bad empty if statement (@FredKSchott)
-- [#1117](https://github.com/request/request/pull/1117) Fix a bad check for valid URIs (@FredKSchott)
-- [#1113](https://github.com/request/request/pull/1113) linting fix: space out operators (@FredKSchott)
-- [#1116](https://github.com/request/request/pull/1116) Fix typo in `noProxyHost` definition (@FredKSchott)
-- [#1114](https://github.com/request/request/pull/1114) linting fix: Added a `new` operator that was missing when creating and throwing a new error (@FredKSchott)
-- [#1096](https://github.com/request/request/pull/1096) No_proxy support (@samcday)
-- [#1107](https://github.com/request/request/pull/1107) linting-fix: remove unused variables (@FredKSchott)
-- [#1112](https://github.com/request/request/pull/1112) linting fix: Make return values consistent and more straitforward (@FredKSchott)
-- [#1111](https://github.com/request/request/pull/1111) linting fix: authPieces was getting redeclared (@FredKSchott)
-- [#1105](https://github.com/request/request/pull/1105) Use strict mode in request (@FredKSchott)
-- [#1110](https://github.com/request/request/pull/1110) linting fix: replace lazy '==' with more strict '===' (@FredKSchott)
-- [#1109](https://github.com/request/request/pull/1109) linting fix: remove function call from if-else conditional statement (@FredKSchott)
-- [#1102](https://github.com/request/request/pull/1102) Fix to allow setting a `requester` on recursive calls to `request.defaults` (@tikotzky)
-- [#1095](https://github.com/request/request/pull/1095) Tweaking engines in package.json (@pdehaan)
-- [#1082](https://github.com/request/request/pull/1082) Forward the socket event from the httpModule request (@seanstrom)
-- [#972](https://github.com/request/request/pull/972) Clarify gzip handling in the README (@kevinoid)
-- [#1089](https://github.com/request/request/pull/1089) Mention that encoding defaults to utf8, not Buffer (@stuartpb)
-- [#1088](https://github.com/request/request/pull/1088) Fix cookie example in README.md and make it more clear (@pipi32167)
-- [#1027](https://github.com/request/request/pull/1027) Add support for multipart form data in request options. (@crocket)
-- [#1076](https://github.com/request/request/pull/1076) use Request.abort() to abort the request when the request has timed-out (@seanstrom)
-- [#1068](https://github.com/request/request/pull/1068) add optional postamble required by .NET multipart requests (@netpoetica)
-
-### v2.43.0 (2014/09/18)
-- [#1057](https://github.com/request/request/pull/1057) Defaults should not overwrite defined options (@davidwood)
-- [#1046](https://github.com/request/request/pull/1046) Propagate datastream errors, useful in case gzip fails. (@ZJONSSON, @Janpot)
-- [#1063](https://github.com/request/request/pull/1063) copy the input headers object #1060 (@finnp)
-- [#1031](https://github.com/request/request/pull/1031) Explicitly use sync versions of cookie functions (@ZJONSSON)
-- [#1056](https://github.com/request/request/pull/1056) Fix redirects when passing url.parse(x) as URL to convenience method (@nylen)
-
-### v2.42.0 (2014/09/04)
-- [#1053](https://github.com/request/request/pull/1053) Fix #1051 Parse auth properly when using non-tunneling proxy (@isaacs)
-
-### v2.41.0 (2014/09/04)
-- [#1050](https://github.com/request/request/pull/1050) Pass whitelisted headers to tunneling proxy. Organize all tunneling logic. (@isaacs, @Feldhacker)
-- [#1035](https://github.com/request/request/pull/1035) souped up nodei.co badge (@rvagg)
-- [#1048](https://github.com/request/request/pull/1048) Aws is now possible over a proxy (@steven-aerts)
-- [#1039](https://github.com/request/request/pull/1039) extract out helper functions to a helper file (@seanstrom)
-- [#1021](https://github.com/request/request/pull/1021) Support/refactor indexjs (@seanstrom)
-- [#1033](https://github.com/request/request/pull/1033) Improve and document debug options (@nylen)
-- [#1034](https://github.com/request/request/pull/1034) Fix readme headings (@nylen)
-- [#1030](https://github.com/request/request/pull/1030) Allow recursive request.defaults (@tikotzky)
-- [#1029](https://github.com/request/request/pull/1029) Fix a couple of typos (@nylen)
-- [#675](https://github.com/request/request/pull/675) Checking for SSL fault on connection before reading SSL properties (@VRMink)
-- [#989](https://github.com/request/request/pull/989) Added allowRedirect function. Should return true if redirect is allowed or false otherwise (@doronin)
-- [#1025](https://github.com/request/request/pull/1025) [fixes #1023] Set self._ended to true once response has ended (@mridgway)
-- [#1020](https://github.com/request/request/pull/1020) Add back removed debug metadata (@FredKSchott)
-- [#1008](https://github.com/request/request/pull/1008) Moving to module instead of cutomer buffer concatenation. (@mikeal)
-- [#770](https://github.com/request/request/pull/770) Added dependency badge for README file; (@timgluz, @mafintosh, @lalitkapoor, @stash, @bobyrizov)
-- [#1016](https://github.com/request/request/pull/1016) toJSON no longer results in an infinite loop, returns simple objects (@FredKSchott)
-- [#1018](https://github.com/request/request/pull/1018) Remove pre-0.4.4 HTTPS fix (@mmalecki)
-- [#1006](https://github.com/request/request/pull/1006) Migrate to caseless, fixes #1001 (@mikeal)
-- [#995](https://github.com/request/request/pull/995) Fix parsing array of objects (@sjonnet19)
-- [#999](https://github.com/request/request/pull/999) Fix fallback for browserify for optional modules. (@eiriksm)
-- [#996](https://github.com/request/request/pull/996) Wrong oauth signature when multiple same param keys exist [updated] (@bengl, @hyjin)
-
-### v2.40.0 (2014/08/06)
-- [#992](https://github.com/request/request/pull/992) Fix security vulnerability. Update qs (@poeticninja)
-- [#988](https://github.com/request/request/pull/988) “--” -> “—” (@upisfree)
-- [#987](https://github.com/request/request/pull/987) Show optional modules as being loaded by the module that reqeusted them (@iarna)
-
-### v2.39.0 (2014/07/24)
-- [#976](https://github.com/request/request/pull/976) Update README.md (@pvoznenko)
-
-### v2.38.0 (2014/07/22)
-- [#952](https://github.com/request/request/pull/952) Adding support to client certificate with proxy use case (@ofirshaked)
-- [#884](https://github.com/request/request/pull/884) Documented tough-cookie installation. (@wbyoung)
-- [#935](https://github.com/request/request/pull/935) Correct repository url (@fritx)
-- [#963](https://github.com/request/request/pull/963) Update changelog (@nylen)
-- [#960](https://github.com/request/request/pull/960) Support gzip with encoding on node pre-v0.9.4 (@kevinoid)
-- [#953](https://github.com/request/request/pull/953) Add async Content-Length computation when using form-data (@LoicMahieu)
-- [#844](https://github.com/request/request/pull/844) Add support for HTTP[S]_PROXY environment variables. Fixes #595. (@jvmccarthy)
-- [#946](https://github.com/request/request/pull/946) defaults: merge headers (@aj0strow)
-
-### v2.37.0 (2014/07/07)
-- [#957](https://github.com/request/request/pull/957) Silence EventEmitter memory leak warning #311 (@watson)
-- [#955](https://github.com/request/request/pull/955) check for content-length header before setting it in nextTick (@camilleanne)
-- [#951](https://github.com/request/request/pull/951) Add support for gzip content decoding (@kevinoid)
-- [#949](https://github.com/request/request/pull/949) Manually enter querystring in form option (@charlespwd)
-- [#944](https://github.com/request/request/pull/944) Make request work with browserify (@eiriksm)
-- [#943](https://github.com/request/request/pull/943) New mime module (@eiriksm)
-- [#927](https://github.com/request/request/pull/927) Bump version of hawk dep. (@samccone)
-- [#907](https://github.com/request/request/pull/907) append secureOptions to poolKey (@medovob)
-
-### v2.35.0 (2014/05/17)
-- [#901](https://github.com/request/request/pull/901) Fixes #555 (@pigulla)
-- [#897](https://github.com/request/request/pull/897) merge with default options (@vohof)
-- [#891](https://github.com/request/request/pull/891) fixes 857 - options object is mutated by calling request (@lalitkapoor)
-- [#869](https://github.com/request/request/pull/869) Pipefilter test (@tgohn)
-- [#866](https://github.com/request/request/pull/866) Fix typo (@dandv)
-- [#861](https://github.com/request/request/pull/861) Add support for RFC 6750 Bearer Tokens (@phedny)
-- [#809](https://github.com/request/request/pull/809) upgrade tunnel-proxy to 0.4.0 (@ksato9700)
-- [#850](https://github.com/request/request/pull/850) Fix word consistency in readme (@0xNobody)
-- [#810](https://github.com/request/request/pull/810) add some exposition to mpu example in README.md (@mikermcneil)
-- [#840](https://github.com/request/request/pull/840) improve error reporting for invalid protocols (@FND)
-- [#821](https://github.com/request/request/pull/821) added secureOptions back (@nw)
-- [#815](https://github.com/request/request/pull/815) Create changelog based on pull requests (@lalitkapoor)
-
-### v2.34.0 (2014/02/18)
-- [#516](https://github.com/request/request/pull/516) UNIX Socket URL Support (@lyuzashi)
-- [#801](https://github.com/request/request/pull/801) 794 ignore cookie parsing and domain errors (@lalitkapoor)
-- [#802](https://github.com/request/request/pull/802) Added the Apache license to the package.json. (@keskival)
-- [#793](https://github.com/request/request/pull/793) Adds content-length calculation when submitting forms using form-data li... (@Juul)
-- [#785](https://github.com/request/request/pull/785) Provide ability to override content-type when `json` option used (@vvo)
-- [#781](https://github.com/request/request/pull/781) simpler isReadStream function (@joaojeronimo)
-
-### v2.32.0 (2014/01/16)
-- [#767](https://github.com/request/request/pull/767) Use tough-cookie CookieJar sync API (@stash)
-- [#764](https://github.com/request/request/pull/764) Case-insensitive authentication scheme (@bobyrizov)
-- [#763](https://github.com/request/request/pull/763) Upgrade tough-cookie to 0.10.0 (@stash)
-- [#744](https://github.com/request/request/pull/744) Use Cookie.parse (@lalitkapoor)
-- [#757](https://github.com/request/request/pull/757) require aws-sign2 (@mafintosh)
-
-### v2.31.0 (2014/01/08)
-- [#645](https://github.com/request/request/pull/645) update twitter api url to v1.1 (@mick)
-- [#746](https://github.com/request/request/pull/746) README: Markdown code highlight (@weakish)
-- [#745](https://github.com/request/request/pull/745) updating setCookie example to make it clear that the callback is required (@emkay)
-- [#742](https://github.com/request/request/pull/742) Add note about JSON output body type (@iansltx)
-- [#741](https://github.com/request/request/pull/741) README example is using old cookie jar api (@emkay)
-- [#736](https://github.com/request/request/pull/736) Fix callback arguments documentation (@mmalecki)
-
-### v2.30.0 (2013/12/13)
-- [#732](https://github.com/request/request/pull/732) JSHINT: Creating global 'for' variable. Should be 'for (var ...'. (@Fritz-Lium)
-- [#730](https://github.com/request/request/pull/730) better HTTP DIGEST support (@dai-shi)
-- [#728](https://github.com/request/request/pull/728) Fix TypeError when calling request.cookie (@scarletmeow)
-
-### v2.29.0 (2013/12/06)
-- [#727](https://github.com/request/request/pull/727) fix requester bug (@jchris)
-
-### v2.28.0 (2013/12/04)
-- [#724](https://github.com/request/request/pull/724) README.md: add custom HTTP Headers example. (@tcort)
-- [#719](https://github.com/request/request/pull/719) Made a comment gender neutral. (@unsetbit)
-- [#715](https://github.com/request/request/pull/715) Request.multipart no longer crashes when header 'Content-type' present (@pastaclub)
-- [#710](https://github.com/request/request/pull/710) Fixing listing in callback part of docs. (@lukasz-zak)
-- [#696](https://github.com/request/request/pull/696) Edited README.md for formatting and clarity of phrasing (@Zearin)
-- [#694](https://github.com/request/request/pull/694) Typo in README (@VRMink)
-- [#690](https://github.com/request/request/pull/690) Handle blank password in basic auth. (@diversario)
-- [#682](https://github.com/request/request/pull/682) Optional dependencies (@Turbo87)
-- [#683](https://github.com/request/request/pull/683) Travis CI support (@Turbo87)
-- [#674](https://github.com/request/request/pull/674) change cookie module,to tough-cookie.please check it . (@sxyizhiren)
-- [#666](https://github.com/request/request/pull/666) make `ciphers` and `secureProtocol` to work in https request (@richarddong)
-- [#656](https://github.com/request/request/pull/656) Test case for #304. (@diversario)
-- [#662](https://github.com/request/request/pull/662) option.tunnel to explicitly disable tunneling (@seanmonstar)
-- [#659](https://github.com/request/request/pull/659) fix failure when running with NODE_DEBUG=request, and a test for that (@jrgm)
-- [#630](https://github.com/request/request/pull/630) Send random cnonce for HTTP Digest requests (@wprl)
-
-### v2.27.0 (2013/08/15)
-- [#619](https://github.com/request/request/pull/619) decouple things a bit (@joaojeronimo)
-
-### v2.26.0 (2013/08/07)
-- [#613](https://github.com/request/request/pull/613) Fixes #583, moved initialization of self.uri.pathname (@lexander)
-- [#605](https://github.com/request/request/pull/605) Only include ":" + pass in Basic Auth if it's defined (fixes #602) (@bendrucker)
-
-### v2.24.0 (2013/07/23)
-- [#596](https://github.com/request/request/pull/596) Global agent is being used when pool is specified (@Cauldrath)
-- [#594](https://github.com/request/request/pull/594) Emit complete event when there is no callback (@RomainLK)
-- [#601](https://github.com/request/request/pull/601) Fixed a small typo (@michalstanko)
-
-### v2.23.0 (2013/07/23)
-- [#589](https://github.com/request/request/pull/589) Prevent setting headers after they are sent (@geek)
-- [#587](https://github.com/request/request/pull/587) Global cookie jar disabled by default (@threepointone)
-
-### v2.22.0 (2013/07/05)
-- [#544](https://github.com/request/request/pull/544) Update http-signature version. (@davidlehn)
-- [#581](https://github.com/request/request/pull/581) Fix spelling of "ignoring." (@bigeasy)
-- [#568](https://github.com/request/request/pull/568) use agentOptions to create agent when specified in request (@SamPlacette)
-- [#564](https://github.com/request/request/pull/564) Fix redirections (@criloz)
-- [#541](https://github.com/request/request/pull/541) The exported request function doesn't have an auth method (@tschaub)
-- [#542](https://github.com/request/request/pull/542) Expose Request class (@regality)
-
-### v2.21.0 (2013/04/30)
-- [#536](https://github.com/request/request/pull/536) Allow explicitly empty user field for basic authentication. (@mikeando)
-- [#532](https://github.com/request/request/pull/532) fix typo (@fredericosilva)
-- [#497](https://github.com/request/request/pull/497) Added redirect event (@Cauldrath)
-- [#503](https://github.com/request/request/pull/503) Fix basic auth for passwords that contain colons (@tonistiigi)
-- [#521](https://github.com/request/request/pull/521) Improving test-localAddress.js (@noway421)
-- [#529](https://github.com/request/request/pull/529) dependencies versions bump (@jodaka)
-
-### v2.20.0 (2013/04/22)
-- [#523](https://github.com/request/request/pull/523) Updating dependencies (@noway421)
-- [#520](https://github.com/request/request/pull/520) Fixing test-tunnel.js (@noway421)
-- [#519](https://github.com/request/request/pull/519) Update internal path state on post-creation QS changes (@jblebrun)
-- [#510](https://github.com/request/request/pull/510) Add HTTP Signature support. (@davidlehn)
-- [#502](https://github.com/request/request/pull/502) Fix POST (and probably other) requests that are retried after 401 Unauthorized (@nylen)
-- [#508](https://github.com/request/request/pull/508) Honor the .strictSSL option when using proxies (tunnel-agent) (@jhs)
-- [#512](https://github.com/request/request/pull/512) Make password optional to support the format: http://username@hostname/ (@pajato1)
-- [#513](https://github.com/request/request/pull/513) add 'localAddress' support (@yyfrankyy)
-- [#498](https://github.com/request/request/pull/498) Moving response emit above setHeaders on destination streams (@kenperkins)
-- [#490](https://github.com/request/request/pull/490) Empty response body (3-rd argument) must be passed to callback as an empty string (@Olegas)
-- [#479](https://github.com/request/request/pull/479) Changing so if Accept header is explicitly set, sending json does not ov... (@RoryH)
-- [#475](https://github.com/request/request/pull/475) Use `unescape` from `querystring` (@shimaore)
-- [#473](https://github.com/request/request/pull/473) V0.10 compat (@isaacs)
-- [#471](https://github.com/request/request/pull/471) Using querystring library from visionmedia (@kbackowski)
-- [#461](https://github.com/request/request/pull/461) Strip the UTF8 BOM from a UTF encoded response (@kppullin)
-- [#460](https://github.com/request/request/pull/460) hawk 0.10.0 (@hueniverse)
-- [#462](https://github.com/request/request/pull/462) if query params are empty, then request path shouldn't end with a '?' (merges cleanly now) (@jaipandya)
-- [#456](https://github.com/request/request/pull/456) hawk 0.9.0 (@hueniverse)
-- [#429](https://github.com/request/request/pull/429) Copy options before adding callback. (@nrn, @nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki)
-- [#454](https://github.com/request/request/pull/454) Destroy the response if present when destroying the request (clean merge) (@mafintosh)
-- [#310](https://github.com/request/request/pull/310) Twitter Oauth Stuff Out of Date; Now Updated (@joemccann, @isaacs, @mscdex)
-- [#413](https://github.com/request/request/pull/413) rename googledoodle.png to .jpg (@nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki)
-- [#448](https://github.com/request/request/pull/448) Convenience method for PATCH (@mloar)
-- [#444](https://github.com/request/request/pull/444) protect against double callbacks on error path (@spollack)
-- [#433](https://github.com/request/request/pull/433) Added support for HTTPS cert & key (@mmalecki)
-- [#430](https://github.com/request/request/pull/430) Respect specified {Host,host} headers, not just {host} (@andrewschaaf)
-- [#415](https://github.com/request/request/pull/415) Fixed a typo. (@jerem)
-- [#338](https://github.com/request/request/pull/338) Add more auth options, including digest support (@nylen)
-- [#403](https://github.com/request/request/pull/403) Optimize environment lookup to happen once only (@mmalecki)
-- [#398](https://github.com/request/request/pull/398) Add more reporting to tests (@mmalecki)
-- [#388](https://github.com/request/request/pull/388) Ensure "safe" toJSON doesn't break EventEmitters (@othiym23)
-- [#381](https://github.com/request/request/pull/381) Resolving "Invalid signature. Expected signature base string: " (@landeiro)
-- [#380](https://github.com/request/request/pull/380) Fixes missing host header on retried request when using forever agent (@mac-)
-- [#376](https://github.com/request/request/pull/376) Headers lost on redirect (@kapetan)
-- [#375](https://github.com/request/request/pull/375) Fix for missing oauth_timestamp parameter (@jplock)
-- [#374](https://github.com/request/request/pull/374) Correct Host header for proxy tunnel CONNECT (@youurayy)
-- [#370](https://github.com/request/request/pull/370) Twitter reverse auth uses x_auth_mode not x_auth_type (@drudge)
-- [#369](https://github.com/request/request/pull/369) Don't remove x_auth_mode for Twitter reverse auth (@drudge)
-- [#344](https://github.com/request/request/pull/344) Make AWS auth signing find headers correctly (@nlf)
-- [#363](https://github.com/request/request/pull/363) rfc3986 on base_uri, now passes tests (@jeffmarshall)
-- [#362](https://github.com/request/request/pull/362) Running `rfc3986` on `base_uri` in `oauth.hmacsign` instead of just `encodeURIComponent` (@jeffmarshall)
-- [#361](https://github.com/request/request/pull/361) Don't create a Content-Length header if we already have it set (@danjenkins)
-- [#360](https://github.com/request/request/pull/360) Delete self._form along with everything else on redirect (@jgautier)
-- [#355](https://github.com/request/request/pull/355) stop sending erroneous headers on redirected requests (@azylman)
-- [#332](https://github.com/request/request/pull/332) Fix #296 - Only set Content-Type if body exists (@Marsup)
-- [#343](https://github.com/request/request/pull/343) Allow AWS to work in more situations, added a note in the README on its usage (@nlf)
-- [#320](https://github.com/request/request/pull/320) request.defaults() doesn't need to wrap jar() (@StuartHarris)
-- [#322](https://github.com/request/request/pull/322) Fix + test for piped into request bumped into redirect. #321 (@alexindigo)
-- [#326](https://github.com/request/request/pull/326) Do not try to remove listener from an undefined connection (@strk)
-- [#318](https://github.com/request/request/pull/318) Pass servername to tunneling secure socket creation (@isaacs)
-- [#317](https://github.com/request/request/pull/317) Workaround for #313 (@isaacs)
-- [#293](https://github.com/request/request/pull/293) Allow parser errors to bubble up to request (@mscdex)
-- [#290](https://github.com/request/request/pull/290) A test for #289 (@isaacs)
-- [#280](https://github.com/request/request/pull/280) Like in node.js print options if NODE_DEBUG contains the word request (@Filirom1)
-- [#207](https://github.com/request/request/pull/207) Fix #206 Change HTTP/HTTPS agent when redirecting between protocols (@isaacs)
-- [#214](https://github.com/request/request/pull/214) documenting additional behavior of json option (@jphaas)
-- [#272](https://github.com/request/request/pull/272) Boundary begins with CRLF? (@elspoono, @timshadel, @naholyr, @nanodocumet, @TehShrike)
-- [#284](https://github.com/request/request/pull/284) Remove stray `console.log()` call in multipart generator. (@bcherry)
-- [#241](https://github.com/request/request/pull/241) Composability updates suggested by issue #239 (@polotek)
-- [#282](https://github.com/request/request/pull/282) OAuth Authorization header contains non-"oauth_" parameters (@jplock)
-- [#279](https://github.com/request/request/pull/279) fix tests with boundary by injecting boundry from header (@benatkin)
-- [#273](https://github.com/request/request/pull/273) Pipe back pressure issue (@mafintosh)
-- [#268](https://github.com/request/request/pull/268) I'm not OCD seriously (@TehShrike)
-- [#263](https://github.com/request/request/pull/263) Bug in OAuth key generation for sha1 (@nanodocumet)
-- [#265](https://github.com/request/request/pull/265) uncaughtException when redirected to invalid URI (@naholyr)
-- [#262](https://github.com/request/request/pull/262) JSON test should check for equality (@timshadel)
-- [#261](https://github.com/request/request/pull/261) Setting 'pool' to 'false' does NOT disable Agent pooling (@timshadel)
-- [#249](https://github.com/request/request/pull/249) Fix for the fix of your (closed) issue #89 where self.headers[content-length] is set to 0 for all methods (@sethbridges, @polotek, @zephrax, @jeromegn)
-- [#255](https://github.com/request/request/pull/255) multipart allow body === '' ( the empty string ) (@Filirom1)
-- [#260](https://github.com/request/request/pull/260) fixed just another leak of 'i' (@sreuter)
-- [#246](https://github.com/request/request/pull/246) Fixing the set-cookie header (@jeromegn)
-- [#243](https://github.com/request/request/pull/243) Dynamic boundary (@zephrax)
-- [#240](https://github.com/request/request/pull/240) don't error when null is passed for options (@polotek)
-- [#211](https://github.com/request/request/pull/211) Replace all occurrences of special chars in RFC3986 (@chriso)
-- [#224](https://github.com/request/request/pull/224) Multipart content-type change (@janjongboom)
-- [#217](https://github.com/request/request/pull/217) need to use Authorization (titlecase) header with Tumblr OAuth (@visnup)
-- [#203](https://github.com/request/request/pull/203) Fix cookie and redirect bugs and add auth support for HTTPS tunnel (@milewise)
-- [#199](https://github.com/request/request/pull/199) Tunnel (@isaacs)
-- [#198](https://github.com/request/request/pull/198) Bugfix on forever usage of util.inherits (@isaacs)
-- [#197](https://github.com/request/request/pull/197) Make ForeverAgent work with HTTPS (@isaacs)
-- [#193](https://github.com/request/request/pull/193) Fixes GH-119 (@goatslacker)
-- [#188](https://github.com/request/request/pull/188) Add abort support to the returned request (@itay)
-- [#176](https://github.com/request/request/pull/176) Querystring option (@csainty)
-- [#182](https://github.com/request/request/pull/182) Fix request.defaults to support (uri, options, callback) api (@twilson63)
-- [#180](https://github.com/request/request/pull/180) Modified the post, put, head and del shortcuts to support uri optional param (@twilson63)
-- [#179](https://github.com/request/request/pull/179) fix to add opts in .pipe(stream, opts) (@substack)
-- [#177](https://github.com/request/request/pull/177) Issue #173 Support uri as first and optional config as second argument (@twilson63)
-- [#170](https://github.com/request/request/pull/170) can't create a cookie in a wrapped request (defaults) (@fabianonunes)
-- [#168](https://github.com/request/request/pull/168) Picking off an EasyFix by adding some missing mimetypes. (@serby)
-- [#161](https://github.com/request/request/pull/161) Fix cookie jar/headers.cookie collision (#125) (@papandreou)
-- [#162](https://github.com/request/request/pull/162) Fix issue #159 (@dpetukhov)
-- [#90](https://github.com/request/request/pull/90) add option followAllRedirects to follow post/put redirects (@jroes)
-- [#148](https://github.com/request/request/pull/148) Retry Agent (@thejh)
-- [#146](https://github.com/request/request/pull/146) Multipart should respect content-type if previously set (@apeace)
-- [#144](https://github.com/request/request/pull/144) added "form" option to readme (@petejkim)
-- [#133](https://github.com/request/request/pull/133) Fixed cookies parsing (@afanasy)
-- [#135](https://github.com/request/request/pull/135) host vs hostname (@iangreenleaf)
-- [#132](https://github.com/request/request/pull/132) return the body as a Buffer when encoding is set to null (@jahewson)
-- [#112](https://github.com/request/request/pull/112) Support using a custom http-like module (@jhs)
-- [#104](https://github.com/request/request/pull/104) Cookie handling contains bugs (@janjongboom)
-- [#121](https://github.com/request/request/pull/121) Another patch for cookie handling regression (@jhurliman)
-- [#117](https://github.com/request/request/pull/117) Remove the global `i` (@3rd-Eden)
-- [#110](https://github.com/request/request/pull/110) Update to Iris Couch URL (@jhs)
-- [#86](https://github.com/request/request/pull/86) Can't post binary to multipart requests (@kkaefer)
-- [#105](https://github.com/request/request/pull/105) added test for proxy option. (@dominictarr)
-- [#102](https://github.com/request/request/pull/102) Implemented cookies - closes issue 82: https://github.com/mikeal/request/issues/82 (@alessioalex)
-- [#97](https://github.com/request/request/pull/97) Typo in previous pull causes TypeError in non-0.5.11 versions (@isaacs)
-- [#96](https://github.com/request/request/pull/96) Authless parsed url host support (@isaacs)
-- [#81](https://github.com/request/request/pull/81) Enhance redirect handling (@danmactough)
-- [#78](https://github.com/request/request/pull/78) Don't try to do strictSSL for non-ssl connections (@isaacs)
-- [#76](https://github.com/request/request/pull/76) Bug when a request fails and a timeout is set (@Marsup)
-- [#70](https://github.com/request/request/pull/70) add test script to package.json (@isaacs, @aheckmann)
-- [#73](https://github.com/request/request/pull/73) Fix #71 Respect the strictSSL flag (@isaacs)
-- [#69](https://github.com/request/request/pull/69) Flatten chunked requests properly (@isaacs)
-- [#67](https://github.com/request/request/pull/67) fixed global variable leaks (@aheckmann)
-- [#66](https://github.com/request/request/pull/66) Do not overwrite established content-type headers for read stream deliver (@voodootikigod)
-- [#53](https://github.com/request/request/pull/53) Parse json: Issue #51 (@benatkin)
-- [#45](https://github.com/request/request/pull/45) Added timeout option (@mbrevoort)
-- [#35](https://github.com/request/request/pull/35) The "end" event isn't emitted for some responses (@voxpelli)
-- [#31](https://github.com/request/request/pull/31) Error on piping a request to a destination (@tobowers)
\ No newline at end of file
diff --git a/APIs/node_modules/request/CONTRIBUTING.md b/APIs/node_modules/request/CONTRIBUTING.md
deleted file mode 100644
index 8aa6999a..00000000
--- a/APIs/node_modules/request/CONTRIBUTING.md
+++ /dev/null
@@ -1,81 +0,0 @@
-
-# Contributing to Request
-
-:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
-
-The following is a set of guidelines for contributing to Request and its packages, which are hosted in the [Request Organization](https://github.com/request) on GitHub.
-These are just guidelines, not rules, use your best judgment and feel free to propose changes to this document in a pull request.
-
-
-## Submitting an Issue
-
-1. Provide a small self **sufficient** code example to **reproduce** the issue.
-2. Run your test code using [request-debug](https://github.com/request/request-debug) and copy/paste the results inside the issue.
-3. You should **always** use fenced code blocks when submitting code examples or any other formatted output:
-
- ```js
- put your javascript code here
- ```
-
- ```
- put any other formatted output here,
- like for example the one returned from using request-debug
- ```
-
-
-If the problem cannot be reliably reproduced, the issue will be marked as `Not enough info (see CONTRIBUTING.md)`.
-
-If the problem is not related to request the issue will be marked as `Help (please use Stackoverflow)`.
-
-
-## Submitting a Pull Request
-
-1. In almost all of the cases your PR **needs tests**. Make sure you have any.
-2. Run `npm test` locally. Fix any errors before pushing to GitHub.
-3. After submitting the PR a build will be triggered on TravisCI. Wait for it to ends and make sure all jobs are passing.
-
-
------------------------------------------
-
-
-## Becoming a Contributor
-
-Individuals making significant and valuable contributions are given
-commit-access to the project to contribute as they see fit. This project is
-more like an open wiki than a standard guarded open source project.
-
-
-## Rules
-
-There are a few basic ground-rules for contributors:
-
-1. **No `--force` pushes** or modifying the Git history in any way.
-1. **Non-master branches** ought to be used for ongoing work.
-1. **Any** change should be added through Pull Request.
-1. **External API changes and significant modifications** ought to be subject
- to an **internal pull-request** to solicit feedback from other contributors.
-1. Internal pull-requests to solicit feedback are *encouraged* for any other
- non-trivial contribution but left to the discretion of the contributor.
-1. For significant changes wait a full 24 hours before merging so that active
- contributors who are distributed throughout the world have a chance to weigh
- in.
-1. Contributors should attempt to adhere to the prevailing code-style.
-1. Run `npm test` locally before submitting your PR, to catch any easy to miss
- style & testing issues. To diagnose test failures, there are two ways to
- run a single test file:
- - `node_modules/.bin/taper tests/test-file.js` - run using the default
- [`taper`](https://github.com/nylen/taper) test reporter.
- - `node tests/test-file.js` - view the raw
- [tap](https://testanything.org/) output.
-
-
-## Releases
-
-Declaring formal releases remains the prerogative of the project maintainer.
-
-
-## Changes to this arrangement
-
-This is an experiment and feedback is welcome! This document may also be
-subject to pull-requests or changes by contributors where you believe you have
-something valuable to add or change.
diff --git a/APIs/node_modules/request/LICENSE b/APIs/node_modules/request/LICENSE
deleted file mode 100644
index a4a9aee0..00000000
--- a/APIs/node_modules/request/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/APIs/node_modules/request/README.md b/APIs/node_modules/request/README.md
deleted file mode 100644
index cf9072a2..00000000
--- a/APIs/node_modules/request/README.md
+++ /dev/null
@@ -1,1098 +0,0 @@
-
-# Request - Simplified HTTP client
-
-[](https://nodei.co/npm/request/)
-
-[](https://travis-ci.org/request/request)
-[](https://codecov.io/github/request/request?branch=master)
-[](https://coveralls.io/r/request/request)
-[](https://david-dm.org/request/request)
-[](https://snyk.io/test/npm/request)
-[](https://gitter.im/request/request?utm_source=badge)
-
-
-## Super simple to use
-
-Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.
-
-```js
-var request = require('request');
-request('http://www.google.com', function (error, response, body) {
- if (!error && response.statusCode == 200) {
- console.log(body) // Show the HTML for the Google homepage.
- }
-})
-```
-
-
-## Table of contents
-
-- [Streaming](#streaming)
-- [Forms](#forms)
-- [HTTP Authentication](#http-authentication)
-- [Custom HTTP Headers](#custom-http-headers)
-- [OAuth Signing](#oauth-signing)
-- [Proxies](#proxies)
-- [Unix Domain Sockets](#unix-domain-sockets)
-- [TLS/SSL Protocol](#tlsssl-protocol)
-- [Support for HAR 1.2](#support-for-har-12)
-- [**All Available Options**](#requestoptions-callback)
-
-Request also offers [convenience methods](#convenience-methods) like
-`request.defaults` and `request.post`, and there are
-lots of [usage examples](#examples) and several
-[debugging techniques](#debugging).
-
-
----
-
-
-## Streaming
-
-You can stream any response to a file stream.
-
-```js
-request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))
-```
-
-You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one).
-
-```js
-fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))
-```
-
-Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers.
-
-```js
-request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))
-```
-
-Request emits a "response" event when a response is received. The `response` argument will be an instance of [http.IncomingMessage](http://nodejs.org/api/http.html#http_http_incomingmessage).
-
-```js
-request
- .get('http://google.com/img.png')
- .on('response', function(response) {
- console.log(response.statusCode) // 200
- console.log(response.headers['content-type']) // 'image/png'
- })
- .pipe(request.put('http://mysite.com/img.png'))
-```
-
-To easily handle errors when streaming requests, listen to the `error` event before piping:
-
-```js
-request
- .get('http://mysite.com/doodle.png')
- .on('error', function(err) {
- console.log(err)
- })
- .pipe(fs.createWriteStream('doodle.png'))
-```
-
-Now let’s get fancy.
-
-```js
-http.createServer(function (req, resp) {
- if (req.url === '/doodle.png') {
- if (req.method === 'PUT') {
- req.pipe(request.put('http://mysite.com/doodle.png'))
- } else if (req.method === 'GET' || req.method === 'HEAD') {
- request.get('http://mysite.com/doodle.png').pipe(resp)
- }
- }
-})
-```
-
-You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do:
-
-```js
-http.createServer(function (req, resp) {
- if (req.url === '/doodle.png') {
- var x = request('http://mysite.com/doodle.png')
- req.pipe(x)
- x.pipe(resp)
- }
-})
-```
-
-And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :)
-
-```js
-req.pipe(request('http://mysite.com/doodle.png')).pipe(resp)
-```
-
-Also, none of this new functionality conflicts with requests previous features, it just expands them.
-
-```js
-var r = request.defaults({'proxy':'http://localproxy.com'})
-
-http.createServer(function (req, resp) {
- if (req.url === '/doodle.png') {
- r.get('http://google.com/doodle.png').pipe(resp)
- }
-})
-```
-
-You can still use intermediate proxies, the requests will still follow HTTP forwards, etc.
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## Forms
-
-`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API.
-
-
-#### application/x-www-form-urlencoded (URL-Encoded Forms)
-
-URL-encoded forms are simple.
-
-```js
-request.post('http://service.com/upload', {form:{key:'value'}})
-// or
-request.post('http://service.com/upload').form({key:'value'})
-// or
-request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })
-```
-
-
-#### multipart/form-data (Multipart Form Uploads)
-
-For `multipart/form-data` we use the [form-data](https://github.com/form-data/form-data) library by [@felixge](https://github.com/felixge). For the most cases, you can pass your upload form data via the `formData` option.
-
-
-```js
-var formData = {
- // Pass a simple key-value pair
- my_field: 'my_value',
- // Pass data via Buffers
- my_buffer: new Buffer([1, 2, 3]),
- // Pass data via Streams
- my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),
- // Pass multiple values /w an Array
- attachments: [
- fs.createReadStream(__dirname + '/attachment1.jpg'),
- fs.createReadStream(__dirname + '/attachment2.jpg')
- ],
- // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS}
- // Use case: for some types of streams, you'll need to provide "file"-related information manually.
- // See the `form-data` README for more information about options: https://github.com/form-data/form-data
- custom_file: {
- value: fs.createReadStream('/dev/urandom'),
- options: {
- filename: 'topsecret.jpg',
- contentType: 'image/jpg'
- }
- }
-};
-request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
- if (err) {
- return console.error('upload failed:', err);
- }
- console.log('Upload successful! Server responded with:', body);
-});
-```
-
-For advanced cases, you can access the form-data object itself via `r.form()`. This can be modified until the request is fired on the next cycle of the event-loop. (Note that this calling `form()` will clear the currently set form data for that request.)
-
-```js
-// NOTE: Advanced use-case, for normal use see 'formData' usage above
-var r = request.post('http://service.com/upload', function optionalCallback(err, httpResponse, body) {...})
-var form = r.form();
-form.append('my_field', 'my_value');
-form.append('my_buffer', new Buffer([1, 2, 3]));
-form.append('custom_file', fs.createReadStream(__dirname + '/unicycle.jpg'), {filename: 'unicycle.jpg'});
-```
-See the [form-data README](https://github.com/form-data/form-data) for more information & examples.
-
-
-#### multipart/related
-
-Some variations in different HTTP implementations require a newline/CRLF before, after, or both before and after the boundary of a `multipart/related` request (using the multipart option). This has been observed in the .NET WebAPI version 4.0. You can turn on a boundary preambleCRLF or postamble by passing them as `true` to your request options.
-
-```js
- request({
- method: 'PUT',
- preambleCRLF: true,
- postambleCRLF: true,
- uri: 'http://service.com/upload',
- multipart: [
- {
- 'content-type': 'application/json',
- body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})
- },
- { body: 'I am an attachment' },
- { body: fs.createReadStream('image.png') }
- ],
- // alternatively pass an object containing additional options
- multipart: {
- chunked: false,
- data: [
- {
- 'content-type': 'application/json',
- body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})
- },
- { body: 'I am an attachment' }
- ]
- }
- },
- function (error, response, body) {
- if (error) {
- return console.error('upload failed:', error);
- }
- console.log('Upload successful! Server responded with:', body);
- })
-```
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## HTTP Authentication
-
-```js
-request.get('http://some.server.com/').auth('username', 'password', false);
-// or
-request.get('http://some.server.com/', {
- 'auth': {
- 'user': 'username',
- 'pass': 'password',
- 'sendImmediately': false
- }
-});
-// or
-request.get('http://some.server.com/').auth(null, null, true, 'bearerToken');
-// or
-request.get('http://some.server.com/', {
- 'auth': {
- 'bearer': 'bearerToken'
- }
-});
-```
-
-If passed as an option, `auth` should be a hash containing values:
-
-- `user` || `username`
-- `pass` || `password`
-- `sendImmediately` (optional)
-- `bearer` (optional)
-
-The method form takes parameters
-`auth(username, password, sendImmediately, bearer)`.
-
-`sendImmediately` defaults to `true`, which causes a basic or bearer
-authentication header to be sent. If `sendImmediately` is `false`, then
-`request` will retry with a proper authentication header after receiving a
-`401` response from the server (which must contain a `WWW-Authenticate` header
-indicating the required authentication method).
-
-Note that you can also specify basic authentication using the URL itself, as
-detailed in [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt). Simply pass the
-`user:password` before the host with an `@` sign:
-
-```js
-var username = 'username',
- password = 'password',
- url = 'http://' + username + ':' + password + '@some.server.com';
-
-request({url: url}, function (error, response, body) {
- // Do more stuff with 'body' here
-});
-```
-
-Digest authentication is supported, but it only works with `sendImmediately`
-set to `false`; otherwise `request` will send basic authentication on the
-initial request, which will probably cause the request to fail.
-
-Bearer authentication is supported, and is activated when the `bearer` value is
-available. The value may be either a `String` or a `Function` returning a
-`String`. Using a function to supply the bearer token is particularly useful if
-used in conjunction with `defaults` to allow a single function to supply the
-last known token at the time of sending a request, or to compute one on the fly.
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## Custom HTTP Headers
-
-HTTP Headers, such as `User-Agent`, can be set in the `options` object.
-In the example below, we call the github API to find out the number
-of stars and forks for the request repository. This requires a
-custom `User-Agent` header as well as https.
-
-```js
-var request = require('request');
-
-var options = {
- url: 'https://api.github.com/repos/request/request',
- headers: {
- 'User-Agent': 'request'
- }
-};
-
-function callback(error, response, body) {
- if (!error && response.statusCode == 200) {
- var info = JSON.parse(body);
- console.log(info.stargazers_count + " Stars");
- console.log(info.forks_count + " Forks");
- }
-}
-
-request(options, callback);
-```
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## OAuth Signing
-
-[OAuth version 1.0](https://tools.ietf.org/html/rfc5849) is supported. The
-default signing algorithm is
-[HMAC-SHA1](https://tools.ietf.org/html/rfc5849#section-3.4.2):
-
-```js
-// OAuth1.0 - 3-legged server side flow (Twitter example)
-// step 1
-var qs = require('querystring')
- , oauth =
- { callback: 'http://mysite.com/callback/'
- , consumer_key: CONSUMER_KEY
- , consumer_secret: CONSUMER_SECRET
- }
- , url = 'https://api.twitter.com/oauth/request_token'
- ;
-request.post({url:url, oauth:oauth}, function (e, r, body) {
- // Ideally, you would take the body in the response
- // and construct a URL that a user clicks on (like a sign in button).
- // The verifier is only available in the response after a user has
- // verified with twitter that they are authorizing your app.
-
- // step 2
- var req_data = qs.parse(body)
- var uri = 'https://api.twitter.com/oauth/authenticate'
- + '?' + qs.stringify({oauth_token: req_data.oauth_token})
- // redirect the user to the authorize uri
-
- // step 3
- // after the user is redirected back to your server
- var auth_data = qs.parse(body)
- , oauth =
- { consumer_key: CONSUMER_KEY
- , consumer_secret: CONSUMER_SECRET
- , token: auth_data.oauth_token
- , token_secret: req_data.oauth_token_secret
- , verifier: auth_data.oauth_verifier
- }
- , url = 'https://api.twitter.com/oauth/access_token'
- ;
- request.post({url:url, oauth:oauth}, function (e, r, body) {
- // ready to make signed requests on behalf of the user
- var perm_data = qs.parse(body)
- , oauth =
- { consumer_key: CONSUMER_KEY
- , consumer_secret: CONSUMER_SECRET
- , token: perm_data.oauth_token
- , token_secret: perm_data.oauth_token_secret
- }
- , url = 'https://api.twitter.com/1.1/users/show.json'
- , qs =
- { screen_name: perm_data.screen_name
- , user_id: perm_data.user_id
- }
- ;
- request.get({url:url, oauth:oauth, qs:qs, json:true}, function (e, r, user) {
- console.log(user)
- })
- })
-})
-```
-
-For [RSA-SHA1 signing](https://tools.ietf.org/html/rfc5849#section-3.4.3), make
-the following changes to the OAuth options object:
-* Pass `signature_method : 'RSA-SHA1'`
-* Instead of `consumer_secret`, specify a `private_key` string in
- [PEM format](http://how2ssl.com/articles/working_with_pem_files/)
-
-For [PLAINTEXT signing](http://oauth.net/core/1.0/#anchor22), make
-the following changes to the OAuth options object:
-* Pass `signature_method : 'PLAINTEXT'`
-
-To send OAuth parameters via query params or in a post body as described in The
-[Consumer Request Parameters](http://oauth.net/core/1.0/#consumer_req_param)
-section of the oauth1 spec:
-* Pass `transport_method : 'query'` or `transport_method : 'body'` in the OAuth
- options object.
-* `transport_method` defaults to `'header'`
-
-To use [Request Body Hash](https://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html) you can either
-* Manually generate the body hash and pass it as a string `body_hash: '...'`
-* Automatically generate the body hash by passing `body_hash: true`
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## Proxies
-
-If you specify a `proxy` option, then the request (and any subsequent
-redirects) will be sent via a connection to the proxy server.
-
-If your endpoint is an `https` url, and you are using a proxy, then
-request will send a `CONNECT` request to the proxy server *first*, and
-then use the supplied connection to connect to the endpoint.
-
-That is, first it will make a request like:
-
-```
-HTTP/1.1 CONNECT endpoint-server.com:80
-Host: proxy-server.com
-User-Agent: whatever user agent you specify
-```
-
-and then the proxy server make a TCP connection to `endpoint-server`
-on port `80`, and return a response that looks like:
-
-```
-HTTP/1.1 200 OK
-```
-
-At this point, the connection is left open, and the client is
-communicating directly with the `endpoint-server.com` machine.
-
-See [the wikipedia page on HTTP Tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel)
-for more information.
-
-By default, when proxying `http` traffic, request will simply make a
-standard proxied `http` request. This is done by making the `url`
-section of the initial line of the request a fully qualified url to
-the endpoint.
-
-For example, it will make a single request that looks like:
-
-```
-HTTP/1.1 GET http://endpoint-server.com/some-url
-Host: proxy-server.com
-Other-Headers: all go here
-
-request body or whatever
-```
-
-Because a pure "http over http" tunnel offers no additional security
-or other features, it is generally simpler to go with a
-straightforward HTTP proxy in this case. However, if you would like
-to force a tunneling proxy, you may set the `tunnel` option to `true`.
-
-You can also make a standard proxied `http` request by explicitly setting
-`tunnel : false`, but **note that this will allow the proxy to see the traffic
-to/from the destination server**.
-
-If you are using a tunneling proxy, you may set the
-`proxyHeaderWhiteList` to share certain headers with the proxy.
-
-You can also set the `proxyHeaderExclusiveList` to share certain
-headers only with the proxy and not with destination host.
-
-By default, this set is:
-
-```
-accept
-accept-charset
-accept-encoding
-accept-language
-accept-ranges
-cache-control
-content-encoding
-content-language
-content-length
-content-location
-content-md5
-content-range
-content-type
-connection
-date
-expect
-max-forwards
-pragma
-proxy-authorization
-referer
-te
-transfer-encoding
-user-agent
-via
-```
-
-Note that, when using a tunneling proxy, the `proxy-authorization`
-header and any headers from custom `proxyHeaderExclusiveList` are
-*never* sent to the endpoint server, but only to the proxy server.
-
-
-### Controlling proxy behaviour using environment variables
-
-The following environment variables are respected by `request`:
-
- * `HTTP_PROXY` / `http_proxy`
- * `HTTPS_PROXY` / `https_proxy`
- * `NO_PROXY` / `no_proxy`
-
-When `HTTP_PROXY` / `http_proxy` are set, they will be used to proxy non-SSL requests that do not have an explicit `proxy` configuration option present. Similarly, `HTTPS_PROXY` / `https_proxy` will be respected for SSL requests that do not have an explicit `proxy` configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the `proxy` configuration option. Furthermore, the `proxy` configuration option can be explicitly set to false / null to opt out of proxying altogether for that request.
-
-`request` is also aware of the `NO_PROXY`/`no_proxy` environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to `*` to opt out of the implicit proxy configuration of the other environment variables.
-
-Here's some examples of valid `no_proxy` values:
-
- * `google.com` - don't proxy HTTP/HTTPS requests to Google.
- * `google.com:443` - don't proxy HTTPS requests to Google, but *do* proxy HTTP requests to Google.
- * `google.com:443, yahoo.com:80` - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo!
- * `*` - ignore `https_proxy`/`http_proxy` environment variables altogether.
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## UNIX Domain Sockets
-
-`request` supports making requests to [UNIX Domain Sockets](https://en.wikipedia.org/wiki/Unix_domain_socket). To make one, use the following URL scheme:
-
-```js
-/* Pattern */ 'http://unix:SOCKET:PATH'
-/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path')
-```
-
-Note: The `SOCKET` path is assumed to be absolute to the root of the host file system.
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## TLS/SSL Protocol
-
-TLS/SSL Protocol options, such as `cert`, `key` and `passphrase`, can be
-set directly in `options` object, in the `agentOptions` property of the `options` object, or even in `https.globalAgent.options`. Keep in mind that, although `agentOptions` allows for a slightly wider range of configurations, the recommended way is via `options` object directly, as using `agentOptions` or `https.globalAgent.options` would not be applied in the same way in proxied environments (as data travels through a TLS connection instead of an http/https agent).
-
-```js
-var fs = require('fs')
- , path = require('path')
- , certFile = path.resolve(__dirname, 'ssl/client.crt')
- , keyFile = path.resolve(__dirname, 'ssl/client.key')
- , caFile = path.resolve(__dirname, 'ssl/ca.cert.pem')
- , request = require('request');
-
-var options = {
- url: 'https://api.some-server.com/',
- cert: fs.readFileSync(certFile),
- key: fs.readFileSync(keyFile),
- passphrase: 'password',
- ca: fs.readFileSync(caFile)
- }
-};
-
-request.get(options);
-```
-
-### Using `options.agentOptions`
-
-In the example below, we call an API requires client side SSL certificate
-(in PEM format) with passphrase protected private key (in PEM format) and disable the SSLv3 protocol:
-
-```js
-var fs = require('fs')
- , path = require('path')
- , certFile = path.resolve(__dirname, 'ssl/client.crt')
- , keyFile = path.resolve(__dirname, 'ssl/client.key')
- , request = require('request');
-
-var options = {
- url: 'https://api.some-server.com/',
- agentOptions: {
- cert: fs.readFileSync(certFile),
- key: fs.readFileSync(keyFile),
- // Or use `pfx` property replacing `cert` and `key` when using private key, certificate and CA certs in PFX or PKCS12 format:
- // pfx: fs.readFileSync(pfxFilePath),
- passphrase: 'password',
- securityOptions: 'SSL_OP_NO_SSLv3'
- }
-};
-
-request.get(options);
-```
-
-It is able to force using SSLv3 only by specifying `secureProtocol`:
-
-```js
-request.get({
- url: 'https://api.some-server.com/',
- agentOptions: {
- secureProtocol: 'SSLv3_method'
- }
-});
-```
-
-It is possible to accept other certificates than those signed by generally allowed Certificate Authorities (CAs).
-This can be useful, for example, when using self-signed certificates.
-To require a different root certificate, you can specify the signing CA by adding the contents of the CA's certificate file to the `agentOptions`.
-The certificate the domain presents must be signed by the root certificate specified:
-
-```js
-request.get({
- url: 'https://api.some-server.com/',
- agentOptions: {
- ca: fs.readFileSync('ca.cert.pem')
- }
-});
-```
-
-[back to top](#table-of-contents)
-
-
----
-
-## Support for HAR 1.2
-
-The `options.har` property will override the values: `url`, `method`, `qs`, `headers`, `form`, `formData`, `body`, `json`, as well as construct multipart data and read files from disk when `request.postData.params[].fileName` is present without a matching `value`.
-
-a validation step will check if the HAR Request format matches the latest spec (v1.2) and will skip parsing if not matching.
-
-```js
- var request = require('request')
- request({
- // will be ignored
- method: 'GET',
- uri: 'http://www.google.com',
-
- // HTTP Archive Request Object
- har: {
- url: 'http://www.mockbin.com/har',
- method: 'POST',
- headers: [
- {
- name: 'content-type',
- value: 'application/x-www-form-urlencoded'
- }
- ],
- postData: {
- mimeType: 'application/x-www-form-urlencoded',
- params: [
- {
- name: 'foo',
- value: 'bar'
- },
- {
- name: 'hello',
- value: 'world'
- }
- ]
- }
- }
- })
-
- // a POST request will be sent to http://www.mockbin.com
- // with body an application/x-www-form-urlencoded body:
- // foo=bar&hello=world
-```
-
-[back to top](#table-of-contents)
-
-
----
-
-## request(options, callback)
-
-The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional.
-
-- `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()`
-- `baseUrl` - fully qualified uri string used as the base url. Most useful with `request.defaults`, for example when you want to do many requests to the same domain. If `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/api/end/point?test=true`. When `baseUrl` is given, `uri` must also be a string.
-- `method` - http method (default: `"GET"`)
-- `headers` - http headers (default: `{}`)
-
----
-
-- `qs` - object containing querystring values to be appended to the `uri`
-- `qsParseOptions` - object containing options to pass to the [qs.parse](https://github.com/hapijs/qs#parsing-objects) method. Alternatively pass options to the [querystring.parse](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_parse_str_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}`
-- `qsStringifyOptions` - object containing options to pass to the [qs.stringify](https://github.com/hapijs/qs#stringifying) method. Alternatively pass options to the [querystring.stringify](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}`. For example, to change the way arrays are converted to query strings using the `qs` module pass the `arrayFormat` option with one of `indices|brackets|repeat`
-- `useQuerystring` - If true, use `querystring` to stringify and parse
- querystrings, otherwise use `qs` (default: `false`). Set this option to
- `true` if you need arrays to be serialized as `foo=bar&foo=baz` instead of the
- default `foo[0]=bar&foo[1]=baz`.
-
----
-
-- `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer`, `String` or `ReadStream`. If `json` is `true`, then `body` must be a JSON-serializable object.
-- `form` - when passed an object or a querystring, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded` header. When passed no options, a `FormData` instance is returned (and is piped to request). See "Forms" section above.
-- `formData` - Data to pass for a `multipart/form-data` request. See
- [Forms](#forms) section above.
-- `multipart` - array of objects which contain their own headers and `body`
- attributes. Sends a `multipart/related` request. See [Forms](#forms) section
- above.
- - Alternatively you can pass in an object `{chunked: false, data: []}` where
- `chunked` is used to specify whether the request is sent in
- [chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding)
- In non-chunked requests, data items with body streams are not allowed.
-- `preambleCRLF` - append a newline/CRLF before the boundary of your `multipart/form-data` request.
-- `postambleCRLF` - append a newline/CRLF at the end of the boundary of your `multipart/form-data` request.
-- `json` - sets `body` to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON.
-- `jsonReviver` - a [reviver function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) that will be passed to `JSON.parse()` when parsing a JSON response body.
-- `jsonReplacer` - a [replacer function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that will be passed to `JSON.stringify()` when stringifying a JSON request body.
-
----
-
-- `auth` - A hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). See documentation above.
-- `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above.
-- `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).
-- `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services). If you want to use AWS sign version 4 use the parameter `sign_version` with value `4` otherwise the default is version 2. **Note:** you need to `npm install aws4` first.
-- `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options.
-
----
-
-- `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise.
-- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`)
-- `maxRedirects` - the maximum number of redirects to follow (default: `10`)
-- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). **Note:** if true, referer header set in the initial request is preserved during redirect chain.
-
----
-
-- `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. Anything else **(including the default value of `undefined`)** will be passed as the [encoding](http://nodejs.org/api/buffer.html#buffer_buffer) parameter to `toString()` (meaning this is effectively `utf8` by default). (**Note:** if you expect binary data, you should set `encoding: null`.)
-- `gzip` - If `true`, add an `Accept-Encoding` header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response. **Note:** Automatic decoding of the response content is performed on the body data returned through `request` (both through the `request` stream and passed to the callback function) but is not performed on the `response` stream (available from the `response` event) which is the unmodified `http.IncomingMessage` object which may contain compressed data. See example below.
-- `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section)
-
----
-
-- `agent` - `http(s).Agent` instance to use
-- `agentClass` - alternatively specify your agent's class name
-- `agentOptions` - and pass its options. **Note:** for HTTPS see [tls API doc for TLS/SSL options](http://nodejs.org/api/tls.html#tls_tls_connect_options_callback) and the [documentation above](#using-optionsagentoptions).
-- `forever` - set to `true` to use the [forever-agent](https://github.com/request/forever-agent) **Note:** Defaults to `http(s).Agent({keepAlive:true})` in node 0.12+
-- `pool` - An object describing which agents to use for the request. If this option is omitted the request will use the global agent (as long as your options allow for it). Otherwise, request will search the pool for your custom agent. If no custom agent is found, a new agent will be created and added to the pool. **Note:** `pool` is used only when the `agent` option is not specified.
- - A `maxSockets` property can also be provided on the `pool` object to set the max number of sockets for all agents created (ex: `pool: {maxSockets: Infinity}`).
- - Note that if you are sending multiple requests in a loop and creating
- multiple new `pool` objects, `maxSockets` will not work as intended. To
- work around this, either use [`request.defaults`](#requestdefaultsoptions)
- with your pool options or create the pool object with the `maxSockets`
- property outside of the loop.
-- `timeout` - Integer containing the number of milliseconds to wait for a
-server to send response headers (and start the response body) before aborting
-the request. Note that if the underlying TCP connection cannot be established,
-the OS-wide TCP connection timeout will overrule the `timeout` option ([the
-default in Linux can be anywhere from 20-120 seconds][linux-timeout]).
-
-[linux-timeout]: http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout
-
----
-
-- `localAddress` - Local interface to bind for network connections.
-- `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`)
-- `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option.
-- `tunnel` - controls the behavior of
- [HTTP `CONNECT` tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling)
- as follows:
- - `undefined` (default) - `true` if the destination is `https`, `false` otherwise
- - `true` - always tunnel to the destination by making a `CONNECT` request to
- the proxy
- - `false` - request the destination as a `GET` request.
-- `proxyHeaderWhiteList` - A whitelist of headers to send to a
- tunneling proxy.
-- `proxyHeaderExclusiveList` - A whitelist of headers to send
- exclusively to a tunneling proxy and not to destination.
-
----
-
-- `time` - If `true`, the request-response cycle (including all redirects) is timed at millisecond resolution, and the result provided on the response's `elapsedTime` property.
-- `har` - A [HAR 1.2 Request Object](http://www.softwareishard.com/blog/har-12-spec/#request), will be processed from HAR format into options overwriting matching values *(see the [HAR 1.2 section](#support-for-har-1.2) for details)*
-- `callback` - alternatively pass the request's callback in the options object
-
-The callback argument gets 3 arguments:
-
-1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object)
-2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object
-3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied)
-
-[back to top](#table-of-contents)
-
-
----
-
-## Convenience methods
-
-There are also shorthand methods for different HTTP METHODs and some other conveniences.
-
-
-### request.defaults(options)
-
-This method **returns a wrapper** around the normal request API that defaults
-to whatever options you pass to it.
-
-**Note:** `request.defaults()` **does not** modify the global request API;
-instead, it **returns a wrapper** that has your default settings applied to it.
-
-**Note:** You can call `.defaults()` on the wrapper that is returned from
-`request.defaults` to add/override defaults that were previously defaulted.
-
-For example:
-```js
-//requests using baseRequest() will set the 'x-token' header
-var baseRequest = request.defaults({
- headers: {'x-token': 'my-token'}
-})
-
-//requests using specialRequest() will include the 'x-token' header set in
-//baseRequest and will also include the 'special' header
-var specialRequest = baseRequest.defaults({
- headers: {special: 'special value'}
-})
-```
-
-### request.put
-
-Same as `request()`, but defaults to `method: "PUT"`.
-
-```js
-request.put(url)
-```
-
-### request.patch
-
-Same as `request()`, but defaults to `method: "PATCH"`.
-
-```js
-request.patch(url)
-```
-
-### request.post
-
-Same as `request()`, but defaults to `method: "POST"`.
-
-```js
-request.post(url)
-```
-
-### request.head
-
-Same as `request()`, but defaults to `method: "HEAD"`.
-
-```js
-request.head(url)
-```
-
-### request.del / request.delete
-
-Same as `request()`, but defaults to `method: "DELETE"`.
-
-```js
-request.del(url)
-request.delete(url)
-```
-
-### request.get
-
-Same as `request()` (for uniformity).
-
-```js
-request.get(url)
-```
-### request.cookie
-
-Function that creates a new cookie.
-
-```js
-request.cookie('key1=value1')
-```
-### request.jar()
-
-Function that creates a new cookie jar.
-
-```js
-request.jar()
-```
-
-[back to top](#table-of-contents)
-
-
----
-
-
-## Debugging
-
-There are at least three ways to debug the operation of `request`:
-
-1. Launch the node process like `NODE_DEBUG=request node script.js`
- (`lib,request,otherlib` works too).
-
-2. Set `require('request').debug = true` at any time (this does the same thing
- as #1).
-
-3. Use the [request-debug module](https://github.com/request/request-debug) to
- view request and response headers and bodies.
-
-[back to top](#table-of-contents)
-
-
----
-
-## Timeouts
-
-Most requests to external servers should have a timeout attached, in case the
-server is not responding in a timely manner. Without a timeout, your code may
-have a socket open/consume resources for minutes or more.
-
-There are two main types of timeouts: **connection timeouts** and **read
-timeouts**. A connect timeout occurs if the timeout is hit while your client is
-attempting to establish a connection to a remote machine (corresponding to the
-[connect() call][connect] on the socket). A read timeout occurs any time the
-server is too slow to send back a part of the response.
-
-These two situations have widely different implications for what went wrong
-with the request, so it's useful to be able to distinguish them. You can detect
-timeout errors by checking `err.code` for an 'ETIMEDOUT' value. Further, you
-can detect whether the timeout was a connection timeout by checking if the
-`err.connect` property is set to `true`.
-
-```js
-request.get('http://10.255.255.1', {timeout: 1500}, function(err) {
- console.log(err.code === 'ETIMEDOUT');
- // Set to `true` if the timeout was a connection timeout, `false` or
- // `undefined` otherwise.
- console.log(err.connect === true);
- process.exit(0);
-});
-```
-
-[connect]: http://linux.die.net/man/2/connect
-
-## Examples:
-
-```js
- var request = require('request')
- , rand = Math.floor(Math.random()*100000000).toString()
- ;
- request(
- { method: 'PUT'
- , uri: 'http://mikeal.iriscouch.com/testjs/' + rand
- , multipart:
- [ { 'content-type': 'application/json'
- , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})
- }
- , { body: 'I am an attachment' }
- ]
- }
- , function (error, response, body) {
- if(response.statusCode == 201){
- console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)
- } else {
- console.log('error: '+ response.statusCode)
- console.log(body)
- }
- }
- )
-```
-
-For backwards-compatibility, response compression is not supported by default.
-To accept gzip-compressed responses, set the `gzip` option to `true`. Note
-that the body data passed through `request` is automatically decompressed
-while the response object is unmodified and will contain compressed data if
-the server sent a compressed response.
-
-```js
- var request = require('request')
- request(
- { method: 'GET'
- , uri: 'http://www.google.com'
- , gzip: true
- }
- , function (error, response, body) {
- // body is the decompressed response body
- console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity'))
- console.log('the decoded data is: ' + body)
- }
- ).on('data', function(data) {
- // decompressed data as it is received
- console.log('decoded chunk: ' + data)
- })
- .on('response', function(response) {
- // unmodified http.IncomingMessage object
- response.on('data', function(data) {
- // compressed data as it is received
- console.log('received ' + data.length + ' bytes of compressed data')
- })
- })
-```
-
-Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`).
-
-```js
-var request = request.defaults({jar: true})
-request('http://www.google.com', function () {
- request('http://images.google.com')
-})
-```
-
-To use a custom cookie jar (instead of `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`)
-
-```js
-var j = request.jar()
-var request = request.defaults({jar:j})
-request('http://www.google.com', function () {
- request('http://images.google.com')
-})
-```
-
-OR
-
-```js
-var j = request.jar();
-var cookie = request.cookie('key1=value1');
-var url = 'http://www.google.com';
-j.setCookie(cookie, url);
-request({url: url, jar: j}, function () {
- request('http://images.google.com')
-})
-```
-
-To use a custom cookie store (such as a
-[`FileCookieStore`](https://github.com/mitsuru/tough-cookie-filestore)
-which supports saving to and restoring from JSON files), pass it as a parameter
-to `request.jar()`:
-
-```js
-var FileCookieStore = require('tough-cookie-filestore');
-// NOTE - currently the 'cookies.json' file must already exist!
-var j = request.jar(new FileCookieStore('cookies.json'));
-request = request.defaults({ jar : j })
-request('http://www.google.com', function() {
- request('http://images.google.com')
-})
-```
-
-The cookie store must be a
-[`tough-cookie`](https://github.com/SalesforceEng/tough-cookie)
-store and it must support synchronous operations; see the
-[`CookieStore` API docs](https://github.com/SalesforceEng/tough-cookie#cookiestore-api)
-for details.
-
-To inspect your cookie jar after a request:
-
-```js
-var j = request.jar()
-request({url: 'http://www.google.com', jar: j}, function () {
- var cookie_string = j.getCookieString(url); // "key1=value1; key2=value2; ..."
- var cookies = j.getCookies(url);
- // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...]
-})
-```
-
-[back to top](#table-of-contents)
diff --git a/APIs/node_modules/request/index.js b/APIs/node_modules/request/index.js
deleted file mode 100755
index 911a90db..00000000
--- a/APIs/node_modules/request/index.js
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2010-2012 Mikeal Rogers
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-'use strict'
-
-var extend = require('extend')
- , cookies = require('./lib/cookies')
- , helpers = require('./lib/helpers')
-
-var isFunction = helpers.isFunction
- , paramsHaveRequestBody = helpers.paramsHaveRequestBody
-
-
-// organize params for patch, post, put, head, del
-function initParams(uri, options, callback) {
- if (typeof options === 'function') {
- callback = options
- }
-
- var params = {}
- if (typeof options === 'object') {
- extend(params, options, {uri: uri})
- } else if (typeof uri === 'string') {
- extend(params, {uri: uri})
- } else {
- extend(params, uri)
- }
-
- params.callback = callback || params.callback
- return params
-}
-
-function request (uri, options, callback) {
- if (typeof uri === 'undefined') {
- throw new Error('undefined is not a valid uri or options object.')
- }
-
- var params = initParams(uri, options, callback)
-
- if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {
- throw new Error('HTTP HEAD requests MUST NOT include a request body.')
- }
-
- return new request.Request(params)
-}
-
-function verbFunc (verb) {
- var method = verb.toUpperCase()
- return function (uri, options, callback) {
- var params = initParams(uri, options, callback)
- params.method = method
- return request(params, params.callback)
- }
-}
-
-// define like this to please codeintel/intellisense IDEs
-request.get = verbFunc('get')
-request.head = verbFunc('head')
-request.post = verbFunc('post')
-request.put = verbFunc('put')
-request.patch = verbFunc('patch')
-request.del = verbFunc('delete')
-request['delete'] = verbFunc('delete')
-
-request.jar = function (store) {
- return cookies.jar(store)
-}
-
-request.cookie = function (str) {
- return cookies.parse(str)
-}
-
-function wrapRequestMethod (method, options, requester, verb) {
-
- return function (uri, opts, callback) {
- var params = initParams(uri, opts, callback)
-
- var target = {}
- extend(true, target, options, params)
-
- target.pool = params.pool || options.pool
-
- if (verb) {
- target.method = verb.toUpperCase()
- }
-
- if (isFunction(requester)) {
- method = requester
- }
-
- return method(target, target.callback)
- }
-}
-
-request.defaults = function (options, requester) {
- var self = this
-
- options = options || {}
-
- if (typeof options === 'function') {
- requester = options
- options = {}
- }
-
- var defaults = wrapRequestMethod(self, options, requester)
-
- var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete']
- verbs.forEach(function(verb) {
- defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb)
- })
-
- defaults.cookie = wrapRequestMethod(self.cookie, options, requester)
- defaults.jar = self.jar
- defaults.defaults = self.defaults
- return defaults
-}
-
-request.forever = function (agentOptions, optionsArg) {
- var options = {}
- if (optionsArg) {
- extend(options, optionsArg)
- }
- if (agentOptions) {
- options.agentOptions = agentOptions
- }
-
- options.forever = true
- return request.defaults(options)
-}
-
-// Exports
-
-module.exports = request
-request.Request = require('./request')
-request.initParams = initParams
-
-// Backwards compatibility for request.debug
-Object.defineProperty(request, 'debug', {
- enumerable : true,
- get : function() {
- return request.Request.debug
- },
- set : function(debug) {
- request.Request.debug = debug
- }
-})
diff --git a/APIs/node_modules/request/lib/auth.js b/APIs/node_modules/request/lib/auth.js
deleted file mode 100644
index 1cb69521..00000000
--- a/APIs/node_modules/request/lib/auth.js
+++ /dev/null
@@ -1,168 +0,0 @@
-'use strict'
-
-var caseless = require('caseless')
- , uuid = require('node-uuid')
- , helpers = require('./helpers')
-
-var md5 = helpers.md5
- , toBase64 = helpers.toBase64
-
-
-function Auth (request) {
- // define all public properties here
- this.request = request
- this.hasAuth = false
- this.sentAuth = false
- this.bearerToken = null
- this.user = null
- this.pass = null
-}
-
-Auth.prototype.basic = function (user, pass, sendImmediately) {
- var self = this
- if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) {
- self.request.emit('error', new Error('auth() received invalid user or password'))
- }
- self.user = user
- self.pass = pass
- self.hasAuth = true
- var header = user + ':' + (pass || '')
- if (sendImmediately || typeof sendImmediately === 'undefined') {
- var authHeader = 'Basic ' + toBase64(header)
- self.sentAuth = true
- return authHeader
- }
-}
-
-Auth.prototype.bearer = function (bearer, sendImmediately) {
- var self = this
- self.bearerToken = bearer
- self.hasAuth = true
- if (sendImmediately || typeof sendImmediately === 'undefined') {
- if (typeof bearer === 'function') {
- bearer = bearer()
- }
- var authHeader = 'Bearer ' + (bearer || '')
- self.sentAuth = true
- return authHeader
- }
-}
-
-Auth.prototype.digest = function (method, path, authHeader) {
- // TODO: More complete implementation of RFC 2617.
- // - handle challenge.domain
- // - support qop="auth-int" only
- // - handle Authentication-Info (not necessarily?)
- // - check challenge.stale (not necessarily?)
- // - increase nc (not necessarily?)
- // For reference:
- // http://tools.ietf.org/html/rfc2617#section-3
- // https://github.com/bagder/curl/blob/master/lib/http_digest.c
-
- var self = this
-
- var challenge = {}
- var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi
- for (;;) {
- var match = re.exec(authHeader)
- if (!match) {
- break
- }
- challenge[match[1]] = match[2] || match[3]
- }
-
- /**
- * RFC 2617: handle both MD5 and MD5-sess algorithms.
- *
- * If the algorithm directive's value is "MD5" or unspecified, then HA1 is
- * HA1=MD5(username:realm:password)
- * If the algorithm directive's value is "MD5-sess", then HA1 is
- * HA1=MD5(MD5(username:realm:password):nonce:cnonce)
- */
- var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) {
- var ha1 = md5(user + ':' + realm + ':' + pass)
- if (algorithm && algorithm.toLowerCase() === 'md5-sess') {
- return md5(ha1 + ':' + nonce + ':' + cnonce)
- } else {
- return ha1
- }
- }
-
- var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth'
- var nc = qop && '00000001'
- var cnonce = qop && uuid().replace(/-/g, '')
- var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce)
- var ha2 = md5(method + ':' + path)
- var digestResponse = qop
- ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)
- : md5(ha1 + ':' + challenge.nonce + ':' + ha2)
- var authValues = {
- username: self.user,
- realm: challenge.realm,
- nonce: challenge.nonce,
- uri: path,
- qop: qop,
- response: digestResponse,
- nc: nc,
- cnonce: cnonce,
- algorithm: challenge.algorithm,
- opaque: challenge.opaque
- }
-
- authHeader = []
- for (var k in authValues) {
- if (authValues[k]) {
- if (k === 'qop' || k === 'nc' || k === 'algorithm') {
- authHeader.push(k + '=' + authValues[k])
- } else {
- authHeader.push(k + '="' + authValues[k] + '"')
- }
- }
- }
- authHeader = 'Digest ' + authHeader.join(', ')
- self.sentAuth = true
- return authHeader
-}
-
-Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) {
- var self = this
- , request = self.request
-
- var authHeader
- if (bearer === undefined && user === undefined) {
- self.request.emit('error', new Error('no auth mechanism defined'))
- } else if (bearer !== undefined) {
- authHeader = self.bearer(bearer, sendImmediately)
- } else {
- authHeader = self.basic(user, pass, sendImmediately)
- }
- if (authHeader) {
- request.setHeader('authorization', authHeader)
- }
-}
-
-Auth.prototype.onResponse = function (response) {
- var self = this
- , request = self.request
-
- if (!self.hasAuth || self.sentAuth) { return null }
-
- var c = caseless(response.headers)
-
- var authHeader = c.get('www-authenticate')
- var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase()
- request.debug('reauth', authVerb)
-
- switch (authVerb) {
- case 'basic':
- return self.basic(self.user, self.pass, true)
-
- case 'bearer':
- return self.bearer(self.bearerToken, true)
-
- case 'digest':
- return self.digest(request.method, request.path, authHeader)
- }
-}
-
-exports.Auth = Auth
diff --git a/APIs/node_modules/request/lib/cookies.js b/APIs/node_modules/request/lib/cookies.js
deleted file mode 100644
index 412c07d6..00000000
--- a/APIs/node_modules/request/lib/cookies.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict'
-
-var tough = require('tough-cookie')
-
-var Cookie = tough.Cookie
- , CookieJar = tough.CookieJar
-
-
-exports.parse = function(str) {
- if (str && str.uri) {
- str = str.uri
- }
- if (typeof str !== 'string') {
- throw new Error('The cookie function only accepts STRING as param')
- }
- return Cookie.parse(str, {loose: true})
-}
-
-// Adapt the sometimes-Async api of tough.CookieJar to our requirements
-function RequestJar(store) {
- var self = this
- self._jar = new CookieJar(store, {looseMode: true})
-}
-RequestJar.prototype.setCookie = function(cookieOrStr, uri, options) {
- var self = this
- return self._jar.setCookieSync(cookieOrStr, uri, options || {})
-}
-RequestJar.prototype.getCookieString = function(uri) {
- var self = this
- return self._jar.getCookieStringSync(uri)
-}
-RequestJar.prototype.getCookies = function(uri) {
- var self = this
- return self._jar.getCookiesSync(uri)
-}
-
-exports.jar = function(store) {
- return new RequestJar(store)
-}
diff --git a/APIs/node_modules/request/lib/getProxyFromURI.js b/APIs/node_modules/request/lib/getProxyFromURI.js
deleted file mode 100644
index c2013a6e..00000000
--- a/APIs/node_modules/request/lib/getProxyFromURI.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict'
-
-function formatHostname(hostname) {
- // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'
- return hostname.replace(/^\.*/, '.').toLowerCase()
-}
-
-function parseNoProxyZone(zone) {
- zone = zone.trim().toLowerCase()
-
- var zoneParts = zone.split(':', 2)
- , zoneHost = formatHostname(zoneParts[0])
- , zonePort = zoneParts[1]
- , hasPort = zone.indexOf(':') > -1
-
- return {hostname: zoneHost, port: zonePort, hasPort: hasPort}
-}
-
-function uriInNoProxy(uri, noProxy) {
- var port = uri.port || (uri.protocol === 'https:' ? '443' : '80')
- , hostname = formatHostname(uri.hostname)
- , noProxyList = noProxy.split(',')
-
- // iterate through the noProxyList until it finds a match.
- return noProxyList.map(parseNoProxyZone).some(function(noProxyZone) {
- var isMatchedAt = hostname.indexOf(noProxyZone.hostname)
- , hostnameMatched = (
- isMatchedAt > -1 &&
- (isMatchedAt === hostname.length - noProxyZone.hostname.length)
- )
-
- if (noProxyZone.hasPort) {
- return (port === noProxyZone.port) && hostnameMatched
- }
-
- return hostnameMatched
- })
-}
-
-function getProxyFromURI(uri) {
- // Decide the proper request proxy to use based on the request URI object and the
- // environmental variables (NO_PROXY, HTTP_PROXY, etc.)
- // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html)
-
- var noProxy = process.env.NO_PROXY || process.env.no_proxy || ''
-
- // if the noProxy is a wildcard then return null
-
- if (noProxy === '*') {
- return null
- }
-
- // if the noProxy is not empty and the uri is found return null
-
- if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {
- return null
- }
-
- // Check for HTTP or HTTPS Proxy in environment Else default to null
-
- if (uri.protocol === 'http:') {
- return process.env.HTTP_PROXY ||
- process.env.http_proxy || null
- }
-
- if (uri.protocol === 'https:') {
- return process.env.HTTPS_PROXY ||
- process.env.https_proxy ||
- process.env.HTTP_PROXY ||
- process.env.http_proxy || null
- }
-
- // if none of that works, return null
- // (What uri protocol are you using then?)
-
- return null
-}
-
-module.exports = getProxyFromURI
diff --git a/APIs/node_modules/request/lib/har.js b/APIs/node_modules/request/lib/har.js
deleted file mode 100644
index 30595748..00000000
--- a/APIs/node_modules/request/lib/har.js
+++ /dev/null
@@ -1,215 +0,0 @@
-'use strict'
-
-var fs = require('fs')
-var qs = require('querystring')
-var validate = require('har-validator')
-var extend = require('extend')
-
-function Har (request) {
- this.request = request
-}
-
-Har.prototype.reducer = function (obj, pair) {
- // new property ?
- if (obj[pair.name] === undefined) {
- obj[pair.name] = pair.value
- return obj
- }
-
- // existing? convert to array
- var arr = [
- obj[pair.name],
- pair.value
- ]
-
- obj[pair.name] = arr
-
- return obj
-}
-
-Har.prototype.prep = function (data) {
- // construct utility properties
- data.queryObj = {}
- data.headersObj = {}
- data.postData.jsonObj = false
- data.postData.paramsObj = false
-
- // construct query objects
- if (data.queryString && data.queryString.length) {
- data.queryObj = data.queryString.reduce(this.reducer, {})
- }
-
- // construct headers objects
- if (data.headers && data.headers.length) {
- // loweCase header keys
- data.headersObj = data.headers.reduceRight(function (headers, header) {
- headers[header.name] = header.value
- return headers
- }, {})
- }
-
- // construct Cookie header
- if (data.cookies && data.cookies.length) {
- var cookies = data.cookies.map(function (cookie) {
- return cookie.name + '=' + cookie.value
- })
-
- if (cookies.length) {
- data.headersObj.cookie = cookies.join('; ')
- }
- }
-
- // prep body
- function some (arr) {
- return arr.some(function (type) {
- return data.postData.mimeType.indexOf(type) === 0
- })
- }
-
- if (some([
- 'multipart/mixed',
- 'multipart/related',
- 'multipart/form-data',
- 'multipart/alternative'])) {
-
- // reset values
- data.postData.mimeType = 'multipart/form-data'
- }
-
- else if (some([
- 'application/x-www-form-urlencoded'])) {
-
- if (!data.postData.params) {
- data.postData.text = ''
- } else {
- data.postData.paramsObj = data.postData.params.reduce(this.reducer, {})
-
- // always overwrite
- data.postData.text = qs.stringify(data.postData.paramsObj)
- }
- }
-
- else if (some([
- 'text/json',
- 'text/x-json',
- 'application/json',
- 'application/x-json'])) {
-
- data.postData.mimeType = 'application/json'
-
- if (data.postData.text) {
- try {
- data.postData.jsonObj = JSON.parse(data.postData.text)
- } catch (e) {
- this.request.debug(e)
-
- // force back to text/plain
- data.postData.mimeType = 'text/plain'
- }
- }
- }
-
- return data
-}
-
-Har.prototype.options = function (options) {
- // skip if no har property defined
- if (!options.har) {
- return options
- }
-
- var har = {}
- extend(har, options.har)
-
- // only process the first entry
- if (har.log && har.log.entries) {
- har = har.log.entries[0]
- }
-
- // add optional properties to make validation successful
- har.url = har.url || options.url || options.uri || options.baseUrl || '/'
- har.httpVersion = har.httpVersion || 'HTTP/1.1'
- har.queryString = har.queryString || []
- har.headers = har.headers || []
- har.cookies = har.cookies || []
- har.postData = har.postData || {}
- har.postData.mimeType = har.postData.mimeType || 'application/octet-stream'
-
- har.bodySize = 0
- har.headersSize = 0
- har.postData.size = 0
-
- if (!validate.request(har)) {
- return options
- }
-
- // clean up and get some utility properties
- var req = this.prep(har)
-
- // construct new options
- if (req.url) {
- options.url = req.url
- }
-
- if (req.method) {
- options.method = req.method
- }
-
- if (Object.keys(req.queryObj).length) {
- options.qs = req.queryObj
- }
-
- if (Object.keys(req.headersObj).length) {
- options.headers = req.headersObj
- }
-
- function test (type) {
- return req.postData.mimeType.indexOf(type) === 0
- }
- if (test('application/x-www-form-urlencoded')) {
- options.form = req.postData.paramsObj
- }
- else if (test('application/json')) {
- if (req.postData.jsonObj) {
- options.body = req.postData.jsonObj
- options.json = true
- }
- }
- else if (test('multipart/form-data')) {
- options.formData = {}
-
- req.postData.params.forEach(function (param) {
- var attachment = {}
-
- if (!param.fileName && !param.fileName && !param.contentType) {
- options.formData[param.name] = param.value
- return
- }
-
- // attempt to read from disk!
- if (param.fileName && !param.value) {
- attachment.value = fs.createReadStream(param.fileName)
- } else if (param.value) {
- attachment.value = param.value
- }
-
- if (param.fileName) {
- attachment.options = {
- filename: param.fileName,
- contentType: param.contentType ? param.contentType : null
- }
- }
-
- options.formData[param.name] = attachment
- })
- }
- else {
- if (req.postData.text) {
- options.body = req.postData.text
- }
- }
-
- return options
-}
-
-exports.Har = Har
diff --git a/APIs/node_modules/request/lib/helpers.js b/APIs/node_modules/request/lib/helpers.js
deleted file mode 100644
index 356ff748..00000000
--- a/APIs/node_modules/request/lib/helpers.js
+++ /dev/null
@@ -1,74 +0,0 @@
-'use strict'
-
-var jsonSafeStringify = require('json-stringify-safe')
- , crypto = require('crypto')
-
-function deferMethod() {
- if (typeof setImmediate === 'undefined') {
- return process.nextTick
- }
-
- return setImmediate
-}
-
-function isFunction(value) {
- return typeof value === 'function'
-}
-
-function paramsHaveRequestBody(params) {
- return (
- params.body ||
- params.requestBodyStream ||
- (params.json && typeof params.json !== 'boolean') ||
- params.multipart
- )
-}
-
-function safeStringify (obj, replacer) {
- var ret
- try {
- ret = JSON.stringify(obj, replacer)
- } catch (e) {
- ret = jsonSafeStringify(obj, replacer)
- }
- return ret
-}
-
-function md5 (str) {
- return crypto.createHash('md5').update(str).digest('hex')
-}
-
-function isReadStream (rs) {
- return rs.readable && rs.path && rs.mode
-}
-
-function toBase64 (str) {
- return (new Buffer(str || '', 'utf8')).toString('base64')
-}
-
-function copy (obj) {
- var o = {}
- Object.keys(obj).forEach(function (i) {
- o[i] = obj[i]
- })
- return o
-}
-
-function version () {
- var numbers = process.version.replace('v', '').split('.')
- return {
- major: parseInt(numbers[0], 10),
- minor: parseInt(numbers[1], 10),
- patch: parseInt(numbers[2], 10)
- }
-}
-
-exports.isFunction = isFunction
-exports.paramsHaveRequestBody = paramsHaveRequestBody
-exports.safeStringify = safeStringify
-exports.md5 = md5
-exports.isReadStream = isReadStream
-exports.toBase64 = toBase64
-exports.copy = copy
-exports.version = version
-exports.defer = deferMethod()
diff --git a/APIs/node_modules/request/lib/multipart.js b/APIs/node_modules/request/lib/multipart.js
deleted file mode 100644
index c1281726..00000000
--- a/APIs/node_modules/request/lib/multipart.js
+++ /dev/null
@@ -1,112 +0,0 @@
-'use strict'
-
-var uuid = require('node-uuid')
- , CombinedStream = require('combined-stream')
- , isstream = require('isstream')
-
-
-function Multipart (request) {
- this.request = request
- this.boundary = uuid()
- this.chunked = false
- this.body = null
-}
-
-Multipart.prototype.isChunked = function (options) {
- var self = this
- , chunked = false
- , parts = options.data || options
-
- if (!parts.forEach) {
- self.request.emit('error', new Error('Argument error, options.multipart.'))
- }
-
- if (options.chunked !== undefined) {
- chunked = options.chunked
- }
-
- if (self.request.getHeader('transfer-encoding') === 'chunked') {
- chunked = true
- }
-
- if (!chunked) {
- parts.forEach(function (part) {
- if (typeof part.body === 'undefined') {
- self.request.emit('error', new Error('Body attribute missing in multipart.'))
- }
- if (isstream(part.body)) {
- chunked = true
- }
- })
- }
-
- return chunked
-}
-
-Multipart.prototype.setHeaders = function (chunked) {
- var self = this
-
- if (chunked && !self.request.hasHeader('transfer-encoding')) {
- self.request.setHeader('transfer-encoding', 'chunked')
- }
-
- var header = self.request.getHeader('content-type')
-
- if (!header || header.indexOf('multipart') === -1) {
- self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary)
- } else {
- if (header.indexOf('boundary') !== -1) {
- self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1')
- } else {
- self.request.setHeader('content-type', header + '; boundary=' + self.boundary)
- }
- }
-}
-
-Multipart.prototype.build = function (parts, chunked) {
- var self = this
- var body = chunked ? new CombinedStream() : []
-
- function add (part) {
- if (typeof part === 'number') {
- part = part.toString()
- }
- return chunked ? body.append(part) : body.push(new Buffer(part))
- }
-
- if (self.request.preambleCRLF) {
- add('\r\n')
- }
-
- parts.forEach(function (part) {
- var preamble = '--' + self.boundary + '\r\n'
- Object.keys(part).forEach(function (key) {
- if (key === 'body') { return }
- preamble += key + ': ' + part[key] + '\r\n'
- })
- preamble += '\r\n'
- add(preamble)
- add(part.body)
- add('\r\n')
- })
- add('--' + self.boundary + '--')
-
- if (self.request.postambleCRLF) {
- add('\r\n')
- }
-
- return body
-}
-
-Multipart.prototype.onRequest = function (options) {
- var self = this
-
- var chunked = self.isChunked(options)
- , parts = options.data || options
-
- self.setHeaders(chunked)
- self.chunked = chunked
- self.body = self.build(parts, chunked)
-}
-
-exports.Multipart = Multipart
diff --git a/APIs/node_modules/request/lib/oauth.js b/APIs/node_modules/request/lib/oauth.js
deleted file mode 100644
index c24209b8..00000000
--- a/APIs/node_modules/request/lib/oauth.js
+++ /dev/null
@@ -1,147 +0,0 @@
-'use strict'
-
-var url = require('url')
- , qs = require('qs')
- , caseless = require('caseless')
- , uuid = require('node-uuid')
- , oauth = require('oauth-sign')
- , crypto = require('crypto')
-
-
-function OAuth (request) {
- this.request = request
- this.params = null
-}
-
-OAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) {
- var oa = {}
- for (var i in _oauth) {
- oa['oauth_' + i] = _oauth[i]
- }
- if (!oa.oauth_version) {
- oa.oauth_version = '1.0'
- }
- if (!oa.oauth_timestamp) {
- oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString()
- }
- if (!oa.oauth_nonce) {
- oa.oauth_nonce = uuid().replace(/-/g, '')
- }
- if (!oa.oauth_signature_method) {
- oa.oauth_signature_method = 'HMAC-SHA1'
- }
-
- var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key
- delete oa.oauth_consumer_secret
- delete oa.oauth_private_key
-
- var token_secret = oa.oauth_token_secret
- delete oa.oauth_token_secret
-
- var realm = oa.oauth_realm
- delete oa.oauth_realm
- delete oa.oauth_transport_method
-
- var baseurl = uri.protocol + '//' + uri.host + uri.pathname
- var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&'))
-
- oa.oauth_signature = oauth.sign(
- oa.oauth_signature_method,
- method,
- baseurl,
- params,
- consumer_secret_or_private_key,
- token_secret)
-
- if (realm) {
- oa.realm = realm
- }
-
- return oa
-}
-
-OAuth.prototype.buildBodyHash = function(_oauth, body) {
- if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) {
- this.request.emit('error', new Error('oauth: ' + _oauth.signature_method +
- ' signature_method not supported with body_hash signing.'))
- }
-
- var shasum = crypto.createHash('sha1')
- shasum.update(body || '')
- var sha1 = shasum.digest('hex')
-
- return new Buffer(sha1).toString('base64')
-}
-
-OAuth.prototype.concatParams = function (oa, sep, wrap) {
- wrap = wrap || ''
-
- var params = Object.keys(oa).filter(function (i) {
- return i !== 'realm' && i !== 'oauth_signature'
- }).sort()
-
- if (oa.realm) {
- params.splice(0, 0, 'realm')
- }
- params.push('oauth_signature')
-
- return params.map(function (i) {
- return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap
- }).join(sep)
-}
-
-OAuth.prototype.onRequest = function (_oauth) {
- var self = this
- self.params = _oauth
-
- var uri = self.request.uri || {}
- , method = self.request.method || ''
- , headers = caseless(self.request.headers)
- , body = self.request.body || ''
- , qsLib = self.request.qsLib || qs
-
- var form
- , query
- , contentType = headers.get('content-type') || ''
- , formContentType = 'application/x-www-form-urlencoded'
- , transport = _oauth.transport_method || 'header'
-
- if (contentType.slice(0, formContentType.length) === formContentType) {
- contentType = formContentType
- form = body
- }
- if (uri.query) {
- query = uri.query
- }
- if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) {
- self.request.emit('error', new Error('oauth: transport_method of body requires POST ' +
- 'and content-type ' + formContentType))
- }
-
- if (!form && typeof _oauth.body_hash === 'boolean') {
- _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString())
- }
-
- var oa = self.buildParams(_oauth, uri, method, query, form, qsLib)
-
- switch (transport) {
- case 'header':
- self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '"'))
- break
-
- case 'query':
- var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&')
- self.request.uri = url.parse(href)
- self.request.path = self.request.uri.path
- break
-
- case 'body':
- self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&')
- break
-
- default:
- self.request.emit('error', new Error('oauth: transport_method invalid'))
- }
-}
-
-exports.OAuth = OAuth
diff --git a/APIs/node_modules/request/lib/querystring.js b/APIs/node_modules/request/lib/querystring.js
deleted file mode 100644
index baf5e802..00000000
--- a/APIs/node_modules/request/lib/querystring.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict'
-
-var qs = require('qs')
- , querystring = require('querystring')
-
-
-function Querystring (request) {
- this.request = request
- this.lib = null
- this.useQuerystring = null
- this.parseOptions = null
- this.stringifyOptions = null
-}
-
-Querystring.prototype.init = function (options) {
- if (this.lib) {return}
-
- this.useQuerystring = options.useQuerystring
- this.lib = (this.useQuerystring ? querystring : qs)
-
- this.parseOptions = options.qsParseOptions || {}
- this.stringifyOptions = options.qsStringifyOptions || {}
-}
-
-Querystring.prototype.stringify = function (obj) {
- return (this.useQuerystring)
- ? this.rfc3986(this.lib.stringify(obj,
- this.stringifyOptions.sep || null,
- this.stringifyOptions.eq || null,
- this.stringifyOptions))
- : this.lib.stringify(obj, this.stringifyOptions)
-}
-
-Querystring.prototype.parse = function (str) {
- return (this.useQuerystring)
- ? this.lib.parse(str,
- this.parseOptions.sep || null,
- this.parseOptions.eq || null,
- this.parseOptions)
- : this.lib.parse(str, this.parseOptions)
-}
-
-Querystring.prototype.rfc3986 = function (str) {
- return str.replace(/[!'()*]/g, function (c) {
- return '%' + c.charCodeAt(0).toString(16).toUpperCase()
- })
-}
-
-Querystring.prototype.unescape = querystring.unescape
-
-exports.Querystring = Querystring
diff --git a/APIs/node_modules/request/lib/redirect.js b/APIs/node_modules/request/lib/redirect.js
deleted file mode 100644
index 040dfe0e..00000000
--- a/APIs/node_modules/request/lib/redirect.js
+++ /dev/null
@@ -1,153 +0,0 @@
-'use strict'
-
-var url = require('url')
-var isUrl = /^https?:/
-
-function Redirect (request) {
- this.request = request
- this.followRedirect = true
- this.followRedirects = true
- this.followAllRedirects = false
- this.allowRedirect = function () {return true}
- this.maxRedirects = 10
- this.redirects = []
- this.redirectsFollowed = 0
- this.removeRefererHeader = false
-}
-
-Redirect.prototype.onRequest = function (options) {
- var self = this
-
- if (options.maxRedirects !== undefined) {
- self.maxRedirects = options.maxRedirects
- }
- if (typeof options.followRedirect === 'function') {
- self.allowRedirect = options.followRedirect
- }
- if (options.followRedirect !== undefined) {
- self.followRedirects = !!options.followRedirect
- }
- if (options.followAllRedirects !== undefined) {
- self.followAllRedirects = options.followAllRedirects
- }
- if (self.followRedirects || self.followAllRedirects) {
- self.redirects = self.redirects || []
- }
- if (options.removeRefererHeader !== undefined) {
- self.removeRefererHeader = options.removeRefererHeader
- }
-}
-
-Redirect.prototype.redirectTo = function (response) {
- var self = this
- , request = self.request
-
- var redirectTo = null
- if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {
- var location = response.caseless.get('location')
- request.debug('redirect', location)
-
- if (self.followAllRedirects) {
- redirectTo = location
- } else if (self.followRedirects) {
- switch (request.method) {
- case 'PATCH':
- case 'PUT':
- case 'POST':
- case 'DELETE':
- // Do not follow redirects
- break
- default:
- redirectTo = location
- break
- }
- }
- } else if (response.statusCode === 401) {
- var authHeader = request._auth.onResponse(response)
- if (authHeader) {
- request.setHeader('authorization', authHeader)
- redirectTo = request.uri
- }
- }
- return redirectTo
-}
-
-Redirect.prototype.onResponse = function (response) {
- var self = this
- , request = self.request
-
- var redirectTo = self.redirectTo(response)
- if (!redirectTo || !self.allowRedirect.call(request, response)) {
- return false
- }
-
- request.debug('redirect to', redirectTo)
-
- // ignore any potential response body. it cannot possibly be useful
- // to us at this point.
- // response.resume should be defined, but check anyway before calling. Workaround for browserify.
- if (response.resume) {
- response.resume()
- }
-
- if (self.redirectsFollowed >= self.maxRedirects) {
- request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))
- return false
- }
- self.redirectsFollowed += 1
-
- if (!isUrl.test(redirectTo)) {
- redirectTo = url.resolve(request.uri.href, redirectTo)
- }
-
- var uriPrev = request.uri
- request.uri = url.parse(redirectTo)
-
- // handle the case where we change protocol from https to http or vice versa
- if (request.uri.protocol !== uriPrev.protocol) {
- delete request.agent
- }
-
- self.redirects.push(
- { statusCode : response.statusCode
- , redirectUri: redirectTo
- }
- )
- if (self.followAllRedirects && request.method !== 'HEAD'
- && response.statusCode !== 401 && response.statusCode !== 307) {
- request.method = 'GET'
- }
- // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215
- delete request.src
- delete request.req
- delete request._started
- if (response.statusCode !== 401 && response.statusCode !== 307) {
- // Remove parameters from the previous response, unless this is the second request
- // for a server that requires digest authentication.
- delete request.body
- delete request._form
- if (request.headers) {
- request.removeHeader('host')
- request.removeHeader('content-type')
- request.removeHeader('content-length')
- if (request.uri.hostname !== request.originalHost.split(':')[0]) {
- // Remove authorization if changing hostnames (but not if just
- // changing ports or protocols). This matches the behavior of curl:
- // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710
- request.removeHeader('authorization')
- }
- }
- }
-
- if (!self.removeRefererHeader) {
- request.setHeader('referer', uriPrev.href)
- }
-
- request.emit('redirect')
-
- request.init()
-
- return true
-}
-
-exports.Redirect = Redirect
diff --git a/APIs/node_modules/request/lib/tunnel.js b/APIs/node_modules/request/lib/tunnel.js
deleted file mode 100644
index bf96a8fe..00000000
--- a/APIs/node_modules/request/lib/tunnel.js
+++ /dev/null
@@ -1,176 +0,0 @@
-'use strict'
-
-var url = require('url')
- , tunnel = require('tunnel-agent')
-
-var defaultProxyHeaderWhiteList = [
- 'accept',
- 'accept-charset',
- 'accept-encoding',
- 'accept-language',
- 'accept-ranges',
- 'cache-control',
- 'content-encoding',
- 'content-language',
- 'content-location',
- 'content-md5',
- 'content-range',
- 'content-type',
- 'connection',
- 'date',
- 'expect',
- 'max-forwards',
- 'pragma',
- 'referer',
- 'te',
- 'user-agent',
- 'via'
-]
-
-var defaultProxyHeaderExclusiveList = [
- 'proxy-authorization'
-]
-
-function constructProxyHost(uriObject) {
- var port = uriObject.port
- , protocol = uriObject.protocol
- , proxyHost = uriObject.hostname + ':'
-
- if (port) {
- proxyHost += port
- } else if (protocol === 'https:') {
- proxyHost += '443'
- } else {
- proxyHost += '80'
- }
-
- return proxyHost
-}
-
-function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) {
- var whiteList = proxyHeaderWhiteList
- .reduce(function (set, header) {
- set[header.toLowerCase()] = true
- return set
- }, {})
-
- return Object.keys(headers)
- .filter(function (header) {
- return whiteList[header.toLowerCase()]
- })
- .reduce(function (set, header) {
- set[header] = headers[header]
- return set
- }, {})
-}
-
-function constructTunnelOptions (request, proxyHeaders) {
- var proxy = request.proxy
-
- var tunnelOptions = {
- proxy : {
- host : proxy.hostname,
- port : +proxy.port,
- proxyAuth : proxy.auth,
- headers : proxyHeaders
- },
- headers : request.headers,
- ca : request.ca,
- cert : request.cert,
- key : request.key,
- passphrase : request.passphrase,
- pfx : request.pfx,
- ciphers : request.ciphers,
- rejectUnauthorized : request.rejectUnauthorized,
- secureOptions : request.secureOptions,
- secureProtocol : request.secureProtocol
- }
-
- return tunnelOptions
-}
-
-function constructTunnelFnName(uri, proxy) {
- var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http')
- var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http')
- return [uriProtocol, proxyProtocol].join('Over')
-}
-
-function getTunnelFn(request) {
- var uri = request.uri
- var proxy = request.proxy
- var tunnelFnName = constructTunnelFnName(uri, proxy)
- return tunnel[tunnelFnName]
-}
-
-
-function Tunnel (request) {
- this.request = request
- this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList
- this.proxyHeaderExclusiveList = []
- if (typeof request.tunnel !== 'undefined') {
- this.tunnelOverride = request.tunnel
- }
-}
-
-Tunnel.prototype.isEnabled = function () {
- var self = this
- , request = self.request
- // Tunnel HTTPS by default. Allow the user to override this setting.
-
- // If self.tunnelOverride is set (the user specified a value), use it.
- if (typeof self.tunnelOverride !== 'undefined') {
- return self.tunnelOverride
- }
-
- // If the destination is HTTPS, tunnel.
- if (request.uri.protocol === 'https:') {
- return true
- }
-
- // Otherwise, do not use tunnel.
- return false
-}
-
-Tunnel.prototype.setup = function (options) {
- var self = this
- , request = self.request
-
- options = options || {}
-
- if (typeof request.proxy === 'string') {
- request.proxy = url.parse(request.proxy)
- }
-
- if (!request.proxy || !request.tunnel) {
- return false
- }
-
- // Setup Proxy Header Exclusive List and White List
- if (options.proxyHeaderWhiteList) {
- self.proxyHeaderWhiteList = options.proxyHeaderWhiteList
- }
- if (options.proxyHeaderExclusiveList) {
- self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList
- }
-
- var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)
- var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)
-
- // Setup Proxy Headers and Proxy Headers Host
- // Only send the Proxy White Listed Header names
- var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)
- proxyHeaders.host = constructProxyHost(request.uri)
-
- proxyHeaderExclusiveList.forEach(request.removeHeader, request)
-
- // Set Agent from Tunnel Data
- var tunnelFn = getTunnelFn(request)
- var tunnelOptions = constructTunnelOptions(request, proxyHeaders)
- request.agent = tunnelFn(tunnelOptions)
-
- return true
-}
-
-Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList
-Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList
-exports.Tunnel = Tunnel
diff --git a/APIs/node_modules/request/node_modules/.bin/har-validator b/APIs/node_modules/request/node_modules/.bin/har-validator
deleted file mode 120000
index c6ec1634..00000000
--- a/APIs/node_modules/request/node_modules/.bin/har-validator
+++ /dev/null
@@ -1 +0,0 @@
-../har-validator/bin/har-validator
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/.bin/uuid b/APIs/node_modules/request/node_modules/.bin/uuid
deleted file mode 120000
index 80eb14aa..00000000
--- a/APIs/node_modules/request/node_modules/.bin/uuid
+++ /dev/null
@@ -1 +0,0 @@
-../node-uuid/bin/uuid
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/aws-sign2/LICENSE b/APIs/node_modules/request/node_modules/aws-sign2/LICENSE
deleted file mode 100644
index a4a9aee0..00000000
--- a/APIs/node_modules/request/node_modules/aws-sign2/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/aws-sign2/README.md b/APIs/node_modules/request/node_modules/aws-sign2/README.md
deleted file mode 100644
index 763564e0..00000000
--- a/APIs/node_modules/request/node_modules/aws-sign2/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-aws-sign
-========
-
-AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.
diff --git a/APIs/node_modules/request/node_modules/aws-sign2/index.js b/APIs/node_modules/request/node_modules/aws-sign2/index.js
deleted file mode 100644
index ac720930..00000000
--- a/APIs/node_modules/request/node_modules/aws-sign2/index.js
+++ /dev/null
@@ -1,212 +0,0 @@
-
-/*!
- * Copyright 2010 LearnBoost
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Module dependencies.
- */
-
-var crypto = require('crypto')
- , parse = require('url').parse
- ;
-
-/**
- * Valid keys.
- */
-
-var keys =
- [ 'acl'
- , 'location'
- , 'logging'
- , 'notification'
- , 'partNumber'
- , 'policy'
- , 'requestPayment'
- , 'torrent'
- , 'uploadId'
- , 'uploads'
- , 'versionId'
- , 'versioning'
- , 'versions'
- , 'website'
- ]
-
-/**
- * Return an "Authorization" header value with the given `options`
- * in the form of "AWS :"
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function authorization (options) {
- return 'AWS ' + options.key + ':' + sign(options)
-}
-
-module.exports = authorization
-module.exports.authorization = authorization
-
-/**
- * Simple HMAC-SHA1 Wrapper
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function hmacSha1 (options) {
- return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')
-}
-
-module.exports.hmacSha1 = hmacSha1
-
-/**
- * Create a base64 sha1 HMAC for `options`.
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function sign (options) {
- options.message = stringToSign(options)
- return hmacSha1(options)
-}
-module.exports.sign = sign
-
-/**
- * Create a base64 sha1 HMAC for `options`.
- *
- * Specifically to be used with S3 presigned URLs
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function signQuery (options) {
- options.message = queryStringToSign(options)
- return hmacSha1(options)
-}
-module.exports.signQuery= signQuery
-
-/**
- * Return a string for sign() with the given `options`.
- *
- * Spec:
- *
- * \n
- * \n
- * \n
- * \n
- * [headers\n]
- *
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function stringToSign (options) {
- var headers = options.amazonHeaders || ''
- if (headers) headers += '\n'
- var r =
- [ options.verb
- , options.md5
- , options.contentType
- , options.date ? options.date.toUTCString() : ''
- , headers + options.resource
- ]
- return r.join('\n')
-}
-module.exports.queryStringToSign = stringToSign
-
-/**
- * Return a string for sign() with the given `options`, but is meant exclusively
- * for S3 presigned URLs
- *
- * Spec:
- *
- * \n
- *
- *
- * @param {Object} options
- * @return {String}
- * @api private
- */
-
-function queryStringToSign (options){
- return 'GET\n\n\n' + options.date + '\n' + options.resource
-}
-module.exports.queryStringToSign = queryStringToSign
-
-/**
- * Perform the following:
- *
- * - ignore non-amazon headers
- * - lowercase fields
- * - sort lexicographically
- * - trim whitespace between ":"
- * - join with newline
- *
- * @param {Object} headers
- * @return {String}
- * @api private
- */
-
-function canonicalizeHeaders (headers) {
- var buf = []
- , fields = Object.keys(headers)
- ;
- for (var i = 0, len = fields.length; i < len; ++i) {
- var field = fields[i]
- , val = headers[field]
- , field = field.toLowerCase()
- ;
- if (0 !== field.indexOf('x-amz')) continue
- buf.push(field + ':' + val)
- }
- return buf.sort().join('\n')
-}
-module.exports.canonicalizeHeaders = canonicalizeHeaders
-
-/**
- * Perform the following:
- *
- * - ignore non sub-resources
- * - sort lexicographically
- *
- * @param {String} resource
- * @return {String}
- * @api private
- */
-
-function canonicalizeResource (resource) {
- var url = parse(resource, true)
- , path = url.pathname
- , buf = []
- ;
-
- Object.keys(url.query).forEach(function(key){
- if (!~keys.indexOf(key)) return
- var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])
- buf.push(key + val)
- })
-
- return path + (buf.length ? '?' + buf.sort().join('&') : '')
-}
-module.exports.canonicalizeResource = canonicalizeResource
diff --git a/APIs/node_modules/request/node_modules/aws-sign2/package.json b/APIs/node_modules/request/node_modules/aws-sign2/package.json
deleted file mode 100644
index a743b855..00000000
--- a/APIs/node_modules/request/node_modules/aws-sign2/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "aws-sign2",
- "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.",
- "version": "0.6.0",
- "repository": {
- "url": "git+https://github.com/mikeal/aws-sign.git"
- },
- "license": "Apache-2.0",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "gitHead": "8554bdb41268fa295eb1ee300f4adaa9f7f07fec",
- "bugs": {
- "url": "https://github.com/mikeal/aws-sign/issues"
- },
- "homepage": "https://github.com/mikeal/aws-sign#readme",
- "_id": "aws-sign2@0.6.0",
- "scripts": {},
- "_shasum": "14342dd38dbcc94d0e5b87d763cd63612c0e794f",
- "_from": "aws-sign2@~0.6.0",
- "_npmVersion": "2.14.4",
- "_nodeVersion": "4.1.2",
- "_npmUser": {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- }
- ],
- "dist": {
- "shasum": "14342dd38dbcc94d0e5b87d763cd63612c0e794f",
- "tarball": "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/aws4/.npmignore b/APIs/node_modules/request/node_modules/aws4/.npmignore
deleted file mode 100644
index 6c6ade6f..00000000
--- a/APIs/node_modules/request/node_modules/aws4/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-test
-examples
-example.js
-browser
diff --git a/APIs/node_modules/request/node_modules/aws4/.tern-port b/APIs/node_modules/request/node_modules/aws4/.tern-port
deleted file mode 100644
index 7fd1b522..00000000
--- a/APIs/node_modules/request/node_modules/aws4/.tern-port
+++ /dev/null
@@ -1 +0,0 @@
-62638
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/aws4/.travis.yml b/APIs/node_modules/request/node_modules/aws4/.travis.yml
deleted file mode 100644
index 61d06340..00000000
--- a/APIs/node_modules/request/node_modules/aws4/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
- - "0.12"
- - "4.2"
diff --git a/APIs/node_modules/request/node_modules/aws4/LICENSE b/APIs/node_modules/request/node_modules/aws4/LICENSE
deleted file mode 100644
index 4f321e59..00000000
--- a/APIs/node_modules/request/node_modules/aws4/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright 2013 Michael Hart (michael.hart.au@gmail.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/aws4/README.md b/APIs/node_modules/request/node_modules/aws4/README.md
deleted file mode 100644
index 6c55da80..00000000
--- a/APIs/node_modules/request/node_modules/aws4/README.md
+++ /dev/null
@@ -1,514 +0,0 @@
-aws4
-----
-
-[](http://travis-ci.org/mhart/aws4)
-
-A small utility to sign vanilla node.js http(s) request options using Amazon's
-[AWS Signature Version 4](http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html).
-
-Can also be used [in the browser](./browser).
-
-This signature is supported by nearly all Amazon services, including
-[S3](http://docs.aws.amazon.com/AmazonS3/latest/API/),
-[EC2](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/),
-[DynamoDB](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html),
-[Kinesis](http://docs.aws.amazon.com/kinesis/latest/APIReference/),
-[Lambda](http://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html),
-[SQS](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/),
-[SNS](http://docs.aws.amazon.com/sns/latest/api/),
-[IAM](http://docs.aws.amazon.com/IAM/latest/APIReference/),
-[STS](http://docs.aws.amazon.com/STS/latest/APIReference/),
-[RDS](http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/),
-[CloudWatch](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/),
-[CloudWatch Logs](http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/),
-[CodeDeploy](http://docs.aws.amazon.com/codedeploy/latest/APIReference/),
-[CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/),
-[CloudTrail](http://docs.aws.amazon.com/awscloudtrail/latest/APIReference/),
-[ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/),
-[EMR](http://docs.aws.amazon.com/ElasticMapReduce/latest/API/),
-[Glacier](http://docs.aws.amazon.com/amazonglacier/latest/dev/amazon-glacier-api.html),
-[CloudSearch](http://docs.aws.amazon.com/cloudsearch/latest/developerguide/APIReq.html),
-[Elastic Load Balancing](http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/),
-[Elastic Transcoder](http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/api-reference.html),
-[CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/),
-[Elastic Beanstalk](http://docs.aws.amazon.com/elasticbeanstalk/latest/api/),
-[Storage Gateway](http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPI.html),
-[Data Pipeline](http://docs.aws.amazon.com/datapipeline/latest/APIReference/),
-[Direct Connect](http://docs.aws.amazon.com/directconnect/latest/APIReference/),
-[Redshift](http://docs.aws.amazon.com/redshift/latest/APIReference/),
-[OpsWorks](http://docs.aws.amazon.com/opsworks/latest/APIReference/),
-[SES](http://docs.aws.amazon.com/ses/latest/APIReference/),
-[SWF](http://docs.aws.amazon.com/amazonswf/latest/apireference/),
-[AutoScaling](http://docs.aws.amazon.com/AutoScaling/latest/APIReference/),
-[Mobile Analytics](http://docs.aws.amazon.com/mobileanalytics/latest/ug/server-reference.html),
-[Cognito Identity](http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/),
-[Cognito Sync](http://docs.aws.amazon.com/cognitosync/latest/APIReference/),
-[Container Service](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/),
-[AppStream](http://docs.aws.amazon.com/appstream/latest/developerguide/appstream-api-rest.html),
-[Key Management Service](http://docs.aws.amazon.com/kms/latest/APIReference/),
-[Config](http://docs.aws.amazon.com/config/latest/APIReference/),
-[CloudHSM](http://docs.aws.amazon.com/cloudhsm/latest/dg/api-ref.html),
-[Route53](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rest.html) and
-[Route53 Domains](http://docs.aws.amazon.com/Route53/latest/APIReference/requests-rpc.html).
-
-Indeed, the only AWS services that *don't* support v4 as of 2014-12-30 are
-[Import/Export](http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html) and
-[SimpleDB](http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API.html)
-(they only support [AWS Signature Version 2](https://github.com/mhart/aws2)).
-
-It also provides defaults for a number of core AWS headers and
-request parameters, making it very easy to query AWS services, or
-build out a fully-featured AWS library.
-
-Example
--------
-
-```javascript
-var http = require('http'),
- https = require('https'),
- aws4 = require('aws4')
-
-// given an options object you could pass to http.request
-var opts = {host: 'sqs.us-east-1.amazonaws.com', path: '/?Action=ListQueues'}
-
-// alternatively (as aws4 can infer the host):
-opts = {service: 'sqs', region: 'us-east-1', path: '/?Action=ListQueues'}
-
-// alternatively (as us-east-1 is default):
-opts = {service: 'sqs', path: '/?Action=ListQueues'}
-
-aws4.sign(opts) // assumes AWS credentials are available in process.env
-
-console.log(opts)
-/*
-{
- host: 'sqs.us-east-1.amazonaws.com',
- path: '/?Action=ListQueues',
- headers: {
- Host: 'sqs.us-east-1.amazonaws.com',
- 'X-Amz-Date': '20121226T061030Z',
- Authorization: 'AWS4-HMAC-SHA256 Credential=ABCDEF/20121226/us-east-1/sqs/aws4_request, ...'
- }
-}
-*/
-
-// we can now use this to query AWS using the standard node.js http API
-http.request(opts, function(res) { res.pipe(process.stdout) }).end()
-/*
-
-
-...
-*/
-```
-
-More options
-------------
-
-```javascript
-// you can also pass AWS credentials in explicitly (otherwise taken from process.env)
-aws4.sign(opts, {accessKeyId: '', secretAccessKey: ''})
-
-// can also add the signature to query strings
-aws4.sign({service: 's3', path: '/my-bucket?X-Amz-Expires=12345', signQuery: true})
-
-// create a utility function to pipe to stdout (with https this time)
-function request(o) { https.request(o, function(res) { res.pipe(process.stdout) }).end(o.body || '') }
-
-// aws4 can infer the HTTP method if a body is passed in
-// method will be POST and Content-Type: 'application/x-www-form-urlencoded; charset=utf-8'
-request(aws4.sign({service: 'iam', body: 'Action=ListGroups&Version=2010-05-08'}))
-/*
-
-...
-*/
-
-// can specify any custom option or header as per usual
-request(aws4.sign({
- service: 'dynamodb',
- region: 'ap-southeast-2',
- method: 'POST',
- path: '/',
- headers: {
- 'Content-Type': 'application/x-amz-json-1.0',
- 'X-Amz-Target': 'DynamoDB_20120810.ListTables'
- },
- body: '{}'
-}))
-/*
-{"TableNames":[]}
-...
-*/
-
-// works with all other services that support Signature Version 4
-
-request(aws4.sign({service: 's3', path: '/', signQuery: true}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'ec2', path: '/?Action=DescribeRegions&Version=2014-06-15'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'sns', path: '/?Action=ListTopics&Version=2010-03-31'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'sts', path: '/?Action=GetSessionToken&Version=2011-06-15'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'cloudsearch', path: '/?Action=ListDomainNames&Version=2013-01-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'ses', path: '/?Action=ListIdentities&Version=2010-12-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'autoscaling', path: '/?Action=DescribeAutoScalingInstances&Version=2011-01-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'elasticloadbalancing', path: '/?Action=DescribeLoadBalancers&Version=2012-06-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'cloudformation', path: '/?Action=ListStacks&Version=2010-05-15'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'elasticbeanstalk', path: '/?Action=ListAvailableSolutionStacks&Version=2010-12-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'rds', path: '/?Action=DescribeDBInstances&Version=2012-09-17'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'monitoring', path: '/?Action=ListMetrics&Version=2010-08-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'redshift', path: '/?Action=DescribeClusters&Version=2012-12-01'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'cloudfront', path: '/2014-05-31/distribution'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'elasticache', path: '/?Action=DescribeCacheClusters&Version=2014-07-15'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'elasticmapreduce', path: '/?Action=DescribeJobFlows&Version=2009-03-31'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'route53', path: '/2013-04-01/hostedzone'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'appstream', path: '/applications'}))
-/*
-{"_links":{"curie":[{"href":"http://docs.aws.amazon.com/appstream/latest/...
-...
-*/
-
-request(aws4.sign({service: 'cognito-sync', path: '/identitypools'}))
-/*
-{"Count":0,"IdentityPoolUsages":[],"MaxResults":16,"NextToken":null}
-...
-*/
-
-request(aws4.sign({service: 'elastictranscoder', path: '/2012-09-25/pipelines'}))
-/*
-{"NextPageToken":null,"Pipelines":[]}
-...
-*/
-
-request(aws4.sign({service: 'lambda', path: '/2014-11-13/functions/'}))
-/*
-{"Functions":[],"NextMarker":null}
-...
-*/
-
-request(aws4.sign({service: 'ecs', path: '/?Action=ListClusters&Version=2014-11-13'}))
-/*
-
-...
-*/
-
-request(aws4.sign({service: 'glacier', path: '/-/vaults', headers: {'X-Amz-Glacier-Version': '2012-06-01'}}))
-/*
-{"Marker":null,"VaultList":[]}
-...
-*/
-
-request(aws4.sign({service: 'storagegateway', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'StorageGateway_20120630.ListGateways'
-}}))
-/*
-{"Gateways":[]}
-...
-*/
-
-request(aws4.sign({service: 'datapipeline', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'DataPipeline.ListPipelines'
-}}))
-/*
-{"hasMoreResults":false,"pipelineIdList":[]}
-...
-*/
-
-request(aws4.sign({service: 'opsworks', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'OpsWorks_20130218.DescribeStacks'
-}}))
-/*
-{"Stacks":[]}
-...
-*/
-
-request(aws4.sign({service: 'route53domains', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'Route53Domains_v20140515.ListDomains'
-}}))
-/*
-{"Domains":[]}
-...
-*/
-
-request(aws4.sign({service: 'kinesis', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'Kinesis_20131202.ListStreams'
-}}))
-/*
-{"HasMoreStreams":false,"StreamNames":[]}
-...
-*/
-
-request(aws4.sign({service: 'cloudtrail', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'CloudTrail_20131101.DescribeTrails'
-}}))
-/*
-{"trailList":[]}
-...
-*/
-
-request(aws4.sign({service: 'logs', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'Logs_20140328.DescribeLogGroups'
-}}))
-/*
-{"logGroups":[]}
-...
-*/
-
-request(aws4.sign({service: 'codedeploy', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'CodeDeploy_20141006.ListApplications'
-}}))
-/*
-{"applications":[]}
-...
-*/
-
-request(aws4.sign({service: 'directconnect', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'OvertureService.DescribeConnections'
-}}))
-/*
-{"connections":[]}
-...
-*/
-
-request(aws4.sign({service: 'kms', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'TrentService.ListKeys'
-}}))
-/*
-{"Keys":[],"Truncated":false}
-...
-*/
-
-request(aws4.sign({service: 'config', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'StarlingDoveService.DescribeDeliveryChannels'
-}}))
-/*
-{"DeliveryChannels":[]}
-...
-*/
-
-request(aws4.sign({service: 'cloudhsm', body: '{}', headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'CloudHsmFrontendService.ListAvailableZones'
-}}))
-/*
-{"AZList":["us-east-1a","us-east-1b","us-east-1c"]}
-...
-*/
-
-request(aws4.sign({
- service: 'swf',
- body: '{"registrationStatus":"REGISTERED"}',
- headers: {
- 'Content-Type': 'application/x-amz-json-1.0',
- 'X-Amz-Target': 'SimpleWorkflowService.ListDomains'
- }
-}))
-/*
-{"domainInfos":[]}
-...
-*/
-
-request(aws4.sign({
- service: 'cognito-identity',
- body: '{"MaxResults": 1}',
- headers: {
- 'Content-Type': 'application/x-amz-json-1.1',
- 'X-Amz-Target': 'AWSCognitoIdentityService.ListIdentityPools'
- }
-}))
-/*
-{"IdentityPools":[]}
-...
-*/
-
-request(aws4.sign({
- service: 'mobileanalytics',
- path: '/2014-06-05/events',
- body: JSON.stringify({events:[{
- eventType: 'a',
- timestamp: new Date().toISOString(),
- session: {},
- }]}),
- headers: {
- 'Content-Type': 'application/json',
- 'X-Amz-Client-Context': JSON.stringify({
- client: {client_id: 'a', app_title: 'a'},
- custom: {},
- env: {platform: 'a'},
- services: {},
- }),
- }
-}))
-/*
-(HTTP 202, empty response)
-*/
-```
-
-API
----
-
-### aws4.sign(requestOptions, [credentials])
-
-This calculates and populates the `Authorization` header of
-`requestOptions`, and any other necessary AWS headers and/or request
-options. Returns `requestOptions` as a convenience for chaining.
-
-`requestOptions` is an object holding the same options that the node.js
-[http.request](http://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback)
-function takes.
-
-The following properties of `requestOptions` are used in the signing or
-populated if they don't already exist:
-
-- `hostname` or `host` (will be determined from `service` and `region` if not given)
-- `method` (will use `'GET'` if not given or `'POST'` if there is a `body`)
-- `path` (will use `'/'` if not given)
-- `body` (will use `''` if not given)
-- `service` (will be calculated from `hostname` or `host` if not given)
-- `region` (will be calculated from `hostname` or `host` or use `'us-east-1'` if not given)
-- `headers['Host']` (will use `hostname` or `host` or be calculated if not given)
-- `headers['Content-Type']` (will use `'application/x-www-form-urlencoded; charset=utf-8'`
- if not given and there is a `body`)
-- `headers['Date']` (used to calculate the signature date if given, otherwise `new Date` is used)
-
-Your AWS credentials (which can be found in your
-[AWS console](https://portal.aws.amazon.com/gp/aws/securityCredentials))
-can be specified in one of two ways:
-
-- As the second argument, like this:
-
-```javascript
-aws4.sign(requestOptions, {
- secretAccessKey: "",
- accessKeyId: "",
- sessionToken: ""
-})
-```
-
-- From `process.env`, such as this:
-
-```
-export AWS_SECRET_ACCESS_KEY=""
-export AWS_ACCESS_KEY_ID=""
-export AWS_SESSION_TOKEN=""
-```
-
-(will also use `AWS_ACCESS_KEY` and `AWS_SECRET_KEY` if available)
-
-The `sessionToken` property and `AWS_SESSION_TOKEN` environment variable are optional for signing
-with [IAM STS temporary credentials](http://docs.aws.amazon.com/STS/latest/UsingSTS/using-temp-creds.html).
-
-Installation
-------------
-
-With [npm](http://npmjs.org/) do:
-
-```
-npm install aws4
-```
-
-Can also be used [in the browser](./browser).
-
-Thanks
-------
-
-Thanks to [@jed](https://github.com/jed) for his
-[dynamo-client](https://github.com/jed/dynamo-client) lib where I first
-committed and subsequently extracted this code.
-
-Also thanks to the
-[official node.js AWS SDK](https://github.com/aws/aws-sdk-js) for giving
-me a start on implementing the v4 signature.
-
diff --git a/APIs/node_modules/request/node_modules/aws4/aws4.js b/APIs/node_modules/request/node_modules/aws4/aws4.js
deleted file mode 100644
index cbe5dc90..00000000
--- a/APIs/node_modules/request/node_modules/aws4/aws4.js
+++ /dev/null
@@ -1,318 +0,0 @@
-var aws4 = exports,
- url = require('url'),
- querystring = require('querystring'),
- crypto = require('crypto'),
- lru = require('./lru'),
- credentialsCache = lru(1000)
-
-// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html
-
-function hmac(key, string, encoding) {
- return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding)
-}
-
-function hash(string, encoding) {
- return crypto.createHash('sha256').update(string, 'utf8').digest(encoding)
-}
-
-// This function assumes the string has already been percent encoded
-function encodeRfc3986(urlEncodedString) {
- return urlEncodedString.replace(/[!'()*]/g, function(c) {
- return '%' + c.charCodeAt(0).toString(16).toUpperCase()
- })
-}
-
-// request: { path | body, [host], [method], [headers], [service], [region] }
-// credentials: { accessKeyId, secretAccessKey, [sessionToken] }
-function RequestSigner(request, credentials) {
-
- if (typeof request === 'string') request = url.parse(request)
-
- var headers = request.headers = (request.headers || {}),
- hostParts = this.matchHost(request.hostname || request.host || headers.Host || headers.host)
-
- this.request = request
- this.credentials = credentials || this.defaultCredentials()
-
- this.service = request.service || hostParts[0] || ''
- this.region = request.region || hostParts[1] || 'us-east-1'
-
- // SES uses a different domain from the service name
- if (this.service === 'email') this.service = 'ses'
-
- if (!request.method && request.body)
- request.method = 'POST'
-
- if (!headers.Host && !headers.host) {
- headers.Host = request.hostname || request.host || this.createHost()
-
- // If a port is specified explicitly, use it as is
- if (request.port)
- headers.Host += ':' + request.port
- }
- if (!request.hostname && !request.host)
- request.hostname = headers.Host || headers.host
-}
-
-RequestSigner.prototype.matchHost = function(host) {
- var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com$/)
- var hostParts = (match || []).slice(1, 3)
-
- // ES's hostParts are sometimes the other way round, if the value that is expected
- // to be region equals ‘es’ switch them back
- // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com
- if (hostParts[1] === 'es')
- hostParts = hostParts.reverse()
-
- return hostParts
-}
-
-// http://docs.aws.amazon.com/general/latest/gr/rande.html
-RequestSigner.prototype.isSingleRegion = function() {
- // Special case for S3 and SimpleDB in us-east-1
- if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true
-
- return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts']
- .indexOf(this.service) >= 0
-}
-
-RequestSigner.prototype.createHost = function() {
- var region = this.isSingleRegion() ? '' :
- (this.service === 's3' && this.region !== 'us-east-1' ? '-' : '.') + this.region,
- service = this.service === 'ses' ? 'email' : this.service
- return service + region + '.amazonaws.com'
-}
-
-RequestSigner.prototype.prepareRequest = function() {
- this.parsePath()
-
- var request = this.request, headers = request.headers, query
-
- if (request.signQuery) {
-
- this.parsedPath.query = query = this.parsedPath.query || {}
-
- if (this.credentials.sessionToken)
- query['X-Amz-Security-Token'] = this.credentials.sessionToken
-
- if (this.service === 's3' && !query['X-Amz-Expires'])
- query['X-Amz-Expires'] = 86400
-
- if (query['X-Amz-Date'])
- this.datetime = query['X-Amz-Date']
- else
- query['X-Amz-Date'] = this.getDateTime()
-
- query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'
- query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString()
- query['X-Amz-SignedHeaders'] = this.signedHeaders()
-
- } else {
-
- if (!request.doNotModifyHeaders) {
- if (request.body && !headers['Content-Type'] && !headers['content-type'])
- headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'
-
- if (request.body && !headers['Content-Length'] && !headers['content-length'])
- headers['Content-Length'] = Buffer.byteLength(request.body)
-
- if (this.credentials.sessionToken)
- headers['X-Amz-Security-Token'] = this.credentials.sessionToken
-
- if (this.service === 's3')
- headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex')
-
- if (headers['X-Amz-Date'])
- this.datetime = headers['X-Amz-Date']
- else
- headers['X-Amz-Date'] = this.getDateTime()
- }
-
- delete headers.Authorization
- delete headers.authorization
- }
-}
-
-RequestSigner.prototype.sign = function() {
- if (!this.parsedPath) this.prepareRequest()
-
- if (this.request.signQuery) {
- this.parsedPath.query['X-Amz-Signature'] = this.signature()
- } else {
- this.request.headers.Authorization = this.authHeader()
- }
-
- this.request.path = this.formatPath()
-
- return this.request
-}
-
-RequestSigner.prototype.getDateTime = function() {
- if (!this.datetime) {
- var headers = this.request.headers,
- date = new Date(headers.Date || headers.date || new Date)
-
- this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '')
- }
- return this.datetime
-}
-
-RequestSigner.prototype.getDate = function() {
- return this.getDateTime().substr(0, 8)
-}
-
-RequestSigner.prototype.authHeader = function() {
- return [
- 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(),
- 'SignedHeaders=' + this.signedHeaders(),
- 'Signature=' + this.signature(),
- ].join(', ')
-}
-
-RequestSigner.prototype.signature = function() {
- var date = this.getDate(),
- cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(),
- kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey)
- if (!kCredentials) {
- kDate = hmac('AWS4' + this.credentials.secretAccessKey, date)
- kRegion = hmac(kDate, this.region)
- kService = hmac(kRegion, this.service)
- kCredentials = hmac(kService, 'aws4_request')
- credentialsCache.set(cacheKey, kCredentials)
- }
- return hmac(kCredentials, this.stringToSign(), 'hex')
-}
-
-RequestSigner.prototype.stringToSign = function() {
- return [
- 'AWS4-HMAC-SHA256',
- this.getDateTime(),
- this.credentialString(),
- hash(this.canonicalString(), 'hex'),
- ].join('\n')
-}
-
-RequestSigner.prototype.canonicalString = function() {
- if (!this.parsedPath) this.prepareRequest()
-
- var pathStr = this.parsedPath.path,
- query = this.parsedPath.query,
- queryStr = '',
- normalizePath = this.service !== 's3',
- decodePath = this.service === 's3' || this.request.doNotEncodePath,
- decodeSlashesInPath = this.service === 's3',
- firstValOnly = this.service === 's3',
- bodyHash = this.service === 's3' && this.request.signQuery ?
- 'UNSIGNED-PAYLOAD' : hash(this.request.body || '', 'hex')
-
- if (query) {
- queryStr = encodeRfc3986(querystring.stringify(Object.keys(query).sort().reduce(function(obj, key) {
- if (!key) return obj
- obj[key] = !Array.isArray(query[key]) ? query[key] :
- (firstValOnly ? query[key][0] : query[key].slice().sort())
- return obj
- }, {})))
- }
- if (pathStr !== '/') {
- if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/')
- pathStr = pathStr.split('/').reduce(function(path, piece) {
- if (normalizePath && piece === '..') {
- path.pop()
- } else if (!normalizePath || piece !== '.') {
- if (decodePath) piece = querystring.unescape(piece)
- path.push(encodeRfc3986(querystring.escape(piece)))
- }
- return path
- }, []).join('/')
- if (pathStr[0] !== '/') pathStr = '/' + pathStr
- if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/')
- }
-
- return [
- this.request.method || 'GET',
- pathStr,
- queryStr,
- this.canonicalHeaders() + '\n',
- this.signedHeaders(),
- bodyHash,
- ].join('\n')
-}
-
-RequestSigner.prototype.canonicalHeaders = function() {
- var headers = this.request.headers
- function trimAll(header) {
- return header.toString().trim().replace(/\s+/g, ' ')
- }
- return Object.keys(headers)
- .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 })
- .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) })
- .join('\n')
-}
-
-RequestSigner.prototype.signedHeaders = function() {
- return Object.keys(this.request.headers)
- .map(function(key) { return key.toLowerCase() })
- .sort()
- .join(';')
-}
-
-RequestSigner.prototype.credentialString = function() {
- return [
- this.getDate(),
- this.region,
- this.service,
- 'aws4_request',
- ].join('/')
-}
-
-RequestSigner.prototype.defaultCredentials = function() {
- var env = process.env
- return {
- accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY,
- secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY,
- sessionToken: env.AWS_SESSION_TOKEN,
- }
-}
-
-RequestSigner.prototype.parsePath = function() {
- var path = this.request.path || '/',
- queryIx = path.indexOf('?'),
- query = null
-
- if (queryIx >= 0) {
- query = querystring.parse(path.slice(queryIx + 1))
- path = path.slice(0, queryIx)
- }
-
- // S3 doesn't always encode characters > 127 correctly and
- // all services don't encode characters > 255 correctly
- // So if there are non-reserved chars (and it's not already all % encoded), just encode them all
- if (/[^0-9A-Za-z!'()*\-._~%/]/.test(path)) {
- path = path.split('/').map(function(piece) {
- return querystring.escape(querystring.unescape(piece))
- }).join('/')
- }
-
- this.parsedPath = {
- path: path,
- query: query,
- }
-}
-
-RequestSigner.prototype.formatPath = function() {
- var path = this.parsedPath.path,
- query = this.parsedPath.query
-
- if (!query) return path
-
- // Services don't support empty query string keys
- if (query[''] != null) delete query['']
-
- return path + '?' + encodeRfc3986(querystring.stringify(query))
-}
-
-aws4.RequestSigner = RequestSigner
-
-aws4.sign = function(request, credentials) {
- return new RequestSigner(request, credentials).sign()
-}
diff --git a/APIs/node_modules/request/node_modules/aws4/lru.js b/APIs/node_modules/request/node_modules/aws4/lru.js
deleted file mode 100644
index 333f66a4..00000000
--- a/APIs/node_modules/request/node_modules/aws4/lru.js
+++ /dev/null
@@ -1,96 +0,0 @@
-module.exports = function(size) {
- return new LruCache(size)
-}
-
-function LruCache(size) {
- this.capacity = size | 0
- this.map = Object.create(null)
- this.list = new DoublyLinkedList()
-}
-
-LruCache.prototype.get = function(key) {
- var node = this.map[key]
- if (node == null) return undefined
- this.used(node)
- return node.val
-}
-
-LruCache.prototype.set = function(key, val) {
- var node = this.map[key]
- if (node != null) {
- node.val = val
- } else {
- if (!this.capacity) this.prune()
- if (!this.capacity) return false
- node = new DoublyLinkedNode(key, val)
- this.map[key] = node
- this.capacity--
- }
- this.used(node)
- return true
-}
-
-LruCache.prototype.used = function(node) {
- this.list.moveToFront(node)
-}
-
-LruCache.prototype.prune = function() {
- var node = this.list.pop()
- if (node != null) {
- delete this.map[node.key]
- this.capacity++
- }
-}
-
-
-function DoublyLinkedList() {
- this.firstNode = null
- this.lastNode = null
-}
-
-DoublyLinkedList.prototype.moveToFront = function(node) {
- if (this.firstNode == node) return
-
- this.remove(node)
-
- if (this.firstNode == null) {
- this.firstNode = node
- this.lastNode = node
- node.prev = null
- node.next = null
- } else {
- node.prev = null
- node.next = this.firstNode
- node.next.prev = node
- this.firstNode = node
- }
-}
-
-DoublyLinkedList.prototype.pop = function() {
- var lastNode = this.lastNode
- if (lastNode != null) {
- this.remove(lastNode)
- }
- return lastNode
-}
-
-DoublyLinkedList.prototype.remove = function(node) {
- if (this.firstNode == node) {
- this.firstNode = node.next
- } else if (node.prev != null) {
- node.prev.next = node.next
- }
- if (this.lastNode == node) {
- this.lastNode = node.prev
- } else if (node.next != null) {
- node.next.prev = node.prev
- }
-}
-
-
-function DoublyLinkedNode(key, val) {
- this.key = key
- this.val = val
- this.prev = null
- this.next = null
-}
diff --git a/APIs/node_modules/request/node_modules/aws4/package.json b/APIs/node_modules/request/node_modules/aws4/package.json
deleted file mode 100644
index fcce77e0..00000000
--- a/APIs/node_modules/request/node_modules/aws4/package.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "name": "aws4",
- "version": "1.4.1",
- "description": "Signs and prepares requests using AWS Signature Version 4",
- "author": {
- "name": "Michael Hart",
- "email": "michael.hart.au@gmail.com",
- "url": "http://github.com/mhart"
- },
- "main": "aws4.js",
- "keywords": [
- "amazon",
- "aws",
- "signature",
- "s3",
- "ec2",
- "autoscaling",
- "cloudformation",
- "elasticloadbalancing",
- "elb",
- "elasticbeanstalk",
- "cloudsearch",
- "dynamodb",
- "kinesis",
- "lambda",
- "glacier",
- "sqs",
- "sns",
- "iam",
- "sts",
- "ses",
- "swf",
- "storagegateway",
- "datapipeline",
- "directconnect",
- "redshift",
- "opsworks",
- "rds",
- "monitoring",
- "cloudtrail",
- "cloudfront",
- "codedeploy",
- "elasticache",
- "elasticmapreduce",
- "elastictranscoder",
- "emr",
- "cloudwatch",
- "mobileanalytics",
- "cognitoidentity",
- "cognitosync",
- "cognito",
- "containerservice",
- "ecs",
- "appstream",
- "keymanagementservice",
- "kms",
- "config",
- "cloudhsm",
- "route53",
- "route53domains",
- "logs"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/mhart/aws4.git"
- },
- "license": "MIT",
- "devDependencies": {
- "mocha": "^2.4.5",
- "should": "^8.2.2"
- },
- "scripts": {
- "test": "mocha ./test/fast.js ./test/slow.js -b -t 100s -R list"
- },
- "gitHead": "f126d3ff80be1ddde0fc6b50bb51a7f199547e81",
- "bugs": {
- "url": "https://github.com/mhart/aws4/issues"
- },
- "homepage": "https://github.com/mhart/aws4#readme",
- "_id": "aws4@1.4.1",
- "_shasum": "fde7d5292466d230e5ee0f4e038d9dfaab08fc61",
- "_from": "aws4@^1.2.1",
- "_npmVersion": "2.15.4",
- "_nodeVersion": "4.4.3",
- "_npmUser": {
- "name": "hichaelmart",
- "email": "michael.hart.au@gmail.com"
- },
- "maintainers": [
- {
- "name": "hichaelmart",
- "email": "michael.hart.au@gmail.com"
- }
- ],
- "dist": {
- "shasum": "fde7d5292466d230e5ee0f4e038d9dfaab08fc61",
- "tarball": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz"
- },
- "_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/aws4-1.4.1.tgz_1462643218465_0.6527479749638587"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/.jshintrc b/APIs/node_modules/request/node_modules/bl/.jshintrc
deleted file mode 100644
index c8ef3ca4..00000000
--- a/APIs/node_modules/request/node_modules/bl/.jshintrc
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "predef": [ ]
- , "bitwise": false
- , "camelcase": false
- , "curly": false
- , "eqeqeq": false
- , "forin": false
- , "immed": false
- , "latedef": false
- , "noarg": true
- , "noempty": true
- , "nonew": true
- , "plusplus": false
- , "quotmark": true
- , "regexp": false
- , "undef": true
- , "unused": true
- , "strict": false
- , "trailing": true
- , "maxlen": 120
- , "asi": true
- , "boss": true
- , "debug": true
- , "eqnull": true
- , "esnext": true
- , "evil": true
- , "expr": true
- , "funcscope": false
- , "globalstrict": false
- , "iterator": false
- , "lastsemic": true
- , "laxbreak": true
- , "laxcomma": true
- , "loopfunc": true
- , "multistr": false
- , "onecase": false
- , "proto": false
- , "regexdash": false
- , "scripturl": true
- , "smarttabs": false
- , "shadow": false
- , "sub": true
- , "supernew": false
- , "validthis": true
- , "browser": true
- , "couch": false
- , "devel": false
- , "dojo": false
- , "mootools": false
- , "node": true
- , "nonstandard": true
- , "prototypejs": false
- , "rhino": false
- , "worker": true
- , "wsh": false
- , "nomen": false
- , "onevar": false
- , "passfail": false
-}
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/.npmignore b/APIs/node_modules/request/node_modules/bl/.npmignore
deleted file mode 100644
index 40b878db..00000000
--- a/APIs/node_modules/request/node_modules/bl/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/.travis.yml b/APIs/node_modules/request/node_modules/bl/.travis.yml
deleted file mode 100644
index 5cb0480b..00000000
--- a/APIs/node_modules/request/node_modules/bl/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-sudo: false
-language: node_js
-node_js:
- - '0.10'
- - '0.12'
- - '4'
- - '5'
-branches:
- only:
- - master
-notifications:
- email:
- - rod@vagg.org
diff --git a/APIs/node_modules/request/node_modules/bl/LICENSE.md b/APIs/node_modules/request/node_modules/bl/LICENSE.md
deleted file mode 100644
index ccb24797..00000000
--- a/APIs/node_modules/request/node_modules/bl/LICENSE.md
+++ /dev/null
@@ -1,13 +0,0 @@
-The MIT License (MIT)
-=====================
-
-Copyright (c) 2014 bl contributors
-----------------------------------
-
-*bl contributors listed at *
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/README.md b/APIs/node_modules/request/node_modules/bl/README.md
deleted file mode 100644
index f7044db2..00000000
--- a/APIs/node_modules/request/node_modules/bl/README.md
+++ /dev/null
@@ -1,200 +0,0 @@
-# bl *(BufferList)*
-
-[](https://travis-ci.org/rvagg/bl)
-
-**A Node.js Buffer list collector, reader and streamer thingy.**
-
-[](https://nodei.co/npm/bl/)
-[](https://nodei.co/npm/bl/)
-
-**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them!
-
-The original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently.
-
-```js
-const BufferList = require('bl')
-
-var bl = new BufferList()
-bl.append(new Buffer('abcd'))
-bl.append(new Buffer('efg'))
-bl.append('hi') // bl will also accept & convert Strings
-bl.append(new Buffer('j'))
-bl.append(new Buffer([ 0x3, 0x4 ]))
-
-console.log(bl.length) // 12
-
-console.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij'
-console.log(bl.slice(3, 10).toString('ascii')) // 'defghij'
-console.log(bl.slice(3, 6).toString('ascii')) // 'def'
-console.log(bl.slice(3, 8).toString('ascii')) // 'defgh'
-console.log(bl.slice(5, 10).toString('ascii')) // 'fghij'
-
-// or just use toString!
-console.log(bl.toString()) // 'abcdefghij\u0003\u0004'
-console.log(bl.toString('ascii', 3, 8)) // 'defgh'
-console.log(bl.toString('ascii', 5, 10)) // 'fghij'
-
-// other standard Buffer readables
-console.log(bl.readUInt16BE(10)) // 0x0304
-console.log(bl.readUInt16LE(10)) // 0x0403
-```
-
-Give it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**:
-
-```js
-const bl = require('bl')
- , fs = require('fs')
-
-fs.createReadStream('README.md')
- .pipe(bl(function (err, data) { // note 'new' isn't strictly required
- // `data` is a complete Buffer object containing the full data
- console.log(data.toString())
- }))
-```
-
-Note that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream.
-
-Or to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!):
-```js
-const hyperquest = require('hyperquest')
- , bl = require('bl')
- , url = 'https://raw.github.com/rvagg/bl/master/README.md'
-
-hyperquest(url).pipe(bl(function (err, data) {
- console.log(data.toString())
-}))
-```
-
-Or, use it as a readable stream to recompose a list of Buffers to an output source:
-
-```js
-const BufferList = require('bl')
- , fs = require('fs')
-
-var bl = new BufferList()
-bl.append(new Buffer('abcd'))
-bl.append(new Buffer('efg'))
-bl.append(new Buffer('hi'))
-bl.append(new Buffer('j'))
-
-bl.pipe(fs.createWriteStream('gibberish.txt'))
-```
-
-## API
-
- * new BufferList([ callback ])
- * bl.length
- * bl.append(buffer)
- * bl.get(index)
- * bl.slice([ start[, end ] ])
- * bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])
- * bl.duplicate()
- * bl.consume(bytes)
- * bl.toString([encoding, [ start, [ end ]]])
- * bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8()
- * Streams
-
---------------------------------------------------------
-
-### new BufferList([ callback | Buffer | Buffer array | BufferList | BufferList array | String ])
-The constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream.
-
-Normally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object.
-
-`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with:
-
-```js
-var bl = require('bl')
-var myinstance = bl()
-
-// equivilant to:
-
-var BufferList = require('bl')
-var myinstance = new BufferList()
-```
-
---------------------------------------------------------
-
-### bl.length
-Get the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list.
-
---------------------------------------------------------
-
-### bl.append(Buffer | Buffer array | BufferList | BufferList array | String)
-`append(buffer)` adds an additional buffer or BufferList to the internal list. `this` is returned so it can be chained.
-
---------------------------------------------------------
-
-### bl.get(index)
-`get()` will return the byte at the specified index.
-
---------------------------------------------------------
-
-### bl.slice([ start, [ end ] ])
-`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively.
-
-If the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer.
-
---------------------------------------------------------
-
-### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ])
-`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively.
-
---------------------------------------------------------
-
-### bl.duplicate()
-`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example:
-
-```js
-var bl = new BufferList()
-
-bl.append('hello')
-bl.append(' world')
-bl.append('\n')
-
-bl.duplicate().pipe(process.stdout, { end: false })
-
-console.log(bl.toString())
-```
-
---------------------------------------------------------
-
-### bl.consume(bytes)
-`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers—initial offsets will be calculated accordingly in order to give you a consistent view of the data.
-
---------------------------------------------------------
-
-### bl.toString([encoding, [ start, [ end ]]])
-`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information.
-
---------------------------------------------------------
-
-### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8()
-
-All of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently.
-
-See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work.
-
---------------------------------------------------------
-
-### Streams
-**bl** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **bl** instance.
-
---------------------------------------------------------
-
-## Contributors
-
-**bl** is brought to you by the following hackers:
-
- * [Rod Vagg](https://github.com/rvagg)
- * [Matteo Collina](https://github.com/mcollina)
- * [Jarett Cruger](https://github.com/jcrugzz)
-
-=======
-
-
-## License & copyright
-
-Copyright (c) 2013-2014 bl contributors (listed above).
-
-bl is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.
diff --git a/APIs/node_modules/request/node_modules/bl/bl.js b/APIs/node_modules/request/node_modules/bl/bl.js
deleted file mode 100644
index f585df17..00000000
--- a/APIs/node_modules/request/node_modules/bl/bl.js
+++ /dev/null
@@ -1,243 +0,0 @@
-var DuplexStream = require('readable-stream/duplex')
- , util = require('util')
-
-
-function BufferList (callback) {
- if (!(this instanceof BufferList))
- return new BufferList(callback)
-
- this._bufs = []
- this.length = 0
-
- if (typeof callback == 'function') {
- this._callback = callback
-
- var piper = function piper (err) {
- if (this._callback) {
- this._callback(err)
- this._callback = null
- }
- }.bind(this)
-
- this.on('pipe', function onPipe (src) {
- src.on('error', piper)
- })
- this.on('unpipe', function onUnpipe (src) {
- src.removeListener('error', piper)
- })
- } else {
- this.append(callback)
- }
-
- DuplexStream.call(this)
-}
-
-
-util.inherits(BufferList, DuplexStream)
-
-
-BufferList.prototype._offset = function _offset (offset) {
- var tot = 0, i = 0, _t
- for (; i < this._bufs.length; i++) {
- _t = tot + this._bufs[i].length
- if (offset < _t)
- return [ i, offset - tot ]
- tot = _t
- }
-}
-
-
-BufferList.prototype.append = function append (buf) {
- var i = 0
- , newBuf
-
- if (Array.isArray(buf)) {
- for (; i < buf.length; i++)
- this.append(buf[i])
- } else if (buf instanceof BufferList) {
- // unwrap argument into individual BufferLists
- for (; i < buf._bufs.length; i++)
- this.append(buf._bufs[i])
- } else if (buf != null) {
- // coerce number arguments to strings, since Buffer(number) does
- // uninitialized memory allocation
- if (typeof buf == 'number')
- buf = buf.toString()
-
- newBuf = Buffer.isBuffer(buf) ? buf : new Buffer(buf)
- this._bufs.push(newBuf)
- this.length += newBuf.length
- }
-
- return this
-}
-
-
-BufferList.prototype._write = function _write (buf, encoding, callback) {
- this.append(buf)
-
- if (typeof callback == 'function')
- callback()
-}
-
-
-BufferList.prototype._read = function _read (size) {
- if (!this.length)
- return this.push(null)
-
- size = Math.min(size, this.length)
- this.push(this.slice(0, size))
- this.consume(size)
-}
-
-
-BufferList.prototype.end = function end (chunk) {
- DuplexStream.prototype.end.call(this, chunk)
-
- if (this._callback) {
- this._callback(null, this.slice())
- this._callback = null
- }
-}
-
-
-BufferList.prototype.get = function get (index) {
- return this.slice(index, index + 1)[0]
-}
-
-
-BufferList.prototype.slice = function slice (start, end) {
- return this.copy(null, 0, start, end)
-}
-
-
-BufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) {
- if (typeof srcStart != 'number' || srcStart < 0)
- srcStart = 0
- if (typeof srcEnd != 'number' || srcEnd > this.length)
- srcEnd = this.length
- if (srcStart >= this.length)
- return dst || new Buffer(0)
- if (srcEnd <= 0)
- return dst || new Buffer(0)
-
- var copy = !!dst
- , off = this._offset(srcStart)
- , len = srcEnd - srcStart
- , bytes = len
- , bufoff = (copy && dstStart) || 0
- , start = off[1]
- , l
- , i
-
- // copy/slice everything
- if (srcStart === 0 && srcEnd == this.length) {
- if (!copy) // slice, just return a full concat
- return Buffer.concat(this._bufs)
-
- // copy, need to copy individual buffers
- for (i = 0; i < this._bufs.length; i++) {
- this._bufs[i].copy(dst, bufoff)
- bufoff += this._bufs[i].length
- }
-
- return dst
- }
-
- // easy, cheap case where it's a subset of one of the buffers
- if (bytes <= this._bufs[off[0]].length - start) {
- return copy
- ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)
- : this._bufs[off[0]].slice(start, start + bytes)
- }
-
- if (!copy) // a slice, we need something to copy in to
- dst = new Buffer(len)
-
- for (i = off[0]; i < this._bufs.length; i++) {
- l = this._bufs[i].length - start
-
- if (bytes > l) {
- this._bufs[i].copy(dst, bufoff, start)
- } else {
- this._bufs[i].copy(dst, bufoff, start, start + bytes)
- break
- }
-
- bufoff += l
- bytes -= l
-
- if (start)
- start = 0
- }
-
- return dst
-}
-
-BufferList.prototype.toString = function toString (encoding, start, end) {
- return this.slice(start, end).toString(encoding)
-}
-
-BufferList.prototype.consume = function consume (bytes) {
- while (this._bufs.length) {
- if (bytes >= this._bufs[0].length) {
- bytes -= this._bufs[0].length
- this.length -= this._bufs[0].length
- this._bufs.shift()
- } else {
- this._bufs[0] = this._bufs[0].slice(bytes)
- this.length -= bytes
- break
- }
- }
- return this
-}
-
-
-BufferList.prototype.duplicate = function duplicate () {
- var i = 0
- , copy = new BufferList()
-
- for (; i < this._bufs.length; i++)
- copy.append(this._bufs[i])
-
- return copy
-}
-
-
-BufferList.prototype.destroy = function destroy () {
- this._bufs.length = 0
- this.length = 0
- this.push(null)
-}
-
-
-;(function () {
- var methods = {
- 'readDoubleBE' : 8
- , 'readDoubleLE' : 8
- , 'readFloatBE' : 4
- , 'readFloatLE' : 4
- , 'readInt32BE' : 4
- , 'readInt32LE' : 4
- , 'readUInt32BE' : 4
- , 'readUInt32LE' : 4
- , 'readInt16BE' : 2
- , 'readInt16LE' : 2
- , 'readUInt16BE' : 2
- , 'readUInt16LE' : 2
- , 'readInt8' : 1
- , 'readUInt8' : 1
- }
-
- for (var m in methods) {
- (function (m) {
- BufferList.prototype[m] = function (offset) {
- return this.slice(offset, offset + methods[m])[m](0)
- }
- }(m))
- }
-}())
-
-
-module.exports = BufferList
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore
deleted file mode 100644
index 38344f87..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-build/
-test/
-examples/
-fs.js
-zlib.js
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml
deleted file mode 100644
index 1b821184..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-sudo: false
-language: node_js
-before_install:
- - npm install -g npm@2
- - npm install -g npm
-notifications:
- email: false
-matrix:
- fast_finish: true
- allow_failures:
- - env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="6.0..latest"
- - env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="6.0..latest"
- include:
- - node_js: '0.8'
- env: TASK=test
- - node_js: '0.10'
- env: TASK=test
- - node_js: '0.11'
- env: TASK=test
- - node_js: '0.12'
- env: TASK=test
- - node_js: 1
- env: TASK=test
- - node_js: 2
- env: TASK=test
- - node_js: 3
- env: TASK=test
- - node_js: 4
- env: TASK=test
- - node_js: 5
- env: TASK=test
- - node_js: 5
- env: TASK=browser BROWSER_NAME=android BROWSER_VERSION="4.0..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=ie BROWSER_VERSION="9..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=opera BROWSER_VERSION="11..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=chrome BROWSER_VERSION="-3..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=firefox BROWSER_VERSION="-3..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="6.0..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="6.0..latest"
- - node_js: 5
- env: TASK=browser BROWSER_NAME=safari BROWSER_VERSION="5..latest"
-script: "npm run $TASK"
-env:
- global:
- - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc=
- - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI=
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml
deleted file mode 100644
index 96d9cfbd..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml
+++ /dev/null
@@ -1 +0,0 @@
-ui: tape
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE
deleted file mode 100644
index e3d4e695..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md
deleted file mode 100644
index 86b95a3b..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# readable-stream
-
-***Node-core v5.8.0 streams for userland*** [](https://travis-ci.org/nodejs/readable-stream)
-
-
-[](https://nodei.co/npm/readable-stream/)
-[](https://nodei.co/npm/readable-stream/)
-
-
-[](https://saucelabs.com/u/readable-stream)
-
-```bash
-npm install --save readable-stream
-```
-
-***Node-core streams for userland***
-
-This package is a mirror of the Streams2 and Streams3 implementations in
-Node-core, including [documentation](doc/stream.markdown).
-
-If you want to guarantee a stable streams base, regardless of what version of
-Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).
-
-As of version 2.0.0 **readable-stream** uses semantic versioning.
-
-# Streams WG Team Members
-
-* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com>
- - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B
-* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com>
- - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242
-* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org>
- - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D
-* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com>
-* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com>
-* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me>
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown
deleted file mode 100644
index 0bc3819e..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown
+++ /dev/null
@@ -1,1760 +0,0 @@
-# Stream
-
- Stability: 2 - Stable
-
-A stream is an abstract interface implemented by various objects in
-Node.js. For example a [request to an HTTP server][http-incoming-message] is a
-stream, as is [`process.stdout`][]. Streams are readable, writable, or both. All
-streams are instances of [`EventEmitter`][].
-
-You can load the Stream base classes by doing `require('stream')`.
-There are base classes provided for [Readable][] streams, [Writable][]
-streams, [Duplex][] streams, and [Transform][] streams.
-
-This document is split up into 3 sections:
-
-1. The first section explains the parts of the API that you need to be
- aware of to use streams in your programs.
-2. The second section explains the parts of the API that you need to
- use if you implement your own custom streams yourself. The API is designed to
- make this easy for you to do.
-3. The third section goes into more depth about how streams work,
- including some of the internal mechanisms and functions that you
- should probably not modify unless you definitely know what you are
- doing.
-
-
-## API for Stream Consumers
-
-
-
-Streams can be either [Readable][], [Writable][], or both ([Duplex][]).
-
-All streams are EventEmitters, but they also have other custom methods
-and properties depending on whether they are Readable, Writable, or
-Duplex.
-
-If a stream is both Readable and Writable, then it implements all of
-the methods and events. So, a [Duplex][] or [Transform][] stream is
-fully described by this API, though their implementation may be
-somewhat different.
-
-It is not necessary to implement Stream interfaces in order to consume
-streams in your programs. If you **are** implementing streaming
-interfaces in your own program, please also refer to
-[API for Stream Implementors][].
-
-Almost all Node.js programs, no matter how simple, use Streams in some
-way. Here is an example of using Streams in an Node.js program:
-
-```js
-const http = require('http');
-
-var server = http.createServer( (req, res) => {
- // req is an http.IncomingMessage, which is a Readable Stream
- // res is an http.ServerResponse, which is a Writable Stream
-
- var body = '';
- // we want to get the data as utf8 strings
- // If you don't set an encoding, then you'll get Buffer objects
- req.setEncoding('utf8');
-
- // Readable streams emit 'data' events once a listener is added
- req.on('data', (chunk) => {
- body += chunk;
- });
-
- // the end event tells you that you have entire body
- req.on('end', () => {
- try {
- var data = JSON.parse(body);
- } catch (er) {
- // uh oh! bad json!
- res.statusCode = 400;
- return res.end(`error: ${er.message}`);
- }
-
- // write back something interesting to the user:
- res.write(typeof data);
- res.end();
- });
-});
-
-server.listen(1337);
-
-// $ curl localhost:1337 -d '{}'
-// object
-// $ curl localhost:1337 -d '"foo"'
-// string
-// $ curl localhost:1337 -d 'not json'
-// error: Unexpected token o
-```
-
-### Class: stream.Duplex
-
-Duplex streams are streams that implement both the [Readable][] and
-[Writable][] interfaces.
-
-Examples of Duplex streams include:
-
-* [TCP sockets][]
-* [zlib streams][zlib]
-* [crypto streams][crypto]
-
-### Class: stream.Readable
-
-
-
-The Readable stream interface is the abstraction for a *source* of
-data that you are reading from. In other words, data comes *out* of a
-Readable stream.
-
-A Readable stream will not start emitting data until you indicate that
-you are ready to receive it.
-
-Readable streams have two "modes": a **flowing mode** and a **paused
-mode**. When in flowing mode, data is read from the underlying system
-and provided to your program as fast as possible. In paused mode, you
-must explicitly call [`stream.read()`][stream-read] to get chunks of data out.
-Streams start out in paused mode.
-
-**Note**: If no data event handlers are attached, and there are no
-[`stream.pipe()`][] destinations, and the stream is switched into flowing
-mode, then data will be lost.
-
-You can switch to flowing mode by doing any of the following:
-
-* Adding a [`'data'`][] event handler to listen for data.
-* Calling the [`stream.resume()`][stream-resume] method to explicitly open the
- flow.
-* Calling the [`stream.pipe()`][] method to send the data to a [Writable][].
-
-You can switch back to paused mode by doing either of the following:
-
-* If there are no pipe destinations, by calling the
- [`stream.pause()`][stream-pause] method.
-* If there are pipe destinations, by removing any [`'data'`][] event
- handlers, and removing all pipe destinations by calling the
- [`stream.unpipe()`][] method.
-
-Note that, for backwards compatibility reasons, removing [`'data'`][]
-event handlers will **not** automatically pause the stream. Also, if
-there are piped destinations, then calling [`stream.pause()`][stream-pause] will
-not guarantee that the stream will *remain* paused once those
-destinations drain and ask for more data.
-
-Examples of readable streams include:
-
-* [HTTP responses, on the client][http-incoming-message]
-* [HTTP requests, on the server][http-incoming-message]
-* [fs read streams][]
-* [zlib streams][zlib]
-* [crypto streams][crypto]
-* [TCP sockets][]
-* [child process stdout and stderr][]
-* [`process.stdin`][]
-
-#### Event: 'close'
-
-Emitted when the stream and any of its underlying resources (a file
-descriptor, for example) have been closed. The event indicates that
-no more events will be emitted, and no further computation will occur.
-
-Not all streams will emit the `'close'` event.
-
-#### Event: 'data'
-
-* `chunk` {Buffer|String} The chunk of data.
-
-Attaching a `'data'` event listener to a stream that has not been
-explicitly paused will switch the stream into flowing mode. Data will
-then be passed as soon as it is available.
-
-If you just want to get all the data out of the stream as fast as
-possible, this is the best way to do so.
-
-```js
-var readable = getReadableStreamSomehow();
-readable.on('data', (chunk) => {
- console.log('got %d bytes of data', chunk.length);
-});
-```
-
-#### Event: 'end'
-
-This event fires when there will be no more data to read.
-
-Note that the `'end'` event **will not fire** unless the data is
-completely consumed. This can be done by switching into flowing mode,
-or by calling [`stream.read()`][stream-read] repeatedly until you get to the
-end.
-
-```js
-var readable = getReadableStreamSomehow();
-readable.on('data', (chunk) => {
- console.log('got %d bytes of data', chunk.length);
-});
-readable.on('end', () => {
- console.log('there will be no more data.');
-});
-```
-
-#### Event: 'error'
-
-* {Error Object}
-
-Emitted if there was an error receiving data.
-
-#### Event: 'readable'
-
-When a chunk of data can be read from the stream, it will emit a
-`'readable'` event.
-
-In some cases, listening for a `'readable'` event will cause some data
-to be read into the internal buffer from the underlying system, if it
-hadn't already.
-
-```javascript
-var readable = getReadableStreamSomehow();
-readable.on('readable', () => {
- // there is some data to read now
-});
-```
-
-Once the internal buffer is drained, a `'readable'` event will fire
-again when more data is available.
-
-The `'readable'` event is not emitted in the "flowing" mode with the
-sole exception of the last one, on end-of-stream.
-
-The `'readable'` event indicates that the stream has new information:
-either new data is available or the end of the stream has been reached.
-In the former case, [`stream.read()`][stream-read] will return that data. In the
-latter case, [`stream.read()`][stream-read] will return null. For instance, in
-the following example, `foo.txt` is an empty file:
-
-```js
-const fs = require('fs');
-var rr = fs.createReadStream('foo.txt');
-rr.on('readable', () => {
- console.log('readable:', rr.read());
-});
-rr.on('end', () => {
- console.log('end');
-});
-```
-
-The output of running this script is:
-
-```
-$ node test.js
-readable: null
-end
-```
-
-#### readable.isPaused()
-
-* Return: {Boolean}
-
-This method returns whether or not the `readable` has been **explicitly**
-paused by client code (using [`stream.pause()`][stream-pause] without a
-corresponding [`stream.resume()`][stream-resume]).
-
-```js
-var readable = new stream.Readable
-
-readable.isPaused() // === false
-readable.pause()
-readable.isPaused() // === true
-readable.resume()
-readable.isPaused() // === false
-```
-
-#### readable.pause()
-
-* Return: `this`
-
-This method will cause a stream in flowing mode to stop emitting
-[`'data'`][] events, switching out of flowing mode. Any data that becomes
-available will remain in the internal buffer.
-
-```js
-var readable = getReadableStreamSomehow();
-readable.on('data', (chunk) => {
- console.log('got %d bytes of data', chunk.length);
- readable.pause();
- console.log('there will be no more data for 1 second');
- setTimeout(() => {
- console.log('now data will start flowing again');
- readable.resume();
- }, 1000);
-});
-```
-
-#### readable.pipe(destination[, options])
-
-* `destination` {stream.Writable} The destination for writing data
-* `options` {Object} Pipe options
- * `end` {Boolean} End the writer when the reader ends. Default = `true`
-
-This method pulls all the data out of a readable stream, and writes it
-to the supplied destination, automatically managing the flow so that
-the destination is not overwhelmed by a fast readable stream.
-
-Multiple destinations can be piped to safely.
-
-```js
-var readable = getReadableStreamSomehow();
-var writable = fs.createWriteStream('file.txt');
-// All the data from readable goes into 'file.txt'
-readable.pipe(writable);
-```
-
-This function returns the destination stream, so you can set up pipe
-chains like so:
-
-```js
-var r = fs.createReadStream('file.txt');
-var z = zlib.createGzip();
-var w = fs.createWriteStream('file.txt.gz');
-r.pipe(z).pipe(w);
-```
-
-For example, emulating the Unix `cat` command:
-
-```js
-process.stdin.pipe(process.stdout);
-```
-
-By default [`stream.end()`][stream-end] is called on the destination when the
-source stream emits [`'end'`][], so that `destination` is no longer writable.
-Pass `{ end: false }` as `options` to keep the destination stream open.
-
-This keeps `writer` open so that "Goodbye" can be written at the
-end.
-
-```js
-reader.pipe(writer, { end: false });
-reader.on('end', () => {
- writer.end('Goodbye\n');
-});
-```
-
-Note that [`process.stderr`][] and [`process.stdout`][] are never closed until
-the process exits, regardless of the specified options.
-
-#### readable.read([size])
-
-* `size` {Number} Optional argument to specify how much data to read.
-* Return {String|Buffer|Null}
-
-The `read()` method pulls some data out of the internal buffer and
-returns it. If there is no data available, then it will return
-`null`.
-
-If you pass in a `size` argument, then it will return that many
-bytes. If `size` bytes are not available, then it will return `null`,
-unless we've ended, in which case it will return the data remaining
-in the buffer.
-
-If you do not specify a `size` argument, then it will return all the
-data in the internal buffer.
-
-This method should only be called in paused mode. In flowing mode,
-this method is called automatically until the internal buffer is
-drained.
-
-```js
-var readable = getReadableStreamSomehow();
-readable.on('readable', () => {
- var chunk;
- while (null !== (chunk = readable.read())) {
- console.log('got %d bytes of data', chunk.length);
- }
-});
-```
-
-If this method returns a data chunk, then it will also trigger the
-emission of a [`'data'`][] event.
-
-Note that calling [`stream.read([size])`][stream-read] after the [`'end'`][]
-event has been triggered will return `null`. No runtime error will be raised.
-
-#### readable.resume()
-
-* Return: `this`
-
-This method will cause the readable stream to resume emitting [`'data'`][]
-events.
-
-This method will switch the stream into flowing mode. If you do *not*
-want to consume the data from a stream, but you *do* want to get to
-its [`'end'`][] event, you can call [`stream.resume()`][stream-resume] to open
-the flow of data.
-
-```js
-var readable = getReadableStreamSomehow();
-readable.resume();
-readable.on('end', () => {
- console.log('got to the end, but did not read anything');
-});
-```
-
-#### readable.setEncoding(encoding)
-
-* `encoding` {String} The encoding to use.
-* Return: `this`
-
-Call this function to cause the stream to return strings of the specified
-encoding instead of Buffer objects. For example, if you do
-`readable.setEncoding('utf8')`, then the output data will be interpreted as
-UTF-8 data, and returned as strings. If you do `readable.setEncoding('hex')`,
-then the data will be encoded in hexadecimal string format.
-
-This properly handles multi-byte characters that would otherwise be
-potentially mangled if you simply pulled the Buffers directly and
-called [`buf.toString(encoding)`][] on them. If you want to read the data
-as strings, always use this method.
-
-Also you can disable any encoding at all with `readable.setEncoding(null)`.
-This approach is very useful if you deal with binary data or with large
-multi-byte strings spread out over multiple chunks.
-
-```js
-var readable = getReadableStreamSomehow();
-readable.setEncoding('utf8');
-readable.on('data', (chunk) => {
- assert.equal(typeof chunk, 'string');
- console.log('got %d characters of string data', chunk.length);
-});
-```
-
-#### readable.unpipe([destination])
-
-* `destination` {stream.Writable} Optional specific stream to unpipe
-
-This method will remove the hooks set up for a previous [`stream.pipe()`][]
-call.
-
-If the destination is not specified, then all pipes are removed.
-
-If the destination is specified, but no pipe is set up for it, then
-this is a no-op.
-
-```js
-var readable = getReadableStreamSomehow();
-var writable = fs.createWriteStream('file.txt');
-// All the data from readable goes into 'file.txt',
-// but only for the first second
-readable.pipe(writable);
-setTimeout(() => {
- console.log('stop writing to file.txt');
- readable.unpipe(writable);
- console.log('manually close the file stream');
- writable.end();
-}, 1000);
-```
-
-#### readable.unshift(chunk)
-
-* `chunk` {Buffer|String} Chunk of data to unshift onto the read queue
-
-This is useful in certain cases where a stream is being consumed by a
-parser, which needs to "un-consume" some data that it has
-optimistically pulled out of the source, so that the stream can be
-passed on to some other party.
-
-Note that `stream.unshift(chunk)` cannot be called after the [`'end'`][] event
-has been triggered; a runtime error will be raised.
-
-If you find that you must often call `stream.unshift(chunk)` in your
-programs, consider implementing a [Transform][] stream instead. (See [API
-for Stream Implementors][].)
-
-```js
-// Pull off a header delimited by \n\n
-// use unshift() if we get too much
-// Call the callback with (error, header, stream)
-const StringDecoder = require('string_decoder').StringDecoder;
-function parseHeader(stream, callback) {
- stream.on('error', callback);
- stream.on('readable', onReadable);
- var decoder = new StringDecoder('utf8');
- var header = '';
- function onReadable() {
- var chunk;
- while (null !== (chunk = stream.read())) {
- var str = decoder.write(chunk);
- if (str.match(/\n\n/)) {
- // found the header boundary
- var split = str.split(/\n\n/);
- header += split.shift();
- var remaining = split.join('\n\n');
- var buf = new Buffer(remaining, 'utf8');
- if (buf.length)
- stream.unshift(buf);
- stream.removeListener('error', callback);
- stream.removeListener('readable', onReadable);
- // now the body of the message can be read from the stream.
- callback(null, header, stream);
- } else {
- // still reading the header.
- header += str;
- }
- }
- }
-}
-```
-
-Note that, unlike [`stream.push(chunk)`][stream-push], `stream.unshift(chunk)`
-will not end the reading process by resetting the internal reading state of the
-stream. This can cause unexpected results if `unshift()` is called during a
-read (i.e. from within a [`stream._read()`][stream-_read] implementation on a
-custom stream). Following the call to `unshift()` with an immediate
-[`stream.push('')`][stream-push] will reset the reading state appropriately,
-however it is best to simply avoid calling `unshift()` while in the process of
-performing a read.
-
-#### readable.wrap(stream)
-
-* `stream` {Stream} An "old style" readable stream
-
-Versions of Node.js prior to v0.10 had streams that did not implement the
-entire Streams API as it is today. (See [Compatibility][] for
-more information.)
-
-If you are using an older Node.js library that emits [`'data'`][] events and
-has a [`stream.pause()`][stream-pause] method that is advisory only, then you
-can use the `wrap()` method to create a [Readable][] stream that uses the old
-stream as its data source.
-
-You will very rarely ever need to call this function, but it exists
-as a convenience for interacting with old Node.js programs and libraries.
-
-For example:
-
-```js
-const OldReader = require('./old-api-module.js').OldReader;
-const Readable = require('stream').Readable;
-const oreader = new OldReader;
-const myReader = new Readable().wrap(oreader);
-
-myReader.on('readable', () => {
- myReader.read(); // etc.
-});
-```
-
-### Class: stream.Transform
-
-Transform streams are [Duplex][] streams where the output is in some way
-computed from the input. They implement both the [Readable][] and
-[Writable][] interfaces.
-
-Examples of Transform streams include:
-
-* [zlib streams][zlib]
-* [crypto streams][crypto]
-
-### Class: stream.Writable
-
-
-
-The Writable stream interface is an abstraction for a *destination*
-that you are writing data *to*.
-
-Examples of writable streams include:
-
-* [HTTP requests, on the client][]
-* [HTTP responses, on the server][]
-* [fs write streams][]
-* [zlib streams][zlib]
-* [crypto streams][crypto]
-* [TCP sockets][]
-* [child process stdin][]
-* [`process.stdout`][], [`process.stderr`][]
-
-#### Event: 'drain'
-
-If a [`stream.write(chunk)`][stream-write] call returns `false`, then the
-`'drain'` event will indicate when it is appropriate to begin writing more data
-to the stream.
-
-```js
-// Write the data to the supplied writable stream one million times.
-// Be attentive to back-pressure.
-function writeOneMillionTimes(writer, data, encoding, callback) {
- var i = 1000000;
- write();
- function write() {
- var ok = true;
- do {
- i -= 1;
- if (i === 0) {
- // last time!
- writer.write(data, encoding, callback);
- } else {
- // see if we should continue, or wait
- // don't pass the callback, because we're not done yet.
- ok = writer.write(data, encoding);
- }
- } while (i > 0 && ok);
- if (i > 0) {
- // had to stop early!
- // write some more once it drains
- writer.once('drain', write);
- }
- }
-}
-```
-
-#### Event: 'error'
-
-* {Error}
-
-Emitted if there was an error when writing or piping data.
-
-#### Event: 'finish'
-
-When the [`stream.end()`][stream-end] method has been called, and all data has
-been flushed to the underlying system, this event is emitted.
-
-```javascript
-var writer = getWritableStreamSomehow();
-for (var i = 0; i < 100; i ++) {
- writer.write('hello, #${i}!\n');
-}
-writer.end('this is the end\n');
-writer.on('finish', () => {
- console.error('all writes are now complete.');
-});
-```
-
-#### Event: 'pipe'
-
-* `src` {stream.Readable} source stream that is piping to this writable
-
-This is emitted whenever the [`stream.pipe()`][] method is called on a readable
-stream, adding this writable to its set of destinations.
-
-```js
-var writer = getWritableStreamSomehow();
-var reader = getReadableStreamSomehow();
-writer.on('pipe', (src) => {
- console.error('something is piping into the writer');
- assert.equal(src, reader);
-});
-reader.pipe(writer);
-```
-
-#### Event: 'unpipe'
-
-* `src` {[Readable][] Stream} The source stream that
- [unpiped][`stream.unpipe()`] this writable
-
-This is emitted whenever the [`stream.unpipe()`][] method is called on a
-readable stream, removing this writable from its set of destinations.
-
-```js
-var writer = getWritableStreamSomehow();
-var reader = getReadableStreamSomehow();
-writer.on('unpipe', (src) => {
- console.error('something has stopped piping into the writer');
- assert.equal(src, reader);
-});
-reader.pipe(writer);
-reader.unpipe(writer);
-```
-
-#### writable.cork()
-
-Forces buffering of all writes.
-
-Buffered data will be flushed either at [`stream.uncork()`][] or at
-[`stream.end()`][stream-end] call.
-
-#### writable.end([chunk][, encoding][, callback])
-
-* `chunk` {String|Buffer} Optional data to write
-* `encoding` {String} The encoding, if `chunk` is a String
-* `callback` {Function} Optional callback for when the stream is finished
-
-Call this method when no more data will be written to the stream. If supplied,
-the callback is attached as a listener on the [`'finish'`][] event.
-
-Calling [`stream.write()`][stream-write] after calling
-[`stream.end()`][stream-end] will raise an error.
-
-```js
-// write 'hello, ' and then end with 'world!'
-var file = fs.createWriteStream('example.txt');
-file.write('hello, ');
-file.end('world!');
-// writing more now is not allowed!
-```
-
-#### writable.setDefaultEncoding(encoding)
-
-* `encoding` {String} The new default encoding
-
-Sets the default encoding for a writable stream.
-
-#### writable.uncork()
-
-Flush all data, buffered since [`stream.cork()`][] call.
-
-#### writable.write(chunk[, encoding][, callback])
-
-* `chunk` {String|Buffer} The data to write
-* `encoding` {String} The encoding, if `chunk` is a String
-* `callback` {Function} Callback for when this chunk of data is flushed
-* Returns: {Boolean} `true` if the data was handled completely.
-
-This method writes some data to the underlying system, and calls the
-supplied callback once the data has been fully handled.
-
-The return value indicates if you should continue writing right now.
-If the data had to be buffered internally, then it will return
-`false`. Otherwise, it will return `true`.
-
-This return value is strictly advisory. You MAY continue to write,
-even if it returns `false`. However, writes will be buffered in
-memory, so it is best not to do this excessively. Instead, wait for
-the [`'drain'`][] event before writing more data.
-
-
-## API for Stream Implementors
-
-
-
-To implement any sort of stream, the pattern is the same:
-
-1. Extend the appropriate parent class in your own subclass. (The
- [`util.inherits()`][] method is particularly helpful for this.)
-2. Call the appropriate parent class constructor in your constructor,
- to be sure that the internal mechanisms are set up properly.
-3. Implement one or more specific methods, as detailed below.
-
-The class to extend and the method(s) to implement depend on the sort
-of stream class you are writing:
-
-
-
-In your implementation code, it is very important to never call the methods
-described in [API for Stream Consumers][]. Otherwise, you can potentially cause
-adverse side effects in programs that consume your streaming interfaces.
-
-### Class: stream.Duplex
-
-
-
-A "duplex" stream is one that is both Readable and Writable, such as a TCP
-socket connection.
-
-Note that `stream.Duplex` is an abstract class designed to be extended
-with an underlying implementation of the [`stream._read(size)`][stream-_read]
-and [`stream._write(chunk, encoding, callback)`][stream-_write] methods as you
-would with a Readable or Writable stream class.
-
-Since JavaScript doesn't have multiple prototypal inheritance, this class
-prototypally inherits from Readable, and then parasitically from Writable. It is
-thus up to the user to implement both the low-level
-[`stream._read(n)`][stream-_read] method as well as the low-level
-[`stream._write(chunk, encoding, callback)`][stream-_write] method on extension
-duplex classes.
-
-#### new stream.Duplex(options)
-
-* `options` {Object} Passed to both Writable and Readable
- constructors. Also has the following fields:
- * `allowHalfOpen` {Boolean} Default = `true`. If set to `false`, then
- the stream will automatically end the readable side when the
- writable side ends and vice versa.
- * `readableObjectMode` {Boolean} Default = `false`. Sets `objectMode`
- for readable side of the stream. Has no effect if `objectMode`
- is `true`.
- * `writableObjectMode` {Boolean} Default = `false`. Sets `objectMode`
- for writable side of the stream. Has no effect if `objectMode`
- is `true`.
-
-In classes that extend the Duplex class, make sure to call the
-constructor so that the buffering settings can be properly
-initialized.
-
-### Class: stream.PassThrough
-
-This is a trivial implementation of a [Transform][] stream that simply
-passes the input bytes across to the output. Its purpose is mainly
-for examples and testing, but there are occasionally use cases where
-it can come in handy as a building block for novel sorts of streams.
-
-### Class: stream.Readable
-
-
-
-`stream.Readable` is an abstract class designed to be extended with an
-underlying implementation of the [`stream._read(size)`][stream-_read] method.
-
-Please see [API for Stream Consumers][] for how to consume
-streams in your programs. What follows is an explanation of how to
-implement Readable streams in your programs.
-
-#### new stream.Readable([options])
-
-* `options` {Object}
- * `highWaterMark` {Number} The maximum number of bytes to store in
- the internal buffer before ceasing to read from the underlying
- resource. Default = `16384` (16kb), or `16` for `objectMode` streams
- * `encoding` {String} If specified, then buffers will be decoded to
- strings using the specified encoding. Default = `null`
- * `objectMode` {Boolean} Whether this stream should behave
- as a stream of objects. Meaning that [`stream.read(n)`][stream-read] returns
- a single value instead of a Buffer of size n. Default = `false`
- * `read` {Function} Implementation for the [`stream._read()`][stream-_read]
- method.
-
-In classes that extend the Readable class, make sure to call the
-Readable constructor so that the buffering settings can be properly
-initialized.
-
-#### readable.\_read(size)
-
-* `size` {Number} Number of bytes to read asynchronously
-
-Note: **Implement this method, but do NOT call it directly.**
-
-This method is prefixed with an underscore because it is internal to the
-class that defines it and should only be called by the internal Readable
-class methods. All Readable stream implementations must provide a \_read
-method to fetch data from the underlying resource.
-
-When `_read()` is called, if data is available from the resource, the `_read()`
-implementation should start pushing that data into the read queue by calling
-[`this.push(dataChunk)`][stream-push]. `_read()` should continue reading from
-the resource and pushing data until push returns `false`, at which point it
-should stop reading from the resource. Only when `_read()` is called again after
-it has stopped should it start reading more data from the resource and pushing
-that data onto the queue.
-
-Note: once the `_read()` method is called, it will not be called again until
-the [`stream.push()`][stream-push] method is called.
-
-The `size` argument is advisory. Implementations where a "read" is a
-single call that returns data can use this to know how much data to
-fetch. Implementations where that is not relevant, such as TCP or
-TLS, may ignore this argument, and simply provide data whenever it
-becomes available. There is no need, for example to "wait" until
-`size` bytes are available before calling [`stream.push(chunk)`][stream-push].
-
-#### readable.push(chunk[, encoding])
-
-
-* `chunk` {Buffer|Null|String} Chunk of data to push into the read queue
-* `encoding` {String} Encoding of String chunks. Must be a valid
- Buffer encoding, such as `'utf8'` or `'ascii'`
-* return {Boolean} Whether or not more pushes should be performed
-
-Note: **This method should be called by Readable implementors, NOT
-by consumers of Readable streams.**
-
-If a value other than null is passed, The `push()` method adds a chunk of data
-into the queue for subsequent stream processors to consume. If `null` is
-passed, it signals the end of the stream (EOF), after which no more data
-can be written.
-
-The data added with `push()` can be pulled out by calling the
-[`stream.read()`][stream-read] method when the [`'readable'`][] event fires.
-
-This API is designed to be as flexible as possible. For example,
-you may be wrapping a lower-level source which has some sort of
-pause/resume mechanism, and a data callback. In those cases, you
-could wrap the low-level source object by doing something like this:
-
-```js
-// source is an object with readStop() and readStart() methods,
-// and an `ondata` member that gets called when it has data, and
-// an `onend` member that gets called when the data is over.
-
-util.inherits(SourceWrapper, Readable);
-
-function SourceWrapper(options) {
- Readable.call(this, options);
-
- this._source = getLowlevelSourceObject();
-
- // Every time there's data, we push it into the internal buffer.
- this._source.ondata = (chunk) => {
- // if push() returns false, then we need to stop reading from source
- if (!this.push(chunk))
- this._source.readStop();
- };
-
- // When the source ends, we push the EOF-signaling `null` chunk
- this._source.onend = () => {
- this.push(null);
- };
-}
-
-// _read will be called when the stream wants to pull more data in
-// the advisory size argument is ignored in this case.
-SourceWrapper.prototype._read = function(size) {
- this._source.readStart();
-};
-```
-
-#### Example: A Counting Stream
-
-
-
-This is a basic example of a Readable stream. It emits the numerals
-from 1 to 1,000,000 in ascending order, and then ends.
-
-```js
-const Readable = require('stream').Readable;
-const util = require('util');
-util.inherits(Counter, Readable);
-
-function Counter(opt) {
- Readable.call(this, opt);
- this._max = 1000000;
- this._index = 1;
-}
-
-Counter.prototype._read = function() {
- var i = this._index++;
- if (i > this._max)
- this.push(null);
- else {
- var str = '' + i;
- var buf = new Buffer(str, 'ascii');
- this.push(buf);
- }
-};
-```
-
-#### Example: SimpleProtocol v1 (Sub-optimal)
-
-This is similar to the `parseHeader` function described
-[here](#stream_readable_unshift_chunk), but implemented as a custom stream.
-Also, note that this implementation does not convert the incoming data to a
-string.
-
-However, this would be better implemented as a [Transform][] stream. See
-[SimpleProtocol v2][] for a better implementation.
-
-```js
-// A parser for a simple data protocol.
-// The "header" is a JSON object, followed by 2 \n characters, and
-// then a message body.
-//
-// NOTE: This can be done more simply as a Transform stream!
-// Using Readable directly for this is sub-optimal. See the
-// alternative example below under the Transform section.
-
-const Readable = require('stream').Readable;
-const util = require('util');
-
-util.inherits(SimpleProtocol, Readable);
-
-function SimpleProtocol(source, options) {
- if (!(this instanceof SimpleProtocol))
- return new SimpleProtocol(source, options);
-
- Readable.call(this, options);
- this._inBody = false;
- this._sawFirstCr = false;
-
- // source is a readable stream, such as a socket or file
- this._source = source;
-
- var self = this;
- source.on('end', () => {
- self.push(null);
- });
-
- // give it a kick whenever the source is readable
- // read(0) will not consume any bytes
- source.on('readable', () => {
- self.read(0);
- });
-
- this._rawHeader = [];
- this.header = null;
-}
-
-SimpleProtocol.prototype._read = function(n) {
- if (!this._inBody) {
- var chunk = this._source.read();
-
- // if the source doesn't have data, we don't have data yet.
- if (chunk === null)
- return this.push('');
-
- // check if the chunk has a \n\n
- var split = -1;
- for (var i = 0; i < chunk.length; i++) {
- if (chunk[i] === 10) { // '\n'
- if (this._sawFirstCr) {
- split = i;
- break;
- } else {
- this._sawFirstCr = true;
- }
- } else {
- this._sawFirstCr = false;
- }
- }
-
- if (split === -1) {
- // still waiting for the \n\n
- // stash the chunk, and try again.
- this._rawHeader.push(chunk);
- this.push('');
- } else {
- this._inBody = true;
- var h = chunk.slice(0, split);
- this._rawHeader.push(h);
- var header = Buffer.concat(this._rawHeader).toString();
- try {
- this.header = JSON.parse(header);
- } catch (er) {
- this.emit('error', new Error('invalid simple protocol data'));
- return;
- }
- // now, because we got some extra data, unshift the rest
- // back into the read queue so that our consumer will see it.
- var b = chunk.slice(split);
- this.unshift(b);
- // calling unshift by itself does not reset the reading state
- // of the stream; since we're inside _read, doing an additional
- // push('') will reset the state appropriately.
- this.push('');
-
- // and let them know that we are done parsing the header.
- this.emit('header', this.header);
- }
- } else {
- // from there on, just provide the data to our consumer.
- // careful not to push(null), since that would indicate EOF.
- var chunk = this._source.read();
- if (chunk) this.push(chunk);
- }
-};
-
-// Usage:
-// var parser = new SimpleProtocol(source);
-// Now parser is a readable stream that will emit 'header'
-// with the parsed header data.
-```
-
-### Class: stream.Transform
-
-A "transform" stream is a duplex stream where the output is causally
-connected in some way to the input, such as a [zlib][] stream or a
-[crypto][] stream.
-
-There is no requirement that the output be the same size as the input,
-the same number of chunks, or arrive at the same time. For example, a
-Hash stream will only ever have a single chunk of output which is
-provided when the input is ended. A zlib stream will produce output
-that is either much smaller or much larger than its input.
-
-Rather than implement the [`stream._read()`][stream-_read] and
-[`stream._write()`][stream-_write] methods, Transform classes must implement the
-[`stream._transform()`][stream-_transform] method, and may optionally
-also implement the [`stream._flush()`][stream-_flush] method. (See below.)
-
-#### new stream.Transform([options])
-
-* `options` {Object} Passed to both Writable and Readable
- constructors. Also has the following fields:
- * `transform` {Function} Implementation for the
- [`stream._transform()`][stream-_transform] method.
- * `flush` {Function} Implementation for the [`stream._flush()`][stream-_flush]
- method.
-
-In classes that extend the Transform class, make sure to call the
-constructor so that the buffering settings can be properly
-initialized.
-
-#### Events: 'finish' and 'end'
-
-The [`'finish'`][] and [`'end'`][] events are from the parent Writable
-and Readable classes respectively. The `'finish'` event is fired after
-[`stream.end()`][stream-end] is called and all chunks have been processed by
-[`stream._transform()`][stream-_transform], `'end'` is fired after all data has
-been output which is after the callback in [`stream._flush()`][stream-_flush]
-has been called.
-
-#### transform.\_flush(callback)
-
-* `callback` {Function} Call this function (optionally with an error
- argument) when you are done flushing any remaining data.
-
-Note: **This function MUST NOT be called directly.** It MAY be implemented
-by child classes, and if so, will be called by the internal Transform
-class methods only.
-
-In some cases, your transform operation may need to emit a bit more
-data at the end of the stream. For example, a `Zlib` compression
-stream will store up some internal state so that it can optimally
-compress the output. At the end, however, it needs to do the best it
-can with what is left, so that the data will be complete.
-
-In those cases, you can implement a `_flush()` method, which will be
-called at the very end, after all the written data is consumed, but
-before emitting [`'end'`][] to signal the end of the readable side. Just
-like with [`stream._transform()`][stream-_transform], call
-`transform.push(chunk)` zero or more times, as appropriate, and call `callback`
-when the flush operation is complete.
-
-This method is prefixed with an underscore because it is internal to
-the class that defines it, and should not be called directly by user
-programs. However, you **are** expected to override this method in
-your own extension classes.
-
-#### transform.\_transform(chunk, encoding, callback)
-
-* `chunk` {Buffer|String} The chunk to be transformed. Will **always**
- be a buffer unless the `decodeStrings` option was set to `false`.
-* `encoding` {String} If the chunk is a string, then this is the
- encoding type. If chunk is a buffer, then this is the special
- value - 'buffer', ignore it in this case.
-* `callback` {Function} Call this function (optionally with an error
- argument and data) when you are done processing the supplied chunk.
-
-Note: **This function MUST NOT be called directly.** It should be
-implemented by child classes, and called by the internal Transform
-class methods only.
-
-All Transform stream implementations must provide a `_transform()`
-method to accept input and produce output.
-
-`_transform()` should do whatever has to be done in this specific
-Transform class, to handle the bytes being written, and pass them off
-to the readable portion of the interface. Do asynchronous I/O,
-process things, and so on.
-
-Call `transform.push(outputChunk)` 0 or more times to generate output
-from this input chunk, depending on how much data you want to output
-as a result of this chunk.
-
-Call the callback function only when the current chunk is completely
-consumed. Note that there may or may not be output as a result of any
-particular input chunk. If you supply a second argument to the callback
-it will be passed to the push method. In other words the following are
-equivalent:
-
-```js
-transform.prototype._transform = function (data, encoding, callback) {
- this.push(data);
- callback();
-};
-
-transform.prototype._transform = function (data, encoding, callback) {
- callback(null, data);
-};
-```
-
-This method is prefixed with an underscore because it is internal to
-the class that defines it, and should not be called directly by user
-programs. However, you **are** expected to override this method in
-your own extension classes.
-
-#### Example: `SimpleProtocol` parser v2
-
-The example [here](#stream_example_simpleprotocol_v1_sub_optimal) of a simple
-protocol parser can be implemented simply by using the higher level
-[Transform][] stream class, similar to the `parseHeader` and `SimpleProtocol
-v1` examples.
-
-In this example, rather than providing the input as an argument, it
-would be piped into the parser, which is a more idiomatic Node.js stream
-approach.
-
-```javascript
-const util = require('util');
-const Transform = require('stream').Transform;
-util.inherits(SimpleProtocol, Transform);
-
-function SimpleProtocol(options) {
- if (!(this instanceof SimpleProtocol))
- return new SimpleProtocol(options);
-
- Transform.call(this, options);
- this._inBody = false;
- this._sawFirstCr = false;
- this._rawHeader = [];
- this.header = null;
-}
-
-SimpleProtocol.prototype._transform = function(chunk, encoding, done) {
- if (!this._inBody) {
- // check if the chunk has a \n\n
- var split = -1;
- for (var i = 0; i < chunk.length; i++) {
- if (chunk[i] === 10) { // '\n'
- if (this._sawFirstCr) {
- split = i;
- break;
- } else {
- this._sawFirstCr = true;
- }
- } else {
- this._sawFirstCr = false;
- }
- }
-
- if (split === -1) {
- // still waiting for the \n\n
- // stash the chunk, and try again.
- this._rawHeader.push(chunk);
- } else {
- this._inBody = true;
- var h = chunk.slice(0, split);
- this._rawHeader.push(h);
- var header = Buffer.concat(this._rawHeader).toString();
- try {
- this.header = JSON.parse(header);
- } catch (er) {
- this.emit('error', new Error('invalid simple protocol data'));
- return;
- }
- // and let them know that we are done parsing the header.
- this.emit('header', this.header);
-
- // now, because we got some extra data, emit this first.
- this.push(chunk.slice(split));
- }
- } else {
- // from there on, just provide the data to our consumer as-is.
- this.push(chunk);
- }
- done();
-};
-
-// Usage:
-// var parser = new SimpleProtocol();
-// source.pipe(parser)
-// Now parser is a readable stream that will emit 'header'
-// with the parsed header data.
-```
-
-### Class: stream.Writable
-
-
-
-`stream.Writable` is an abstract class designed to be extended with an
-underlying implementation of the
-[`stream._write(chunk, encoding, callback)`][stream-_write] method.
-
-Please see [API for Stream Consumers][] for how to consume
-writable streams in your programs. What follows is an explanation of
-how to implement Writable streams in your programs.
-
-#### new stream.Writable([options])
-
-* `options` {Object}
- * `highWaterMark` {Number} Buffer level when
- [`stream.write()`][stream-write] starts returning `false`. Default = `16384`
- (16kb), or `16` for `objectMode` streams.
- * `decodeStrings` {Boolean} Whether or not to decode strings into
- Buffers before passing them to [`stream._write()`][stream-_write].
- Default = `true`
- * `objectMode` {Boolean} Whether or not the
- [`stream.write(anyObj)`][stream-write] is a valid operation. If set you can
- write arbitrary data instead of only `Buffer` / `String` data.
- Default = `false`
- * `write` {Function} Implementation for the
- [`stream._write()`][stream-_write] method.
- * `writev` {Function} Implementation for the
- [`stream._writev()`][stream-_writev] method.
-
-In classes that extend the Writable class, make sure to call the
-constructor so that the buffering settings can be properly
-initialized.
-
-#### writable.\_write(chunk, encoding, callback)
-
-* `chunk` {Buffer|String} The chunk to be written. Will **always**
- be a buffer unless the `decodeStrings` option was set to `false`.
-* `encoding` {String} If the chunk is a string, then this is the
- encoding type. If chunk is a buffer, then this is the special
- value - 'buffer', ignore it in this case.
-* `callback` {Function} Call this function (optionally with an error
- argument) when you are done processing the supplied chunk.
-
-All Writable stream implementations must provide a
-[`stream._write()`][stream-_write] method to send data to the underlying
-resource.
-
-Note: **This function MUST NOT be called directly.** It should be
-implemented by child classes, and called by the internal Writable
-class methods only.
-
-Call the callback using the standard `callback(error)` pattern to
-signal that the write completed successfully or with an error.
-
-If the `decodeStrings` flag is set in the constructor options, then
-`chunk` may be a string rather than a Buffer, and `encoding` will
-indicate the sort of string that it is. This is to support
-implementations that have an optimized handling for certain string
-data encodings. If you do not explicitly set the `decodeStrings`
-option to `false`, then you can safely ignore the `encoding` argument,
-and assume that `chunk` will always be a Buffer.
-
-This method is prefixed with an underscore because it is internal to
-the class that defines it, and should not be called directly by user
-programs. However, you **are** expected to override this method in
-your own extension classes.
-
-#### writable.\_writev(chunks, callback)
-
-* `chunks` {Array} The chunks to be written. Each chunk has following
- format: `{ chunk: ..., encoding: ... }`.
-* `callback` {Function} Call this function (optionally with an error
- argument) when you are done processing the supplied chunks.
-
-Note: **This function MUST NOT be called directly.** It may be
-implemented by child classes, and called by the internal Writable
-class methods only.
-
-This function is completely optional to implement. In most cases it is
-unnecessary. If implemented, it will be called with all the chunks
-that are buffered in the write queue.
-
-
-## Simplified Constructor API
-
-
-
-In simple cases there is now the added benefit of being able to construct a
-stream without inheritance.
-
-This can be done by passing the appropriate methods as constructor options:
-
-Examples:
-
-### Duplex
-
-```js
-var duplex = new stream.Duplex({
- read: function(n) {
- // sets this._read under the hood
-
- // push data onto the read queue, passing null
- // will signal the end of the stream (EOF)
- this.push(chunk);
- },
- write: function(chunk, encoding, next) {
- // sets this._write under the hood
-
- // An optional error can be passed as the first argument
- next()
- }
-});
-
-// or
-
-var duplex = new stream.Duplex({
- read: function(n) {
- // sets this._read under the hood
-
- // push data onto the read queue, passing null
- // will signal the end of the stream (EOF)
- this.push(chunk);
- },
- writev: function(chunks, next) {
- // sets this._writev under the hood
-
- // An optional error can be passed as the first argument
- next()
- }
-});
-```
-
-### Readable
-
-```js
-var readable = new stream.Readable({
- read: function(n) {
- // sets this._read under the hood
-
- // push data onto the read queue, passing null
- // will signal the end of the stream (EOF)
- this.push(chunk);
- }
-});
-```
-
-### Transform
-
-```js
-var transform = new stream.Transform({
- transform: function(chunk, encoding, next) {
- // sets this._transform under the hood
-
- // generate output as many times as needed
- // this.push(chunk);
-
- // call when the current chunk is consumed
- next();
- },
- flush: function(done) {
- // sets this._flush under the hood
-
- // generate output as many times as needed
- // this.push(chunk);
-
- done();
- }
-});
-```
-
-### Writable
-
-```js
-var writable = new stream.Writable({
- write: function(chunk, encoding, next) {
- // sets this._write under the hood
-
- // An optional error can be passed as the first argument
- next()
- }
-});
-
-// or
-
-var writable = new stream.Writable({
- writev: function(chunks, next) {
- // sets this._writev under the hood
-
- // An optional error can be passed as the first argument
- next()
- }
-});
-```
-
-## Streams: Under the Hood
-
-
-
-### Buffering
-
-
-
-Both Writable and Readable streams will buffer data on an internal
-object which can be retrieved from `_writableState.getBuffer()` or
-`_readableState.buffer`, respectively.
-
-The amount of data that will potentially be buffered depends on the
-`highWaterMark` option which is passed into the constructor.
-
-Buffering in Readable streams happens when the implementation calls
-[`stream.push(chunk)`][stream-push]. If the consumer of the Stream does not
-call [`stream.read()`][stream-read], then the data will sit in the internal
-queue until it is consumed.
-
-Buffering in Writable streams happens when the user calls
-[`stream.write(chunk)`][stream-write] repeatedly, even when it returns `false`.
-
-The purpose of streams, especially with the [`stream.pipe()`][] method, is to
-limit the buffering of data to acceptable levels, so that sources and
-destinations of varying speed will not overwhelm the available memory.
-
-### Compatibility with Older Node.js Versions
-
-
-
-In versions of Node.js prior to v0.10, the Readable stream interface was
-simpler, but also less powerful and less useful.
-
-* Rather than waiting for you to call the [`stream.read()`][stream-read] method,
- [`'data'`][] events would start emitting immediately. If you needed to do
- some I/O to decide how to handle data, then you had to store the chunks
- in some kind of buffer so that they would not be lost.
-* The [`stream.pause()`][stream-pause] method was advisory, rather than
- guaranteed. This meant that you still had to be prepared to receive
- [`'data'`][] events even when the stream was in a paused state.
-
-In Node.js v0.10, the [Readable][] class was added.
-For backwards compatibility with older Node.js programs, Readable streams
-switch into "flowing mode" when a [`'data'`][] event handler is added, or
-when the [`stream.resume()`][stream-resume] method is called. The effect is
-that, even if you are not using the new [`stream.read()`][stream-read] method
-and [`'readable'`][] event, you no longer have to worry about losing
-[`'data'`][] chunks.
-
-Most programs will continue to function normally. However, this
-introduces an edge case in the following conditions:
-
-* No [`'data'`][] event handler is added.
-* The [`stream.resume()`][stream-resume] method is never called.
-* The stream is not piped to any writable destination.
-
-For example, consider the following code:
-
-```js
-// WARNING! BROKEN!
-net.createServer((socket) => {
-
- // we add an 'end' method, but never consume the data
- socket.on('end', () => {
- // It will never get here.
- socket.end('I got your message (but didnt read it)\n');
- });
-
-}).listen(1337);
-```
-
-In versions of Node.js prior to v0.10, the incoming message data would be
-simply discarded. However, in Node.js v0.10 and beyond,
-the socket will remain paused forever.
-
-The workaround in this situation is to call the
-[`stream.resume()`][stream-resume] method to start the flow of data:
-
-```js
-// Workaround
-net.createServer((socket) => {
-
- socket.on('end', () => {
- socket.end('I got your message (but didnt read it)\n');
- });
-
- // start the flow of data, discarding it.
- socket.resume();
-
-}).listen(1337);
-```
-
-In addition to new Readable streams switching into flowing mode,
-pre-v0.10 style streams can be wrapped in a Readable class using the
-[`stream.wrap()`][] method.
-
-
-### Object Mode
-
-
-
-Normally, Streams operate on Strings and Buffers exclusively.
-
-Streams that are in **object mode** can emit generic JavaScript values
-other than Buffers and Strings.
-
-A Readable stream in object mode will always return a single item from
-a call to [`stream.read(size)`][stream-read], regardless of what the size
-argument is.
-
-A Writable stream in object mode will always ignore the `encoding`
-argument to [`stream.write(data, encoding)`][stream-write].
-
-The special value `null` still retains its special value for object
-mode streams. That is, for object mode readable streams, `null` as a
-return value from [`stream.read()`][stream-read] indicates that there is no more
-data, and [`stream.push(null)`][stream-push] will signal the end of stream data
-(`EOF`).
-
-No streams in Node.js core are object mode streams. This pattern is only
-used by userland streaming libraries.
-
-You should set `objectMode` in your stream child class constructor on
-the options object. Setting `objectMode` mid-stream is not safe.
-
-For Duplex streams `objectMode` can be set exclusively for readable or
-writable side with `readableObjectMode` and `writableObjectMode`
-respectively. These options can be used to implement parsers and
-serializers with Transform streams.
-
-```js
-const util = require('util');
-const StringDecoder = require('string_decoder').StringDecoder;
-const Transform = require('stream').Transform;
-util.inherits(JSONParseStream, Transform);
-
-// Gets \n-delimited JSON string data, and emits the parsed objects
-function JSONParseStream() {
- if (!(this instanceof JSONParseStream))
- return new JSONParseStream();
-
- Transform.call(this, { readableObjectMode : true });
-
- this._buffer = '';
- this._decoder = new StringDecoder('utf8');
-}
-
-JSONParseStream.prototype._transform = function(chunk, encoding, cb) {
- this._buffer += this._decoder.write(chunk);
- // split on newlines
- var lines = this._buffer.split(/\r?\n/);
- // keep the last partial line buffered
- this._buffer = lines.pop();
- for (var l = 0; l < lines.length; l++) {
- var line = lines[l];
- try {
- var obj = JSON.parse(line);
- } catch (er) {
- this.emit('error', er);
- return;
- }
- // push the parsed object out to the readable consumer
- this.push(obj);
- }
- cb();
-};
-
-JSONParseStream.prototype._flush = function(cb) {
- // Just handle any leftover
- var rem = this._buffer.trim();
- if (rem) {
- try {
- var obj = JSON.parse(rem);
- } catch (er) {
- this.emit('error', er);
- return;
- }
- // push the parsed object out to the readable consumer
- this.push(obj);
- }
- cb();
-};
-```
-
-### `stream.read(0)`
-
-There are some cases where you want to trigger a refresh of the
-underlying readable stream mechanisms, without actually consuming any
-data. In that case, you can call `stream.read(0)`, which will always
-return null.
-
-If the internal read buffer is below the `highWaterMark`, and the
-stream is not currently reading, then calling `stream.read(0)` will trigger
-a low-level [`stream._read()`][stream-_read] call.
-
-There is almost never a need to do this. However, you will see some
-cases in Node.js's internals where this is done, particularly in the
-Readable stream class internals.
-
-### `stream.push('')`
-
-Pushing a zero-byte string or Buffer (when not in [Object mode][]) has an
-interesting side effect. Because it *is* a call to
-[`stream.push()`][stream-push], it will end the `reading` process. However, it
-does *not* add any data to the readable buffer, so there's nothing for
-a user to consume.
-
-Very rarely, there are cases where you have no data to provide now,
-but the consumer of your stream (or, perhaps, another bit of your own
-code) will know when to check again, by calling [`stream.read(0)`][stream-read].
-In those cases, you *may* call `stream.push('')`.
-
-So far, the only use case for this functionality is in the
-[`tls.CryptoStream`][] class, which is deprecated in Node.js/io.js v1.0. If you
-find that you have to use `stream.push('')`, please consider another
-approach, because it almost certainly indicates that something is
-horribly wrong.
-
-[`'data'`]: #stream_event_data
-[`'drain'`]: #stream_event_drain
-[`'end'`]: #stream_event_end
-[`'finish'`]: #stream_event_finish
-[`'readable'`]: #stream_event_readable
-[`buf.toString(encoding)`]: https://nodejs.org/docs/v5.8.0/api/buffer.html#buffer_buf_tostring_encoding_start_end
-[`EventEmitter`]: https://nodejs.org/docs/v5.8.0/api/events.html#events_class_eventemitter
-[`process.stderr`]: https://nodejs.org/docs/v5.8.0/api/process.html#process_process_stderr
-[`process.stdin`]: https://nodejs.org/docs/v5.8.0/api/process.html#process_process_stdin
-[`process.stdout`]: https://nodejs.org/docs/v5.8.0/api/process.html#process_process_stdout
-[`stream.cork()`]: #stream_writable_cork
-[`stream.pipe()`]: #stream_readable_pipe_destination_options
-[`stream.uncork()`]: #stream_writable_uncork
-[`stream.unpipe()`]: #stream_readable_unpipe_destination
-[`stream.wrap()`]: #stream_readable_wrap_stream
-[`tls.CryptoStream`]: https://nodejs.org/docs/v5.8.0/api/tls.html#tls_class_cryptostream
-[`util.inherits()`]: https://nodejs.org/docs/v5.8.0/api/util.html#util_util_inherits_constructor_superconstructor
-[API for Stream Consumers]: #stream_api_for_stream_consumers
-[API for Stream Implementors]: #stream_api_for_stream_implementors
-[child process stdin]: https://nodejs.org/docs/v5.8.0/api/child_process.html#child_process_child_stdin
-[child process stdout and stderr]: https://nodejs.org/docs/v5.8.0/api/child_process.html#child_process_child_stdout
-[Compatibility]: #stream_compatibility_with_older_node_js_versions
-[crypto]: crypto.html
-[Duplex]: #stream_class_stream_duplex
-[fs read streams]: https://nodejs.org/docs/v5.8.0/api/fs.html#fs_class_fs_readstream
-[fs write streams]: https://nodejs.org/docs/v5.8.0/api/fs.html#fs_class_fs_writestream
-[HTTP requests, on the client]: https://nodejs.org/docs/v5.8.0/api/http.html#http_class_http_clientrequest
-[HTTP responses, on the server]: https://nodejs.org/docs/v5.8.0/api/http.html#http_class_http_serverresponse
-[http-incoming-message]: https://nodejs.org/docs/v5.8.0/api/http.html#http_class_http_incomingmessage
-[Object mode]: #stream_object_mode
-[Readable]: #stream_class_stream_readable
-[SimpleProtocol v2]: #stream_example_simpleprotocol_parser_v2
-[stream-_flush]: #stream_transform_flush_callback
-[stream-_read]: #stream_readable_read_size_1
-[stream-_transform]: #stream_transform_transform_chunk_encoding_callback
-[stream-_write]: #stream_writable_write_chunk_encoding_callback_1
-[stream-_writev]: #stream_writable_writev_chunks_callback
-[stream-end]: #stream_writable_end_chunk_encoding_callback
-[stream-pause]: #stream_readable_pause
-[stream-push]: #stream_readable_push_chunk_encoding
-[stream-read]: #stream_readable_read_size
-[stream-resume]: #stream_readable_resume
-[stream-write]: #stream_writable_write_chunk_encoding_callback
-[TCP sockets]: https://nodejs.org/docs/v5.8.0/api/net.html#net_class_net_socket
-[Transform]: #stream_class_stream_transform
-[Writable]: #stream_class_stream_writable
-[zlib]: zlib.html
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md
deleted file mode 100644
index 83275f19..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# streams WG Meeting 2015-01-30
-
-## Links
-
-* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg
-* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106
-* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/
-
-## Agenda
-
-Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting.
-
-* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105)
-* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101)
-* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102)
-* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99)
-
-## Minutes
-
-### adopt a charter
-
-* group: +1's all around
-
-### What versioning scheme should be adopted?
-* group: +1’s 3.0.0
-* domenic+group: pulling in patches from other sources where appropriate
-* mikeal: version independently, suggesting versions for io.js
-* mikeal+domenic: work with TC to notify in advance of changes
-simpler stream creation
-
-### streamline creation of streams
-* sam: streamline creation of streams
-* domenic: nice simple solution posted
- but, we lose the opportunity to change the model
- may not be backwards incompatible (double check keys)
-
- **action item:** domenic will check
-
-### remove implicit flowing of streams on(‘data’)
-* add isFlowing / isPaused
-* mikeal: worrying that we’re documenting polyfill methods – confuses users
-* domenic: more reflective API is probably good, with warning labels for users
-* new section for mad scientists (reflective stream access)
-* calvin: name the “third state”
-* mikeal: maybe borrow the name from whatwg?
-* domenic: we’re missing the “third state”
-* consensus: kind of difficult to name the third state
-* mikeal: figure out differences in states / compat
-* mathias: always flow on data – eliminates third state
- * explore what it breaks
-
-**action items:**
-* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream)
-* ask rod/build for infrastructure
-* **chris**: explore the “flow on data” approach
-* add isPaused/isFlowing
-* add new docs section
-* move isPaused to that section
-
-
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js
deleted file mode 100644
index ca807af8..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_duplex.js")
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
deleted file mode 100644
index 736693b8..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
+++ /dev/null
@@ -1,75 +0,0 @@
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-'use strict';
-
-/**/
-
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) {
- keys.push(key);
- }return keys;
-};
-/**/
-
-module.exports = Duplex;
-
-/**/
-var processNextTick = require('process-nextick-args');
-/**/
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/**/
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-var keys = objectKeys(Writable.prototype);
-for (var v = 0; v < keys.length; v++) {
- var method = keys[v];
- if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
-}
-
-function Duplex(options) {
- if (!(this instanceof Duplex)) return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false) this.readable = false;
-
- if (options && options.writable === false) this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended) return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- processNextTick(onEndNT, this);
-}
-
-function onEndNT(self) {
- self.end();
-}
-
-function forEach(xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js
deleted file mode 100644
index d06f71f1..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-'use strict';
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/**/
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough)) return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function (chunk, encoding, cb) {
- cb(null, chunk);
-};
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js
deleted file mode 100644
index 54a9d5c5..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js
+++ /dev/null
@@ -1,880 +0,0 @@
-'use strict';
-
-module.exports = Readable;
-
-/**/
-var processNextTick = require('process-nextick-args');
-/**/
-
-/**/
-var isArray = require('isarray');
-/**/
-
-/**/
-var Buffer = require('buffer').Buffer;
-/**/
-
-Readable.ReadableState = ReadableState;
-
-var EE = require('events');
-
-/**/
-var EElistenerCount = function (emitter, type) {
- return emitter.listeners(type).length;
-};
-/**/
-
-/**/
-var Stream;
-(function () {
- try {
- Stream = require('st' + 'ream');
- } catch (_) {} finally {
- if (!Stream) Stream = require('events').EventEmitter;
- }
-})();
-/**/
-
-var Buffer = require('buffer').Buffer;
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/**/
-
-/**/
-var debugUtil = require('util');
-var debug = undefined;
-if (debugUtil && debugUtil.debuglog) {
- debug = debugUtil.debuglog('stream');
-} else {
- debug = function () {};
-}
-/**/
-
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-var Duplex;
-function ReadableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
-
- options = options || {};
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
- this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
-
- // cast to ints.
- this.highWaterMark = ~ ~this.highWaterMark;
-
- this.buffer = [];
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = null;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
- this.resumeScheduled = false;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // when piping, we only care about 'readable' events that happen
- // after read()ing all the bytes and not getting any pushback.
- this.ranOut = false;
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-var Duplex;
-function Readable(options) {
- Duplex = Duplex || require('./_stream_duplex');
-
- if (!(this instanceof Readable)) return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- if (options && typeof options.read === 'function') this._read = options.read;
-
- Stream.call(this);
-}
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function (chunk, encoding) {
- var state = this._readableState;
-
- if (!state.objectMode && typeof chunk === 'string') {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = new Buffer(chunk, encoding);
- encoding = '';
- }
- }
-
- return readableAddChunk(this, state, chunk, encoding, false);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function (chunk) {
- var state = this._readableState;
- return readableAddChunk(this, state, chunk, '', true);
-};
-
-Readable.prototype.isPaused = function () {
- return this._readableState.flowing === false;
-};
-
-function readableAddChunk(stream, state, chunk, encoding, addToFront) {
- var er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (chunk === null) {
- state.reading = false;
- onEofChunk(stream, state);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (state.ended && !addToFront) {
- var e = new Error('stream.push() after EOF');
- stream.emit('error', e);
- } else if (state.endEmitted && addToFront) {
- var e = new Error('stream.unshift() after end event');
- stream.emit('error', e);
- } else {
- var skipAdd;
- if (state.decoder && !addToFront && !encoding) {
- chunk = state.decoder.write(chunk);
- skipAdd = !state.objectMode && chunk.length === 0;
- }
-
- if (!addToFront) state.reading = false;
-
- // Don't add to the buffer if we've decoded to an empty string chunk and
- // we're not in object mode
- if (!skipAdd) {
- // if we want the data now, just emit it.
- if (state.flowing && state.length === 0 && !state.sync) {
- stream.emit('data', chunk);
- stream.read(0);
- } else {
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
-
- if (state.needReadable) emitReadable(stream);
- }
- }
-
- maybeReadMore(stream, state);
- }
- } else if (!addToFront) {
- state.reading = false;
- }
-
- return needMoreData(state);
-}
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
-}
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function (enc) {
- if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
- return this;
-};
-
-// Don't raise the hwm > 8MB
-var MAX_HWM = 0x800000;
-function computeNewHighWaterMark(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2
- n--;
- n |= n >>> 1;
- n |= n >>> 2;
- n |= n >>> 4;
- n |= n >>> 8;
- n |= n >>> 16;
- n++;
- }
- return n;
-}
-
-function howMuchToRead(n, state) {
- if (state.length === 0 && state.ended) return 0;
-
- if (state.objectMode) return n === 0 ? 0 : 1;
-
- if (n === null || isNaN(n)) {
- // only flow one buffer at a time
- if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length;
- }
-
- if (n <= 0) return 0;
-
- // If we're asking for more than the target buffer level,
- // then raise the water mark. Bump up to the next highest
- // power of 2, to prevent increasing it excessively in tiny
- // amounts.
- if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
-
- // don't have that much. return null, unless we've ended.
- if (n > state.length) {
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- } else {
- return state.length;
- }
- }
-
- return n;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function (n) {
- debug('read', n);
- var state = this._readableState;
- var nOrig = n;
-
- if (typeof n !== 'number' || n > 0) state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
- debug('read: emitReadable', state.length, state.ended);
- if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- if (state.length === 0) endReadable(this);
- return null;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
- debug('need readable', doRead);
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length === 0 || state.length - n < state.highWaterMark) {
- doRead = true;
- debug('length less than watermark', doRead);
- }
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading) {
- doRead = false;
- debug('reading or ended', doRead);
- }
-
- if (doRead) {
- debug('do read');
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0) state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- }
-
- // If _read pushed data synchronously, then `reading` will be false,
- // and we need to re-evaluate how much data we can return to the user.
- if (doRead && !state.reading) n = howMuchToRead(nOrig, state);
-
- var ret;
- if (n > 0) ret = fromList(n, state);else ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- }
-
- state.length -= n;
-
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (state.length === 0 && !state.ended) state.needReadable = true;
-
- // If we tried to read() past the EOF, then emit end on the next tick.
- if (nOrig !== n && state.ended && state.length === 0) endReadable(this);
-
- if (ret !== null) this.emit('data', ret);
-
- return ret;
-};
-
-function chunkInvalid(state, chunk) {
- var er = null;
- if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-function onEofChunk(stream, state) {
- if (state.ended) return;
- if (state.decoder) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // emit 'readable' now to make sure it gets picked up.
- emitReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (!state.emittedReadable) {
- debug('emitReadable', state.flowing);
- state.emittedReadable = true;
- if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
- }
-}
-
-function emitReadable_(stream) {
- debug('emit readable');
- stream.emit('readable');
- flow(stream);
-}
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- processNextTick(maybeReadMore_, stream, state);
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
- debug('maybeReadMore read 0');
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;else len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function (n) {
- this.emit('error', new Error('not implemented'));
-};
-
-Readable.prototype.pipe = function (dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
- debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
-
- var endFn = doEnd ? onend : cleanup;
- if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable) {
- debug('onunpipe');
- if (readable === src) {
- cleanup();
- }
- }
-
- function onend() {
- debug('onend');
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- var cleanedUp = false;
- function cleanup() {
- debug('cleanup');
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', cleanup);
- src.removeListener('data', ondata);
-
- cleanedUp = true;
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
- }
-
- src.on('data', ondata);
- function ondata(chunk) {
- debug('ondata');
- var ret = dest.write(chunk);
- if (false === ret) {
- // If the user unpiped during `dest.write()`, it is possible
- // to get stuck in a permanently paused state if that write
- // also returned false.
- if (state.pipesCount === 1 && state.pipes[0] === dest && src.listenerCount('data') === 1 && !cleanedUp) {
- debug('false write response, pause', src._readableState.awaitDrain);
- src._readableState.awaitDrain++;
- }
- src.pause();
- }
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- debug('onerror', er);
- unpipe();
- dest.removeListener('error', onerror);
- if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
- }
- // This is a brutally ugly hack to make sure that our error handler
- // is attached before any userland ones. NEVER DO THIS.
- if (!dest._events || !dest._events.error) dest.on('error', onerror);else if (isArray(dest._events.error)) dest._events.error.unshift(onerror);else dest._events.error = [onerror, dest._events.error];
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- debug('onfinish');
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- debug('unpipe');
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- debug('pipe resume');
- src.resume();
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function () {
- var state = src._readableState;
- debug('pipeOnDrain', state.awaitDrain);
- if (state.awaitDrain) state.awaitDrain--;
- if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
- state.flowing = true;
- flow(src);
- }
- };
-}
-
-Readable.prototype.unpipe = function (dest) {
- var state = this._readableState;
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0) return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes) return this;
-
- if (!dest) dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
- if (dest) dest.emit('unpipe', this);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- state.flowing = false;
-
- for (var _i = 0; _i < len; _i++) {
- dests[_i].emit('unpipe', this);
- }return this;
- }
-
- // try to find the right one.
- var i = indexOf(state.pipes, dest);
- if (i === -1) return this;
-
- state.pipes.splice(i, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1) state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function (ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- // If listening to data, and it has not explicitly been paused,
- // then call resume to start the flow of data on the next tick.
- if (ev === 'data' && false !== this._readableState.flowing) {
- this.resume();
- }
-
- if (ev === 'readable' && !this._readableState.endEmitted) {
- var state = this._readableState;
- if (!state.readableListening) {
- state.readableListening = true;
- state.emittedReadable = false;
- state.needReadable = true;
- if (!state.reading) {
- processNextTick(nReadingNextTick, this);
- } else if (state.length) {
- emitReadable(this, state);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-function nReadingNextTick(self) {
- debug('readable nexttick read 0');
- self.read(0);
-}
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function () {
- var state = this._readableState;
- if (!state.flowing) {
- debug('resume');
- state.flowing = true;
- resume(this, state);
- }
- return this;
-};
-
-function resume(stream, state) {
- if (!state.resumeScheduled) {
- state.resumeScheduled = true;
- processNextTick(resume_, stream, state);
- }
-}
-
-function resume_(stream, state) {
- if (!state.reading) {
- debug('resume read 0');
- stream.read(0);
- }
-
- state.resumeScheduled = false;
- stream.emit('resume');
- flow(stream);
- if (state.flowing && !state.reading) stream.read(0);
-}
-
-Readable.prototype.pause = function () {
- debug('call pause flowing=%j', this._readableState.flowing);
- if (false !== this._readableState.flowing) {
- debug('pause');
- this._readableState.flowing = false;
- this.emit('pause');
- }
- return this;
-};
-
-function flow(stream) {
- var state = stream._readableState;
- debug('flow', state.flowing);
- if (state.flowing) {
- do {
- var chunk = stream.read();
- } while (null !== chunk && state.flowing);
- }
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function (stream) {
- var state = this._readableState;
- var paused = false;
-
- var self = this;
- stream.on('end', function () {
- debug('wrapped end');
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) self.push(chunk);
- }
-
- self.push(null);
- });
-
- stream.on('data', function (chunk) {
- debug('wrapped data');
- if (state.decoder) chunk = state.decoder.write(chunk);
-
- // don't skip over falsy values in objectMode
- if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
-
- var ret = self.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (this[i] === undefined && typeof stream[i] === 'function') {
- this[i] = function (method) {
- return function () {
- return stream[method].apply(stream, arguments);
- };
- }(i);
- }
- }
-
- // proxy certain important events.
- var events = ['error', 'close', 'destroy', 'pause', 'resume'];
- forEach(events, function (ev) {
- stream.on(ev, self.emit.bind(self, ev));
- });
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- self._read = function (n) {
- debug('wrapped _read', n);
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return self;
-};
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-function fromList(n, state) {
- var list = state.buffer;
- var length = state.length;
- var stringMode = !!state.decoder;
- var objectMode = !!state.objectMode;
- var ret;
-
- // nothing in the list, definitely empty.
- if (list.length === 0) return null;
-
- if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) {
- // read it all, truncate the array.
- if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length);
- list.length = 0;
- } else {
- // read just some of it.
- if (n < list[0].length) {
- // just take a part of the first list item.
- // slice is the same for buffers and strings.
- var buf = list[0];
- ret = buf.slice(0, n);
- list[0] = buf.slice(n);
- } else if (n === list[0].length) {
- // first list is a perfect match
- ret = list.shift();
- } else {
- // complex case.
- // we have enough to cover it, but it spans past the first buffer.
- if (stringMode) ret = '';else ret = new Buffer(n);
-
- var c = 0;
- for (var i = 0, l = list.length; i < l && c < n; i++) {
- var buf = list[0];
- var cpy = Math.min(n - c, buf.length);
-
- if (stringMode) ret += buf.slice(0, cpy);else buf.copy(ret, c, 0, cpy);
-
- if (cpy < buf.length) list[0] = buf.slice(cpy);else list.shift();
-
- c += cpy;
- }
- }
- }
-
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0) throw new Error('endReadable called on non-empty stream');
-
- if (!state.endEmitted) {
- state.ended = true;
- processNextTick(endReadableNT, state, stream);
- }
-}
-
-function endReadableNT(state, stream) {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
-}
-
-function forEach(xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-function indexOf(xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-}
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js
deleted file mode 100644
index 625cdc17..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js
+++ /dev/null
@@ -1,180 +0,0 @@
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-'use strict';
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/**/
-
-util.inherits(Transform, Duplex);
-
-function TransformState(stream) {
- this.afterTransform = function (er, data) {
- return afterTransform(stream, er, data);
- };
-
- this.needTransform = false;
- this.transforming = false;
- this.writecb = null;
- this.writechunk = null;
- this.writeencoding = null;
-}
-
-function afterTransform(stream, er, data) {
- var ts = stream._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data !== null && data !== undefined) stream.push(data);
-
- cb(er);
-
- var rs = stream._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- stream._read(rs.highWaterMark);
- }
-}
-
-function Transform(options) {
- if (!(this instanceof Transform)) return new Transform(options);
-
- Duplex.call(this, options);
-
- this._transformState = new TransformState(this);
-
- // when the writable side finishes, then flush out anything remaining.
- var stream = this;
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- if (options) {
- if (typeof options.transform === 'function') this._transform = options.transform;
-
- if (typeof options.flush === 'function') this._flush = options.flush;
- }
-
- this.once('prefinish', function () {
- if (typeof this._flush === 'function') this._flush(function (er) {
- done(stream, er);
- });else done(stream);
- });
-}
-
-Transform.prototype.push = function (chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function (chunk, encoding, cb) {
- throw new Error('not implemented');
-};
-
-Transform.prototype._write = function (chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function (n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-function done(stream, er) {
- if (er) return stream.emit('error', er);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- var ws = stream._writableState;
- var ts = stream._transformState;
-
- if (ws.length) throw new Error('calling transform done when ws.length != 0');
-
- if (ts.transforming) throw new Error('calling transform done when still transforming');
-
- return stream.push(null);
-}
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js
deleted file mode 100644
index 95916c99..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js
+++ /dev/null
@@ -1,516 +0,0 @@
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, encoding, cb), and it'll handle all
-// the drain event emission and buffering.
-
-'use strict';
-
-module.exports = Writable;
-
-/**/
-var processNextTick = require('process-nextick-args');
-/**/
-
-/**/
-var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
-/**/
-
-/**/
-var Buffer = require('buffer').Buffer;
-/**/
-
-Writable.WritableState = WritableState;
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/**/
-
-/**/
-var internalUtil = {
- deprecate: require('util-deprecate')
-};
-/**/
-
-/**/
-var Stream;
-(function () {
- try {
- Stream = require('st' + 'ream');
- } catch (_) {} finally {
- if (!Stream) Stream = require('events').EventEmitter;
- }
-})();
-/**/
-
-var Buffer = require('buffer').Buffer;
-
-util.inherits(Writable, Stream);
-
-function nop() {}
-
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
- this.next = null;
-}
-
-var Duplex;
-function WritableState(options, stream) {
- Duplex = Duplex || require('./_stream_duplex');
-
- options = options || {};
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- var defaultHwm = this.objectMode ? 16 : 16 * 1024;
- this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
-
- // cast to ints.
- this.highWaterMark = ~ ~this.highWaterMark;
-
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // when true all writes will be buffered until .uncork() call
- this.corked = 0;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, because any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function (er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.bufferedRequest = null;
- this.lastBufferedRequest = null;
-
- // number of pending user-supplied write callbacks
- // this must be 0 before 'finish' can be emitted
- this.pendingcb = 0;
-
- // emit prefinish if the only thing we're waiting for is _write cbs
- // This is relevant for synchronous Transform streams
- this.prefinished = false;
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-
- // count buffered requests
- this.bufferedRequestCount = 0;
-
- // create the two objects needed to store the corked requests
- // they are not a linked list, as no new elements are inserted in there
- this.corkedRequestsFree = new CorkedRequest(this);
- this.corkedRequestsFree.next = new CorkedRequest(this);
-}
-
-WritableState.prototype.getBuffer = function writableStateGetBuffer() {
- var current = this.bufferedRequest;
- var out = [];
- while (current) {
- out.push(current);
- current = current.next;
- }
- return out;
-};
-
-(function () {
- try {
- Object.defineProperty(WritableState.prototype, 'buffer', {
- get: internalUtil.deprecate(function () {
- return this.getBuffer();
- }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
- });
- } catch (_) {}
-})();
-
-var Duplex;
-function Writable(options) {
- Duplex = Duplex || require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, though they're not
- // instanceof Writable, they're instanceof Readable.
- if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- if (options) {
- if (typeof options.write === 'function') this._write = options.write;
-
- if (typeof options.writev === 'function') this._writev = options.writev;
- }
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function () {
- this.emit('error', new Error('Cannot pipe. Not readable.'));
-};
-
-function writeAfterEnd(stream, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- processNextTick(cb, er);
-}
-
-// If we get something that is not a buffer, string, null, or undefined,
-// and we're not in objectMode, then that's an error.
-// Otherwise stream chunks are all considered to be of length=1, and the
-// watermarks determine how many objects to keep in the buffer, rather than
-// how many bytes or characters.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
-
- if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
- var er = new TypeError('Invalid non-string/buffer chunk');
- stream.emit('error', er);
- processNextTick(cb, er);
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function (chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function') cb = nop;
-
- if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
- state.pendingcb++;
- ret = writeOrBuffer(this, state, chunk, encoding, cb);
- }
-
- return ret;
-};
-
-Writable.prototype.cork = function () {
- var state = this._writableState;
-
- state.corked++;
-};
-
-Writable.prototype.uncork = function () {
- var state = this._writableState;
-
- if (state.corked) {
- state.corked--;
-
- if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
- }
-};
-
-Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
- // node::ParseEncoding() requires lower case.
- if (typeof encoding === 'string') encoding = encoding.toLowerCase();
- if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
- this._writableState.defaultEncoding = encoding;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
- chunk = new Buffer(chunk, encoding);
- }
- return chunk;
-}
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, chunk, encoding, cb) {
- chunk = decodeChunk(state, chunk, encoding);
-
- if (Buffer.isBuffer(chunk)) encoding = 'buffer';
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret) state.needDrain = true;
-
- if (state.writing || state.corked) {
- var last = state.lastBufferedRequest;
- state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
- if (last) {
- last.next = state.lastBufferedRequest;
- } else {
- state.bufferedRequest = state.lastBufferedRequest;
- }
- state.bufferedRequestCount += 1;
- } else {
- doWrite(stream, state, false, len, chunk, encoding, cb);
- }
-
- return ret;
-}
-
-function doWrite(stream, state, writev, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- --state.pendingcb;
- if (sync) processNextTick(cb, er);else cb(er);
-
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er) onwriteError(stream, state, sync, er, cb);else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(state);
-
- if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
- clearBuffer(stream, state);
- }
-
- if (sync) {
- /**/
- asyncWrite(afterWrite, stream, state, finished, cb);
- /**/
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished) onwriteDrain(stream, state);
- state.pendingcb--;
- cb();
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
- var entry = state.bufferedRequest;
-
- if (stream._writev && entry && entry.next) {
- // Fast case, write everything using _writev()
- var l = state.bufferedRequestCount;
- var buffer = new Array(l);
- var holder = state.corkedRequestsFree;
- holder.entry = entry;
-
- var count = 0;
- while (entry) {
- buffer[count] = entry;
- entry = entry.next;
- count += 1;
- }
-
- doWrite(stream, state, true, state.length, buffer, '', holder.finish);
-
- // doWrite is always async, defer these to save a bit of time
- // as the hot path ends with doWrite
- state.pendingcb++;
- state.lastBufferedRequest = null;
- state.corkedRequestsFree = holder.next;
- holder.next = null;
- } else {
- // Slow case, write chunks one-by-one
- while (entry) {
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, false, len, chunk, encoding, cb);
- entry = entry.next;
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- break;
- }
- }
-
- if (entry === null) state.lastBufferedRequest = null;
- }
-
- state.bufferedRequestCount = 0;
- state.bufferedRequest = entry;
- state.bufferProcessing = false;
-}
-
-Writable.prototype._write = function (chunk, encoding, cb) {
- cb(new Error('not implemented'));
-};
-
-Writable.prototype._writev = null;
-
-Writable.prototype.end = function (chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
-
- // .end() fully uncorks
- if (state.corked) {
- state.corked = 1;
- this.uncork();
- }
-
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished) endWritable(this, state, cb);
-};
-
-function needFinish(state) {
- return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
-}
-
-function prefinish(stream, state) {
- if (!state.prefinished) {
- state.prefinished = true;
- stream.emit('prefinish');
- }
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(state);
- if (need) {
- if (state.pendingcb === 0) {
- prefinish(stream, state);
- state.finished = true;
- stream.emit('finish');
- } else {
- prefinish(stream, state);
- }
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished) processNextTick(cb);else stream.once('finish', cb);
- }
- state.ended = true;
- stream.writable = false;
-}
-
-// It seems a linked list but it is not
-// there will be only 2 of these for each stream
-function CorkedRequest(state) {
- var _this = this;
-
- this.next = null;
- this.entry = null;
-
- this.finish = function (err) {
- var entry = _this.entry;
- _this.entry = null;
- while (entry) {
- var cb = entry.callback;
- state.pendingcb--;
- cb(err);
- entry = entry.next;
- }
- if (state.corkedRequestsFree) {
- state.corkedRequestsFree.next = _this;
- } else {
- state.corkedRequestsFree = _this;
- }
- };
-}
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE
deleted file mode 100644
index d8d7f943..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright Node.js contributors. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md
deleted file mode 100644
index 5a76b414..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# core-util-is
-
-The `util.is*` functions introduced in Node v0.12.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch
deleted file mode 100644
index a06d5c05..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch
+++ /dev/null
@@ -1,604 +0,0 @@
-diff --git a/lib/util.js b/lib/util.js
-index a03e874..9074e8e 100644
---- a/lib/util.js
-+++ b/lib/util.js
-@@ -19,430 +19,6 @@
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--var formatRegExp = /%[sdj%]/g;
--exports.format = function(f) {
-- if (!isString(f)) {
-- var objects = [];
-- for (var i = 0; i < arguments.length; i++) {
-- objects.push(inspect(arguments[i]));
-- }
-- return objects.join(' ');
-- }
--
-- var i = 1;
-- var args = arguments;
-- var len = args.length;
-- var str = String(f).replace(formatRegExp, function(x) {
-- if (x === '%%') return '%';
-- if (i >= len) return x;
-- switch (x) {
-- case '%s': return String(args[i++]);
-- case '%d': return Number(args[i++]);
-- case '%j':
-- try {
-- return JSON.stringify(args[i++]);
-- } catch (_) {
-- return '[Circular]';
-- }
-- default:
-- return x;
-- }
-- });
-- for (var x = args[i]; i < len; x = args[++i]) {
-- if (isNull(x) || !isObject(x)) {
-- str += ' ' + x;
-- } else {
-- str += ' ' + inspect(x);
-- }
-- }
-- return str;
--};
--
--
--// Mark that a method should not be used.
--// Returns a modified function which warns once by default.
--// If --no-deprecation is set, then it is a no-op.
--exports.deprecate = function(fn, msg) {
-- // Allow for deprecating things in the process of starting up.
-- if (isUndefined(global.process)) {
-- return function() {
-- return exports.deprecate(fn, msg).apply(this, arguments);
-- };
-- }
--
-- if (process.noDeprecation === true) {
-- return fn;
-- }
--
-- var warned = false;
-- function deprecated() {
-- if (!warned) {
-- if (process.throwDeprecation) {
-- throw new Error(msg);
-- } else if (process.traceDeprecation) {
-- console.trace(msg);
-- } else {
-- console.error(msg);
-- }
-- warned = true;
-- }
-- return fn.apply(this, arguments);
-- }
--
-- return deprecated;
--};
--
--
--var debugs = {};
--var debugEnviron;
--exports.debuglog = function(set) {
-- if (isUndefined(debugEnviron))
-- debugEnviron = process.env.NODE_DEBUG || '';
-- set = set.toUpperCase();
-- if (!debugs[set]) {
-- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
-- var pid = process.pid;
-- debugs[set] = function() {
-- var msg = exports.format.apply(exports, arguments);
-- console.error('%s %d: %s', set, pid, msg);
-- };
-- } else {
-- debugs[set] = function() {};
-- }
-- }
-- return debugs[set];
--};
--
--
--/**
-- * Echos the value of a value. Trys to print the value out
-- * in the best way possible given the different types.
-- *
-- * @param {Object} obj The object to print out.
-- * @param {Object} opts Optional options object that alters the output.
-- */
--/* legacy: obj, showHidden, depth, colors*/
--function inspect(obj, opts) {
-- // default options
-- var ctx = {
-- seen: [],
-- stylize: stylizeNoColor
-- };
-- // legacy...
-- if (arguments.length >= 3) ctx.depth = arguments[2];
-- if (arguments.length >= 4) ctx.colors = arguments[3];
-- if (isBoolean(opts)) {
-- // legacy...
-- ctx.showHidden = opts;
-- } else if (opts) {
-- // got an "options" object
-- exports._extend(ctx, opts);
-- }
-- // set default options
-- if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
-- if (isUndefined(ctx.depth)) ctx.depth = 2;
-- if (isUndefined(ctx.colors)) ctx.colors = false;
-- if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
-- if (ctx.colors) ctx.stylize = stylizeWithColor;
-- return formatValue(ctx, obj, ctx.depth);
--}
--exports.inspect = inspect;
--
--
--// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
--inspect.colors = {
-- 'bold' : [1, 22],
-- 'italic' : [3, 23],
-- 'underline' : [4, 24],
-- 'inverse' : [7, 27],
-- 'white' : [37, 39],
-- 'grey' : [90, 39],
-- 'black' : [30, 39],
-- 'blue' : [34, 39],
-- 'cyan' : [36, 39],
-- 'green' : [32, 39],
-- 'magenta' : [35, 39],
-- 'red' : [31, 39],
-- 'yellow' : [33, 39]
--};
--
--// Don't use 'blue' not visible on cmd.exe
--inspect.styles = {
-- 'special': 'cyan',
-- 'number': 'yellow',
-- 'boolean': 'yellow',
-- 'undefined': 'grey',
-- 'null': 'bold',
-- 'string': 'green',
-- 'date': 'magenta',
-- // "name": intentionally not styling
-- 'regexp': 'red'
--};
--
--
--function stylizeWithColor(str, styleType) {
-- var style = inspect.styles[styleType];
--
-- if (style) {
-- return '\u001b[' + inspect.colors[style][0] + 'm' + str +
-- '\u001b[' + inspect.colors[style][1] + 'm';
-- } else {
-- return str;
-- }
--}
--
--
--function stylizeNoColor(str, styleType) {
-- return str;
--}
--
--
--function arrayToHash(array) {
-- var hash = {};
--
-- array.forEach(function(val, idx) {
-- hash[val] = true;
-- });
--
-- return hash;
--}
--
--
--function formatValue(ctx, value, recurseTimes) {
-- // Provide a hook for user-specified inspect functions.
-- // Check that value is an object with an inspect function on it
-- if (ctx.customInspect &&
-- value &&
-- isFunction(value.inspect) &&
-- // Filter out the util module, it's inspect function is special
-- value.inspect !== exports.inspect &&
-- // Also filter out any prototype objects using the circular check.
-- !(value.constructor && value.constructor.prototype === value)) {
-- var ret = value.inspect(recurseTimes, ctx);
-- if (!isString(ret)) {
-- ret = formatValue(ctx, ret, recurseTimes);
-- }
-- return ret;
-- }
--
-- // Primitive types cannot have properties
-- var primitive = formatPrimitive(ctx, value);
-- if (primitive) {
-- return primitive;
-- }
--
-- // Look up the keys of the object.
-- var keys = Object.keys(value);
-- var visibleKeys = arrayToHash(keys);
--
-- if (ctx.showHidden) {
-- keys = Object.getOwnPropertyNames(value);
-- }
--
-- // Some type of object without properties can be shortcutted.
-- if (keys.length === 0) {
-- if (isFunction(value)) {
-- var name = value.name ? ': ' + value.name : '';
-- return ctx.stylize('[Function' + name + ']', 'special');
-- }
-- if (isRegExp(value)) {
-- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-- }
-- if (isDate(value)) {
-- return ctx.stylize(Date.prototype.toString.call(value), 'date');
-- }
-- if (isError(value)) {
-- return formatError(value);
-- }
-- }
--
-- var base = '', array = false, braces = ['{', '}'];
--
-- // Make Array say that they are Array
-- if (isArray(value)) {
-- array = true;
-- braces = ['[', ']'];
-- }
--
-- // Make functions say that they are functions
-- if (isFunction(value)) {
-- var n = value.name ? ': ' + value.name : '';
-- base = ' [Function' + n + ']';
-- }
--
-- // Make RegExps say that they are RegExps
-- if (isRegExp(value)) {
-- base = ' ' + RegExp.prototype.toString.call(value);
-- }
--
-- // Make dates with properties first say the date
-- if (isDate(value)) {
-- base = ' ' + Date.prototype.toUTCString.call(value);
-- }
--
-- // Make error with message first say the error
-- if (isError(value)) {
-- base = ' ' + formatError(value);
-- }
--
-- if (keys.length === 0 && (!array || value.length == 0)) {
-- return braces[0] + base + braces[1];
-- }
--
-- if (recurseTimes < 0) {
-- if (isRegExp(value)) {
-- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-- } else {
-- return ctx.stylize('[Object]', 'special');
-- }
-- }
--
-- ctx.seen.push(value);
--
-- var output;
-- if (array) {
-- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
-- } else {
-- output = keys.map(function(key) {
-- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
-- });
-- }
--
-- ctx.seen.pop();
--
-- return reduceToSingleString(output, base, braces);
--}
--
--
--function formatPrimitive(ctx, value) {
-- if (isUndefined(value))
-- return ctx.stylize('undefined', 'undefined');
-- if (isString(value)) {
-- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
-- .replace(/'/g, "\\'")
-- .replace(/\\"/g, '"') + '\'';
-- return ctx.stylize(simple, 'string');
-- }
-- if (isNumber(value)) {
-- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0,
-- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 .
-- if (value === 0 && 1 / value < 0)
-- return ctx.stylize('-0', 'number');
-- return ctx.stylize('' + value, 'number');
-- }
-- if (isBoolean(value))
-- return ctx.stylize('' + value, 'boolean');
-- // For some reason typeof null is "object", so special case here.
-- if (isNull(value))
-- return ctx.stylize('null', 'null');
--}
--
--
--function formatError(value) {
-- return '[' + Error.prototype.toString.call(value) + ']';
--}
--
--
--function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
-- var output = [];
-- for (var i = 0, l = value.length; i < l; ++i) {
-- if (hasOwnProperty(value, String(i))) {
-- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-- String(i), true));
-- } else {
-- output.push('');
-- }
-- }
-- keys.forEach(function(key) {
-- if (!key.match(/^\d+$/)) {
-- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-- key, true));
-- }
-- });
-- return output;
--}
--
--
--function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
-- var name, str, desc;
-- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
-- if (desc.get) {
-- if (desc.set) {
-- str = ctx.stylize('[Getter/Setter]', 'special');
-- } else {
-- str = ctx.stylize('[Getter]', 'special');
-- }
-- } else {
-- if (desc.set) {
-- str = ctx.stylize('[Setter]', 'special');
-- }
-- }
-- if (!hasOwnProperty(visibleKeys, key)) {
-- name = '[' + key + ']';
-- }
-- if (!str) {
-- if (ctx.seen.indexOf(desc.value) < 0) {
-- if (isNull(recurseTimes)) {
-- str = formatValue(ctx, desc.value, null);
-- } else {
-- str = formatValue(ctx, desc.value, recurseTimes - 1);
-- }
-- if (str.indexOf('\n') > -1) {
-- if (array) {
-- str = str.split('\n').map(function(line) {
-- return ' ' + line;
-- }).join('\n').substr(2);
-- } else {
-- str = '\n' + str.split('\n').map(function(line) {
-- return ' ' + line;
-- }).join('\n');
-- }
-- }
-- } else {
-- str = ctx.stylize('[Circular]', 'special');
-- }
-- }
-- if (isUndefined(name)) {
-- if (array && key.match(/^\d+$/)) {
-- return str;
-- }
-- name = JSON.stringify('' + key);
-- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
-- name = name.substr(1, name.length - 2);
-- name = ctx.stylize(name, 'name');
-- } else {
-- name = name.replace(/'/g, "\\'")
-- .replace(/\\"/g, '"')
-- .replace(/(^"|"$)/g, "'");
-- name = ctx.stylize(name, 'string');
-- }
-- }
--
-- return name + ': ' + str;
--}
--
--
--function reduceToSingleString(output, base, braces) {
-- var numLinesEst = 0;
-- var length = output.reduce(function(prev, cur) {
-- numLinesEst++;
-- if (cur.indexOf('\n') >= 0) numLinesEst++;
-- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
-- }, 0);
--
-- if (length > 60) {
-- return braces[0] +
-- (base === '' ? '' : base + '\n ') +
-- ' ' +
-- output.join(',\n ') +
-- ' ' +
-- braces[1];
-- }
--
-- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
--}
--
--
- // NOTE: These type checking functions intentionally don't use `instanceof`
- // because it is fragile and can be easily faked with `Object.create()`.
- function isArray(ar) {
-@@ -522,166 +98,10 @@ function isPrimitive(arg) {
- exports.isPrimitive = isPrimitive;
-
- function isBuffer(arg) {
-- return arg instanceof Buffer;
-+ return Buffer.isBuffer(arg);
- }
- exports.isBuffer = isBuffer;
-
- function objectToString(o) {
- return Object.prototype.toString.call(o);
--}
--
--
--function pad(n) {
-- return n < 10 ? '0' + n.toString(10) : n.toString(10);
--}
--
--
--var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
-- 'Oct', 'Nov', 'Dec'];
--
--// 26 Feb 16:19:34
--function timestamp() {
-- var d = new Date();
-- var time = [pad(d.getHours()),
-- pad(d.getMinutes()),
-- pad(d.getSeconds())].join(':');
-- return [d.getDate(), months[d.getMonth()], time].join(' ');
--}
--
--
--// log is just a thin wrapper to console.log that prepends a timestamp
--exports.log = function() {
-- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
--};
--
--
--/**
-- * Inherit the prototype methods from one constructor into another.
-- *
-- * The Function.prototype.inherits from lang.js rewritten as a standalone
-- * function (not on Function.prototype). NOTE: If this file is to be loaded
-- * during bootstrapping this function needs to be rewritten using some native
-- * functions as prototype setup using normal JavaScript does not work as
-- * expected during bootstrapping (see mirror.js in r114903).
-- *
-- * @param {function} ctor Constructor function which needs to inherit the
-- * prototype.
-- * @param {function} superCtor Constructor function to inherit prototype from.
-- */
--exports.inherits = function(ctor, superCtor) {
-- ctor.super_ = superCtor;
-- ctor.prototype = Object.create(superCtor.prototype, {
-- constructor: {
-- value: ctor,
-- enumerable: false,
-- writable: true,
-- configurable: true
-- }
-- });
--};
--
--exports._extend = function(origin, add) {
-- // Don't do anything if add isn't an object
-- if (!add || !isObject(add)) return origin;
--
-- var keys = Object.keys(add);
-- var i = keys.length;
-- while (i--) {
-- origin[keys[i]] = add[keys[i]];
-- }
-- return origin;
--};
--
--function hasOwnProperty(obj, prop) {
-- return Object.prototype.hasOwnProperty.call(obj, prop);
--}
--
--
--// Deprecated old stuff.
--
--exports.p = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- console.error(exports.inspect(arguments[i]));
-- }
--}, 'util.p: Use console.error() instead');
--
--
--exports.exec = exports.deprecate(function() {
-- return require('child_process').exec.apply(this, arguments);
--}, 'util.exec is now called `child_process.exec`.');
--
--
--exports.print = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stdout.write(String(arguments[i]));
-- }
--}, 'util.print: Use console.log instead');
--
--
--exports.puts = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stdout.write(arguments[i] + '\n');
-- }
--}, 'util.puts: Use console.log instead');
--
--
--exports.debug = exports.deprecate(function(x) {
-- process.stderr.write('DEBUG: ' + x + '\n');
--}, 'util.debug: Use console.error instead');
--
--
--exports.error = exports.deprecate(function(x) {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stderr.write(arguments[i] + '\n');
-- }
--}, 'util.error: Use console.error instead');
--
--
--exports.pump = exports.deprecate(function(readStream, writeStream, callback) {
-- var callbackCalled = false;
--
-- function call(a, b, c) {
-- if (callback && !callbackCalled) {
-- callback(a, b, c);
-- callbackCalled = true;
-- }
-- }
--
-- readStream.addListener('data', function(chunk) {
-- if (writeStream.write(chunk) === false) readStream.pause();
-- });
--
-- writeStream.addListener('drain', function() {
-- readStream.resume();
-- });
--
-- readStream.addListener('end', function() {
-- writeStream.end();
-- });
--
-- readStream.addListener('close', function() {
-- call();
-- });
--
-- readStream.addListener('error', function(err) {
-- writeStream.end();
-- call(err);
-- });
--
-- writeStream.addListener('error', function(err) {
-- readStream.destroy();
-- call(err);
-- });
--}, 'util.pump(): Use readableStream.pipe() instead');
--
--
--var uv;
--exports._errnoException = function(err, syscall) {
-- if (isUndefined(uv)) uv = process.binding('uv');
-- var errname = uv.errname(err);
-- var e = new Error(syscall + ' ' + errname);
-- e.code = errname;
-- e.errno = errname;
-- e.syscall = syscall;
-- return e;
--};
-+}
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
deleted file mode 100644
index ff4c851c..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-
-function isArray(arg) {
- if (Array.isArray) {
- return Array.isArray(arg);
- }
- return objectToString(arg) === '[object Array]';
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-exports.isBuffer = Buffer.isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
deleted file mode 100644
index e14ae2d6..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "name": "core-util-is",
- "version": "1.0.2",
- "description": "The `util.is*` functions introduced in Node v0.12.",
- "main": "lib/util.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/core-util-is.git"
- },
- "keywords": [
- "util",
- "isBuffer",
- "isArray",
- "isNumber",
- "isString",
- "isRegExp",
- "isThis",
- "isThat",
- "polyfill"
- ],
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/isaacs/core-util-is/issues"
- },
- "scripts": {
- "test": "tap test.js"
- },
- "devDependencies": {
- "tap": "^2.3.0"
- },
- "gitHead": "a177da234df5638b363ddc15fa324619a38577c8",
- "homepage": "https://github.com/isaacs/core-util-is#readme",
- "_id": "core-util-is@1.0.2",
- "_shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7",
- "_from": "core-util-is@~1.0.0",
- "_npmVersion": "3.3.2",
- "_nodeVersion": "4.0.0",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "dist": {
- "shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7",
- "tarball": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js
deleted file mode 100644
index 1a490c65..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js
+++ /dev/null
@@ -1,68 +0,0 @@
-var assert = require('tap');
-
-var t = require('./lib/util');
-
-assert.equal(t.isArray([]), true);
-assert.equal(t.isArray({}), false);
-
-assert.equal(t.isBoolean(null), false);
-assert.equal(t.isBoolean(true), true);
-assert.equal(t.isBoolean(false), true);
-
-assert.equal(t.isNull(null), true);
-assert.equal(t.isNull(undefined), false);
-assert.equal(t.isNull(false), false);
-assert.equal(t.isNull(), false);
-
-assert.equal(t.isNullOrUndefined(null), true);
-assert.equal(t.isNullOrUndefined(undefined), true);
-assert.equal(t.isNullOrUndefined(false), false);
-assert.equal(t.isNullOrUndefined(), true);
-
-assert.equal(t.isNumber(null), false);
-assert.equal(t.isNumber('1'), false);
-assert.equal(t.isNumber(1), true);
-
-assert.equal(t.isString(null), false);
-assert.equal(t.isString('1'), true);
-assert.equal(t.isString(1), false);
-
-assert.equal(t.isSymbol(null), false);
-assert.equal(t.isSymbol('1'), false);
-assert.equal(t.isSymbol(1), false);
-assert.equal(t.isSymbol(Symbol()), true);
-
-assert.equal(t.isUndefined(null), false);
-assert.equal(t.isUndefined(undefined), true);
-assert.equal(t.isUndefined(false), false);
-assert.equal(t.isUndefined(), true);
-
-assert.equal(t.isRegExp(null), false);
-assert.equal(t.isRegExp('1'), false);
-assert.equal(t.isRegExp(new RegExp()), true);
-
-assert.equal(t.isObject({}), true);
-assert.equal(t.isObject([]), true);
-assert.equal(t.isObject(new RegExp()), true);
-assert.equal(t.isObject(new Date()), true);
-
-assert.equal(t.isDate(null), false);
-assert.equal(t.isDate('1'), false);
-assert.equal(t.isDate(new Date()), true);
-
-assert.equal(t.isError(null), false);
-assert.equal(t.isError({ err: true }), false);
-assert.equal(t.isError(new Error()), true);
-
-assert.equal(t.isFunction(null), false);
-assert.equal(t.isFunction({ }), false);
-assert.equal(t.isFunction(function() {}), true);
-
-assert.equal(t.isPrimitive(null), true);
-assert.equal(t.isPrimitive(''), true);
-assert.equal(t.isPrimitive(0), true);
-assert.equal(t.isPrimitive(new Date()), false);
-
-assert.equal(t.isBuffer(null), false);
-assert.equal(t.isBuffer({}), false);
-assert.equal(t.isBuffer(new Buffer(0)), true);
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE
deleted file mode 100644
index dea3013d..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE
+++ /dev/null
@@ -1,16 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md
deleted file mode 100644
index b1c56658..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Browser-friendly inheritance fully compatible with standard node.js
-[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
-
-This package exports standard `inherits` from node.js `util` module in
-node environment, but also provides alternative browser-friendly
-implementation through [browser
-field](https://gist.github.com/shtylman/4339901). Alternative
-implementation is a literal copy of standard one located in standalone
-module to avoid requiring of `util`. It also has a shim for old
-browsers with no `Object.create` support.
-
-While keeping you sure you are using standard `inherits`
-implementation in node.js environment, it allows bundlers such as
-[browserify](https://github.com/substack/node-browserify) to not
-include full `util` package to your client code if all you need is
-just `inherits` function. It worth, because browser shim for `util`
-package is large and `inherits` is often the single function you need
-from it.
-
-It's recommended to use this package instead of
-`require('util').inherits` for any code that has chances to be used
-not only in node.js but in browser too.
-
-## usage
-
-```js
-var inherits = require('inherits');
-// then use exactly as the standard one
-```
-
-## note on version ~1.0
-
-Version ~1.0 had completely different motivation and is not compatible
-neither with 2.0 nor with standard node.js `inherits`.
-
-If you are using version ~1.0 and planning to switch to ~2.0, be
-careful:
-
-* new version uses `super_` instead of `super` for referencing
- superclass
-* new version overwrites current prototype while old one preserves any
- existing fields on it
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js
deleted file mode 100644
index 29f5e24f..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('util').inherits
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js
deleted file mode 100644
index c1e78a75..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js
+++ /dev/null
@@ -1,23 +0,0 @@
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- };
-} else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
deleted file mode 100644
index 6c556ed3..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "inherits",
- "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
- "version": "2.0.1",
- "keywords": [
- "inheritance",
- "class",
- "klass",
- "oop",
- "object-oriented",
- "inherits",
- "browser",
- "browserify"
- ],
- "main": "./inherits.js",
- "browser": "./inherits_browser.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/inherits"
- },
- "license": "ISC",
- "scripts": {
- "test": "node test"
- },
- "bugs": {
- "url": "https://github.com/isaacs/inherits/issues"
- },
- "_id": "inherits@2.0.1",
- "dist": {
- "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
- "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "_from": "inherits@~2.0.1",
- "_npmVersion": "1.3.8",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
- "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "readme": "ERROR: No README data found!",
- "homepage": "https://github.com/isaacs/inherits"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js
deleted file mode 100644
index fc53012d..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var inherits = require('./inherits.js')
-var assert = require('assert')
-
-function test(c) {
- assert(c.constructor === Child)
- assert(c.constructor.super_ === Parent)
- assert(Object.getPrototypeOf(c) === Child.prototype)
- assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
- assert(c instanceof Child)
- assert(c instanceof Parent)
-}
-
-function Child() {
- Parent.call(this)
- test(this)
-}
-
-function Parent() {}
-
-inherits(Child, Parent)
-
-var c = new Child
-test(c)
-
-console.log('ok')
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/.npmignore b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/.npmignore
deleted file mode 100644
index 3c3629e6..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/.travis.yml b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/.travis.yml
deleted file mode 100644
index cc4dba29..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/Makefile b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/Makefile
deleted file mode 100644
index 787d56e1..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-
-test:
- @node_modules/.bin/tape test.js
-
-.PHONY: test
-
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md
deleted file mode 100644
index 16d2c59c..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-
-# isarray
-
-`Array#isArray` for older browsers.
-
-[](http://travis-ci.org/juliangruber/isarray)
-[](https://www.npmjs.org/package/isarray)
-
-[
-](https://ci.testling.com/juliangruber/isarray)
-
-## Usage
-
-```js
-var isArray = require('isarray');
-
-console.log(isArray([])); // => true
-console.log(isArray({})); // => false
-```
-
-## Installation
-
-With [npm](http://npmjs.org) do
-
-```bash
-$ npm install isarray
-```
-
-Then bundle for the browser with
-[browserify](https://github.com/substack/browserify).
-
-With [component](http://component.io) do
-
-```bash
-$ component install juliangruber/isarray
-```
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json
deleted file mode 100644
index 9e31b683..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name" : "isarray",
- "description" : "Array#isArray for older browsers",
- "version" : "0.0.1",
- "repository" : "juliangruber/isarray",
- "homepage": "https://github.com/juliangruber/isarray",
- "main" : "index.js",
- "scripts" : [
- "index.js"
- ],
- "dependencies" : {},
- "keywords": ["browser","isarray","array"],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js
deleted file mode 100644
index a57f6349..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var toString = {}.toString;
-
-module.exports = Array.isArray || function (arr) {
- return toString.call(arr) == '[object Array]';
-};
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
deleted file mode 100644
index 06bb8bda..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "isarray",
- "description": "Array#isArray for older browsers",
- "version": "1.0.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/isarray.git"
- },
- "homepage": "https://github.com/juliangruber/isarray",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "tape": "~2.13.4"
- },
- "keywords": [
- "browser",
- "isarray",
- "array"
- ],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "testling": {
- "files": "test.js",
- "browsers": [
- "ie/8..latest",
- "firefox/17..latest",
- "firefox/nightly",
- "chrome/22..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest",
- "android-browser/4.2..latest"
- ]
- },
- "scripts": {
- "test": "tape test.js"
- },
- "gitHead": "2a23a281f369e9ae06394c0fb4d2381355a6ba33",
- "bugs": {
- "url": "https://github.com/juliangruber/isarray/issues"
- },
- "_id": "isarray@1.0.0",
- "_shasum": "bb935d48582cba168c06834957a54a3e07124f11",
- "_from": "isarray@~1.0.0",
- "_npmVersion": "3.3.12",
- "_nodeVersion": "5.1.0",
- "_npmUser": {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- },
- "dist": {
- "shasum": "bb935d48582cba168c06834957a54a3e07124f11",
- "tarball": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/test.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/test.js
deleted file mode 100644
index e0c3444d..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var isArray = require('./');
-var test = require('tape');
-
-test('is array', function(t){
- t.ok(isArray([]));
- t.notOk(isArray({}));
- t.notOk(isArray(null));
- t.notOk(isArray(false));
-
- var obj = {};
- obj[0] = true;
- t.notOk(isArray(obj));
-
- var arr = [];
- arr.foo = 'bar';
- t.ok(isArray(arr));
-
- t.end();
-});
-
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml
deleted file mode 100644
index 36201b10..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.11"
- - "0.12"
- - "1.7.1"
- - 1
- - 2
- - 3
- - 4
- - 5
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js
deleted file mode 100644
index a4f40f84..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-'use strict';
-
-if (!process.version ||
- process.version.indexOf('v0.') === 0 ||
- process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
- module.exports = nextTick;
-} else {
- module.exports = process.nextTick;
-}
-
-function nextTick(fn, arg1, arg2, arg3) {
- if (typeof fn !== 'function') {
- throw new TypeError('"callback" argument must be a function');
- }
- var len = arguments.length;
- var args, i;
- switch (len) {
- case 0:
- case 1:
- return process.nextTick(fn);
- case 2:
- return process.nextTick(function afterTickOne() {
- fn.call(null, arg1);
- });
- case 3:
- return process.nextTick(function afterTickTwo() {
- fn.call(null, arg1, arg2);
- });
- case 4:
- return process.nextTick(function afterTickThree() {
- fn.call(null, arg1, arg2, arg3);
- });
- default:
- args = new Array(len - 1);
- i = 0;
- while (i < args.length) {
- args[i++] = arguments[i];
- }
- return process.nextTick(function afterTick() {
- fn.apply(null, args);
- });
- }
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md
deleted file mode 100644
index c67e3532..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2015 Calvin Metcalf
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.**
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json
deleted file mode 100644
index 86641ff9..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "process-nextick-args",
- "version": "1.0.7",
- "description": "process.nextTick but always with args",
- "main": "index.js",
- "scripts": {
- "test": "node test.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/calvinmetcalf/process-nextick-args.git"
- },
- "author": "",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/calvinmetcalf/process-nextick-args/issues"
- },
- "homepage": "https://github.com/calvinmetcalf/process-nextick-args",
- "devDependencies": {
- "tap": "~0.2.6"
- },
- "gitHead": "5c00899ab01dd32f93ad4b5743da33da91404f39",
- "_id": "process-nextick-args@1.0.7",
- "_shasum": "150e20b756590ad3f91093f25a4f2ad8bff30ba3",
- "_from": "process-nextick-args@~1.0.6",
- "_npmVersion": "3.8.6",
- "_nodeVersion": "5.11.0",
- "_npmUser": {
- "name": "cwmma",
- "email": "calvin.metcalf@gmail.com"
- },
- "dist": {
- "shasum": "150e20b756590ad3f91093f25a4f2ad8bff30ba3",
- "tarball": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
- },
- "maintainers": [
- {
- "name": "cwmma",
- "email": "calvin.metcalf@gmail.com"
- }
- ],
- "_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/process-nextick-args-1.0.7.tgz_1462394251778_0.36989671061746776"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md
deleted file mode 100644
index 78e7cfae..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md
+++ /dev/null
@@ -1,18 +0,0 @@
-process-nextick-args
-=====
-
-[](https://travis-ci.org/calvinmetcalf/process-nextick-args)
-
-```bash
-npm install --save process-nextick-args
-```
-
-Always be able to pass arguments to process.nextTick, no matter the platform
-
-```js
-var nextTick = require('process-nextick-args');
-
-nextTick(function (a, b, c) {
- console.log(a, b, c);
-}, 'step', 3, 'profit');
-```
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js
deleted file mode 100644
index ef157215..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var test = require("tap").test;
-var nextTick = require('./');
-
-test('should work', function (t) {
- t.plan(5);
- nextTick(function (a) {
- t.ok(a);
- nextTick(function (thing) {
- t.equals(thing, 7);
- }, 7);
- }, true);
- nextTick(function (a, b, c) {
- t.equals(a, 'step');
- t.equals(b, 3);
- t.equals(c, 'profit');
- }, 'step', 3, 'profit');
-});
-
-test('correct number of arguments', function (t) {
- t.plan(1);
- nextTick(function () {
- t.equals(2, arguments.length, 'correct number');
- }, 1, 2);
-});
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore
deleted file mode 100644
index 206320cc..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build
-test
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE
deleted file mode 100644
index 6de584a4..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright Joyent, Inc. and other Node contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to permit
-persons to whom the Software is furnished to do so, subject to the
-following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md
deleted file mode 100644
index 4d2aa001..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-**string_decoder.js** (`require('string_decoder')`) from Node.js core
-
-Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details.
-
-Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**
-
-The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js
deleted file mode 100644
index b00e54fb..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var Buffer = require('buffer').Buffer;
-
-var isBufferEncoding = Buffer.isEncoding
- || function(encoding) {
- switch (encoding && encoding.toLowerCase()) {
- case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
- default: return false;
- }
- }
-
-
-function assertEncoding(encoding) {
- if (encoding && !isBufferEncoding(encoding)) {
- throw new Error('Unknown encoding: ' + encoding);
- }
-}
-
-// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters. CESU-8 is handled as part of the UTF-8 encoding.
-//
-// @TODO Handling all encodings inside a single object makes it very difficult
-// to reason about this code, so it should be split up in the future.
-// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
-// points as used by CESU-8.
-var StringDecoder = exports.StringDecoder = function(encoding) {
- this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
- assertEncoding(encoding);
- switch (this.encoding) {
- case 'utf8':
- // CESU-8 represents each of Surrogate Pair by 3-bytes
- this.surrogateSize = 3;
- break;
- case 'ucs2':
- case 'utf16le':
- // UTF-16 represents each of Surrogate Pair by 2-bytes
- this.surrogateSize = 2;
- this.detectIncompleteChar = utf16DetectIncompleteChar;
- break;
- case 'base64':
- // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
- this.surrogateSize = 3;
- this.detectIncompleteChar = base64DetectIncompleteChar;
- break;
- default:
- this.write = passThroughWrite;
- return;
- }
-
- // Enough space to store all bytes of a single character. UTF-8 needs 4
- // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
- this.charBuffer = new Buffer(6);
- // Number of bytes received for the current incomplete multi-byte character.
- this.charReceived = 0;
- // Number of bytes expected for the current incomplete multi-byte character.
- this.charLength = 0;
-};
-
-
-// write decodes the given buffer and returns it as JS string that is
-// guaranteed to not contain any partial multi-byte characters. Any partial
-// character found at the end of the buffer is buffered up, and will be
-// returned when calling write again with the remaining bytes.
-//
-// Note: Converting a Buffer containing an orphan surrogate to a String
-// currently works, but converting a String to a Buffer (via `new Buffer`, or
-// Buffer#write) will replace incomplete surrogates with the unicode
-// replacement character. See https://codereview.chromium.org/121173009/ .
-StringDecoder.prototype.write = function(buffer) {
- var charStr = '';
- // if our last write ended with an incomplete multibyte character
- while (this.charLength) {
- // determine how many remaining bytes this buffer has to offer for this char
- var available = (buffer.length >= this.charLength - this.charReceived) ?
- this.charLength - this.charReceived :
- buffer.length;
-
- // add the new bytes to the char buffer
- buffer.copy(this.charBuffer, this.charReceived, 0, available);
- this.charReceived += available;
-
- if (this.charReceived < this.charLength) {
- // still not enough chars in this buffer? wait for more ...
- return '';
- }
-
- // remove bytes belonging to the current character from the buffer
- buffer = buffer.slice(available, buffer.length);
-
- // get the character that was split
- charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
-
- // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
- var charCode = charStr.charCodeAt(charStr.length - 1);
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- this.charLength += this.surrogateSize;
- charStr = '';
- continue;
- }
- this.charReceived = this.charLength = 0;
-
- // if there are no more bytes in this buffer, just emit our char
- if (buffer.length === 0) {
- return charStr;
- }
- break;
- }
-
- // determine and set charLength / charReceived
- this.detectIncompleteChar(buffer);
-
- var end = buffer.length;
- if (this.charLength) {
- // buffer the incomplete character bytes we got
- buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
- end -= this.charReceived;
- }
-
- charStr += buffer.toString(this.encoding, 0, end);
-
- var end = charStr.length - 1;
- var charCode = charStr.charCodeAt(end);
- // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- var size = this.surrogateSize;
- this.charLength += size;
- this.charReceived += size;
- this.charBuffer.copy(this.charBuffer, size, 0, size);
- buffer.copy(this.charBuffer, 0, 0, size);
- return charStr.substring(0, end);
- }
-
- // or just emit the charStr
- return charStr;
-};
-
-// detectIncompleteChar determines if there is an incomplete UTF-8 character at
-// the end of the given buffer. If so, it sets this.charLength to the byte
-// length that character, and sets this.charReceived to the number of bytes
-// that are available for this character.
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
- // determine how many bytes we have to check at the end of this buffer
- var i = (buffer.length >= 3) ? 3 : buffer.length;
-
- // Figure out if one of the last i bytes of our buffer announces an
- // incomplete char.
- for (; i > 0; i--) {
- var c = buffer[buffer.length - i];
-
- // See http://en.wikipedia.org/wiki/UTF-8#Description
-
- // 110XXXXX
- if (i == 1 && c >> 5 == 0x06) {
- this.charLength = 2;
- break;
- }
-
- // 1110XXXX
- if (i <= 2 && c >> 4 == 0x0E) {
- this.charLength = 3;
- break;
- }
-
- // 11110XXX
- if (i <= 3 && c >> 3 == 0x1E) {
- this.charLength = 4;
- break;
- }
- }
- this.charReceived = i;
-};
-
-StringDecoder.prototype.end = function(buffer) {
- var res = '';
- if (buffer && buffer.length)
- res = this.write(buffer);
-
- if (this.charReceived) {
- var cr = this.charReceived;
- var buf = this.charBuffer;
- var enc = this.encoding;
- res += buf.slice(0, cr).toString(enc);
- }
-
- return res;
-};
-
-function passThroughWrite(buffer) {
- return buffer.toString(this.encoding);
-}
-
-function utf16DetectIncompleteChar(buffer) {
- this.charReceived = buffer.length % 2;
- this.charLength = this.charReceived ? 2 : 0;
-}
-
-function base64DetectIncompleteChar(buffer) {
- this.charReceived = buffer.length % 3;
- this.charLength = this.charReceived ? 3 : 0;
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
deleted file mode 100644
index a8c586bf..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "string_decoder",
- "version": "0.10.31",
- "description": "The string_decoder module from Node core",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "tap": "~0.4.8"
- },
- "scripts": {
- "test": "tap test/simple/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/rvagg/string_decoder.git"
- },
- "homepage": "https://github.com/rvagg/string_decoder",
- "keywords": [
- "string",
- "decoder",
- "browser",
- "browserify"
- ],
- "license": "MIT",
- "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0",
- "bugs": {
- "url": "https://github.com/rvagg/string_decoder/issues"
- },
- "_id": "string_decoder@0.10.31",
- "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "_from": "string_decoder@~0.10.x",
- "_npmVersion": "1.4.23",
- "_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- },
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- }
- ],
- "dist": {
- "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md
deleted file mode 100644
index acc86753..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-1.0.2 / 2015-10-07
-==================
-
- * use try/catch when checking `localStorage` (#3, @kumavis)
-
-1.0.1 / 2014-11-25
-==================
-
- * browser: use `console.warn()` for deprecation calls
- * browser: more jsdocs
-
-1.0.0 / 2014-04-30
-==================
-
- * initial commit
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE
deleted file mode 100644
index 6a60e8c2..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 Nathan Rajlich
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md
deleted file mode 100644
index 75622fa7..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-util-deprecate
-==============
-### The Node.js `util.deprecate()` function with browser support
-
-In Node.js, this module simply re-exports the `util.deprecate()` function.
-
-In the web browser (i.e. via browserify), a browser-specific implementation
-of the `util.deprecate()` function is used.
-
-
-## API
-
-A `deprecate()` function is the only thing exposed by this module.
-
-``` javascript
-// setup:
-exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead');
-
-
-// users see:
-foo();
-// foo() is deprecated, use bar() instead
-foo();
-foo();
-```
-
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2014 Nathan Rajlich
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js
deleted file mode 100644
index 549ae2f0..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/**
- * Module exports.
- */
-
-module.exports = deprecate;
-
-/**
- * Mark that a method should not be used.
- * Returns a modified function which warns once by default.
- *
- * If `localStorage.noDeprecation = true` is set, then it is a no-op.
- *
- * If `localStorage.throwDeprecation = true` is set, then deprecated functions
- * will throw an Error when invoked.
- *
- * If `localStorage.traceDeprecation = true` is set, then deprecated functions
- * will invoke `console.trace()` instead of `console.error()`.
- *
- * @param {Function} fn - the function to deprecate
- * @param {String} msg - the string to print to the console when `fn` is invoked
- * @returns {Function} a new "deprecated" version of `fn`
- * @api public
- */
-
-function deprecate (fn, msg) {
- if (config('noDeprecation')) {
- return fn;
- }
-
- var warned = false;
- function deprecated() {
- if (!warned) {
- if (config('throwDeprecation')) {
- throw new Error(msg);
- } else if (config('traceDeprecation')) {
- console.trace(msg);
- } else {
- console.warn(msg);
- }
- warned = true;
- }
- return fn.apply(this, arguments);
- }
-
- return deprecated;
-}
-
-/**
- * Checks `localStorage` for boolean values for the given `name`.
- *
- * @param {String} name
- * @returns {Boolean}
- * @api private
- */
-
-function config (name) {
- // accessing global.localStorage can trigger a DOMException in sandboxed iframes
- try {
- if (!global.localStorage) return false;
- } catch (_) {
- return false;
- }
- var val = global.localStorage[name];
- if (null == val) return false;
- return String(val).toLowerCase() === 'true';
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js
deleted file mode 100644
index 5e6fcff5..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js
+++ /dev/null
@@ -1,6 +0,0 @@
-
-/**
- * For Node.js, simply re-export the core `util.deprecate` function.
- */
-
-module.exports = require('util').deprecate;
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json
deleted file mode 100644
index ddfcae0e..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "util-deprecate",
- "version": "1.0.2",
- "description": "The Node.js `util.deprecate()` function with browser support",
- "main": "node.js",
- "browser": "browser.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/TooTallNate/util-deprecate.git"
- },
- "keywords": [
- "util",
- "deprecate",
- "browserify",
- "browser",
- "node"
- ],
- "author": {
- "name": "Nathan Rajlich",
- "email": "nathan@tootallnate.net",
- "url": "http://n8.io/"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/TooTallNate/util-deprecate/issues"
- },
- "homepage": "https://github.com/TooTallNate/util-deprecate",
- "gitHead": "475fb6857cd23fafff20c1be846c1350abf8e6d4",
- "_id": "util-deprecate@1.0.2",
- "_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
- "_from": "util-deprecate@~1.0.1",
- "_npmVersion": "2.14.4",
- "_nodeVersion": "4.1.2",
- "_npmUser": {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
- },
- "maintainers": [
- {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
- }
- ],
- "dist": {
- "shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
- "tarball": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json
deleted file mode 100644
index a918728a..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
- "name": "readable-stream",
- "version": "2.0.6",
- "description": "Streams3, a user-land copy of the stream library from Node.js",
- "main": "readable.js",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
- },
- "devDependencies": {
- "tap": "~0.2.6",
- "tape": "~4.5.1",
- "zuul": "~3.9.0"
- },
- "scripts": {
- "test": "tap test/parallel/*.js test/ours/*.js",
- "browser": "npm run write-zuul && zuul -- test/browser.js",
- "write-zuul": "printf \"ui: tape\nbrowsers:\n - name: $BROWSER_NAME\n version: $BROWSER_VERSION\n\">.zuul.yml"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/nodejs/readable-stream.git"
- },
- "keywords": [
- "readable",
- "stream",
- "pipe"
- ],
- "browser": {
- "util": false
- },
- "license": "MIT",
- "gitHead": "01fb5608a970b42c900b96746cadc13d27dd9d7e",
- "bugs": {
- "url": "https://github.com/nodejs/readable-stream/issues"
- },
- "homepage": "https://github.com/nodejs/readable-stream#readme",
- "_id": "readable-stream@2.0.6",
- "_shasum": "8f90341e68a53ccc928788dacfcd11b36eb9b78e",
- "_from": "readable-stream@~2.0.5",
- "_npmVersion": "3.6.0",
- "_nodeVersion": "5.7.0",
- "_npmUser": {
- "name": "cwmma",
- "email": "calvin.metcalf@gmail.com"
- },
- "dist": {
- "shasum": "8f90341e68a53ccc928788dacfcd11b36eb9b78e",
- "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
- },
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- {
- "name": "cwmma",
- "email": "calvin.metcalf@gmail.com"
- }
- ],
- "_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/readable-stream-2.0.6.tgz_1457893507709_0.369257491780445"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js
deleted file mode 100644
index 27e8d8a5..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_passthrough.js")
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js
deleted file mode 100644
index 6222a579..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var Stream = (function (){
- try {
- return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
- } catch(_){}
-}());
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = Stream || exports;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js
deleted file mode 100644
index 5d482f07..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_transform.js")
diff --git a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js b/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js
deleted file mode 100644
index e1e9efdf..00000000
--- a/APIs/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_writable.js")
diff --git a/APIs/node_modules/request/node_modules/bl/package.json b/APIs/node_modules/request/node_modules/bl/package.json
deleted file mode 100644
index 80c15fe4..00000000
--- a/APIs/node_modules/request/node_modules/bl/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "bl",
- "version": "1.1.2",
- "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!",
- "main": "bl.js",
- "scripts": {
- "test": "node test/test.js | faucet"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/rvagg/bl.git"
- },
- "homepage": "https://github.com/rvagg/bl",
- "authors": [
- "Rod Vagg (https://github.com/rvagg)",
- "Matteo Collina (https://github.com/mcollina)",
- "Jarett Cruger (https://github.com/jcrugzz)"
- ],
- "keywords": [
- "buffer",
- "buffers",
- "stream",
- "awesomesauce"
- ],
- "license": "MIT",
- "dependencies": {
- "readable-stream": "~2.0.5"
- },
- "devDependencies": {
- "faucet": "0.0.1",
- "hash_file": "~0.1.1",
- "tape": "~4.4.0"
- },
- "gitHead": "ea42021059dc65fc60d7f4b9217c73431f09d23d",
- "bugs": {
- "url": "https://github.com/rvagg/bl/issues"
- },
- "_id": "bl@1.1.2",
- "_shasum": "fdca871a99713aa00d19e3bbba41c44787a65398",
- "_from": "bl@~1.1.2",
- "_npmVersion": "3.3.12",
- "_nodeVersion": "5.3.0",
- "_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- "maintainers": [
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- }
- ],
- "dist": {
- "shasum": "fdca871a99713aa00d19e3bbba41c44787a65398",
- "tarball": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz"
- },
- "_npmOperationalInternal": {
- "host": "packages-9-west.internal.npmjs.com",
- "tmp": "tmp/bl-1.1.2.tgz_1455246621698_0.6300242957659066"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz"
-}
diff --git a/APIs/node_modules/request/node_modules/bl/test/test.js b/APIs/node_modules/request/node_modules/bl/test/test.js
deleted file mode 100644
index c95b1ba4..00000000
--- a/APIs/node_modules/request/node_modules/bl/test/test.js
+++ /dev/null
@@ -1,640 +0,0 @@
-var tape = require('tape')
- , crypto = require('crypto')
- , fs = require('fs')
- , hash = require('hash_file')
- , BufferList = require('../')
-
- , encodings =
- ('hex utf8 utf-8 ascii binary base64'
- + (process.browser ? '' : ' ucs2 ucs-2 utf16le utf-16le')).split(' ')
-
-tape('single bytes from single buffer', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abcd'))
-
- t.equal(bl.length, 4)
-
- t.equal(bl.get(0), 97)
- t.equal(bl.get(1), 98)
- t.equal(bl.get(2), 99)
- t.equal(bl.get(3), 100)
-
- t.end()
-})
-
-tape('single bytes from multiple buffers', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.get(0), 97)
- t.equal(bl.get(1), 98)
- t.equal(bl.get(2), 99)
- t.equal(bl.get(3), 100)
- t.equal(bl.get(4), 101)
- t.equal(bl.get(5), 102)
- t.equal(bl.get(6), 103)
- t.equal(bl.get(7), 104)
- t.equal(bl.get(8), 105)
- t.equal(bl.get(9), 106)
- t.end()
-})
-
-tape('multi bytes from single buffer', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abcd'))
-
- t.equal(bl.length, 4)
-
- t.equal(bl.slice(0, 4).toString('ascii'), 'abcd')
- t.equal(bl.slice(0, 3).toString('ascii'), 'abc')
- t.equal(bl.slice(1, 4).toString('ascii'), 'bcd')
-
- t.end()
-})
-
-tape('multiple bytes from multiple buffers', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
- t.equal(bl.slice(3, 10).toString('ascii'), 'defghij')
- t.equal(bl.slice(3, 6).toString('ascii'), 'def')
- t.equal(bl.slice(3, 8).toString('ascii'), 'defgh')
- t.equal(bl.slice(5, 10).toString('ascii'), 'fghij')
-
- t.end()
-})
-
-tape('multiple bytes from multiple buffer lists', function (t) {
- var bl = new BufferList()
-
- bl.append(new BufferList([ new Buffer('abcd'), new Buffer('efg') ]))
- bl.append(new BufferList([ new Buffer('hi'), new Buffer('j') ]))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
-
- t.equal(bl.slice(3, 10).toString('ascii'), 'defghij')
- t.equal(bl.slice(3, 6).toString('ascii'), 'def')
- t.equal(bl.slice(3, 8).toString('ascii'), 'defgh')
- t.equal(bl.slice(5, 10).toString('ascii'), 'fghij')
-
- t.end()
-})
-
-// same data as previous test, just using nested constructors
-tape('multiple bytes from crazy nested buffer lists', function (t) {
- var bl = new BufferList()
-
- bl.append(new BufferList([
- new BufferList([
- new BufferList(new Buffer('abc'))
- , new Buffer('d')
- , new BufferList(new Buffer('efg'))
- ])
- , new BufferList([ new Buffer('hi') ])
- , new BufferList(new Buffer('j'))
- ]))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
-
- t.equal(bl.slice(3, 10).toString('ascii'), 'defghij')
- t.equal(bl.slice(3, 6).toString('ascii'), 'def')
- t.equal(bl.slice(3, 8).toString('ascii'), 'defgh')
- t.equal(bl.slice(5, 10).toString('ascii'), 'fghij')
-
- t.end()
-})
-
-tape('append accepts arrays of Buffers', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abc'))
- bl.append([ new Buffer('def') ])
- bl.append([ new Buffer('ghi'), new Buffer('jkl') ])
- bl.append([ new Buffer('mnop'), new Buffer('qrstu'), new Buffer('vwxyz') ])
- t.equal(bl.length, 26)
- t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz')
- t.end()
-})
-
-tape('append accepts arrays of BufferLists', function (t) {
- var bl = new BufferList()
- bl.append(new Buffer('abc'))
- bl.append([ new BufferList('def') ])
- bl.append(new BufferList([ new Buffer('ghi'), new BufferList('jkl') ]))
- bl.append([ new Buffer('mnop'), new BufferList([ new Buffer('qrstu'), new Buffer('vwxyz') ]) ])
- t.equal(bl.length, 26)
- t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz')
- t.end()
-})
-
-tape('append chainable', function (t) {
- var bl = new BufferList()
- t.ok(bl.append(new Buffer('abcd')) === bl)
- t.ok(bl.append([ new Buffer('abcd') ]) === bl)
- t.ok(bl.append(new BufferList(new Buffer('abcd'))) === bl)
- t.ok(bl.append([ new BufferList(new Buffer('abcd')) ]) === bl)
- t.end()
-})
-
-tape('append chainable (test results)', function (t) {
- var bl = new BufferList('abc')
- .append([ new BufferList('def') ])
- .append(new BufferList([ new Buffer('ghi'), new BufferList('jkl') ]))
- .append([ new Buffer('mnop'), new BufferList([ new Buffer('qrstu'), new Buffer('vwxyz') ]) ])
-
- t.equal(bl.length, 26)
- t.equal(bl.slice().toString('ascii'), 'abcdefghijklmnopqrstuvwxyz')
- t.end()
-})
-
-tape('consuming from multiple buffers', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.length, 10)
-
- t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij')
-
- bl.consume(3)
- t.equal(bl.length, 7)
- t.equal(bl.slice(0, 7).toString('ascii'), 'defghij')
-
- bl.consume(2)
- t.equal(bl.length, 5)
- t.equal(bl.slice(0, 5).toString('ascii'), 'fghij')
-
- bl.consume(1)
- t.equal(bl.length, 4)
- t.equal(bl.slice(0, 4).toString('ascii'), 'ghij')
-
- bl.consume(1)
- t.equal(bl.length, 3)
- t.equal(bl.slice(0, 3).toString('ascii'), 'hij')
-
- bl.consume(2)
- t.equal(bl.length, 1)
- t.equal(bl.slice(0, 1).toString('ascii'), 'j')
-
- t.end()
-})
-
-tape('complete consumption', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('a'))
- bl.append(new Buffer('b'))
-
- bl.consume(2)
-
- t.equal(bl.length, 0)
- t.equal(bl._bufs.length, 0)
-
- t.end()
-})
-
-tape('test readUInt8 / readInt8', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x3
- buf2[2] = 0x4
- buf3[0] = 0x23
- buf3[1] = 0x42
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readUInt8(2), 0x3)
- t.equal(bl.readInt8(2), 0x3)
- t.equal(bl.readUInt8(3), 0x4)
- t.equal(bl.readInt8(3), 0x4)
- t.equal(bl.readUInt8(4), 0x23)
- t.equal(bl.readInt8(4), 0x23)
- t.equal(bl.readUInt8(5), 0x42)
- t.equal(bl.readInt8(5), 0x42)
- t.end()
-})
-
-tape('test readUInt16LE / readUInt16BE / readInt16LE / readInt16BE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x3
- buf2[2] = 0x4
- buf3[0] = 0x23
- buf3[1] = 0x42
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readUInt16BE(2), 0x0304)
- t.equal(bl.readUInt16LE(2), 0x0403)
- t.equal(bl.readInt16BE(2), 0x0304)
- t.equal(bl.readInt16LE(2), 0x0403)
- t.equal(bl.readUInt16BE(3), 0x0423)
- t.equal(bl.readUInt16LE(3), 0x2304)
- t.equal(bl.readInt16BE(3), 0x0423)
- t.equal(bl.readInt16LE(3), 0x2304)
- t.equal(bl.readUInt16BE(4), 0x2342)
- t.equal(bl.readUInt16LE(4), 0x4223)
- t.equal(bl.readInt16BE(4), 0x2342)
- t.equal(bl.readInt16LE(4), 0x4223)
- t.end()
-})
-
-tape('test readUInt32LE / readUInt32BE / readInt32LE / readInt32BE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x3
- buf2[2] = 0x4
- buf3[0] = 0x23
- buf3[1] = 0x42
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readUInt32BE(2), 0x03042342)
- t.equal(bl.readUInt32LE(2), 0x42230403)
- t.equal(bl.readInt32BE(2), 0x03042342)
- t.equal(bl.readInt32LE(2), 0x42230403)
- t.end()
-})
-
-tape('test readFloatLE / readFloatBE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(3)
- , bl = new BufferList()
-
- buf2[1] = 0x00
- buf2[2] = 0x00
- buf3[0] = 0x80
- buf3[1] = 0x3f
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readFloatLE(2), 0x01)
- t.end()
-})
-
-tape('test readDoubleLE / readDoubleBE', function (t) {
- var buf1 = new Buffer(1)
- , buf2 = new Buffer(3)
- , buf3 = new Buffer(10)
- , bl = new BufferList()
-
- buf2[1] = 0x55
- buf2[2] = 0x55
- buf3[0] = 0x55
- buf3[1] = 0x55
- buf3[2] = 0x55
- buf3[3] = 0x55
- buf3[4] = 0xd5
- buf3[5] = 0x3f
-
- bl.append(buf1)
- bl.append(buf2)
- bl.append(buf3)
-
- t.equal(bl.readDoubleLE(2), 0.3333333333333333)
- t.end()
-})
-
-tape('test toString', function (t) {
- var bl = new BufferList()
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
-
- t.equal(bl.toString('ascii', 0, 10), 'abcdefghij')
- t.equal(bl.toString('ascii', 3, 10), 'defghij')
- t.equal(bl.toString('ascii', 3, 6), 'def')
- t.equal(bl.toString('ascii', 3, 8), 'defgh')
- t.equal(bl.toString('ascii', 5, 10), 'fghij')
-
- t.end()
-})
-
-tape('test toString encoding', function (t) {
- var bl = new BufferList()
- , b = new Buffer('abcdefghij\xff\x00')
-
- bl.append(new Buffer('abcd'))
- bl.append(new Buffer('efg'))
- bl.append(new Buffer('hi'))
- bl.append(new Buffer('j'))
- bl.append(new Buffer('\xff\x00'))
-
- encodings.forEach(function (enc) {
- t.equal(bl.toString(enc), b.toString(enc), enc)
- })
-
- t.end()
-})
-
-!process.browser && tape('test stream', function (t) {
- var random = crypto.randomBytes(65534)
- , rndhash = hash(random, 'md5')
- , md5sum = crypto.createHash('md5')
- , bl = new BufferList(function (err, buf) {
- t.ok(Buffer.isBuffer(buf))
- t.ok(err === null)
- t.equal(rndhash, hash(bl.slice(), 'md5'))
- t.equal(rndhash, hash(buf, 'md5'))
-
- bl.pipe(fs.createWriteStream('/tmp/bl_test_rnd_out.dat'))
- .on('close', function () {
- var s = fs.createReadStream('/tmp/bl_test_rnd_out.dat')
- s.on('data', md5sum.update.bind(md5sum))
- s.on('end', function() {
- t.equal(rndhash, md5sum.digest('hex'), 'woohoo! correct hash!')
- t.end()
- })
- })
-
- })
-
- fs.writeFileSync('/tmp/bl_test_rnd.dat', random)
- fs.createReadStream('/tmp/bl_test_rnd.dat').pipe(bl)
-})
-
-tape('instantiation with Buffer', function (t) {
- var buf = crypto.randomBytes(1024)
- , buf2 = crypto.randomBytes(1024)
- , b = BufferList(buf)
-
- t.equal(buf.toString('hex'), b.slice().toString('hex'), 'same buffer')
- b = BufferList([ buf, buf2 ])
- t.equal(b.slice().toString('hex'), Buffer.concat([ buf, buf2 ]).toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('test String appendage', function (t) {
- var bl = new BufferList()
- , b = new Buffer('abcdefghij\xff\x00')
-
- bl.append('abcd')
- bl.append('efg')
- bl.append('hi')
- bl.append('j')
- bl.append('\xff\x00')
-
- encodings.forEach(function (enc) {
- t.equal(bl.toString(enc), b.toString(enc))
- })
-
- t.end()
-})
-
-tape('test Number appendage', function (t) {
- var bl = new BufferList()
- , b = new Buffer('1234567890')
-
- bl.append(1234)
- bl.append(567)
- bl.append(89)
- bl.append(0)
-
- encodings.forEach(function (enc) {
- t.equal(bl.toString(enc), b.toString(enc))
- })
-
- t.end()
-})
-
-tape('write nothing, should get empty buffer', function (t) {
- t.plan(3)
- BufferList(function (err, data) {
- t.notOk(err, 'no error')
- t.ok(Buffer.isBuffer(data), 'got a buffer')
- t.equal(0, data.length, 'got a zero-length buffer')
- t.end()
- }).end()
-})
-
-tape('unicode string', function (t) {
- t.plan(2)
- var inp1 = '\u2600'
- , inp2 = '\u2603'
- , exp = inp1 + ' and ' + inp2
- , bl = BufferList()
- bl.write(inp1)
- bl.write(' and ')
- bl.write(inp2)
- t.equal(exp, bl.toString())
- t.equal(new Buffer(exp).toString('hex'), bl.toString('hex'))
-})
-
-tape('should emit finish', function (t) {
- var source = BufferList()
- , dest = BufferList()
-
- source.write('hello')
- source.pipe(dest)
-
- dest.on('finish', function () {
- t.equal(dest.toString('utf8'), 'hello')
- t.end()
- })
-})
-
-tape('basic copy', function (t) {
- var buf = crypto.randomBytes(1024)
- , buf2 = new Buffer(1024)
- , b = BufferList(buf)
-
- b.copy(buf2)
- t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy after many appends', function (t) {
- var buf = crypto.randomBytes(512)
- , buf2 = new Buffer(1024)
- , b = BufferList(buf)
-
- b.append(buf)
- b.copy(buf2)
- t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy at a precise position', function (t) {
- var buf = crypto.randomBytes(1004)
- , buf2 = new Buffer(1024)
- , b = BufferList(buf)
-
- b.copy(buf2, 20)
- t.equal(b.slice().toString('hex'), buf2.slice(20).toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy starting from a precise location', function (t) {
- var buf = crypto.randomBytes(10)
- , buf2 = new Buffer(5)
- , b = BufferList(buf)
-
- b.copy(buf2, 0, 5)
- t.equal(b.slice(5).toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy in an interval', function (t) {
- var rnd = crypto.randomBytes(10)
- , b = BufferList(rnd) // put the random bytes there
- , actual = new Buffer(3)
- , expected = new Buffer(3)
-
- rnd.copy(expected, 0, 5, 8)
- b.copy(actual, 0, 5, 8)
-
- t.equal(actual.toString('hex'), expected.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('copy an interval between two buffers', function (t) {
- var buf = crypto.randomBytes(10)
- , buf2 = new Buffer(10)
- , b = BufferList(buf)
-
- b.append(buf)
- b.copy(buf2, 0, 5, 15)
-
- t.equal(b.slice(5, 15).toString('hex'), buf2.toString('hex'), 'same buffer')
- t.end()
-})
-
-tape('duplicate', function (t) {
- t.plan(2)
-
- var bl = new BufferList('abcdefghij\xff\x00')
- , dup = bl.duplicate()
-
- t.equal(bl.prototype, dup.prototype)
- t.equal(bl.toString('hex'), dup.toString('hex'))
-})
-
-tape('destroy no pipe', function (t) {
- t.plan(2)
-
- var bl = new BufferList('alsdkfja;lsdkfja;lsdk')
- bl.destroy()
-
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
-})
-
-!process.browser && tape('destroy with pipe before read end', function (t) {
- t.plan(2)
-
- var bl = new BufferList()
- fs.createReadStream(__dirname + '/test.js')
- .pipe(bl)
-
- bl.destroy()
-
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
-
-})
-
-!process.browser && tape('destroy with pipe before read end with race', function (t) {
- t.plan(2)
-
- var bl = new BufferList()
- fs.createReadStream(__dirname + '/test.js')
- .pipe(bl)
-
- setTimeout(function () {
- bl.destroy()
- setTimeout(function () {
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
- }, 500)
- }, 500)
-})
-
-!process.browser && tape('destroy with pipe after read end', function (t) {
- t.plan(2)
-
- var bl = new BufferList()
- fs.createReadStream(__dirname + '/test.js')
- .on('end', onEnd)
- .pipe(bl)
-
- function onEnd () {
- bl.destroy()
-
- t.equal(bl._bufs.length, 0)
- t.equal(bl.length, 0)
- }
-})
-
-!process.browser && tape('destroy with pipe while writing to a destination', function (t) {
- t.plan(4)
-
- var bl = new BufferList()
- , ds = new BufferList()
-
- fs.createReadStream(__dirname + '/test.js')
- .on('end', onEnd)
- .pipe(bl)
-
- function onEnd () {
- bl.pipe(ds)
-
- setTimeout(function () {
- bl.destroy()
-
- t.equals(bl._bufs.length, 0)
- t.equals(bl.length, 0)
-
- ds.destroy()
-
- t.equals(bl._bufs.length, 0)
- t.equals(bl.length, 0)
-
- }, 100)
- }
-})
-
-!process.browser && tape('handle error', function (t) {
- t.plan(2)
- fs.createReadStream('/does/not/exist').pipe(BufferList(function (err, data) {
- t.ok(err instanceof Error, 'has error')
- t.notOk(data, 'no data')
- }))
-})
diff --git a/APIs/node_modules/request/node_modules/caseless/LICENSE b/APIs/node_modules/request/node_modules/caseless/LICENSE
deleted file mode 100644
index 61789f4a..00000000
--- a/APIs/node_modules/request/node_modules/caseless/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Apache License
-Version 2.0, January 2004
-http://www.apache.org/licenses/
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-1. Definitions.
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/caseless/README.md b/APIs/node_modules/request/node_modules/caseless/README.md
deleted file mode 100644
index e5077a21..00000000
--- a/APIs/node_modules/request/node_modules/caseless/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing.
-
-This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set.
-
-## Usage
-
-```javascript
-var headers = {}
- , c = caseless(headers)
- ;
-c.set('a-Header', 'asdf')
-c.get('a-header') === 'asdf'
-```
-
-## has(key)
-
-Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with.
-
-```javascript
-c.has('a-header') === 'a-Header'
-```
-
-## set(key, value[, clobber=true])
-
-Set is fairly straight forward except that if the header exists and clobber is disabled it will add `','+value` to the existing header.
-
-```javascript
-c.set('a-Header', 'fdas')
-c.set('a-HEADER', 'more', false)
-c.get('a-header') === 'fdsa,more'
-```
-
-## swap(key)
-
-Swaps the casing of a header with the new one that is passed in.
-
-```javascript
-var headers = {}
- , c = caseless(headers)
- ;
-c.set('a-Header', 'fdas')
-c.swap('a-HEADER')
-c.has('a-header') === 'a-HEADER'
-headers === {'a-HEADER': 'fdas'}
-```
diff --git a/APIs/node_modules/request/node_modules/caseless/index.js b/APIs/node_modules/request/node_modules/caseless/index.js
deleted file mode 100644
index d86a70ec..00000000
--- a/APIs/node_modules/request/node_modules/caseless/index.js
+++ /dev/null
@@ -1,66 +0,0 @@
-function Caseless (dict) {
- this.dict = dict || {}
-}
-Caseless.prototype.set = function (name, value, clobber) {
- if (typeof name === 'object') {
- for (var i in name) {
- this.set(i, name[i], value)
- }
- } else {
- if (typeof clobber === 'undefined') clobber = true
- var has = this.has(name)
-
- if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value
- else this.dict[has || name] = value
- return has
- }
-}
-Caseless.prototype.has = function (name) {
- var keys = Object.keys(this.dict)
- , name = name.toLowerCase()
- ;
- for (var i=0;i
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/combined-stream/Readme.md b/APIs/node_modules/request/node_modules/combined-stream/Readme.md
deleted file mode 100644
index 3a9e025f..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/Readme.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# combined-stream
-
-A stream that emits multiple other streams one after another.
-
-**NB** Currently `combined-stream` works with streams vesrion 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatability with `combined-stream`.
-
-- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module.
-
-- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another.
-
-## Installation
-
-``` bash
-npm install combined-stream
-```
-
-## Usage
-
-Here is a simple example that shows how you can use combined-stream to combine
-two files into one:
-
-``` javascript
-var CombinedStream = require('combined-stream');
-var fs = require('fs');
-
-var combinedStream = CombinedStream.create();
-combinedStream.append(fs.createReadStream('file1.txt'));
-combinedStream.append(fs.createReadStream('file2.txt'));
-
-combinedStream.pipe(fs.createWriteStream('combined.txt'));
-```
-
-While the example above works great, it will pause all source streams until
-they are needed. If you don't want that to happen, you can set `pauseStreams`
-to `false`:
-
-``` javascript
-var CombinedStream = require('combined-stream');
-var fs = require('fs');
-
-var combinedStream = CombinedStream.create({pauseStreams: false});
-combinedStream.append(fs.createReadStream('file1.txt'));
-combinedStream.append(fs.createReadStream('file2.txt'));
-
-combinedStream.pipe(fs.createWriteStream('combined.txt'));
-```
-
-However, what if you don't have all the source streams yet, or you don't want
-to allocate the resources (file descriptors, memory, etc.) for them right away?
-Well, in that case you can simply provide a callback that supplies the stream
-by calling a `next()` function:
-
-``` javascript
-var CombinedStream = require('combined-stream');
-var fs = require('fs');
-
-var combinedStream = CombinedStream.create();
-combinedStream.append(function(next) {
- next(fs.createReadStream('file1.txt'));
-});
-combinedStream.append(function(next) {
- next(fs.createReadStream('file2.txt'));
-});
-
-combinedStream.pipe(fs.createWriteStream('combined.txt'));
-```
-
-## API
-
-### CombinedStream.create([options])
-
-Returns a new combined stream object. Available options are:
-
-* `maxDataSize`
-* `pauseStreams`
-
-The effect of those options is described below.
-
-### combinedStream.pauseStreams = `true`
-
-Whether to apply back pressure to the underlaying streams. If set to `false`,
-the underlaying streams will never be paused. If set to `true`, the
-underlaying streams will be paused right after being appended, as well as when
-`delayedStream.pipe()` wants to throttle.
-
-### combinedStream.maxDataSize = `2 * 1024 * 1024`
-
-The maximum amount of bytes (or characters) to buffer for all source streams.
-If this value is exceeded, `combinedStream` emits an `'error'` event.
-
-### combinedStream.dataSize = `0`
-
-The amount of bytes (or characters) currently buffered by `combinedStream`.
-
-### combinedStream.append(stream)
-
-Appends the given `stream` to the combinedStream object. If `pauseStreams` is
-set to `true, this stream will also be paused right away.
-
-`streams` can also be a function that takes one parameter called `next`. `next`
-is a function that must be invoked in order to provide the `next` stream, see
-example above.
-
-Regardless of how the `stream` is appended, combined-stream always attaches an
-`'error'` listener to it, so you don't have to do that manually.
-
-Special case: `stream` can also be a String or Buffer.
-
-### combinedStream.write(data)
-
-You should not call this, `combinedStream` takes care of piping the appended
-streams into itself for you.
-
-### combinedStream.resume()
-
-Causes `combinedStream` to start drain the streams it manages. The function is
-idempotent, and also emits a `'resume'` event each time which usually goes to
-the stream that is currently being drained.
-
-### combinedStream.pause();
-
-If `combinedStream.pauseStreams` is set to `false`, this does nothing.
-Otherwise a `'pause'` event is emitted, this goes to the stream that is
-currently being drained, so you can use it to apply back pressure.
-
-### combinedStream.end();
-
-Sets `combinedStream.writable` to false, emits an `'end'` event, and removes
-all streams from the queue.
-
-### combinedStream.destroy();
-
-Same as `combinedStream.end()`, except it emits a `'close'` event instead of
-`'end'`.
-
-## License
-
-combined-stream is licensed under the MIT license.
diff --git a/APIs/node_modules/request/node_modules/combined-stream/lib/combined_stream.js b/APIs/node_modules/request/node_modules/combined-stream/lib/combined_stream.js
deleted file mode 100644
index 6b5c21b6..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/lib/combined_stream.js
+++ /dev/null
@@ -1,188 +0,0 @@
-var util = require('util');
-var Stream = require('stream').Stream;
-var DelayedStream = require('delayed-stream');
-
-module.exports = CombinedStream;
-function CombinedStream() {
- this.writable = false;
- this.readable = true;
- this.dataSize = 0;
- this.maxDataSize = 2 * 1024 * 1024;
- this.pauseStreams = true;
-
- this._released = false;
- this._streams = [];
- this._currentStream = null;
-}
-util.inherits(CombinedStream, Stream);
-
-CombinedStream.create = function(options) {
- var combinedStream = new this();
-
- options = options || {};
- for (var option in options) {
- combinedStream[option] = options[option];
- }
-
- return combinedStream;
-};
-
-CombinedStream.isStreamLike = function(stream) {
- return (typeof stream !== 'function')
- && (typeof stream !== 'string')
- && (typeof stream !== 'boolean')
- && (typeof stream !== 'number')
- && (!Buffer.isBuffer(stream));
-};
-
-CombinedStream.prototype.append = function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
-
- if (isStreamLike) {
- if (!(stream instanceof DelayedStream)) {
- var newStream = DelayedStream.create(stream, {
- maxDataSize: Infinity,
- pauseStream: this.pauseStreams,
- });
- stream.on('data', this._checkDataSize.bind(this));
- stream = newStream;
- }
-
- this._handleErrors(stream);
-
- if (this.pauseStreams) {
- stream.pause();
- }
- }
-
- this._streams.push(stream);
- return this;
-};
-
-CombinedStream.prototype.pipe = function(dest, options) {
- Stream.prototype.pipe.call(this, dest, options);
- this.resume();
- return dest;
-};
-
-CombinedStream.prototype._getNext = function() {
- this._currentStream = null;
- var stream = this._streams.shift();
-
-
- if (typeof stream == 'undefined') {
- this.end();
- return;
- }
-
- if (typeof stream !== 'function') {
- this._pipeNext(stream);
- return;
- }
-
- var getStream = stream;
- getStream(function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('data', this._checkDataSize.bind(this));
- this._handleErrors(stream);
- }
-
- this._pipeNext(stream);
- }.bind(this));
-};
-
-CombinedStream.prototype._pipeNext = function(stream) {
- this._currentStream = stream;
-
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('end', this._getNext.bind(this));
- stream.pipe(this, {end: false});
- return;
- }
-
- var value = stream;
- this.write(value);
- this._getNext();
-};
-
-CombinedStream.prototype._handleErrors = function(stream) {
- var self = this;
- stream.on('error', function(err) {
- self._emitError(err);
- });
-};
-
-CombinedStream.prototype.write = function(data) {
- this.emit('data', data);
-};
-
-CombinedStream.prototype.pause = function() {
- if (!this.pauseStreams) {
- return;
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
- this.emit('pause');
-};
-
-CombinedStream.prototype.resume = function() {
- if (!this._released) {
- this._released = true;
- this.writable = true;
- this._getNext();
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
- this.emit('resume');
-};
-
-CombinedStream.prototype.end = function() {
- this._reset();
- this.emit('end');
-};
-
-CombinedStream.prototype.destroy = function() {
- this._reset();
- this.emit('close');
-};
-
-CombinedStream.prototype._reset = function() {
- this.writable = false;
- this._streams = [];
- this._currentStream = null;
-};
-
-CombinedStream.prototype._checkDataSize = function() {
- this._updateDataSize();
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
- this._emitError(new Error(message));
-};
-
-CombinedStream.prototype._updateDataSize = function() {
- this.dataSize = 0;
-
- var self = this;
- this._streams.forEach(function(stream) {
- if (!stream.dataSize) {
- return;
- }
-
- self.dataSize += stream.dataSize;
- });
-
- if (this._currentStream && this._currentStream.dataSize) {
- this.dataSize += this._currentStream.dataSize;
- }
-};
-
-CombinedStream.prototype._emitError = function(err) {
- this._reset();
- this.emit('error', err);
-};
diff --git a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore
deleted file mode 100644
index 9daeafb9..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License b/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License
deleted file mode 100644
index 4804b7ab..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011 Debuggable Limited
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile
deleted file mode 100644
index b4ff85a3..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-SHELL := /bin/bash
-
-test:
- @./test/run.js
-
-.PHONY: test
-
diff --git a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md
deleted file mode 100644
index aca36f9f..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# delayed-stream
-
-Buffers events from a stream until you are ready to handle them.
-
-## Installation
-
-``` bash
-npm install delayed-stream
-```
-
-## Usage
-
-The following example shows how to write a http echo server that delays its
-response by 1000 ms.
-
-``` javascript
-var DelayedStream = require('delayed-stream');
-var http = require('http');
-
-http.createServer(function(req, res) {
- var delayed = DelayedStream.create(req);
-
- setTimeout(function() {
- res.writeHead(200);
- delayed.pipe(res);
- }, 1000);
-});
-```
-
-If you are not using `Stream#pipe`, you can also manually release the buffered
-events by calling `delayedStream.resume()`:
-
-``` javascript
-var delayed = DelayedStream.create(req);
-
-setTimeout(function() {
- // Emit all buffered events and resume underlaying source
- delayed.resume();
-}, 1000);
-```
-
-## Implementation
-
-In order to use this meta stream properly, here are a few things you should
-know about the implementation.
-
-### Event Buffering / Proxying
-
-All events of the `source` stream are hijacked by overwriting the `source.emit`
-method. Until node implements a catch-all event listener, this is the only way.
-
-However, delayed-stream still continues to emit all events it captures on the
-`source`, regardless of whether you have released the delayed stream yet or
-not.
-
-Upon creation, delayed-stream captures all `source` events and stores them in
-an internal event buffer. Once `delayedStream.release()` is called, all
-buffered events are emitted on the `delayedStream`, and the event buffer is
-cleared. After that, delayed-stream merely acts as a proxy for the underlaying
-source.
-
-### Error handling
-
-Error events on `source` are buffered / proxied just like any other events.
-However, `delayedStream.create` attaches a no-op `'error'` listener to the
-`source`. This way you only have to handle errors on the `delayedStream`
-object, rather than in two places.
-
-### Buffer limits
-
-delayed-stream provides a `maxDataSize` property that can be used to limit
-the amount of data being buffered. In order to protect you from bad `source`
-streams that don't react to `source.pause()`, this feature is enabled by
-default.
-
-## API
-
-### DelayedStream.create(source, [options])
-
-Returns a new `delayedStream`. Available options are:
-
-* `pauseStream`
-* `maxDataSize`
-
-The description for those properties can be found below.
-
-### delayedStream.source
-
-The `source` stream managed by this object. This is useful if you are
-passing your `delayedStream` around, and you still want to access properties
-on the `source` object.
-
-### delayedStream.pauseStream = true
-
-Whether to pause the underlaying `source` when calling
-`DelayedStream.create()`. Modifying this property afterwards has no effect.
-
-### delayedStream.maxDataSize = 1024 * 1024
-
-The amount of data to buffer before emitting an `error`.
-
-If the underlaying source is emitting `Buffer` objects, the `maxDataSize`
-refers to bytes.
-
-If the underlaying source is emitting JavaScript strings, the size refers to
-characters.
-
-If you know what you are doing, you can set this property to `Infinity` to
-disable this feature. You can also modify this property during runtime.
-
-### delayedStream.dataSize = 0
-
-The amount of data buffered so far.
-
-### delayedStream.readable
-
-An ECMA5 getter that returns the value of `source.readable`.
-
-### delayedStream.resume()
-
-If the `delayedStream` has not been released so far, `delayedStream.release()`
-is called.
-
-In either case, `source.resume()` is called.
-
-### delayedStream.pause()
-
-Calls `source.pause()`.
-
-### delayedStream.pipe(dest)
-
-Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.
-
-### delayedStream.release()
-
-Emits and clears all events that have been buffered up so far. This does not
-resume the underlaying source, use `delayedStream.resume()` instead.
-
-## License
-
-delayed-stream is licensed under the MIT license.
diff --git a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js
deleted file mode 100644
index b38fc85f..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js
+++ /dev/null
@@ -1,107 +0,0 @@
-var Stream = require('stream').Stream;
-var util = require('util');
-
-module.exports = DelayedStream;
-function DelayedStream() {
- this.source = null;
- this.dataSize = 0;
- this.maxDataSize = 1024 * 1024;
- this.pauseStream = true;
-
- this._maxDataSizeExceeded = false;
- this._released = false;
- this._bufferedEvents = [];
-}
-util.inherits(DelayedStream, Stream);
-
-DelayedStream.create = function(source, options) {
- var delayedStream = new this();
-
- options = options || {};
- for (var option in options) {
- delayedStream[option] = options[option];
- }
-
- delayedStream.source = source;
-
- var realEmit = source.emit;
- source.emit = function() {
- delayedStream._handleEmit(arguments);
- return realEmit.apply(source, arguments);
- };
-
- source.on('error', function() {});
- if (delayedStream.pauseStream) {
- source.pause();
- }
-
- return delayedStream;
-};
-
-Object.defineProperty(DelayedStream.prototype, 'readable', {
- configurable: true,
- enumerable: true,
- get: function() {
- return this.source.readable;
- }
-});
-
-DelayedStream.prototype.setEncoding = function() {
- return this.source.setEncoding.apply(this.source, arguments);
-};
-
-DelayedStream.prototype.resume = function() {
- if (!this._released) {
- this.release();
- }
-
- this.source.resume();
-};
-
-DelayedStream.prototype.pause = function() {
- this.source.pause();
-};
-
-DelayedStream.prototype.release = function() {
- this._released = true;
-
- this._bufferedEvents.forEach(function(args) {
- this.emit.apply(this, args);
- }.bind(this));
- this._bufferedEvents = [];
-};
-
-DelayedStream.prototype.pipe = function() {
- var r = Stream.prototype.pipe.apply(this, arguments);
- this.resume();
- return r;
-};
-
-DelayedStream.prototype._handleEmit = function(args) {
- if (this._released) {
- this.emit.apply(this, args);
- return;
- }
-
- if (args[0] === 'data') {
- this.dataSize += args[1].length;
- this._checkIfMaxDataSizeExceeded();
- }
-
- this._bufferedEvents.push(args);
-};
-
-DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
- if (this._maxDataSizeExceeded) {
- return;
- }
-
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- this._maxDataSizeExceeded = true;
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
- this.emit('error', new Error(message));
-};
diff --git a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json b/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
deleted file mode 100644
index a549dd07..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "author": {
- "name": "Felix Geisendörfer",
- "email": "felix@debuggable.com",
- "url": "http://debuggable.com/"
- },
- "contributors": [
- {
- "name": "Mike Atkins",
- "email": "apeherder@gmail.com"
- }
- ],
- "name": "delayed-stream",
- "description": "Buffers events from a stream until you are ready to handle them.",
- "license": "MIT",
- "version": "1.0.0",
- "homepage": "https://github.com/felixge/node-delayed-stream",
- "repository": {
- "type": "git",
- "url": "git://github.com/felixge/node-delayed-stream.git"
- },
- "main": "./lib/delayed_stream",
- "engines": {
- "node": ">=0.4.0"
- },
- "scripts": {
- "test": "make test"
- },
- "dependencies": {},
- "devDependencies": {
- "fake": "0.2.0",
- "far": "0.0.1"
- },
- "gitHead": "07a9dc99fb8f1a488160026b9ad77493f766fb84",
- "bugs": {
- "url": "https://github.com/felixge/node-delayed-stream/issues"
- },
- "_id": "delayed-stream@1.0.0",
- "_shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619",
- "_from": "delayed-stream@~1.0.0",
- "_npmVersion": "2.8.3",
- "_nodeVersion": "1.6.4",
- "_npmUser": {
- "name": "apechimp",
- "email": "apeherder@gmail.com"
- },
- "dist": {
- "shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619",
- "tarball": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "felixge",
- "email": "felix@debuggable.com"
- },
- {
- "name": "apechimp",
- "email": "apeherder@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/combined-stream/package.json b/APIs/node_modules/request/node_modules/combined-stream/package.json
deleted file mode 100644
index 3b66f70f..00000000
--- a/APIs/node_modules/request/node_modules/combined-stream/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "author": {
- "name": "Felix Geisendörfer",
- "email": "felix@debuggable.com",
- "url": "http://debuggable.com/"
- },
- "name": "combined-stream",
- "description": "A stream that emits multiple other streams one after another.",
- "version": "1.0.5",
- "homepage": "https://github.com/felixge/node-combined-stream",
- "repository": {
- "type": "git",
- "url": "git://github.com/felixge/node-combined-stream.git"
- },
- "main": "./lib/combined_stream",
- "scripts": {
- "test": "node test/run.js"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "devDependencies": {
- "far": "~0.0.7"
- },
- "license": "MIT",
- "gitHead": "cfc7b815d090a109bcedb5bb0f6713148d55a6b7",
- "bugs": {
- "url": "https://github.com/felixge/node-combined-stream/issues"
- },
- "_id": "combined-stream@1.0.5",
- "_shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009",
- "_from": "combined-stream@~1.0.5",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- "dist": {
- "shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009",
- "tarball": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
- },
- "maintainers": [
- {
- "name": "felixge",
- "email": "felix@debuggable.com"
- },
- {
- "name": "celer",
- "email": "dtyree77@gmail.com"
- },
- {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
- },
- {
- "name": "apechimp",
- "email": "apeherder@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/extend/.eslintrc b/APIs/node_modules/request/node_modules/extend/.eslintrc
deleted file mode 100644
index d49f1735..00000000
--- a/APIs/node_modules/request/node_modules/extend/.eslintrc
+++ /dev/null
@@ -1,192 +0,0 @@
-{
- "env": {
- "browser": false,
- "node": true,
- "amd": false,
- "mocha": false,
- "jasmine": false
- },
-
- "rules": {
- "accessor-pairs": [2, { getWithoutSet: false, setWithoutGet: true }],
- "array-bracket-spacing": [2, "never", {
- "singleValue": false,
- "objectsInArrays": false,
- "arraysInArrays": false
- }],
- "block-scoped-var": [0],
- "brace-style": [2, "1tbs", { "allowSingleLine": true }],
- "camelcase": [2],
- "comma-dangle": [2, "never"],
- "comma-spacing": [2],
- "comma-style": [2, "last"],
- "complexity": [2, 15],
- "computed-property-spacing": [2, "never"],
- "consistent-return": [2],
- "consistent-this": [0, "that"],
- "constructor-super": [2],
- "curly": [2, "all"],
- "default-case": [2],
- "dot-notation": [2, { "allowKeywords": true }],
- "eol-last": [2],
- "eqeqeq": [2],
- "func-names": [0],
- "func-style": [2, "expression"],
- "generator-star-spacing": [2, { "before": false, "after": true }],
- "global-strict": [0, "never"],
- "guard-for-in": [0],
- "handle-callback-err": [0],
- "key-spacing": [2, { "beforeColon": false, "afterColon": true }],
- "linebreak-style": [2, "unix"],
- "lines-around-comment": [2, {
- "beforeBlockComment": false,
- "afterBlockComment": false,
- "beforeLineComment": false,
- "beforeLineComment": false,
- "allowBlockStart": true,
- "allowBlockEnd": true
- }],
- "quotes": [2, "single", "avoid-escape"],
- "max-depth": [1, 4],
- "max-len": [0, 80, 4],
- "max-nested-callbacks": [2, 2],
- "max-params": [2, 2],
- "max-statements": [2, 21],
- "new-parens": [2],
- "new-cap": [2],
- "newline-after-var": [0],
- "no-alert": [2],
- "no-array-constructor": [2],
- "no-bitwise": [0],
- "no-caller": [2],
- "no-catch-shadow": [2],
- "no-cond-assign": [2],
- "no-console": [2],
- "no-constant-condition": [2],
- "no-continue": [2],
- "no-control-regex": [2],
- "no-debugger": [2],
- "no-delete-var": [2],
- "no-div-regex": [0],
- "no-dupe-args": [2],
- "no-dupe-keys": [2],
- "no-duplicate-case": [2],
- "no-else-return": [0],
- "no-empty": [2],
- "no-empty-character-class": [2],
- "no-empty-label": [2],
- "no-eq-null": [0],
- "no-eval": [2],
- "no-ex-assign": [2],
- "no-extend-native": [2],
- "no-extra-bind": [2],
- "no-extra-boolean-cast": [2],
- "no-extra-parens": [0],
- "no-extra-semi": [2],
- "no-fallthrough": [2],
- "no-floating-decimal": [2],
- "no-func-assign": [2],
- "no-implied-eval": [2],
- "no-inline-comments": [0],
- "no-inner-declarations": [2, "functions"],
- "no-invalid-regexp": [2],
- "no-irregular-whitespace": [2],
- "no-iterator": [2],
- "no-label-var": [2],
- "no-labels": [2],
- "no-lone-blocks": [2],
- "no-lonely-if": [2],
- "no-loop-func": [2],
- "no-mixed-requires": [0, false],
- "no-mixed-spaces-and-tabs": [2, false],
- "no-multi-spaces": [2],
- "no-multi-str": [2],
- "no-multiple-empty-lines": [2, {"max": 1}],
- "no-native-reassign": [2],
- "no-negated-in-lhs": [2],
- "no-nested-ternary": [0],
- "no-new": [2],
- "no-new-func": [2],
- "no-new-object": [2],
- "no-new-require": [0],
- "no-new-wrappers": [2],
- "no-obj-calls": [2],
- "no-octal": [2],
- "no-octal-escape": [2],
- "no-param-reassign": [2],
- "no-path-concat": [0],
- "no-plusplus": [0],
- "no-process-env": [0],
- "no-process-exit": [2],
- "no-proto": [2],
- "no-redeclare": [2],
- "no-regex-spaces": [2],
- "no-reserved-keys": [2],
- "no-restricted-modules": [0],
- "no-return-assign": [2, "always"],
- "no-script-url": [2],
- "no-self-compare": [0],
- "no-sequences": [2],
- "no-shadow": [2],
- "no-shadow-restricted-names": [2],
- "no-space-before-semi": [2],
- "no-spaced-func": [2],
- "no-sparse-arrays": [2],
- "no-sync": [0],
- "no-ternary": [0],
- "no-this-before-super": [2],
- "no-throw-literal": [2],
- "no-trailing-spaces": [2, { "skipBlankLines": false }],
- "no-undef": [2],
- "no-undef-init": [2],
- "no-undefined": [0],
- "no-underscore-dangle": [2],
- "no-unexpected-multiline": [2],
- "no-unneeded-ternary": [2],
- "no-unreachable": [2],
- "no-unused-expressions": [2],
- "no-unused-vars": [2, { "vars": "all", "args": "after-used" }],
- "no-use-before-define": [2],
- "no-void": [0],
- "no-warning-comments": [0, { "terms": ["todo", "fixme", "xxx"], "location": "start" }],
- "no-with": [2],
- "no-wrap-func": [2],
- "object-curly-spacing": [2, "always"],
- "object-shorthand": [2, "never"],
- "one-var": [0],
- "operator-assignment": [0, "always"],
- "operator-linebreak": [2, "none"],
- "padded-blocks": [0],
- "prefer-const": [0],
- "quote-props": [0],
- "radix": [0],
- "semi": [2],
- "semi-spacing": [2, { "before": false, "after": true }],
- "sort-vars": [0],
- "space-after-keywords": [2, "always"],
- "space-before-function-paren": [2, { "anonymous": "always", "named": "never" }],
- "space-before-blocks": [0, "always"],
- "space-in-brackets": [0, "never", {
- "singleValue": true,
- "arraysInArrays": false,
- "arraysInObjects": false,
- "objectsInArrays": true,
- "objectsInObjects": true,
- "propertyName": false
- }],
- "space-in-parens": [2, "never"],
- "space-infix-ops": [2],
- "space-return-throw-case": [2],
- "space-unary-ops": [2, { "words": true, "nonwords": false }],
- "spaced-comment": [2, "always"],
- "spaced-line-comment": [0, "always"],
- "strict": [2, "global"],
- "use-isnan": [2],
- "valid-jsdoc": [0],
- "valid-typeof": [2],
- "vars-on-top": [0],
- "wrap-iife": [2],
- "wrap-regex": [2],
- "yoda": [2, "never", { "exceptRange": true, "onlyEquality": false }]
- }
-}
diff --git a/APIs/node_modules/request/node_modules/extend/.jscs.json b/APIs/node_modules/request/node_modules/extend/.jscs.json
deleted file mode 100644
index 7e84b282..00000000
--- a/APIs/node_modules/request/node_modules/extend/.jscs.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "additionalRules": [],
-
- "requireSemicolons": true,
-
- "disallowMultipleSpaces": true,
-
- "disallowIdentifierNames": [],
-
- "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"],
-
- "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
-
- "disallowSpaceAfterKeywords": [],
-
- "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
- "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
- "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
-
- "requireSpaceBetweenArguments": true,
-
- "disallowSpacesInsideParentheses": true,
-
- "disallowSpacesInsideArrayBrackets": true,
-
- "disallowQuotedKeysInObjects": "allButReserved",
-
- "disallowSpaceAfterObjectKeys": true,
-
- "requireCommaBeforeLineBreak": true,
-
- "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
- "requireSpaceAfterPrefixUnaryOperators": [],
-
- "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
- "requireSpaceBeforePostfixUnaryOperators": [],
-
- "disallowSpaceBeforeBinaryOperators": [],
- "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
-
- "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
- "disallowSpaceAfterBinaryOperators": [],
-
- "disallowImplicitTypeConversion": ["binary", "string"],
-
- "disallowKeywords": ["with", "eval"],
-
- "requireKeywordsOnNewLine": [],
- "disallowKeywordsOnNewLine": ["else"],
-
- "requireLineFeedAtFileEnd": true,
-
- "disallowTrailingWhitespace": true,
-
- "disallowTrailingComma": true,
-
- "excludeFiles": ["node_modules/**", "vendor/**"],
-
- "disallowMultipleLineStrings": true,
-
- "requireDotNotation": true,
-
- "requireParenthesesAroundIIFE": true,
-
- "validateLineBreaks": "LF",
-
- "validateQuoteMarks": {
- "escape": true,
- "mark": "'"
- },
-
- "disallowOperatorBeforeLineBreak": [],
-
- "requireSpaceBeforeKeywords": [
- "do",
- "for",
- "if",
- "else",
- "switch",
- "case",
- "try",
- "catch",
- "finally",
- "while",
- "with",
- "return"
- ],
-
- "validateAlignedFunctionParameters": {
- "lineBreakAfterOpeningBraces": true,
- "lineBreakBeforeClosingBraces": true
- },
-
- "requirePaddingNewLinesBeforeExport": true,
-
- "validateNewlineAfterArrayElements": {
- "maximum": 6
- },
-
- "requirePaddingNewLinesAfterUseStrict": true
-}
-
diff --git a/APIs/node_modules/request/node_modules/extend/.npmignore b/APIs/node_modules/request/node_modules/extend/.npmignore
deleted file mode 100644
index 30d74d25..00000000
--- a/APIs/node_modules/request/node_modules/extend/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-test
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/extend/.travis.yml b/APIs/node_modules/request/node_modules/extend/.travis.yml
deleted file mode 100644
index ebef6449..00000000
--- a/APIs/node_modules/request/node_modules/extend/.travis.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-language: node_js
-node_js:
- - "iojs-v2.3"
- - "iojs-v2.2"
- - "iojs-v2.1"
- - "iojs-v2.0"
- - "iojs-v1.8"
- - "iojs-v1.7"
- - "iojs-v1.6"
- - "iojs-v1.5"
- - "iojs-v1.4"
- - "iojs-v1.3"
- - "iojs-v1.2"
- - "iojs-v1.1"
- - "iojs-v1.0"
- - "0.12"
- - "0.11"
- - "0.10"
- - "0.9"
- - "0.8"
- - "0.6"
- - "0.4"
-before_install:
- - '[ "${TRAVIS_NODE_VERSION}" = "0.6" ] || npm install -g npm@1.4.28 && npm install -g npm'
-sudo: false
-matrix:
- fast_finish: true
- allow_failures:
- - node_js: "iojs-v2.2"
- - node_js: "iojs-v2.1"
- - node_js: "iojs-v2.0"
- - node_js: "iojs-v1.7"
- - node_js: "iojs-v1.6"
- - node_js: "iojs-v1.5"
- - node_js: "iojs-v1.4"
- - node_js: "iojs-v1.3"
- - node_js: "iojs-v1.2"
- - node_js: "iojs-v1.1"
- - node_js: "iojs-v1.0"
- - node_js: "0.11"
- - node_js: "0.9"
- - node_js: "0.8"
- - node_js: "0.6"
- - node_js: "0.4"
diff --git a/APIs/node_modules/request/node_modules/extend/CHANGELOG.md b/APIs/node_modules/request/node_modules/extend/CHANGELOG.md
deleted file mode 100644
index ee0cfd6a..00000000
--- a/APIs/node_modules/request/node_modules/extend/CHANGELOG.md
+++ /dev/null
@@ -1,69 +0,0 @@
-3.0.0 / 2015-07-01
-==================
- * [Possible breaking change] Use global "strict" directive (#32)
- * [Tests] `int` is an ES3 reserved word
- * [Tests] Test up to `io.js` `v2.3`
- * [Tests] Add `npm run eslint`
- * [Dev Deps] Update `covert`, `jscs`
-
-2.0.1 / 2015-04-25
-==================
- * Use an inline `isArray` check, for ES3 browsers. (#27)
- * Some old browsers fail when an identifier is `toString`
- * Test latest `node` and `io.js` versions on `travis-ci`; speed up builds
- * Add license info to package.json (#25)
- * Update `tape`, `jscs`
- * Adding a CHANGELOG
-
-2.0.0 / 2014-10-01
-==================
- * Increase code coverage to 100%; run code coverage as part of tests
- * Add `npm run lint`; Run linter as part of tests
- * Remove nodeType and setInterval checks in isPlainObject
- * Updating `tape`, `jscs`, `covert`
- * General style and README cleanup
-
-1.3.0 / 2014-06-20
-==================
- * Add component.json for browser support (#18)
- * Use SVG for badges in README (#16)
- * Updating `tape`, `covert`
- * Updating travis-ci to work with multiple node versions
- * Fix `deep === false` bug (returning target as {}) (#14)
- * Fixing constructor checks in isPlainObject
- * Adding additional test coverage
- * Adding `npm run coverage`
- * Add LICENSE (#13)
- * Adding a warning about `false`, per #11
- * General style and whitespace cleanup
-
-1.2.1 / 2013-09-14
-==================
- * Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8
- * Updating `tape`
-
-1.2.0 / 2013-09-02
-==================
- * Updating the README: add badges
- * Adding a missing variable reference.
- * Using `tape` instead of `buster` for tests; add more tests (#7)
- * Adding node 0.10 to Travis CI (#6)
- * Enabling "npm test" and cleaning up package.json (#5)
- * Add Travis CI.
-
-1.1.3 / 2012-12-06
-==================
- * Added unit tests.
- * Ensure extend function is named. (Looks nicer in a stack trace.)
- * README cleanup.
-
-1.1.1 / 2012-11-07
-==================
- * README cleanup.
- * Added installation instructions.
- * Added a missing semicolon
-
-1.0.0 / 2012-04-08
-==================
- * Initial commit
-
diff --git a/APIs/node_modules/request/node_modules/extend/LICENSE b/APIs/node_modules/request/node_modules/extend/LICENSE
deleted file mode 100644
index e16d6a56..00000000
--- a/APIs/node_modules/request/node_modules/extend/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Stefan Thomas
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/APIs/node_modules/request/node_modules/extend/README.md b/APIs/node_modules/request/node_modules/extend/README.md
deleted file mode 100644
index 632fb0f9..00000000
--- a/APIs/node_modules/request/node_modules/extend/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-[![Build Status][travis-svg]][travis-url]
-[![dependency status][deps-svg]][deps-url]
-[![dev dependency status][dev-deps-svg]][dev-deps-url]
-
-# extend() for Node.js [![Version Badge][npm-version-png]][npm-url]
-
-`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.
-
-## Installation
-
-This package is available on [npm][npm-url] as: `extend`
-
-``` sh
-npm install extend
-```
-
-## Usage
-
-**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**
-
-*Extend one object with one or more others, returning the modified object.*
-
-Keep in mind that the target object will be modified, and will be returned from extend().
-
-If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).
-Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
-Warning: passing `false` as the first argument is not supported.
-
-### Arguments
-
-* `deep` *Boolean* (optional)
-If set, the merge becomes recursive (i.e. deep copy).
-* `target` *Object*
-The object to extend.
-* `object1` *Object*
-The object that will be merged into the first.
-* `objectN` *Object* (Optional)
-More objects to merge into the first.
-
-## License
-
-`node-extend` is licensed under the [MIT License][mit-license-url].
-
-## Acknowledgements
-
-All credit to the jQuery authors for perfecting this amazing utility.
-
-Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].
-
-[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg
-[travis-url]: https://travis-ci.org/justmoon/node-extend
-[npm-url]: https://npmjs.org/package/extend
-[mit-license-url]: http://opensource.org/licenses/MIT
-[github-justmoon]: https://github.com/justmoon
-[github-insin]: https://github.com/insin
-[github-ljharb]: https://github.com/ljharb
-[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg
-[deps-svg]: https://david-dm.org/justmoon/node-extend.svg
-[deps-url]: https://david-dm.org/justmoon/node-extend
-[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg
-[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies
-
diff --git a/APIs/node_modules/request/node_modules/extend/component.json b/APIs/node_modules/request/node_modules/extend/component.json
deleted file mode 100644
index 1500a2f3..00000000
--- a/APIs/node_modules/request/node_modules/extend/component.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "extend",
- "author": "Stefan Thomas (http://www.justmoon.net)",
- "version": "3.0.0",
- "description": "Port of jQuery.extend for node.js and the browser.",
- "scripts": [
- "index.js"
- ],
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "repository" : {
- "type": "git",
- "url": "https://github.com/justmoon/node-extend.git"
- },
- "dependencies": {
- },
- "devDependencies": {
- "tape" : "~3.0.0",
- "covert": "~0.4.0",
- "jscs": "~1.6.2"
- }
-}
-
diff --git a/APIs/node_modules/request/node_modules/extend/index.js b/APIs/node_modules/request/node_modules/extend/index.js
deleted file mode 100644
index f5ec75d5..00000000
--- a/APIs/node_modules/request/node_modules/extend/index.js
+++ /dev/null
@@ -1,86 +0,0 @@
-'use strict';
-
-var hasOwn = Object.prototype.hasOwnProperty;
-var toStr = Object.prototype.toString;
-
-var isArray = function isArray(arr) {
- if (typeof Array.isArray === 'function') {
- return Array.isArray(arr);
- }
-
- return toStr.call(arr) === '[object Array]';
-};
-
-var isPlainObject = function isPlainObject(obj) {
- if (!obj || toStr.call(obj) !== '[object Object]') {
- return false;
- }
-
- var hasOwnConstructor = hasOwn.call(obj, 'constructor');
- var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
- // Not own constructor property must be Object
- if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
- var key;
- for (key in obj) {/**/}
-
- return typeof key === 'undefined' || hasOwn.call(obj, key);
-};
-
-module.exports = function extend() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0],
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if (typeof target === 'boolean') {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {
- target = {};
- }
-
- for (; i < length; ++i) {
- options = arguments[i];
- // Only deal with non-null/undefined values
- if (options != null) {
- // Extend the base object
- for (name in options) {
- src = target[name];
- copy = options[name];
-
- // Prevent never-ending loop
- if (target !== copy) {
- // Recurse if we're merging plain objects or arrays
- if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
- if (copyIsArray) {
- copyIsArray = false;
- clone = src && isArray(src) ? src : [];
- } else {
- clone = src && isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[name] = extend(deep, clone, copy);
-
- // Don't bring in undefined values
- } else if (typeof copy !== 'undefined') {
- target[name] = copy;
- }
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
diff --git a/APIs/node_modules/request/node_modules/extend/package.json b/APIs/node_modules/request/node_modules/extend/package.json
deleted file mode 100644
index 2dc858a5..00000000
--- a/APIs/node_modules/request/node_modules/extend/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "extend",
- "author": {
- "name": "Stefan Thomas",
- "email": "justmoon@members.fsf.org",
- "url": "http://www.justmoon.net"
- },
- "version": "3.0.0",
- "description": "Port of jQuery.extend for node.js and the browser",
- "main": "index",
- "scripts": {
- "test": "npm run lint && node test/index.js && npm run coverage-quiet",
- "coverage": "covert test/index.js",
- "coverage-quiet": "covert test/index.js --quiet",
- "lint": "npm run jscs && npm run eslint",
- "jscs": "jscs *.js */*.js",
- "eslint": "eslint *.js */*.js"
- },
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/justmoon/node-extend.git"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "^4.0.0",
- "covert": "^1.1.0",
- "jscs": "^1.13.1",
- "eslint": "^0.24.0"
- },
- "license": "MIT",
- "gitHead": "148e7270cab2e9413af2cd0cab147070d755ed6d",
- "bugs": {
- "url": "https://github.com/justmoon/node-extend/issues"
- },
- "homepage": "https://github.com/justmoon/node-extend#readme",
- "_id": "extend@3.0.0",
- "_shasum": "5a474353b9f3353ddd8176dfd37b91c83a46f1d4",
- "_from": "extend@~3.0.0",
- "_npmVersion": "2.11.3",
- "_nodeVersion": "2.3.1",
- "_npmUser": {
- "name": "ljharb",
- "email": "ljharb@gmail.com"
- },
- "dist": {
- "shasum": "5a474353b9f3353ddd8176dfd37b91c83a46f1d4",
- "tarball": "http://registry.npmjs.org/extend/-/extend-3.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "justmoon",
- "email": "justmoon@members.fsf.org"
- },
- {
- "name": "ljharb",
- "email": "ljharb@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/forever-agent/LICENSE b/APIs/node_modules/request/node_modules/forever-agent/LICENSE
deleted file mode 100644
index a4a9aee0..00000000
--- a/APIs/node_modules/request/node_modules/forever-agent/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/APIs/node_modules/request/node_modules/forever-agent/README.md b/APIs/node_modules/request/node_modules/forever-agent/README.md
deleted file mode 100644
index 9d5b6634..00000000
--- a/APIs/node_modules/request/node_modules/forever-agent/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-forever-agent
-=============
-
-HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.
diff --git a/APIs/node_modules/request/node_modules/forever-agent/index.js b/APIs/node_modules/request/node_modules/forever-agent/index.js
deleted file mode 100644
index 416c7abd..00000000
--- a/APIs/node_modules/request/node_modules/forever-agent/index.js
+++ /dev/null
@@ -1,138 +0,0 @@
-module.exports = ForeverAgent
-ForeverAgent.SSL = ForeverAgentSSL
-
-var util = require('util')
- , Agent = require('http').Agent
- , net = require('net')
- , tls = require('tls')
- , AgentSSL = require('https').Agent
-
-function getConnectionName(host, port) {
- var name = ''
- if (typeof host === 'string') {
- name = host + ':' + port
- } else {
- // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name.
- name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':')
- }
- return name
-}
-
-function ForeverAgent(options) {
- var self = this
- self.options = options || {}
- self.requests = {}
- self.sockets = {}
- self.freeSockets = {}
- self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets
- self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets
- self.on('free', function(socket, host, port) {
- var name = getConnectionName(host, port)
-
- if (self.requests[name] && self.requests[name].length) {
- self.requests[name].shift().onSocket(socket)
- } else if (self.sockets[name].length < self.minSockets) {
- if (!self.freeSockets[name]) self.freeSockets[name] = []
- self.freeSockets[name].push(socket)
-
- // if an error happens while we don't use the socket anyway, meh, throw the socket away
- var onIdleError = function() {
- socket.destroy()
- }
- socket._onIdleError = onIdleError
- socket.on('error', onIdleError)
- } else {
- // If there are no pending requests just destroy the
- // socket and it will get removed from the pool. This
- // gets us out of timeout issues and allows us to
- // default to Connection:keep-alive.
- socket.destroy()
- }
- })
-
-}
-util.inherits(ForeverAgent, Agent)
-
-ForeverAgent.defaultMinSockets = 5
-
-
-ForeverAgent.prototype.createConnection = net.createConnection
-ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest
-ForeverAgent.prototype.addRequest = function(req, host, port) {
- var name = getConnectionName(host, port)
-
- if (typeof host !== 'string') {
- var options = host
- port = options.port
- host = options.host
- }
-
- if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) {
- var idleSocket = this.freeSockets[name].pop()
- idleSocket.removeListener('error', idleSocket._onIdleError)
- delete idleSocket._onIdleError
- req._reusedSocket = true
- req.onSocket(idleSocket)
- } else {
- this.addRequestNoreuse(req, host, port)
- }
-}
-
-ForeverAgent.prototype.removeSocket = function(s, name, host, port) {
- if (this.sockets[name]) {
- var index = this.sockets[name].indexOf(s)
- if (index !== -1) {
- this.sockets[name].splice(index, 1)
- }
- } else if (this.sockets[name] && this.sockets[name].length === 0) {
- // don't leak
- delete this.sockets[name]
- delete this.requests[name]
- }
-
- if (this.freeSockets[name]) {
- var index = this.freeSockets[name].indexOf(s)
- if (index !== -1) {
- this.freeSockets[name].splice(index, 1)
- if (this.freeSockets[name].length === 0) {
- delete this.freeSockets[name]
- }
- }
- }
-
- if (this.requests[name] && this.requests[name].length) {
- // If we have pending requests and a socket gets closed a new one
- // needs to be created to take over in the pool for the one that closed.
- this.createSocket(name, host, port).emit('free')
- }
-}
-
-function ForeverAgentSSL (options) {
- ForeverAgent.call(this, options)
-}
-util.inherits(ForeverAgentSSL, ForeverAgent)
-
-ForeverAgentSSL.prototype.createConnection = createConnectionSSL
-ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest
-
-function createConnectionSSL (port, host, options) {
- if (typeof port === 'object') {
- options = port;
- } else if (typeof host === 'object') {
- options = host;
- } else if (typeof options === 'object') {
- options = options;
- } else {
- options = {};
- }
-
- if (typeof port === 'number') {
- options.port = port;
- }
-
- if (typeof host === 'string') {
- options.host = host;
- }
-
- return tls.connect(options);
-}
diff --git a/APIs/node_modules/request/node_modules/forever-agent/package.json b/APIs/node_modules/request/node_modules/forever-agent/package.json
deleted file mode 100644
index b0a0f4a0..00000000
--- a/APIs/node_modules/request/node_modules/forever-agent/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "forever-agent",
- "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.",
- "version": "0.6.1",
- "license": "Apache-2.0",
- "repository": {
- "url": "https://github.com/mikeal/forever-agent"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "gitHead": "1b3b6163f2b3c2c4122bbfa288c1325c0df9871d",
- "bugs": {
- "url": "https://github.com/mikeal/forever-agent/issues"
- },
- "homepage": "https://github.com/mikeal/forever-agent",
- "_id": "forever-agent@0.6.1",
- "scripts": {},
- "_shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91",
- "_from": "forever-agent@~0.6.1",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- }
- ],
- "dist": {
- "shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91",
- "tarball": "http://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/APIs/node_modules/request/node_modules/form-data/.dockerignore b/APIs/node_modules/request/node_modules/form-data/.dockerignore
deleted file mode 100644
index c67305cf..00000000
--- a/APIs/node_modules/request/node_modules/form-data/.dockerignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.iml
-*.sublime-*
-*.un~
-.idea
-sftp-config.json
-node_modules/
-test/tmp/
diff --git a/APIs/node_modules/request/node_modules/form-data/.editorconfig b/APIs/node_modules/request/node_modules/form-data/.editorconfig
deleted file mode 100644
index 0f099897..00000000
--- a/APIs/node_modules/request/node_modules/form-data/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-# editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
diff --git a/APIs/node_modules/request/node_modules/form-data/.eslintignore b/APIs/node_modules/request/node_modules/form-data/.eslintignore
deleted file mode 100644
index 8d87b1d2..00000000
--- a/APIs/node_modules/request/node_modules/form-data/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/*
diff --git a/APIs/node_modules/request/node_modules/form-data/.eslintrc b/APIs/node_modules/request/node_modules/form-data/.eslintrc
deleted file mode 100644
index 129fcef0..00000000
--- a/APIs/node_modules/request/node_modules/form-data/.eslintrc
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "env": {
- "node": true,
- "browser": false
- },
- "rules": {
- // 2-space indentation
- "indent": [2, 2, {"SwitchCase": 1}],
- // Require strings to use single quotes
- "quotes": [2, "single"],
- // Allow only unix line-endings
- "linebreak-style": [2, "unix"],
- // Always require semicolons
- "semi": [2, "always"],
- // Require curly braces for multi-line control statements
- "curly": [2, "multi-line"],
- // Always handle callback error cases
- "handle-callback-err": [2, "^err"],
- // Require JSDoc for all function definitions
- "valid-jsdoc": [2, {
- "requireReturn": false,
- "requireReturnDescription": false,
- "prefer": {
- "return": "returns"
- }
- }],
- "require-jsdoc": [2, {
- "require": {
- "FunctionDeclaration": true
- }
- }],
- "no-redeclare": [2, { "builtinGlobals": true }],
- "no-shadow": [2, { "builtinGlobals": true, "hoist": "all" }],
- // Disallow using variables before they've been defined
- // functions are ok
- "no-use-before-define": [2, "nofunc"],
- "no-shadow-restricted-names": 2,
- "no-extra-semi": 2,
- // Disallow unused variables
- "no-unused-vars": 2,
- "no-undef": 2,
- // Use if () { }
- // ^ space
- "keyword-spacing": 2,
- // Use if () { }
- // ^ space
- "space-before-blocks": [2, "always"],
- // eslint can't handle this, so the check is disabled.
- "key-spacing": 0,
- "strict": 0,
- // Do not force dot-notation
- "dot-notation": 0,
- "eol-last": 0,
- "no-new": 0,
- "semi-spacing": 0,
- // Allow multi spaces around operators since they are
- // used for alignment. This is not consistent in the
- // code.
- "no-multi-spaces": 0,
- "eqeqeq": 0,
- "no-mixed-requires": 0,
- "no-console": 0
- }
-}
diff --git a/APIs/node_modules/request/node_modules/form-data/License b/APIs/node_modules/request/node_modules/form-data/License
deleted file mode 100644
index c7ff12a2..00000000
--- a/APIs/node_modules/request/node_modules/form-data/License
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/form-data/README.md b/APIs/node_modules/request/node_modules/form-data/README.md
deleted file mode 100644
index e857db6e..00000000
--- a/APIs/node_modules/request/node_modules/form-data/README.md
+++ /dev/null
@@ -1,218 +0,0 @@
-# Form-Data [](https://www.npmjs.com/package/form-data) [](https://gitter.im/form-data/form-data)
-
-A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications.
-
-The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].
-
-[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface
-[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions
-
-[](https://travis-ci.org/form-data/form-data)
-[](https://ci.appveyor.com/project/alexindigo/form-data)
-[](https://coveralls.io/github/form-data/form-data?branch=master)
-
-[](https://david-dm.org/form-data/form-data)
-[](https://www.codacy.com/app/form-data/form-data)
-[](https://www.bithound.io/github/form-data/form-data)
-
-## Install
-
-```
-npm install form-data
-```
-
-## Usage
-
-In this example we are constructing a form with 3 fields that contain a string,
-a buffer and a file stream.
-
-``` javascript
-var FormData = require('form-data');
-var fs = require('fs');
-
-var form = new FormData();
-form.append('my_field', 'my value');
-form.append('my_buffer', new Buffer(10));
-form.append('my_file', fs.createReadStream('/foo/bar.jpg'));
-```
-
-Also you can use http-response stream:
-
-``` javascript
-var FormData = require('form-data');
-var http = require('http');
-
-var form = new FormData();
-
-http.request('http://nodejs.org/images/logo.png', function(response) {
- form.append('my_field', 'my value');
- form.append('my_buffer', new Buffer(10));
- form.append('my_logo', response);
-});
-```
-
-Or @mikeal's [request](https://github.com/request/request) stream:
-
-``` javascript
-var FormData = require('form-data');
-var request = require('request');
-
-var form = new FormData();
-
-form.append('my_field', 'my value');
-form.append('my_buffer', new Buffer(10));
-form.append('my_logo', request('http://nodejs.org/images/logo.png'));
-```
-
-In order to submit this form to a web application, call ```submit(url, [callback])``` method:
-
-``` javascript
-form.submit('http://example.org/', function(err, res) {
- // res – response object (http.IncomingMessage) //
- res.resume();
-});
-
-```
-
-For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.
-
-### Alternative submission methods
-
-You can use node's http client interface:
-
-``` javascript
-var http = require('http');
-
-var request = http.request({
- method: 'post',
- host: 'example.org',
- path: '/upload',
- headers: form.getHeaders()
-});
-
-form.pipe(request);
-
-request.on('response', function(res) {
- console.log(res.statusCode);
-});
-```
-
-Or if you would prefer the `'Content-Length'` header to be set for you:
-
-``` javascript
-form.submit('example.org/upload', function(err, res) {
- console.log(res.statusCode);
-});
-```
-
-To use custom headers and pre-known length in parts:
-
-``` javascript
-var CRLF = '\r\n';
-var form = new FormData();
-
-var options = {
- header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF,
- knownLength: 1
-};
-
-form.append('my_buffer', buffer, options);
-
-form.submit('http://example.com/', function(err, res) {
- if (err) throw err;
- console.log('Done');
-});
-```
-
-Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually:
-
-``` javascript
-someModule.stream(function(err, stdout, stderr) {
- if (err) throw err;
-
- var form = new FormData();
-
- form.append('file', stdout, {
- filename: 'unicycle.jpg',
- contentType: 'image/jpg',
- knownLength: 19806
- });
-
- form.submit('http://example.com/', function(err, res) {
- if (err) throw err;
- console.log('Done');
- });
-});
-```
-
-For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:
-
-``` javascript
-form.submit({
- host: 'example.com',
- path: '/probably.php?extra=params',
- auth: 'username:password'
-}, function(err, res) {
- console.log(res.statusCode);
-});
-```
-
-In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`:
-
-``` javascript
-form.submit({
- host: 'example.com',
- path: '/surelynot.php',
- headers: {'x-test-header': 'test-header-value'}
-}, function(err, res) {
- console.log(res.statusCode);
-});
-```
-
-### Integration with other libraries
-
-#### Request
-
-Form submission using [request](https://github.com/request/request):
-
-```javascript
-var formData = {
- my_field: 'my_value',
- my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),
-};
-
-request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) {
- if (err) {
- return console.error('upload failed:', err);
- }
- console.log('Upload successful! Server responded with:', body);
-});
-```
-
-For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads).
-
-#### node-fetch
-
-You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch):
-
-```javascript
-var form = new FormData();
-
-form.append('a', 1);
-
-fetch('http://example.com', { method: 'POST', body: form })
- .then(function(res) {
- return res.json();
- }).then(function(json) {
- console.log(json);
- });
-```
-
-## Notes
-
-- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.
-- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]
-
-## License
-
-Form-Data is licensed under the MIT license.
diff --git a/APIs/node_modules/request/node_modules/form-data/lib/browser.js b/APIs/node_modules/request/node_modules/form-data/lib/browser.js
deleted file mode 100644
index 8141d658..00000000
--- a/APIs/node_modules/request/node_modules/form-data/lib/browser.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* eslint-env browser */
-module.exports = FormData;
diff --git a/APIs/node_modules/request/node_modules/form-data/lib/form_data.js b/APIs/node_modules/request/node_modules/form-data/lib/form_data.js
deleted file mode 100644
index 55328b46..00000000
--- a/APIs/node_modules/request/node_modules/form-data/lib/form_data.js
+++ /dev/null
@@ -1,411 +0,0 @@
-var CombinedStream = require('combined-stream');
-var util = require('util');
-var path = require('path');
-var http = require('http');
-var https = require('https');
-var parseUrl = require('url').parse;
-var fs = require('fs');
-var mime = require('mime-types');
-var async = require('async');
-var populate = require('./populate.js');
-
-// Public API
-module.exports = FormData;
-
-// make it a Stream
-util.inherits(FormData, CombinedStream);
-
-/**
- * Create readable "multipart/form-data" streams.
- * Can be used to submit forms
- * and file uploads to other web applications.
- *
- * @constructor
- */
-function FormData() {
- if (!(this instanceof FormData)) {
- throw new TypeError('Failed to construct FormData: Please use the _new_ operator, this object constructor cannot be called as a function.');
- }
-
- this._overheadLength = 0;
- this._valueLength = 0;
- this._lengthRetrievers = [];
-
- CombinedStream.call(this);
-}
-
-FormData.LINE_BREAK = '\r\n';
-FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
-
-FormData.prototype.append = function(field, value, options) {
-
- options = options || {};
-
- // allow filename as single option
- if (typeof options == 'string') {
- options = {filename: options};
- }
-
- var append = CombinedStream.prototype.append.bind(this);
-
- // all that streamy business can't handle numbers
- if (typeof value == 'number') {
- value = '' + value;
- }
-
- // https://github.com/felixge/node-form-data/issues/38
- if (util.isArray(value)) {
- // Please convert your array into string
- // the way web server expects it
- this._error(new Error('Arrays are not supported.'));
- return;
- }
-
- var header = this._multiPartHeader(field, value, options);
- var footer = this._multiPartFooter();
-
- append(header);
- append(value);
- append(footer);
-
- // pass along options.knownLength
- this._trackLength(header, value, options);
-};
-
-FormData.prototype._trackLength = function(header, value, options) {
- var valueLength = 0;
-
- // used w/ getLengthSync(), when length is known.
- // e.g. for streaming directly from a remote server,
- // w/ a known file a size, and not wanting to wait for
- // incoming file to finish to get its size.
- if (options.knownLength != null) {
- valueLength += +options.knownLength;
- } else if (Buffer.isBuffer(value)) {
- valueLength = value.length;
- } else if (typeof value === 'string') {
- valueLength = Buffer.byteLength(value);
- }
-
- this._valueLength += valueLength;
-
- // @check why add CRLF? does this account for custom/multiple CRLFs?
- this._overheadLength +=
- Buffer.byteLength(header) +
- FormData.LINE_BREAK.length;
-
- // empty or either doesn't have path or not an http response
- if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {
- return;
- }
-
- // no need to bother with the length
- if (!options.knownLength) {
- this._lengthRetrievers.push(function(next) {
-
- if (value.hasOwnProperty('fd')) {
-
- // take read range into a account
- // `end` = Infinity –> read file till the end
- //
- // TODO: Looks like there is bug in Node fs.createReadStream
- // it doesn't respect `end` options without `start` options
- // Fix it when node fixes it.
- // https://github.com/joyent/node/issues/7819
- if (value.end != undefined && value.end != Infinity && value.start != undefined) {
-
- // when end specified
- // no need to calculate range
- // inclusive, starts with 0
- next(null, value.end + 1 - (value.start ? value.start : 0));
-
- // not that fast snoopy
- } else {
- // still need to fetch file size from fs
- fs.stat(value.path, function(err, stat) {
-
- var fileSize;
-
- if (err) {
- next(err);
- return;
- }
-
- // update final size based on the range options
- fileSize = stat.size - (value.start ? value.start : 0);
- next(null, fileSize);
- });
- }
-
- // or http response
- } else if (value.hasOwnProperty('httpVersion')) {
- next(null, +value.headers['content-length']);
-
- // or request stream http://github.com/mikeal/request
- } else if (value.hasOwnProperty('httpModule')) {
- // wait till response come back
- value.on('response', function(response) {
- value.pause();
- next(null, +response.headers['content-length']);
- });
- value.resume();
-
- // something else
- } else {
- next('Unknown stream');
- }
- });
- }
-};
-
-FormData.prototype._multiPartHeader = function(field, value, options) {
- // custom header specified (as string)?
- // it becomes responsible for boundary
- // (e.g. to handle extra CRLFs on .NET servers)
- if (options.header) {
- return options.header;
- }
-
- var contentDisposition = this._getContentDisposition(value, options);
- var contentType = this._getContentType(value, options);
-
- var contents = '';
- var headers = {
- // add custom disposition as third element or keep it two elements if not
- 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
- // if no content type. allow it to be empty array
- 'Content-Type': [].concat(contentType || [])
- };
-
- for (var prop in headers) {
- if (headers[prop].length) {
- contents += prop + ': ' + headers[prop].join('; ') + FormData.LINE_BREAK;
- }
- }
-
- return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
-};
-
-FormData.prototype._getContentDisposition = function(value, options) {
-
- var contentDisposition;
-
- // custom filename takes precedence
- // fs- and request- streams have path property
- var filename = options.filename || value.path;
-
- // or try http response
- if (!filename && value.readable && value.hasOwnProperty('httpVersion')) {
- filename = value.client._httpMessage.path;
- }
-
- if (filename) {
- contentDisposition = 'filename="' + path.basename(filename) + '"';
- }
-
- return contentDisposition;
-};
-
-FormData.prototype._getContentType = function(value, options) {
-
- // use custom content-type above all
- var contentType = options.contentType;
-
- // or try `path` from fs-, request- streams
- if (!contentType && value.path) {
- contentType = mime.lookup(value.path);
- }
-
- // or if it's http-reponse
- if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
- contentType = value.headers['content-type'];
- }
-
- // or guess it from the filename
- if (!contentType && options.filename) {
- contentType = mime.lookup(options.filename);
- }
-
- // fallback to the default content type if `value` is not simple value
- if (!contentType && typeof value == 'object') {
- contentType = FormData.DEFAULT_CONTENT_TYPE;
- }
-
- return contentType;
-};
-
-FormData.prototype._multiPartFooter = function() {
- return function(next) {
- var footer = FormData.LINE_BREAK;
-
- var lastPart = (this._streams.length === 0);
- if (lastPart) {
- footer += this._lastBoundary();
- }
-
- next(footer);
- }.bind(this);
-};
-
-FormData.prototype._lastBoundary = function() {
- return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
-};
-
-FormData.prototype.getHeaders = function(userHeaders) {
- var header;
- var formHeaders = {
- 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
- };
-
- for (header in userHeaders) {
- if (userHeaders.hasOwnProperty(header)) {
- formHeaders[header.toLowerCase()] = userHeaders[header];
- }
- }
-
- return formHeaders;
-};
-
-FormData.prototype.getCustomHeaders = function(contentType) {
- contentType = contentType ? contentType : 'multipart/form-data';
-
- var formHeaders = {
- 'content-type': contentType + '; boundary=' + this.getBoundary(),
- 'content-length': this.getLengthSync()
- };
-
- return formHeaders;
-};
-
-FormData.prototype.getBoundary = function() {
- if (!this._boundary) {
- this._generateBoundary();
- }
-
- return this._boundary;
-};
-
-FormData.prototype._generateBoundary = function() {
- // This generates a 50 character boundary similar to those used by Firefox.
- // They are optimized for boyer-moore parsing.
- var boundary = '--------------------------';
- for (var i = 0; i < 24; i++) {
- boundary += Math.floor(Math.random() * 10).toString(16);
- }
-
- this._boundary = boundary;
-};
-
-// Note: getLengthSync DOESN'T calculate streams length
-// As workaround one can calculate file size manually
-// and add it as knownLength option
-FormData.prototype.getLengthSync = function() {
- var knownLength = this._overheadLength + this._valueLength;
-
- // Don't get confused, there are 3 "internal" streams for each keyval pair
- // so it basically checks if there is any value added to the form
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- // https://github.com/form-data/form-data/issues/40
- if (this._lengthRetrievers.length) {
- // Some async length retrievers are present
- // therefore synchronous length calculation is false.
- // Please use getLength(callback) to get proper length
- this._error(new Error('Cannot calculate proper length in synchronous way.'));
- }
-
- return knownLength;
-};
-
-FormData.prototype.getLength = function(cb) {
- var knownLength = this._overheadLength + this._valueLength;
-
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- if (!this._lengthRetrievers.length) {
- process.nextTick(cb.bind(this, null, knownLength));
- return;
- }
-
- async.parallel(this._lengthRetrievers, function(err, values) {
- if (err) {
- cb(err);
- return;
- }
-
- values.forEach(function(length) {
- knownLength += length;
- });
-
- cb(null, knownLength);
- });
-};
-
-FormData.prototype.submit = function(params, cb) {
- var request
- , options
- , defaults = {method: 'post'}
- ;
-
- // parse provided url if it's string
- // or treat it as options object
- if (typeof params == 'string') {
-
- params = parseUrl(params);
- options = populate({
- port: params.port,
- path: params.pathname,
- host: params.hostname
- }, defaults);
-
- // use custom params
- } else {
-
- options = populate(params, defaults);
- // if no port provided use default one
- if (!options.port) {
- options.port = options.protocol == 'https:' ? 443 : 80;
- }
- }
-
- // put that good code in getHeaders to some use
- options.headers = this.getHeaders(params.headers);
-
- // https if specified, fallback to http in any other case
- if (options.protocol == 'https:') {
- request = https.request(options);
- } else {
- request = http.request(options);
- }
-
- // get content length and fire away
- this.getLength(function(err, length) {
- if (err) {
- this._error(err);
- return;
- }
-
- // add content length
- request.setHeader('Content-Length', length);
-
- this.pipe(request);
- if (cb) {
- request.on('error', cb);
- request.on('response', cb.bind(this, null));
- }
- }.bind(this));
-
- return request;
-};
-
-FormData.prototype._error = function(err) {
- if (!this.error) {
- this.error = err;
- this.pause();
- this.emit('error', err);
- }
-};
diff --git a/APIs/node_modules/request/node_modules/form-data/lib/populate.js b/APIs/node_modules/request/node_modules/form-data/lib/populate.js
deleted file mode 100644
index 6f64a6d3..00000000
--- a/APIs/node_modules/request/node_modules/form-data/lib/populate.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// populates missing values
-module.exports = function(dst, src) {
- for (var prop in src) {
- if (src.hasOwnProperty(prop) && !dst[prop]) {
- dst[prop] = src[prop];
- }
- }
- return dst;
-};
diff --git a/APIs/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md b/APIs/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
deleted file mode 100644
index f15e0812..00000000
--- a/APIs/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# v1.5.2
-- Allow using `"consructor"` as an argument in `memoize` (#998)
-- Give a better error messsage when `auto` dependency checking fails (#994)
-- Various doc updates (#936, #956, #979, #1002)
-
-# v1.5.1
-- Fix issue with `pause` in `queue` with concurrency enabled (#946)
-- `while` and `until` now pass the final result to callback (#963)
-- `auto` will properly handle concurrency when there is no callback (#966)
-- `auto` will now properly stop execution when an error occurs (#988, #993)
-- Various doc fixes (#971, #980)
-
-# v1.5.0
-
-- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) (#892)
-- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. (#873)
-- `auto` now accepts an optional `concurrency` argument to limit the number of running tasks (#637)
-- Added `queue#workersList()`, to retrieve the list of currently running tasks. (#891)
-- Various code simplifications (#896, #904)
-- Various doc fixes :scroll: (#890, #894, #903, #905, #912)
-
-# v1.4.2
-
-- Ensure coverage files don't get published on npm (#879)
-
-# v1.4.1
-
-- Add in overlooked `detectLimit` method (#866)
-- Removed unnecessary files from npm releases (#861)
-- Removed usage of a reserved word to prevent :boom: in older environments (#870)
-
-# v1.4.0
-
-- `asyncify` now supports promises (#840)
-- Added `Limit` versions of `filter` and `reject` (#836)
-- Add `Limit` versions of `detect`, `some` and `every` (#828, #829)
-- `some`, `every` and `detect` now short circuit early (#828, #829)
-- Improve detection of the global object (#804), enabling use in WebWorkers
-- `whilst` now called with arguments from iterator (#823)
-- `during` now gets called with arguments from iterator (#824)
-- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0))
-
-
-# v1.3.0
-
-New Features:
-- Added `constant`
-- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. (#671, #806)
-- Added `during` and `doDuring`, which are like `whilst` with an async truth test. (#800)
-- `retry` now accepts an `interval` parameter to specify a delay between retries. (#793)
-- `async` should work better in Web Workers due to better `root` detection (#804)
-- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` (#642)
-- Various internal updates (#786, #801, #802, #803)
-- Various doc fixes (#790, #794)
-
-Bug Fixes:
-- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. (#740, #744, #783)
-
-
-# v1.2.1
-
-Bug Fix:
-
-- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)
-
-
-# v1.2.0
-
-New Features:
-
-- Added `timesLimit` (#743)
-- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. (#747, #772)
-
-Bug Fixes:
-
-- Fixed a regression in `each` and family with empty arrays that have additional properties. (#775, #777)
-
-
-# v1.1.1
-
-Bug Fix:
-
-- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782)
-
-
-# v1.1.0
-
-New Features:
-
-- `cargo` now supports all of the same methods and event callbacks as `queue`.
-- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. (#769)
-- Optimized `map`, `eachOf`, and `waterfall` families of functions
-- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array (#667).
-- The callback is now optional for the composed results of `compose` and `seq`. (#618)
-- Reduced file size by 4kb, (minified version by 1kb)
-- Added code coverage through `nyc` and `coveralls` (#768)
-
-Bug Fixes:
-
-- `forever` will no longer stack overflow with a synchronous iterator (#622)
-- `eachLimit` and other limit functions will stop iterating once an error occurs (#754)
-- Always pass `null` in callbacks when there is no error (#439)
-- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue (#668)
-- `each` and family will properly handle an empty array (#578)
-- `eachSeries` and family will finish if the underlying array is modified during execution (#557)
-- `queue` will throw if a non-function is passed to `q.push()` (#593)
-- Doc fixes (#629, #766)
-
-
-# v1.0.0
-
-No known breaking changes, we are simply complying with semver from here on out.
-
-Changes:
-
-- Start using a changelog!
-- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321)
-- Detect deadlocks in `auto` (#663)
-- Better support for require.js (#527)
-- Throw if queue created with concurrency `0` (#714)
-- Fix unneeded iteration in `queue.resume()` (#758)
-- Guard against timer mocking overriding `setImmediate` (#609 #611)
-- Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729)
-- Use single noop function internally (#546)
-- Optimize internal `_each`, `_map` and `_keys` functions.
diff --git a/APIs/node_modules/request/node_modules/form-data/node_modules/async/LICENSE b/APIs/node_modules/request/node_modules/form-data/node_modules/async/LICENSE
deleted file mode 100644
index 8f296985..00000000
--- a/APIs/node_modules/request/node_modules/form-data/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2014 Caolan McMahon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/APIs/node_modules/request/node_modules/form-data/node_modules/async/README.md b/APIs/node_modules/request/node_modules/form-data/node_modules/async/README.md
deleted file mode 100644
index 316c4050..00000000
--- a/APIs/node_modules/request/node_modules/form-data/node_modules/async/README.md
+++ /dev/null
@@ -1,1877 +0,0 @@
-# Async.js
-
-[](https://travis-ci.org/caolan/async)
-[](https://www.npmjs.org/package/async)
-[](https://coveralls.io/r/caolan/async?branch=master)
-[](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [Node.js](http://nodejs.org) and installable via `npm install async`,
-it can also be used directly in the browser.
-
-Async is also installable via:
-
-- [bower](http://bower.io/): `bower install async`
-- [component](https://github.com/component/component): `component install
- caolan/async`
-- [jam](http://jamjs.org/): `jam install async`
-- [spm](http://spmjs.io/): `spm install async`
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns
-for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these
-functions assume you follow the Node.js convention of providing a single
-callback as the last argument of your `async` function.
-
-
-## Quick Examples
-
-```javascript
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-
-async.parallel([
- function(){ ... },
- function(){ ... }
-], callback);
-
-async.series([
- function(){ ... },
- function(){ ... }
-]);
-```
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-## Common Pitfalls [(StackOverflow)](http://stackoverflow.com/questions/tagged/async.js)
-### Synchronous iteration functions
-
-If you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.setImmediate` to start a new call stack on the next tick of the event loop.
-
-This can also arise by accident if you callback early in certain cases:
-
-```js
-async.eachSeries(hugeArray, function iterator(item, callback) {
- if (inCache(item)) {
- callback(null, cache[item]); // if many items are cached, you'll overflow
- } else {
- doSomeIO(item, callback);
- }
-}, function done() {
- //...
-});
-```
-
-Just change it to:
-
-```js
-async.eachSeries(hugeArray, function iterator(item, callback) {
- if (inCache(item)) {
- async.setImmediate(function () {
- callback(null, cache[item]);
- });
- } else {
- doSomeIO(item, callback);
- //...
-```
-
-Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral.
-
-If JavaScript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works.
-
-
-### Multiple callbacks
-
-Make sure to always `return` when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases.
-
-```js
-async.waterfall([
- function (callback) {
- getSomething(options, function (err, result) {
- if (err) {
- callback(new Error("failed getting something:" + err.message));
- // we should return here
- }
- // since we did not return, this callback still will be called and
- // `processData` will be called twice
- callback(null, result);
- });
- },
- processData
-], done)
-```
-
-It is always good practice to `return callback(err, result)` whenever a callback call is not the last statement of a function.
-
-
-### Binding a context to an iterator
-
-This section is really about `bind`, not about `async`. If you are wondering how to
-make `async` execute your iterators in a given context, or are confused as to why
-a method of another library isn't working as an iterator, study this example:
-
-```js
-// Here is a simple object with an (unnecessarily roundabout) squaring method
-var AsyncSquaringLibrary = {
- squareExponent: 2,
- square: function(number, callback){
- var result = Math.pow(number, this.squareExponent);
- setTimeout(function(){
- callback(null, result);
- }, 200);
- }
-};
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
- // result is [NaN, NaN, NaN]
- // This fails because the `this.squareExponent` expression in the square
- // function is not evaluated in the context of AsyncSquaringLibrary, and is
- // therefore undefined.
-});
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
- // result is [1, 4, 9]
- // With the help of bind we can attach a context to the iterator before
- // passing it to async. Now the square function will be executed in its
- // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
- // will be as expected.
-});
-```
-
-## Download
-
-The source is available for download from
-[GitHub](https://github.com/caolan/async/blob/master/lib/async.js).
-Alternatively, you can install using Node Package Manager (`npm`):
-
- npm install async
-
-As well as using Bower:
-
- bower install async
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
-
-## In the Browser
-
-So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5.
-
-Usage:
-
-```html
-
-
-```
-
-## Documentation
-
-Some functions are also available in the following forms:
-* `Series` - the same as `` but runs only a single async operation at a time
-* `Limit` - the same as `` but runs a maximum of `limit` async operations at a time
-
-### Collections
-
-* [`each`](#each), `eachSeries`, `eachLimit`
-* [`forEachOf`](#forEachOf), `forEachOfSeries`, `forEachOfLimit`
-* [`map`](#map), `mapSeries`, `mapLimit`
-* [`filter`](#filter), `filterSeries`, `filterLimit`
-* [`reject`](#reject), `rejectSeries`, `rejectLimit`
-* [`reduce`](#reduce), [`reduceRight`](#reduceRight)
-* [`detect`](#detect), `detectSeries`, `detectLimit`
-* [`sortBy`](#sortBy)
-* [`some`](#some), `someLimit`
-* [`every`](#every), `everyLimit`
-* [`concat`](#concat), `concatSeries`
-
-### Control Flow
-
-* [`series`](#seriestasks-callback)
-* [`parallel`](#parallel), `parallelLimit`
-* [`whilst`](#whilst), [`doWhilst`](#doWhilst)
-* [`until`](#until), [`doUntil`](#doUntil)
-* [`during`](#during), [`doDuring`](#doDuring)
-* [`forever`](#forever)
-* [`waterfall`](#waterfall)
-* [`compose`](#compose)
-* [`seq`](#seq)
-* [`applyEach`](#applyEach), `applyEachSeries`
-* [`queue`](#queue), [`priorityQueue`](#priorityQueue)
-* [`cargo`](#cargo)
-* [`auto`](#auto)
-* [`retry`](#retry)
-* [`iterator`](#iterator)
-* [`times`](#times), `timesSeries`, `timesLimit`
-
-### Utils
-
-* [`apply`](#apply)
-* [`nextTick`](#nextTick)
-* [`memoize`](#memoize)
-* [`unmemoize`](#unmemoize)
-* [`ensureAsync`](#ensureAsync)
-* [`constant`](#constant)
-* [`asyncify`](#asyncify)
-* [`wrapSync`](#wrapSync)
-* [`log`](#log)
-* [`dir`](#dir)
-* [`noConflict`](#noConflict)
-
-## Collections
-
-
-
-### each(arr, iterator, [callback])
-
-Applies the function `iterator` to each item in `arr`, in parallel.
-The `iterator` is called with an item from the list, and a callback for when it
-has finished. If the `iterator` passes an error to its `callback`, the main
-`callback` (for the `each` function) is immediately called with the error.
-
-Note, that since this function applies `iterator` to each item in parallel,
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err)` which must be called once it has
- completed. If no error has occurred, the `callback` should be run without
- arguments or with an explicit `null` argument. The array index is not passed
- to the iterator. If you need the index, use [`forEachOf`](#forEachOf).
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions
- have finished, or an error occurs.
-
-__Examples__
-
-
-```js
-// assuming openFiles is an array of file names and saveFile is a function
-// to save the modified contents of that file:
-
-async.each(openFiles, saveFile, function(err){
- // if any of the saves produced an error, err would equal that error
-});
-```
-
-```js
-// assuming openFiles is an array of file names
-
-async.each(openFiles, function(file, callback) {
-
- // Perform operation on file here.
- console.log('Processing file ' + file);
-
- if( file.length > 32 ) {
- console.log('This file name is too long');
- callback('File name too long');
- } else {
- // Do work to process file here
- console.log('File processed');
- callback();
- }
-}, function(err){
- // if any of the file processing produced an error, err would equal that error
- if( err ) {
- // One of the iterations produced an error.
- // All processing will now stop.
- console.log('A file failed to process');
- } else {
- console.log('All files have been processed successfully');
- }
-});
-```
-
-__Related__
-
-* eachSeries(arr, iterator, [callback])
-* eachLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-
-
-### forEachOf(obj, iterator, [callback])
-
-Like `each`, except that it iterates over objects, and passes the key as the second argument to the iterator.
-
-__Arguments__
-
-* `obj` - An object or array to iterate over.
-* `iterator(item, key, callback)` - A function to apply to each item in `obj`.
-The `key` is the item's key, or index in the case of an array. The iterator is
-passed a `callback(err)` which must be called once it has completed. If no
-error has occurred, the callback should be run without arguments or with an
-explicit `null` argument.
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs.
-
-__Example__
-
-```js
-var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
-var configs = {};
-
-async.forEachOf(obj, function (value, key, callback) {
- fs.readFile(__dirname + value, "utf8", function (err, data) {
- if (err) return callback(err);
- try {
- configs[key] = JSON.parse(data);
- } catch (e) {
- return callback(e);
- }
- callback();
- })
-}, function (err) {
- if (err) console.error(err.message);
- // configs is now a map of JSON data
- doSomethingWith(configs);
-})
-```
-
-__Related__
-
-* forEachOfSeries(obj, iterator, [callback])
-* forEachOfLimit(obj, limit, iterator, [callback])
-
----------------------------------------
-
-
-### map(arr, iterator, [callback])
-
-Produces a new array of values by mapping each value in `arr` through
-the `iterator` function. The `iterator` is called with an item from `arr` and a
-callback for when it has finished processing. Each of these callback takes 2 arguments:
-an `error`, and the transformed item from `arr`. If `iterator` passes an error to its
-callback, the main `callback` (for the `map` function) is immediately called with the error.
-
-Note, that since this function applies the `iterator` to each item in parallel,
-there is no guarantee that the `iterator` functions will complete in order.
-However, the results array will be in the same order as the original `arr`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, transformed)` which must be called once
- it has completed with an error (which can be `null`) and a transformed item.
-* `callback(err, results)` - *Optional* A callback which is called when all `iterator`
- functions have finished, or an error occurs. Results is an array of the
- transformed items from the `arr`.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-```
-
-__Related__
-* mapSeries(arr, iterator, [callback])
-* mapLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-
-### filter(arr, iterator, [callback])
-
-__Alias:__ `select`
-
-Returns a new array of all the values in `arr` which pass an async truth test.
-_The callback for each `iterator` call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
- The `iterator` is passed a `callback(truthValue)`, which must be called with a
- boolean argument once it has completed.
-* `callback(results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished.
-
-__Example__
-
-```js
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-```
-
-__Related__
-
-* filterSeries(arr, iterator, [callback])
-* filterLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-### reject(arr, iterator, [callback])
-
-The opposite of [`filter`](#filter). Removes values that pass an `async` truth test.
-
-__Related__
-
-* rejectSeries(arr, iterator, [callback])
-* rejectLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-### reduce(arr, memo, iterator, [callback])
-
-__Aliases:__ `inject`, `foldl`
-
-Reduces `arr` into a single value using an async `iterator` to return
-each successive step. `memo` is the initial state of the reduction.
-This function only operates in series.
-
-For performance reasons, it may make sense to split a call to this function into
-a parallel map, and then use the normal `Array.prototype.reduce` on the results.
-This function is for situations where each step in the reduction needs to be async;
-if you can get the data before reducing it, then it's probably a good idea to do so.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `memo` - The initial state of the reduction.
-* `iterator(memo, item, callback)` - A function applied to each item in the
- array to produce the next step in the reduction. The `iterator` is passed a
- `callback(err, reduction)` which accepts an optional error as its first
- argument, and the state of the reduction as the second. If an error is
- passed to the callback, the reduction is stopped and the main `callback` is
- immediately called with the error.
-* `callback(err, result)` - *Optional* A callback which is called after all the `iterator`
- functions have finished. Result is the reduced value.
-
-__Example__
-
-```js
-async.reduce([1,2,3], 0, function(memo, item, callback){
- // pointless async:
- process.nextTick(function(){
- callback(null, memo + item)
- });
-}, function(err, result){
- // result is now equal to the last value of memo, which is 6
-});
-```
-
----------------------------------------
-
-
-### reduceRight(arr, memo, iterator, [callback])
-
-__Alias:__ `foldr`
-
-Same as [`reduce`](#reduce), only operates on `arr` in reverse order.
-
-
----------------------------------------
-
-
-### detect(arr, iterator, [callback])
-
-Returns the first value in `arr` that passes an async truth test. The
-`iterator` is applied in parallel, meaning the first iterator to return `true` will
-fire the detect `callback` with that result. That means the result might not be
-the first item in the original `arr` (in terms of order) that passes the test.
-
-If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
- The iterator is passed a `callback(truthValue)` which must be called with a
- boolean argument once it has completed. **Note: this callback does not take an error as its first argument.**
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `true`, or after all the `iterator` functions have finished. Result will be
- the first item in the array that passes the truth test (iterator) or the
- value `undefined` if none passed. **Note: this callback does not take an error as its first argument.**
-
-__Example__
-
-```js
-async.detect(['file1','file2','file3'], fs.exists, function(result){
- // result now equals the first file in the list that exists
-});
-```
-
-__Related__
-
-* detectSeries(arr, iterator, [callback])
-* detectLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-### sortBy(arr, iterator, [callback])
-
-Sorts a list by the results of running each `arr` value through an async `iterator`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, sortValue)` which must be called once it
- has completed with an error (which can be `null`) and a value to use as the sort
- criteria.
-* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished, or an error occurs. Results is the items from
- the original `arr` sorted by the values returned by the `iterator` calls.
-
-__Example__
-
-```js
-async.sortBy(['file1','file2','file3'], function(file, callback){
- fs.stat(file, function(err, stats){
- callback(err, stats.mtime);
- });
-}, function(err, results){
- // results is now the original array of files sorted by
- // modified date
-});
-```
-
-__Sort Order__
-
-By modifying the callback parameter the sorting order can be influenced:
-
-```js
-//ascending order
-async.sortBy([1,9,3,5], function(x, callback){
- callback(null, x);
-}, function(err,result){
- //result callback
-} );
-
-//descending order
-async.sortBy([1,9,3,5], function(x, callback){
- callback(null, x*-1); //<- x*-1 instead of x, turns the order around
-}, function(err,result){
- //result callback
-} );
-```
-
----------------------------------------
-
-
-### some(arr, iterator, [callback])
-
-__Alias:__ `any`
-
-Returns `true` if at least one element in the `arr` satisfies an async test.
-_The callback for each iterator call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`. Once any iterator
-call returns `true`, the main `callback` is immediately called.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in the array
- in parallel. The iterator is passed a `callback(truthValue)`` which must be
- called with a boolean argument once it has completed.
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `true`, or after all the iterator functions have finished. Result will be
- either `true` or `false` depending on the values of the async tests.
-
- **Note: the callbacks do not take an error as their first argument.**
-__Example__
-
-```js
-async.some(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then at least one of the files exists
-});
-```
-
-__Related__
-
-* someLimit(arr, limit, iterator, callback)
-
----------------------------------------
-
-
-### every(arr, iterator, [callback])
-
-__Alias:__ `all`
-
-Returns `true` if every element in `arr` satisfies an async test.
-_The callback for each `iterator` call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in the array
- in parallel. The iterator is passed a `callback(truthValue)` which must be
- called with a boolean argument once it has completed.
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `false`, or after all the iterator functions have finished. Result will be
- either `true` or `false` depending on the values of the async tests.
-
- **Note: the callbacks do not take an error as their first argument.**
-
-__Example__
-
-```js
-async.every(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then every file exists
-});
-```
-
-__Related__
-
-* everyLimit(arr, limit, iterator, callback)
-
----------------------------------------
-
-
-### concat(arr, iterator, [callback])
-
-Applies `iterator` to each item in `arr`, concatenating the results. Returns the
-concatenated list. The `iterator`s are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of `arr` passed to the `iterator` function.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, results)` which must be called once it
- has completed with an error (which can be `null`) and an array of results.
-* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished, or an error occurs. Results is an array containing
- the concatenated results of the `iterator` function.
-
-__Example__
-
-```js
-async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
- // files is now a list of filenames that exist in the 3 directories
-});
-```
-
-__Related__
-
-* concatSeries(arr, iterator, [callback])
-
-
-## Control Flow
-
-
-### series(tasks, [callback])
-
-Run the functions in the `tasks` array in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run, and `callback` is immediately called with the value of the error.
-Otherwise, `callback` receives an array of results when `tasks` have completed.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function, and the results will be passed to the final `callback` as an object
-instead of an array. This can be a more readable way of handling results from
-[`series`](#series).
-
-**Note** that while many implementations preserve the order of object properties, the
-[ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)
-explicitly states that
-
-> The mechanics and order of enumerating the properties is not specified.
-
-So if you rely on the order in which your series of functions are executed, and want
-this to work on all platforms, consider using an array.
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run, each function is passed
- a `callback(err, result)` it must call on completion with an error `err` (which can
- be `null`) and an optional `result` value.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the `task` callbacks.
-
-__Example__
-
-```js
-async.series([
- function(callback){
- // do some stuff ...
- callback(null, 'one');
- },
- function(callback){
- // do some more stuff ...
- callback(null, 'two');
- }
-],
-// optional callback
-function(err, results){
- // results is now equal to ['one', 'two']
-});
-
-
-// an example using an object instead of an array
-async.series({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equal to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-
-### parallel(tasks, [callback])
-
-Run the `tasks` array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main `callback` is immediately called with the value of the error.
-Once the `tasks` have completed, the results are passed to the final `callback` as an
-array.
-
-**Note:** `parallel` is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final `callback` as an object
-instead of an array. This can be a more readable way of handling results from
-[`parallel`](#parallel).
-
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run. Each function is passed
- a `callback(err, result)` which it must call on completion with an error `err`
- (which can be `null`) and an optional `result` value.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed successfully. This function gets a results array (or object) containing all
- the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.parallel([
- function(callback){
- setTimeout(function(){
- callback(null, 'one');
- }, 200);
- },
- function(callback){
- setTimeout(function(){
- callback(null, 'two');
- }, 100);
- }
-],
-// optional callback
-function(err, results){
- // the results array will equal ['one','two'] even though
- // the second function had a shorter timeout.
-});
-
-
-// an example using an object instead of an array
-async.parallel({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equals to: {one: 1, two: 2}
-});
-```
-
-__Related__
-
-* parallelLimit(tasks, limit, [callback])
-
----------------------------------------
-
-
-### whilst(test, fn, callback)
-
-Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,
-or an error occurs.
-
-__Arguments__
-
-* `test()` - synchronous truth test to perform before each execution of `fn`.
-* `fn(callback)` - A function which is called each time `test` passes. The function is
- passed a `callback(err)`, which must be called once it has completed with an
- optional `err` argument.
-* `callback(err, [results])` - A callback which is called after the test
- function has failed and repeated execution of `fn` has stopped. `callback`
- will be passed an error and any arguments passed to the final `fn`'s callback.
-
-__Example__
-
-```js
-var count = 0;
-
-async.whilst(
- function () { return count < 5; },
- function (callback) {
- count++;
- setTimeout(function () {
- callback(null, count);
- }, 1000);
- },
- function (err, n) {
- // 5 seconds have passed, n = 5
- }
-);
-```
-
----------------------------------------
-
-
-### doWhilst(fn, test, callback)
-
-The post-check version of [`whilst`](#whilst). To reflect the difference in
-the order of operations, the arguments `test` and `fn` are switched.
-
-`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
-
----------------------------------------
-
-
-### until(test, fn, callback)
-
-Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,
-or an error occurs. `callback` will be passed an error and any arguments passed
-to the final `fn`'s callback.
-
-The inverse of [`whilst`](#whilst).
-
----------------------------------------
-
-
-### doUntil(fn, test, callback)
-
-Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.
-
----------------------------------------
-
-
-### during(test, fn, callback)
-
-Like [`whilst`](#whilst), except the `test` is an asynchronous function that is passed a callback in the form of `function (err, truth)`. If error is passed to `test` or `fn`, the main callback is immediately called with the value of the error.
-
-__Example__
-
-```js
-var count = 0;
-
-async.during(
- function (callback) {
- return callback(null, count < 5);
- },
- function (callback) {
- count++;
- setTimeout(callback, 1000);
- },
- function (err) {
- // 5 seconds have passed
- }
-);
-```
-
----------------------------------------
-
-
-### doDuring(fn, test, callback)
-
-The post-check version of [`during`](#during). To reflect the difference in
-the order of operations, the arguments `test` and `fn` are switched.
-
-Also a version of [`doWhilst`](#doWhilst) with asynchronous `test` function.
-
----------------------------------------
-
-
-### forever(fn, [errback])
-
-Calls the asynchronous function `fn` with a callback parameter that allows it to
-call itself again, in series, indefinitely.
-
-If an error is passed to the callback then `errback` is called with the
-error, and execution stops, otherwise it will never be called.
-
-```js
-async.forever(
- function(next) {
- // next is suitable for passing to things that need a callback(err [, whatever]);
- // it will result in this function being called again.
- },
- function(err) {
- // if next is called with a value in its first parameter, it will appear
- // in here as 'err', and execution will stop.
- }
-);
-```
-
----------------------------------------
-
-
-### waterfall(tasks, [callback])
-
-Runs the `tasks` array of functions in series, each passing their results to the next in
-the array. However, if any of the `tasks` pass an error to their own callback, the
-next function is not executed, and the main `callback` is immediately called with
-the error.
-
-__Arguments__
-
-* `tasks` - An array of functions to run, each function is passed a
- `callback(err, result1, result2, ...)` it must call on completion. The first
- argument is an error (which can be `null`) and any further arguments will be
- passed as arguments in order to the next task.
-* `callback(err, [results])` - An optional callback to run once all the functions
- have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-```js
-async.waterfall([
- function(callback) {
- callback(null, 'one', 'two');
- },
- function(arg1, arg2, callback) {
- // arg1 now equals 'one' and arg2 now equals 'two'
- callback(null, 'three');
- },
- function(arg1, callback) {
- // arg1 now equals 'three'
- callback(null, 'done');
- }
-], function (err, result) {
- // result now equals 'done'
-});
-```
-Or, with named functions:
-
-```js
-async.waterfall([
- myFirstFunction,
- mySecondFunction,
- myLastFunction,
-], function (err, result) {
- // result now equals 'done'
-});
-function myFirstFunction(callback) {
- callback(null, 'one', 'two');
-}
-function mySecondFunction(arg1, arg2, callback) {
- // arg1 now equals 'one' and arg2 now equals 'two'
- callback(null, 'three');
-}
-function myLastFunction(arg1, callback) {
- // arg1 now equals 'three'
- callback(null, 'done');
-}
-```
-
-Or, if you need to pass any argument to the first function:
-
-```js
-async.waterfall([
- async.apply(myFirstFunction, 'zero'),
- mySecondFunction,
- myLastFunction,
-], function (err, result) {
- // result now equals 'done'
-});
-function myFirstFunction(arg1, callback) {
- // arg1 now equals 'zero'
- callback(null, 'one', 'two');
-}
-function mySecondFunction(arg1, arg2, callback) {
- // arg1 now equals 'one' and arg2 now equals 'two'
- callback(null, 'three');
-}
-function myLastFunction(arg1, callback) {
- // arg1 now equals 'three'
- callback(null, 'done');
-}
-```
-
----------------------------------------
-
-### compose(fn1, fn2...)
-
-Creates a function which is a composition of the passed asynchronous
-functions. Each function consumes the return value of the function that
-follows. Composing functions `f()`, `g()`, and `h()` would produce the result of
-`f(g(h()))`, only this version uses callbacks to obtain the return values.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* `functions...` - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-function add1(n, callback) {
- setTimeout(function () {
- callback(null, n + 1);
- }, 10);
-}
-
-function mul3(n, callback) {
- setTimeout(function () {
- callback(null, n * 3);
- }, 10);
-}
-
-var add1mul3 = async.compose(mul3, add1);
-
-add1mul3(4, function (err, result) {
- // result now equals 15
-});
-```
-
----------------------------------------
-
-### seq(fn1, fn2...)
-
-Version of the compose function that is more natural to read.
-Each function consumes the return value of the previous function.
-It is the equivalent of [`compose`](#compose) with the arguments reversed.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* `functions...` - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-// Requires lodash (or underscore), express3 and dresende's orm2.
-// Part of an app, that fetches cats of the logged user.
-// This example uses `seq` function to avoid overnesting and error
-// handling clutter.
-app.get('/cats', function(request, response) {
- var User = request.models.User;
- async.seq(
- _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))
- function(user, fn) {
- user.getCats(fn); // 'getCats' has signature (callback(err, data))
- }
- )(req.session.user_id, function (err, cats) {
- if (err) {
- console.error(err);
- response.json({ status: 'error', message: err.message });
- } else {
- response.json({ status: 'ok', message: 'Cats found', data: cats });
- }
- });
-});
-```
-
----------------------------------------
-
-### applyEach(fns, args..., callback)
-
-Applies the provided arguments to each function in the array, calling
-`callback` after all functions have completed. If you only provide the first
-argument, then it will return a function which lets you pass in the
-arguments as if it were a single function call.
-
-__Arguments__
-
-* `fns` - the asynchronous functions to all call with the same arguments
-* `args...` - any number of separate arguments to pass to the function
-* `callback` - the final argument should be the callback, called when all
- functions have completed processing
-
-
-__Example__
-
-```js
-async.applyEach([enableSearch, updateSchema], 'bucket', callback);
-
-// partial application example:
-async.each(
- buckets,
- async.applyEach([enableSearch, updateSchema]),
- callback
-);
-```
-
-__Related__
-
-* applyEachSeries(tasks, args..., [callback])
-
----------------------------------------
-
-
-### queue(worker, [concurrency])
-
-Creates a `queue` object with the specified `concurrency`. Tasks added to the
-`queue` are processed in parallel (up to the `concurrency` limit). If all
-`worker`s are in progress, the task is queued until one becomes available.
-Once a `worker` completes a `task`, that `task`'s callback is called.
-
-__Arguments__
-
-* `worker(task, callback)` - An asynchronous function for processing a queued
- task, which must call its `callback(err)` argument when finished, with an
- optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`.
-* `concurrency` - An `integer` for determining how many `worker` functions should be
- run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown.
-
-__Queue objects__
-
-The `queue` object returned by this function has the following properties and
-methods:
-
-* `length()` - a function returning the number of items waiting to be processed.
-* `started` - a function returning whether or not any items have been pushed and processed by the queue
-* `running()` - a function returning the number of items currently being processed.
-* `workersList()` - a function returning the array of items currently being processed.
-* `idle()` - a function returning false if there are items waiting or being processed, or true if not.
-* `concurrency` - an integer for determining how many `worker` functions should be
- run in parallel. This property can be changed after a `queue` is created to
- alter the concurrency on-the-fly.
-* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once
- the `worker` has finished processing the task. Instead of a single task, a `tasks` array
- can be submitted. The respective callback is used for every task in the list.
-* `unshift(task, [callback])` - add a new task to the front of the `queue`.
-* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit,
- and further tasks will be queued.
-* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.
-* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.
-* `paused` - a boolean for determining whether the queue is in a paused state
-* `pause()` - a function that pauses the processing of tasks until `resume()` is called.
-* `resume()` - a function that resumes the processing of queued tasks when the queue is paused.
-* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle.
-
-__Example__
-
-```js
-// create a queue object with concurrency 2
-
-var q = async.queue(function (task, callback) {
- console.log('hello ' + task.name);
- callback();
-}, 2);
-
-
-// assign a callback
-q.drain = function() {
- console.log('all items have been processed');
-}
-
-// add some items to the queue
-
-q.push({name: 'foo'}, function (err) {
- console.log('finished processing foo');
-});
-q.push({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-
-// add some items to the queue (batch-wise)
-
-q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
- console.log('finished processing item');
-});
-
-// add some items to the front of the queue
-
-q.unshift({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-```
-
-
----------------------------------------
-
-
-### priorityQueue(worker, concurrency)
-
-The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects:
-
-* `push(task, priority, [callback])` - `priority` should be a number. If an array of
- `tasks` is given, all tasks will be assigned the same priority.
-* The `unshift` method was removed.
-
----------------------------------------
-
-
-### cargo(worker, [payload])
-
-Creates a `cargo` object with the specified payload. Tasks added to the
-cargo will be processed altogether (up to the `payload` limit). If the
-`worker` is in progress, the task is queued until it becomes available. Once
-the `worker` has completed some tasks, each callback of those tasks is called.
-Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work.
-
-While [queue](#queue) passes only one task to one of a group of workers
-at a time, cargo passes an array of tasks to a single worker, repeating
-when the worker is finished.
-
-__Arguments__
-
-* `worker(tasks, callback)` - An asynchronous function for processing an array of
- queued tasks, which must call its `callback(err)` argument when finished, with
- an optional `err` argument.
-* `payload` - An optional `integer` for determining how many tasks should be
- processed per round; if omitted, the default is unlimited.
-
-__Cargo objects__
-
-The `cargo` object returned by this function has the following properties and
-methods:
-
-* `length()` - A function returning the number of items waiting to be processed.
-* `payload` - An `integer` for determining how many tasks should be
- process per round. This property can be changed after a `cargo` is created to
- alter the payload on-the-fly.
-* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called
- once the `worker` has finished processing the task. Instead of a single task, an array of `tasks`
- can be submitted. The respective callback is used for every task in the list.
-* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.
-* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.
-* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.
-* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue)
-
-__Example__
-
-```js
-// create a cargo object with payload 2
-
-var cargo = async.cargo(function (tasks, callback) {
- for(var i=0; i
-### auto(tasks, [concurrency], [callback])
-
-Determines the best order for running the functions in `tasks`, based on their requirements. Each function can optionally depend on other functions being completed first, and each function is run as soon as its requirements are satisfied.
-
-If any of the functions pass an error to their callback, the `auto` sequence will stop. Further tasks will not execute (so any other functions depending on it will not run), and the main `callback` is immediately called with the error. Functions also receive an object containing the results of functions which have completed so far.
-
-Note, all functions are called with a `results` object as a second argument,
-so it is unsafe to pass functions in the `tasks` object which cannot handle the
-extra argument.
-
-For example, this snippet of code:
-
-```js
-async.auto({
- readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
-}, callback);
-```
-
-will have the effect of calling `readFile` with the results object as the last
-argument, which will fail:
-
-```js
-fs.readFile('data.txt', 'utf-8', cb, {});
-```
-
-Instead, wrap the call to `readFile` in a function which does not forward the
-`results` object:
-
-```js
-async.auto({
- readData: function(cb, results){
- fs.readFile('data.txt', 'utf-8', cb);
- }
-}, callback);
-```
-
-__Arguments__
-
-* `tasks` - An object. Each of its properties is either a function or an array of
- requirements, with the function itself the last item in the array. The object's key
- of a property serves as the name of the task defined by that property,
- i.e. can be used when specifying requirements for other tasks.
- The function receives two arguments: (1) a `callback(err, result)` which must be
- called when finished, passing an `error` (which can be `null`) and the result of
- the function's execution, and (2) a `results` object, containing the results of
- the previously executed functions.
-* `concurrency` - An optional `integer` for determining the maximum number of tasks that can be run in parallel. By default, as many as possible.
-* `callback(err, results)` - An optional callback which is called when all the
- tasks have been completed. It receives the `err` argument if any `tasks`
- pass an error to their callback. Results are always returned; however, if
- an error occurs, no further `tasks` will be performed, and the results
- object will only contain partial results.
-
-
-__Example__
-
-```js
-async.auto({
- get_data: function(callback){
- console.log('in get_data');
- // async code to get some data
- callback(null, 'data', 'converted to array');
- },
- make_folder: function(callback){
- console.log('in make_folder');
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- callback(null, 'folder');
- },
- write_file: ['get_data', 'make_folder', function(callback, results){
- console.log('in write_file', JSON.stringify(results));
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- callback(null, 'filename');
- }],
- email_link: ['write_file', function(callback, results){
- console.log('in email_link', JSON.stringify(results));
- // once the file is written let's email a link to it...
- // results.write_file contains the filename returned by write_file.
- callback(null, {'file':results.write_file, 'email':'user@example.com'});
- }]
-}, function(err, results) {
- console.log('err = ', err);
- console.log('results = ', results);
-});
-```
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-```js
-async.parallel([
- function(callback){
- console.log('in get_data');
- // async code to get some data
- callback(null, 'data', 'converted to array');
- },
- function(callback){
- console.log('in make_folder');
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- callback(null, 'folder');
- }
-],
-function(err, results){
- async.series([
- function(callback){
- console.log('in write_file', JSON.stringify(results));
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- results.push('filename');
- callback(null);
- },
- function(callback){
- console.log('in email_link', JSON.stringify(results));
- // once the file is written let's email a link to it...
- callback(null, {'file':results.pop(), 'email':'user@example.com'});
- }
- ]);
-});
-```
-
-For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding
-new tasks much easier (and the code more readable).
-
-
----------------------------------------
-
-
-### retry([opts = {times: 5, interval: 0}| 5], task, [callback])
-
-Attempts to get a successful response from `task` no more than `times` times before
-returning an error. If the task is successful, the `callback` will be passed the result
-of the successful task. If all attempts fail, the callback will be passed the error and
-result (if any) of the final attempt.
-
-__Arguments__
-
-* `opts` - Can be either an object with `times` and `interval` or a number.
- * `times` - The number of attempts to make before giving up. The default is `5`.
- * `interval` - The time to wait between retries, in milliseconds. The default is `0`.
- * If `opts` is a number, the number specifies the number of times to retry, with the default interval of `0`.
-* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)`
- which must be called when finished, passing `err` (which can be `null`) and the `result` of
- the function's execution, and (2) a `results` object, containing the results of
- the previously executed functions (if nested inside another control flow).
-* `callback(err, results)` - An optional callback which is called when the
- task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`.
-
-The [`retry`](#retry) function can be used as a stand-alone control flow by passing a callback, as shown below:
-
-```js
-// try calling apiMethod 3 times
-async.retry(3, apiMethod, function(err, result) {
- // do something with the result
-});
-```
-
-```js
-// try calling apiMethod 3 times, waiting 200 ms between each retry
-async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {
- // do something with the result
-});
-```
-
-```js
-// try calling apiMethod the default 5 times no delay between each retry
-async.retry(apiMethod, function(err, result) {
- // do something with the result
-});
-```
-
-It can also be embedded within other control flow functions to retry individual methods
-that are not as reliable, like this:
-
-```js
-async.auto({
- users: api.getUsers.bind(api),
- payments: async.retry(3, api.getPayments.bind(api))
-}, function(err, results) {
- // do something with the results
-});
-```
-
-
----------------------------------------
-
-
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the `tasks` array,
-returning a continuation to call the next one after that. It's also possible to
-“peek” at the next iterator with `iterator.next()`.
-
-This function is used internally by the `async` module, but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* `tasks` - An array of functions to run.
-
-__Example__
-
-```js
-var iterator = async.iterator([
- function(){ sys.p('one'); },
- function(){ sys.p('two'); },
- function(){ sys.p('three'); }
-]);
-
-node> var iterator2 = iterator();
-'one'
-node> var iterator3 = iterator2();
-'two'
-node> iterator3();
-'three'
-node> var nextfn = iterator2.next();
-node> nextfn();
-'three'
-```
-
----------------------------------------
-
-
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied.
-
-Useful as a shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to automatically apply when the
- continuation is called.
-
-__Example__
-
-```js
-// using apply
-
-async.parallel([
- async.apply(fs.writeFile, 'testfile1', 'test1'),
- async.apply(fs.writeFile, 'testfile2', 'test2'),
-]);
-
-
-// the same process without using apply
-
-async.parallel([
- function(callback){
- fs.writeFile('testfile1', 'test1', callback);
- },
- function(callback){
- fs.writeFile('testfile2', 'test2', callback);
- }
-]);
-```
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-```js
-node> var fn = async.apply(sys.puts, 'one');
-node> fn('two', 'three');
-one
-two
-three
-```
-
----------------------------------------
-
-
-### nextTick(callback), setImmediate(callback)
-
-Calls `callback` on a later loop around the event loop. In Node.js this just
-calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`
-if available, otherwise `setTimeout(callback, 0)`, which means other higher priority
-events may precede the execution of `callback`.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* `callback` - The function to call on a later loop around the event loop.
-
-__Example__
-
-```js
-var call_order = [];
-async.nextTick(function(){
- call_order.push('two');
- // call_order now equals ['one','two']
-});
-call_order.push('one')
-```
-
-
-### times(n, iterator, [callback])
-
-Calls the `iterator` function `n` times, and accumulates results in the same manner
-you would use with [`map`](#map).
-
-__Arguments__
-
-* `n` - The number of times to run the function.
-* `iterator` - The function to call `n` times.
-* `callback` - see [`map`](#map)
-
-__Example__
-
-```js
-// Pretend this is some complicated async factory
-var createUser = function(id, callback) {
- callback(null, {
- id: 'user' + id
- })
-}
-// generate 5 users
-async.times(5, function(n, next){
- createUser(n, function(err, user) {
- next(err, user)
- })
-}, function(err, users) {
- // we should now have 5 users
-});
-```
-
-__Related__
-
-* timesSeries(n, iterator, [callback])
-* timesLimit(n, limit, iterator, [callback])
-
-
-## Utils
-
-
-### memoize(fn, [hasher])
-
-Caches the results of an `async` function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function.
-
-The cache of results is exposed as the `memo` property of the function returned
-by `memoize`.
-
-__Arguments__
-
-* `fn` - The function to proxy and cache results from.
-* `hasher` - An optional function for generating a custom hash for storing
- results. It has all the arguments applied to it apart from the callback, and
- must be synchronous.
-
-__Example__
-
-```js
-var slow_fn = function (name, callback) {
- // do something
- callback(null, result);
-};
-var fn = async.memoize(slow_fn);
-
-// fn can now be used as if it were slow_fn
-fn('some name', function () {
- // callback
-});
-```
-
-
-### unmemoize(fn)
-
-Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized
-form. Handy for testing.
-
-__Arguments__
-
-* `fn` - the memoized function
-
----------------------------------------
-
-
-### ensureAsync(fn)
-
-Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained.
-
-__Arguments__
-
-* `fn` - an async function, one that expects a node-style callback as its last argument
-
-Returns a wrapped function with the exact same call signature as the function passed in.
-
-__Example__
-
-```js
-function sometimesAsync(arg, callback) {
- if (cache[arg]) {
- return callback(null, cache[arg]); // this would be synchronous!!
- } else {
- doSomeIO(arg, callback); // this IO would be asynchronous
- }
-}
-
-// this has a risk of stack overflows if many results are cached in a row
-async.mapSeries(args, sometimesAsync, done);
-
-// this will defer sometimesAsync's callback if necessary,
-// preventing stack overflows
-async.mapSeries(args, async.ensureAsync(sometimesAsync), done);
-
-```
-
----------------------------------------
-
-
-### constant(values...)
-
-Returns a function that when called, calls-back with the values provided. Useful as the first function in a `waterfall`, or for plugging values in to `auto`.
-
-__Example__
-
-```js
-async.waterfall([
- async.constant(42),
- function (value, next) {
- // value === 42
- },
- //...
-], callback);
-
-async.waterfall([
- async.constant(filename, "utf8"),
- fs.readFile,
- function (fileData, next) {
- //...
- }
- //...
-], callback);
-
-async.auto({
- hostname: async.constant("https://server.net/"),
- port: findFreePort,
- launchServer: ["hostname", "port", function (cb, options) {
- startServer(options, cb);
- }],
- //...
-}, callback);
-
-```
-
----------------------------------------
-
-
-
-### asyncify(func)
-
-__Alias:__ `wrapSync`
-
-Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback.
-
-__Example__
-
-```js
-async.waterfall([
- async.apply(fs.readFile, filename, "utf8"),
- async.asyncify(JSON.parse),
- function (data, next) {
- // data is the result of parsing the text.
- // If there was a parsing error, it would have been caught.
- }
-], callback)
-```
-
-If the function passed to `asyncify` returns a Promise, that promises's resolved/rejected state will be used to call the callback, rather than simply the synchronous return value. Example:
-
-```js
-async.waterfall([
- async.apply(fs.readFile, filename, "utf8"),
- async.asyncify(function (contents) {
- return db.model.create(contents);
- }),
- function (model, next) {
- // `model` is the instantiated model object.
- // If there was an error, this function would be skipped.
- }
-], callback)
-```
-
-This also means you can asyncify ES2016 `async` functions.
-
-```js
-var q = async.queue(async.asyncify(async function (file) {
- var intermediateStep = await processFile(file);
- return await somePromise(intermediateStep)
-}));
-
-q.push(files);
-```
-
----------------------------------------
-
-
-### log(function, arguments)
-
-Logs the result of an `async` function to the `console`. Only works in Node.js or
-in browsers that support `console.log` and `console.error` (such as FF and Chrome).
-If multiple arguments are returned from the async function, `console.log` is
-called on each argument in order.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, 'hello ' + name);
- }, 1000);
-};
-```
-```js
-node> async.log(hello, 'world');
-'hello world'
-```
-
----------------------------------------
-
-
-### dir(function, arguments)
-
-Logs the result of an `async` function to the `console` using `console.dir` to
-display the properties of the resulting object. Only works in Node.js or
-in browsers that support `console.dir` and `console.error` (such as FF and Chrome).
-If multiple arguments are returned from the async function, `console.dir` is
-called on each argument in order.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, {hello: name});
- }, 1000);
-};
-```
-```js
-node> async.dir(hello, 'world');
-{hello: 'world'}
-```
-
----------------------------------------
-
-
-### noConflict()
-
-Changes the value of `async` back to its original value, returning a reference to the
-`async` object.
diff --git a/APIs/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js b/APIs/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js
deleted file mode 100644
index 31e7620f..00000000
--- a/APIs/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js
+++ /dev/null
@@ -1,1265 +0,0 @@
-/*!
- * async
- * https://github.com/caolan/async
- *
- * Copyright 2010-2014 Caolan McMahon
- * Released under the MIT license
- */
-(function () {
-
- var async = {};
- function noop() {}
- function identity(v) {
- return v;
- }
- function toBool(v) {
- return !!v;
- }
- function notId(v) {
- return !v;
- }
-
- // global on the server, window in the browser
- var previous_async;
-
- // Establish the root object, `window` (`self`) in the browser, `global`
- // on the server, or `this` in some virtual machines. We use `self`
- // instead of `window` for `WebWorker` support.
- var root = typeof self === 'object' && self.self === self && self ||
- typeof global === 'object' && global.global === global && global ||
- this;
-
- if (root != null) {
- previous_async = root.async;
- }
-
- async.noConflict = function () {
- root.async = previous_async;
- return async;
- };
-
- function only_once(fn) {
- return function() {
- if (fn === null) throw new Error("Callback was already called.");
- fn.apply(this, arguments);
- fn = null;
- };
- }
-
- function _once(fn) {
- return function() {
- if (fn === null) return;
- fn.apply(this, arguments);
- fn = null;
- };
- }
-
- //// cross-browser compatiblity functions ////
-
- var _toString = Object.prototype.toString;
-
- var _isArray = Array.isArray || function (obj) {
- return _toString.call(obj) === '[object Array]';
- };
-
- // Ported from underscore.js isObject
- var _isObject = function(obj) {
- var type = typeof obj;
- return type === 'function' || type === 'object' && !!obj;
- };
-
- function _isArrayLike(arr) {
- return _isArray(arr) || (
- // has a positive integer length property
- typeof arr.length === "number" &&
- arr.length >= 0 &&
- arr.length % 1 === 0
- );
- }
-
- function _arrayEach(arr, iterator) {
- var index = -1,
- length = arr.length;
-
- while (++index < length) {
- iterator(arr[index], index, arr);
- }
- }
-
- function _map(arr, iterator) {
- var index = -1,
- length = arr.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iterator(arr[index], index, arr);
- }
- return result;
- }
-
- function _range(count) {
- return _map(Array(count), function (v, i) { return i; });
- }
-
- function _reduce(arr, iterator, memo) {
- _arrayEach(arr, function (x, i, a) {
- memo = iterator(memo, x, i, a);
- });
- return memo;
- }
-
- function _forEachOf(object, iterator) {
- _arrayEach(_keys(object), function (key) {
- iterator(object[key], key);
- });
- }
-
- function _indexOf(arr, item) {
- for (var i = 0; i < arr.length; i++) {
- if (arr[i] === item) return i;
- }
- return -1;
- }
-
- var _keys = Object.keys || function (obj) {
- var keys = [];
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {
- keys.push(k);
- }
- }
- return keys;
- };
-
- function _keyIterator(coll) {
- var i = -1;
- var len;
- var keys;
- if (_isArrayLike(coll)) {
- len = coll.length;
- return function next() {
- i++;
- return i < len ? i : null;
- };
- } else {
- keys = _keys(coll);
- len = keys.length;
- return function next() {
- i++;
- return i < len ? keys[i] : null;
- };
- }
- }
-
- // Similar to ES6's rest param (http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html)
- // This accumulates the arguments passed into an array, after a given index.
- // From underscore.js (https://github.com/jashkenas/underscore/pull/2140).
- function _restParam(func, startIndex) {
- startIndex = startIndex == null ? func.length - 1 : +startIndex;
- return function() {
- var length = Math.max(arguments.length - startIndex, 0);
- var rest = Array(length);
- for (var index = 0; index < length; index++) {
- rest[index] = arguments[index + startIndex];
- }
- switch (startIndex) {
- case 0: return func.call(this, rest);
- case 1: return func.call(this, arguments[0], rest);
- }
- // Currently unused but handle cases outside of the switch statement:
- // var args = Array(startIndex + 1);
- // for (index = 0; index < startIndex; index++) {
- // args[index] = arguments[index];
- // }
- // args[startIndex] = rest;
- // return func.apply(this, args);
- };
- }
-
- function _withoutIndex(iterator) {
- return function (value, index, callback) {
- return iterator(value, callback);
- };
- }
-
- //// exported async module functions ////
-
- //// nextTick implementation with browser-compatible fallback ////
-
- // capture the global reference to guard against fakeTimer mocks
- var _setImmediate = typeof setImmediate === 'function' && setImmediate;
-
- var _delay = _setImmediate ? function(fn) {
- // not a direct alias for IE10 compatibility
- _setImmediate(fn);
- } : function(fn) {
- setTimeout(fn, 0);
- };
-
- if (typeof process === 'object' && typeof process.nextTick === 'function') {
- async.nextTick = process.nextTick;
- } else {
- async.nextTick = _delay;
- }
- async.setImmediate = _setImmediate ? _delay : async.nextTick;
-
-
- async.forEach =
- async.each = function (arr, iterator, callback) {
- return async.eachOf(arr, _withoutIndex(iterator), callback);
- };
-
- async.forEachSeries =
- async.eachSeries = function (arr, iterator, callback) {
- return async.eachOfSeries(arr, _withoutIndex(iterator), callback);
- };
-
-
- async.forEachLimit =
- async.eachLimit = function (arr, limit, iterator, callback) {
- return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback);
- };
-
- async.forEachOf =
- async.eachOf = function (object, iterator, callback) {
- callback = _once(callback || noop);
- object = object || [];
-
- var iter = _keyIterator(object);
- var key, completed = 0;
-
- while ((key = iter()) != null) {
- completed += 1;
- iterator(object[key], key, only_once(done));
- }
-
- if (completed === 0) callback(null);
-
- function done(err) {
- completed--;
- if (err) {
- callback(err);
- }
- // Check key is null in case iterator isn't exhausted
- // and done resolved synchronously.
- else if (key === null && completed <= 0) {
- callback(null);
- }
- }
- };
-
- async.forEachOfSeries =
- async.eachOfSeries = function (obj, iterator, callback) {
- callback = _once(callback || noop);
- obj = obj || [];
- var nextKey = _keyIterator(obj);
- var key = nextKey();
- function iterate() {
- var sync = true;
- if (key === null) {
- return callback(null);
- }
- iterator(obj[key], key, only_once(function (err) {
- if (err) {
- callback(err);
- }
- else {
- key = nextKey();
- if (key === null) {
- return callback(null);
- } else {
- if (sync) {
- async.setImmediate(iterate);
- } else {
- iterate();
- }
- }
- }
- }));
- sync = false;
- }
- iterate();
- };
-
-
-
- async.forEachOfLimit =
- async.eachOfLimit = function (obj, limit, iterator, callback) {
- _eachOfLimit(limit)(obj, iterator, callback);
- };
-
- function _eachOfLimit(limit) {
-
- return function (obj, iterator, callback) {
- callback = _once(callback || noop);
- obj = obj || [];
- var nextKey = _keyIterator(obj);
- if (limit <= 0) {
- return callback(null);
- }
- var done = false;
- var running = 0;
- var errored = false;
-
- (function replenish () {
- if (done && running <= 0) {
- return callback(null);
- }
-
- while (running < limit && !errored) {
- var key = nextKey();
- if (key === null) {
- done = true;
- if (running <= 0) {
- callback(null);
- }
- return;
- }
- running += 1;
- iterator(obj[key], key, only_once(function (err) {
- running -= 1;
- if (err) {
- callback(err);
- errored = true;
- }
- else {
- replenish();
- }
- }));
- }
- })();
- };
- }
-
-
- function doParallel(fn) {
- return function (obj, iterator, callback) {
- return fn(async.eachOf, obj, iterator, callback);
- };
- }
- function doParallelLimit(fn) {
- return function (obj, limit, iterator, callback) {
- return fn(_eachOfLimit(limit), obj, iterator, callback);
- };
- }
- function doSeries(fn) {
- return function (obj, iterator, callback) {
- return fn(async.eachOfSeries, obj, iterator, callback);
- };
- }
-
- function _asyncMap(eachfn, arr, iterator, callback) {
- callback = _once(callback || noop);
- arr = arr || [];
- var results = _isArrayLike(arr) ? [] : {};
- eachfn(arr, function (value, index, callback) {
- iterator(value, function (err, v) {
- results[index] = v;
- callback(err);
- });
- }, function (err) {
- callback(err, results);
- });
- }
-
- async.map = doParallel(_asyncMap);
- async.mapSeries = doSeries(_asyncMap);
- async.mapLimit = doParallelLimit(_asyncMap);
-
- // reduce only has a series version, as doing reduce in parallel won't
- // work in many situations.
- async.inject =
- async.foldl =
- async.reduce = function (arr, memo, iterator, callback) {
- async.eachOfSeries(arr, function (x, i, callback) {
- iterator(memo, x, function (err, v) {
- memo = v;
- callback(err);
- });
- }, function (err) {
- callback(err, memo);
- });
- };
-
- async.foldr =
- async.reduceRight = function (arr, memo, iterator, callback) {
- var reversed = _map(arr, identity).reverse();
- async.reduce(reversed, memo, iterator, callback);
- };
-
- async.transform = function (arr, memo, iterator, callback) {
- if (arguments.length === 3) {
- callback = iterator;
- iterator = memo;
- memo = _isArray(arr) ? [] : {};
- }
-
- async.eachOf(arr, function(v, k, cb) {
- iterator(memo, v, k, cb);
- }, function(err) {
- callback(err, memo);
- });
- };
-
- function _filter(eachfn, arr, iterator, callback) {
- var results = [];
- eachfn(arr, function (x, index, callback) {
- iterator(x, function (v) {
- if (v) {
- results.push({index: index, value: x});
- }
- callback();
- });
- }, function () {
- callback(_map(results.sort(function (a, b) {
- return a.index - b.index;
- }), function (x) {
- return x.value;
- }));
- });
- }
-
- async.select =
- async.filter = doParallel(_filter);
-
- async.selectLimit =
- async.filterLimit = doParallelLimit(_filter);
-
- async.selectSeries =
- async.filterSeries = doSeries(_filter);
-
- function _reject(eachfn, arr, iterator, callback) {
- _filter(eachfn, arr, function(value, cb) {
- iterator(value, function(v) {
- cb(!v);
- });
- }, callback);
- }
- async.reject = doParallel(_reject);
- async.rejectLimit = doParallelLimit(_reject);
- async.rejectSeries = doSeries(_reject);
-
- function _createTester(eachfn, check, getResult) {
- return function(arr, limit, iterator, cb) {
- function done() {
- if (cb) cb(getResult(false, void 0));
- }
- function iteratee(x, _, callback) {
- if (!cb) return callback();
- iterator(x, function (v) {
- if (cb && check(v)) {
- cb(getResult(true, x));
- cb = iterator = false;
- }
- callback();
- });
- }
- if (arguments.length > 3) {
- eachfn(arr, limit, iteratee, done);
- } else {
- cb = iterator;
- iterator = limit;
- eachfn(arr, iteratee, done);
- }
- };
- }
-
- async.any =
- async.some = _createTester(async.eachOf, toBool, identity);
-
- async.someLimit = _createTester(async.eachOfLimit, toBool, identity);
-
- async.all =
- async.every = _createTester(async.eachOf, notId, notId);
-
- async.everyLimit = _createTester(async.eachOfLimit, notId, notId);
-
- function _findGetResult(v, x) {
- return x;
- }
- async.detect = _createTester(async.eachOf, identity, _findGetResult);
- async.detectSeries = _createTester(async.eachOfSeries, identity, _findGetResult);
- async.detectLimit = _createTester(async.eachOfLimit, identity, _findGetResult);
-
- async.sortBy = function (arr, iterator, callback) {
- async.map(arr, function (x, callback) {
- iterator(x, function (err, criteria) {
- if (err) {
- callback(err);
- }
- else {
- callback(null, {value: x, criteria: criteria});
- }
- });
- }, function (err, results) {
- if (err) {
- return callback(err);
- }
- else {
- callback(null, _map(results.sort(comparator), function (x) {
- return x.value;
- }));
- }
-
- });
-
- function comparator(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }
- };
-
- async.auto = function (tasks, concurrency, callback) {
- if (typeof arguments[1] === 'function') {
- // concurrency is optional, shift the args.
- callback = concurrency;
- concurrency = null;
- }
- callback = _once(callback || noop);
- var keys = _keys(tasks);
- var remainingTasks = keys.length;
- if (!remainingTasks) {
- return callback(null);
- }
- if (!concurrency) {
- concurrency = remainingTasks;
- }
-
- var results = {};
- var runningTasks = 0;
-
- var hasError = false;
-
- var listeners = [];
- function addListener(fn) {
- listeners.unshift(fn);
- }
- function removeListener(fn) {
- var idx = _indexOf(listeners, fn);
- if (idx >= 0) listeners.splice(idx, 1);
- }
- function taskComplete() {
- remainingTasks--;
- _arrayEach(listeners.slice(0), function (fn) {
- fn();
- });
- }
-
- addListener(function () {
- if (!remainingTasks) {
- callback(null, results);
- }
- });
-
- _arrayEach(keys, function (k) {
- if (hasError) return;
- var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
- var taskCallback = _restParam(function(err, args) {
- runningTasks--;
- if (args.length <= 1) {
- args = args[0];
- }
- if (err) {
- var safeResults = {};
- _forEachOf(results, function(val, rkey) {
- safeResults[rkey] = val;
- });
- safeResults[k] = args;
- hasError = true;
-
- callback(err, safeResults);
- }
- else {
- results[k] = args;
- async.setImmediate(taskComplete);
- }
- });
- var requires = task.slice(0, task.length - 1);
- // prevent dead-locks
- var len = requires.length;
- var dep;
- while (len--) {
- if (!(dep = tasks[requires[len]])) {
- throw new Error('Has nonexistent dependency in ' + requires.join(', '));
- }
- if (_isArray(dep) && _indexOf(dep, k) >= 0) {
- throw new Error('Has cyclic dependencies');
- }
- }
- function ready() {
- return runningTasks < concurrency && _reduce(requires, function (a, x) {
- return (a && results.hasOwnProperty(x));
- }, true) && !results.hasOwnProperty(k);
- }
- if (ready()) {
- runningTasks++;
- task[task.length - 1](taskCallback, results);
- }
- else {
- addListener(listener);
- }
- function listener() {
- if (ready()) {
- runningTasks++;
- removeListener(listener);
- task[task.length - 1](taskCallback, results);
- }
- }
- });
- };
-
-
-
- async.retry = function(times, task, callback) {
- var DEFAULT_TIMES = 5;
- var DEFAULT_INTERVAL = 0;
-
- var attempts = [];
-
- var opts = {
- times: DEFAULT_TIMES,
- interval: DEFAULT_INTERVAL
- };
-
- function parseTimes(acc, t){
- if(typeof t === 'number'){
- acc.times = parseInt(t, 10) || DEFAULT_TIMES;
- } else if(typeof t === 'object'){
- acc.times = parseInt(t.times, 10) || DEFAULT_TIMES;
- acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL;
- } else {
- throw new Error('Unsupported argument type for \'times\': ' + typeof t);
- }
- }
-
- var length = arguments.length;
- if (length < 1 || length > 3) {
- throw new Error('Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)');
- } else if (length <= 2 && typeof times === 'function') {
- callback = task;
- task = times;
- }
- if (typeof times !== 'function') {
- parseTimes(opts, times);
- }
- opts.callback = callback;
- opts.task = task;
-
- function wrappedTask(wrappedCallback, wrappedResults) {
- function retryAttempt(task, finalAttempt) {
- return function(seriesCallback) {
- task(function(err, result){
- seriesCallback(!err || finalAttempt, {err: err, result: result});
- }, wrappedResults);
- };
- }
-
- function retryInterval(interval){
- return function(seriesCallback){
- setTimeout(function(){
- seriesCallback(null);
- }, interval);
- };
- }
-
- while (opts.times) {
-
- var finalAttempt = !(opts.times-=1);
- attempts.push(retryAttempt(opts.task, finalAttempt));
- if(!finalAttempt && opts.interval > 0){
- attempts.push(retryInterval(opts.interval));
- }
- }
-
- async.series(attempts, function(done, data){
- data = data[data.length - 1];
- (wrappedCallback || opts.callback)(data.err, data.result);
- });
- }
-
- // If a callback is passed, run this as a controll flow
- return opts.callback ? wrappedTask() : wrappedTask;
- };
-
- async.waterfall = function (tasks, callback) {
- callback = _once(callback || noop);
- if (!_isArray(tasks)) {
- var err = new Error('First argument to waterfall must be an array of functions');
- return callback(err);
- }
- if (!tasks.length) {
- return callback();
- }
- function wrapIterator(iterator) {
- return _restParam(function (err, args) {
- if (err) {
- callback.apply(null, [err].concat(args));
- }
- else {
- var next = iterator.next();
- if (next) {
- args.push(wrapIterator(next));
- }
- else {
- args.push(callback);
- }
- ensureAsync(iterator).apply(null, args);
- }
- });
- }
- wrapIterator(async.iterator(tasks))();
- };
-
- function _parallel(eachfn, tasks, callback) {
- callback = callback || noop;
- var results = _isArrayLike(tasks) ? [] : {};
-
- eachfn(tasks, function (task, key, callback) {
- task(_restParam(function (err, args) {
- if (args.length <= 1) {
- args = args[0];
- }
- results[key] = args;
- callback(err);
- }));
- }, function (err) {
- callback(err, results);
- });
- }
-
- async.parallel = function (tasks, callback) {
- _parallel(async.eachOf, tasks, callback);
- };
-
- async.parallelLimit = function(tasks, limit, callback) {
- _parallel(_eachOfLimit(limit), tasks, callback);
- };
-
- async.series = function(tasks, callback) {
- _parallel(async.eachOfSeries, tasks, callback);
- };
-
- async.iterator = function (tasks) {
- function makeCallback(index) {
- function fn() {
- if (tasks.length) {
- tasks[index].apply(null, arguments);
- }
- return fn.next();
- }
- fn.next = function () {
- return (index < tasks.length - 1) ? makeCallback(index + 1): null;
- };
- return fn;
- }
- return makeCallback(0);
- };
-
- async.apply = _restParam(function (fn, args) {
- return _restParam(function (callArgs) {
- return fn.apply(
- null, args.concat(callArgs)
- );
- });
- });
-
- function _concat(eachfn, arr, fn, callback) {
- var result = [];
- eachfn(arr, function (x, index, cb) {
- fn(x, function (err, y) {
- result = result.concat(y || []);
- cb(err);
- });
- }, function (err) {
- callback(err, result);
- });
- }
- async.concat = doParallel(_concat);
- async.concatSeries = doSeries(_concat);
-
- async.whilst = function (test, iterator, callback) {
- callback = callback || noop;
- if (test()) {
- var next = _restParam(function(err, args) {
- if (err) {
- callback(err);
- } else if (test.apply(this, args)) {
- iterator(next);
- } else {
- callback.apply(null, [null].concat(args));
- }
- });
- iterator(next);
- } else {
- callback(null);
- }
- };
-
- async.doWhilst = function (iterator, test, callback) {
- var calls = 0;
- return async.whilst(function() {
- return ++calls <= 1 || test.apply(this, arguments);
- }, iterator, callback);
- };
-
- async.until = function (test, iterator, callback) {
- return async.whilst(function() {
- return !test.apply(this, arguments);
- }, iterator, callback);
- };
-
- async.doUntil = function (iterator, test, callback) {
- return async.doWhilst(iterator, function() {
- return !test.apply(this, arguments);
- }, callback);
- };
-
- async.during = function (test, iterator, callback) {
- callback = callback || noop;
-
- var next = _restParam(function(err, args) {
- if (err) {
- callback(err);
- } else {
- args.push(check);
- test.apply(this, args);
- }
- });
-
- var check = function(err, truth) {
- if (err) {
- callback(err);
- } else if (truth) {
- iterator(next);
- } else {
- callback(null);
- }
- };
-
- test(check);
- };
-
- async.doDuring = function (iterator, test, callback) {
- var calls = 0;
- async.during(function(next) {
- if (calls++ < 1) {
- next(null, true);
- } else {
- test.apply(this, arguments);
- }
- }, iterator, callback);
- };
-
- function _queue(worker, concurrency, payload) {
- if (concurrency == null) {
- concurrency = 1;
- }
- else if(concurrency === 0) {
- throw new Error('Concurrency must not be zero');
- }
- function _insert(q, data, pos, callback) {
- if (callback != null && typeof callback !== "function") {
- throw new Error("task callback must be a function");
- }
- q.started = true;
- if (!_isArray(data)) {
- data = [data];
- }
- if(data.length === 0 && q.idle()) {
- // call drain immediately if there are no tasks
- return async.setImmediate(function() {
- q.drain();
- });
- }
- _arrayEach(data, function(task) {
- var item = {
- data: task,
- callback: callback || noop
- };
-
- if (pos) {
- q.tasks.unshift(item);
- } else {
- q.tasks.push(item);
- }
-
- if (q.tasks.length === q.concurrency) {
- q.saturated();
- }
- });
- async.setImmediate(q.process);
- }
- function _next(q, tasks) {
- return function(){
- workers -= 1;
-
- var removed = false;
- var args = arguments;
- _arrayEach(tasks, function (task) {
- _arrayEach(workersList, function (worker, index) {
- if (worker === task && !removed) {
- workersList.splice(index, 1);
- removed = true;
- }
- });
-
- task.callback.apply(task, args);
- });
- if (q.tasks.length + workers === 0) {
- q.drain();
- }
- q.process();
- };
- }
-
- var workers = 0;
- var workersList = [];
- var q = {
- tasks: [],
- concurrency: concurrency,
- payload: payload,
- saturated: noop,
- empty: noop,
- drain: noop,
- started: false,
- paused: false,
- push: function (data, callback) {
- _insert(q, data, false, callback);
- },
- kill: function () {
- q.drain = noop;
- q.tasks = [];
- },
- unshift: function (data, callback) {
- _insert(q, data, true, callback);
- },
- process: function () {
- while(!q.paused && workers < q.concurrency && q.tasks.length){
-
- var tasks = q.payload ?
- q.tasks.splice(0, q.payload) :
- q.tasks.splice(0, q.tasks.length);
-
- var data = _map(tasks, function (task) {
- return task.data;
- });
-
- if (q.tasks.length === 0) {
- q.empty();
- }
- workers += 1;
- workersList.push(tasks[0]);
- var cb = only_once(_next(q, tasks));
- worker(data, cb);
- }
- },
- length: function () {
- return q.tasks.length;
- },
- running: function () {
- return workers;
- },
- workersList: function () {
- return workersList;
- },
- idle: function() {
- return q.tasks.length + workers === 0;
- },
- pause: function () {
- q.paused = true;
- },
- resume: function () {
- if (q.paused === false) { return; }
- q.paused = false;
- var resumeCount = Math.min(q.concurrency, q.tasks.length);
- // Need to call q.process once per concurrent
- // worker to preserve full concurrency after pause
- for (var w = 1; w <= resumeCount; w++) {
- async.setImmediate(q.process);
- }
- }
- };
- return q;
- }
-
- async.queue = function (worker, concurrency) {
- var q = _queue(function (items, cb) {
- worker(items[0], cb);
- }, concurrency, 1);
-
- return q;
- };
-
- async.priorityQueue = function (worker, concurrency) {
-
- function _compareTasks(a, b){
- return a.priority - b.priority;
- }
-
- function _binarySearch(sequence, item, compare) {
- var beg = -1,
- end = sequence.length - 1;
- while (beg < end) {
- var mid = beg + ((end - beg + 1) >>> 1);
- if (compare(item, sequence[mid]) >= 0) {
- beg = mid;
- } else {
- end = mid - 1;
- }
- }
- return beg;
- }
-
- function _insert(q, data, priority, callback) {
- if (callback != null && typeof callback !== "function") {
- throw new Error("task callback must be a function");
- }
- q.started = true;
- if (!_isArray(data)) {
- data = [data];
- }
- if(data.length === 0) {
- // call drain immediately if there are no tasks
- return async.setImmediate(function() {
- q.drain();
- });
- }
- _arrayEach(data, function(task) {
- var item = {
- data: task,
- priority: priority,
- callback: typeof callback === 'function' ? callback : noop
- };
-
- q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);
-
- if (q.tasks.length === q.concurrency) {
- q.saturated();
- }
- async.setImmediate(q.process);
- });
- }
-
- // Start with a normal queue
- var q = async.queue(worker, concurrency);
-
- // Override push to accept second parameter representing priority
- q.push = function (data, priority, callback) {
- _insert(q, data, priority, callback);
- };
-
- // Remove unshift function
- delete q.unshift;
-
- return q;
- };
-
- async.cargo = function (worker, payload) {
- return _queue(worker, 1, payload);
- };
-
- function _console_fn(name) {
- return _restParam(function (fn, args) {
- fn.apply(null, args.concat([_restParam(function (err, args) {
- if (typeof console === 'object') {
- if (err) {
- if (console.error) {
- console.error(err);
- }
- }
- else if (console[name]) {
- _arrayEach(args, function (x) {
- console[name](x);
- });
- }
- }
- })]));
- });
- }
- async.log = _console_fn('log');
- async.dir = _console_fn('dir');
- /*async.info = _console_fn('info');
- async.warn = _console_fn('warn');
- async.error = _console_fn('error');*/
-
- async.memoize = function (fn, hasher) {
- var memo = {};
- var queues = {};
- var has = Object.prototype.hasOwnProperty;
- hasher = hasher || identity;
- var memoized = _restParam(function memoized(args) {
- var callback = args.pop();
- var key = hasher.apply(null, args);
- if (has.call(memo, key)) {
- async.setImmediate(function () {
- callback.apply(null, memo[key]);
- });
- }
- else if (has.call(queues, key)) {
- queues[key].push(callback);
- }
- else {
- queues[key] = [callback];
- fn.apply(null, args.concat([_restParam(function (args) {
- memo[key] = args;
- var q = queues[key];
- delete queues[key];
- for (var i = 0, l = q.length; i < l; i++) {
- q[i].apply(null, args);
- }
- })]));
- }
- });
- memoized.memo = memo;
- memoized.unmemoized = fn;
- return memoized;
- };
-
- async.unmemoize = function (fn) {
- return function () {
- return (fn.unmemoized || fn).apply(null, arguments);
- };
- };
-
- function _times(mapper) {
- return function (count, iterator, callback) {
- mapper(_range(count), iterator, callback);
- };
- }
-
- async.times = _times(async.map);
- async.timesSeries = _times(async.mapSeries);
- async.timesLimit = function (count, limit, iterator, callback) {
- return async.mapLimit(_range(count), limit, iterator, callback);
- };
-
- async.seq = function (/* functions... */) {
- var fns = arguments;
- return _restParam(function (args) {
- var that = this;
-
- var callback = args[args.length - 1];
- if (typeof callback == 'function') {
- args.pop();
- } else {
- callback = noop;
- }
-
- async.reduce(fns, args, function (newargs, fn, cb) {
- fn.apply(that, newargs.concat([_restParam(function (err, nextargs) {
- cb(err, nextargs);
- })]));
- },
- function (err, results) {
- callback.apply(that, [err].concat(results));
- });
- });
- };
-
- async.compose = function (/* functions... */) {
- return async.seq.apply(null, Array.prototype.reverse.call(arguments));
- };
-
-
- function _applyEach(eachfn) {
- return _restParam(function(fns, args) {
- var go = _restParam(function(args) {
- var that = this;
- var callback = args.pop();
- return eachfn(fns, function (fn, _, cb) {
- fn.apply(that, args.concat([cb]));
- },
- callback);
- });
- if (args.length) {
- return go.apply(this, args);
- }
- else {
- return go;
- }
- });
- }
-
- async.applyEach = _applyEach(async.eachOf);
- async.applyEachSeries = _applyEach(async.eachOfSeries);
-
-
- async.forever = function (fn, callback) {
- var done = only_once(callback || noop);
- var task = ensureAsync(fn);
- function next(err) {
- if (err) {
- return done(err);
- }
- task(next);
- }
- next();
- };
-
- function ensureAsync(fn) {
- return _restParam(function (args) {
- var callback = args.pop();
- args.push(function () {
- var innerArgs = arguments;
- if (sync) {
- async.setImmediate(function () {
- callback.apply(null, innerArgs);
- });
- } else {
- callback.apply(null, innerArgs);
- }
- });
- var sync = true;
- fn.apply(this, args);
- sync = false;
- });
- }
-
- async.ensureAsync = ensureAsync;
-
- async.constant = _restParam(function(values) {
- var args = [null].concat(values);
- return function (callback) {
- return callback.apply(this, args);
- };
- });
-
- async.wrapSync =
- async.asyncify = function asyncify(func) {
- return _restParam(function (args) {
- var callback = args.pop();
- var result;
- try {
- result = func.apply(this, args);
- } catch (e) {
- return callback(e);
- }
- // if result is Promise object
- if (_isObject(result) && typeof result.then === "function") {
- result.then(function(value) {
- callback(null, value);
- })["catch"](function(err) {
- callback(err.message ? err : new Error(err));
- });
- } else {
- callback(null, result);
- }
- });
- };
-
- // Node.js
- if (typeof module === 'object' && module.exports) {
- module.exports = async;
- }
- // AMD / RequireJS
- else if (typeof define === 'function' && define.amd) {
- define([], function () {
- return async;
- });
- }
- // included directly via ');
- expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e');
- done();
- });
-
- it('encodes \' characters', function (done) {
-
- var encoded = Hoek.escapeJavaScript('something(\'param\')');
- expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29');
- done();
- });
-
- it('encodes large unicode characters with the correct padding', function (done) {
-
- var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000));
- expect(encoded).to.equal('\\u0500\\u1000');
- done();
- });
-
- it('doesn\'t throw an exception when passed null', function (done) {
-
- var encoded = Hoek.escapeJavaScript(null);
- expect(encoded).to.equal('');
- done();
- });
-});
-
-describe('escapeHtml()', function () {
-
- it('encodes / characters', function (done) {
-
- var encoded = Hoek.escapeHtml('');
- expect(encoded).to.equal('<script>alert(1)</script>');
- done();
- });
-
- it('encodes < and > as named characters', function (done) {
-
- var encoded = Hoek.escapeHtml('
-